> ## Documentation Index
> Fetch the complete documentation index at: https://docs.merchantops.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Publishing settings

> Register publishing targets, enable multiple environments, and configure per-target options.

Before you can publish a batch, its destination has to be configured. Publishing
settings live under **Settings › Publish Targets**, where you register the
targets your organization publishes to. This page covers the configuration step;
for how batches flow through approval, scheduling, and promotion, see the
[publishing overview](/publishing/overview).

## Targets are destination + environment

A **publishing target** is a place a batch can go. Every target is the
combination of two things:

<ResponseField name="Destination" type="the system">
  Which system the batch publishes to — for example a VTEX store's catalog or
  its pricing. Each destination has a target key (such as `vtex_catalog` or
  `vtex_pricing`).
</ResponseField>

<ResponseField name="Environment" type="which instance">
  Which instance of that destination — typically a QA store versus a production
  store.
</ResponseField>

Each destination + environment pair is configured once as an **integration**. A
batch then points at one integration, and MerchantOps publishes there when the
batch is approved and its effective date arrives.

## Register a target

<Steps>
  <Step title="Open Settings › Publish Targets">
    You need settings permission to add or edit integrations.
  </Step>

  <Step title="Choose the destination and environment">
    Pick the destination (for example a VTEX catalog or pricing target) and the
    environment it represents (for example QA or production).
  </Step>

  <Step title="Provide the destination's configuration">
    Supply whatever that destination needs to reach it — for a hosted storefront
    like VTEX, the store's connection details and credentials; for a
    [self-built connector](/publishing/connectors), a poll-based setup where your
    own service holds the credentials instead.
  </Step>

  <Step title="Enable it">
    An enabled integration is available to point batches at. Disable an
    integration to stop routing new batches to it without deleting its config.
  </Step>
</Steps>

## Multiple environments at once

You can keep several environments of the same destination enabled
simultaneously — for example a QA store and a production store side by side.
Each is its own integration with its own configuration and credentials, and each
batch chooses exactly one.

This is what makes **promotion** work: you publish and verify a batch against QA,
then promote it to production without rebuilding it. Promotion requires the
destination target to be enabled for the environment you're promoting into. See
the [publishing overview](/publishing/overview) for the promotion flow.

<Note>
  Because environments are configured separately, MerchantOps tracks publish
  outcomes **per target and per environment**. A QA publish and a production
  publish of the same product never collide — each carries its own result.
</Note>

## Per-target configuration

Some options are set on the integration itself rather than on individual
batches. For a hosted connector like VTEX, this includes the store's connection
details and, optionally, per-target overrides such as a custom placeholder image
for products that don't yet have real imagery (see
[VTEX](/publishing/vtex)). For a self-built connector, the integration records
that the target is poll-based; your own service holds any downstream
credentials.

<Warning>
  Approving a batch requires a target to be set on it. Choose the target while the
  batch is still a draft — a batch can't be approved without knowing where it's
  going. See the [publishing overview](/publishing/overview) for the batch
  lifecycle.
</Warning>

## Related

<CardGroup cols={2}>
  <Card title="Publishing overview" icon="rocket" href="/publishing/overview">
    Batches, approval, scheduling, promotion, and status.
  </Card>

  <Card title="Build your own connector" icon="plug" href="/publishing/connectors">
    Register a poll-based target for a system MerchantOps doesn't ship support for.
  </Card>
</CardGroup>
