Batches
Changes publish in batches, not one record at a time. A batch groups a set of catalog or pricing records so they can be reviewed together, approved once, and published as a unit. Catalog batches carry product changes (names, descriptions, properties, specifications); price batches carry price records. See Price batches for the pricing workflow. A batch moves through a lifecycle: it starts as a draft you can edit, goes to pending approval for review, becomes approved, and is then published to its target. What you can edit narrows as the batch advances:
The target stays editable at pending approval and at approved by design.
Approval does not require a target, so a batch can reach
approved without one;
setting the target then is the way to rescue it rather than rebuilding the
batch. The target locks as soon as publishing is attempted — from that point the
recorded outcomes are keyed to it, so it can no longer move.
Reviewing records inside a batch
A catalog batch can be approved as a whole — the confirmation says plainly that you are approving every product without per-product review — but the point of a batch is usually to look at the products first. Select records in the batch’s product list and choose Review to open the review panel. It takes over the page and walks the selection one product at a time, showing that product’s property values as the publish will send them. The version shown is the one pinned to the record, so you are reading exactly what will be published, not whatever the product looks like right now. Approve or reject each product as you go — there are keyboard shortcuts for stepping through, approving, and rejecting with a reason — and the batch’s counts update as you stamp them. The same selection toolbar can reject the selected records outright, or remove them from the batch entirely. A record can also be rejected or removed from its row’s ⋯ menu without opening the panel. Rejecting asks for a reason, which is required in the dashboard for a single record and for a bulk reject alike. The rejection, with its reason, is logged to the batch’s activity history. Removing a single record asks you to confirm first. Click a record’s row to open that product; Cmd/Ctrl-click opens it in a new tab, as does Open product ↗ in the row’s ⋯ menu. The Publish column shows each record’s publish pill for the batch’s target, including scheduled for a record in an approved batch whose effective date is still ahead.Rejected records block approval of the batch: approve refuses while any record
is rejected, and asks you to remove or reassign them first. Rejected records
also do not carry forward when the batch is promoted.
Choosing what reviewers see
Which properties the review panel shows is configuration, not a fixed list. Each product type can have its own set of visible properties, and an organization can set a default that applies to every type without one. If neither is set, the panel falls back to a sensible selection; operational and system properties (vendor identifiers and similar) are hidden by default so reviewers see the content fields first. Edit the list from the review panel’s field-configuration dialog; clearing a type’s own list returns it to the organization default.Publishing targets
A publishing target is a destination for a batch. A target is the combination of:the system
Which system the batch publishes to — for example a VTEX store or a Shopify
store. Identified by a target key such as
vtex_catalog, vtex_pricing,
shopify_catalog, or shopify_pricing.which instance of the destination
Which instance of that destination — for example a QA store versus a
production store. A single organization can have several environments of the
same destination enabled at once (a QA target and a production target side by
side).
A target is optional at approval. A batch can be approved without a target —
its records go active in MerchantOps but the batch is never published. Use
that when you want MerchantOps to hold the approved change without sending it
downstream. A target is required only to actually publish. Set it on the draft
when you already know the destination — and if a batch reaches
approved
without one, you can still set it there.Scheduling by effective date
Every batch carries an effective date. Once a batch is approved and has a target, MerchantOps waits until that date arrives, then publishes the batch automatically — no manual “publish now” step. This lets you approve a price change or catalog update ahead of time and have it go live on schedule. Publishing runs in the background as a job you can track. A batch approved without a target stays active in MerchantOps and is never published — the scheduler skips it.Publishing manually
Waiting for the effective date is the normal path, not the only one.approved batches
Publishes an approved batch immediately, ahead of its effective date. The
effective date is not changed, and the batch will not publish a second time
when that date arrives. It is also how you retry a batch whose publish failed
or only partly succeeded. For a price batch with a future effective date,
this opens a confirmation you complete by typing
Yes — see
Price batches for what publishing early affects.
Publish now needs a target, a publish that is not already in flight, and, for
a price batch, any linked catalog batch to have published first.published price batches
Re-delivers a price batch that already published, after you have corrected the
underlying data. It re-drives the whole batch rather than only the failures.
Catalog batches have no separate republish action — re-running publish on a
partly published catalog batch re-attempts only the records that have not
published yet and skips the ones that already did, even if their product
changed since.
a catalog publish in flight
Stops a catalog publish that is already running. Cancel the batch’s publish
job from the Jobs page; records that have not been sent yet are stopped,
and the batch is moved to partially published or failed so it can be published
again. Records that already reached the target stay published — cancelling
stops the remaining work, it does not roll anything back. See
Cancelling a catalog publish.
catalog batches
Unsticks a catalog batch that is wedged mid-publish because an outcome was
never reported, so it never finishes on its own. Resetting moves it to
partially published or failed, from which it can be published again. It is
deliberately refused for the first several minutes of a publish so a run that
is still legitimately working is never interrupted. Price batches have no
equivalent action — recover them with Publish now (failed or partial) or
Republish (already published).
Promotion between environments
When you keep the same destination in more than one environment (say, QA and production), you promote a published batch from one environment to the next rather than rebuilding it by hand. In both cases promotion creates a new draft batch aimed at the destination, requires the source to have published fully, requires the destination to differ from the source’s target and environment, and requires the destination target to be enabled. How the child gets its content differs by batch type.- Catalog batches
- Price batches
The child copies the source’s records — only the approved ones.
Records rejected on the source stay rejected there and do not carry forward.
Each copied record is re-snapshotted to the latest version of its
product at promote time, so fixes made between the two publishes are picked
up.The copies arrive pending, not approved, so the child goes through
review again before it can be approved and published.
Batch activity history
Each catalog batch has an Activity history card listing every step in order: created, submitted, approved, records rejected, publish started, published or partially published, stalled, reset, cancelled, enriched, promoted, and so on. Each entry shows the exact date and time (the relative time is on hover), the member who acted, and, for publishing entries, the target and a link to the job. A publish that started automatically on its effective date is logged too, as scheduled · approved by the batch’s approver. Promotion is linked in both directions: the source batch’s Promoted entry links to the new batch, and the new batch’s Promoted from entry links back. Pricing batches have the same card; see Price batches.Reading publish status
After a batch publishes, MerchantOps records an outcome per target and per environment for every record — so a single record can carry an independent QA result and production result without collision. At the product level, one pill per target tells you where a product is published, whether its live data has drifted from what’s in MerchantOps, whether the last attempt failed, and whether a publish is scheduled. Hover a pill to see who published it, from which batch, and in which job. Once every record has reported, the batch itself rolls up to a final state. A batch whose publish never finishes reporting stays in its publishing state and can be reset so it can be published again. See Reading publish status for the full status model — including the rollup states and how to reset a stuck publish — andget_product_publish_status and get_price_publish_status to
query it from an agent.
Next steps
Build your own connector
Run your own target adapter against the pull-based publishing API.
VTEX (reference connector)
See how MerchantOps publishes catalog and pricing to VTEX.
Shopify
Connect a Shopify store: import the catalog, enrich it, publish back.
Reading publish status
Read the per-target pills, publishing history, and outcomes.
Price batches
Group, review, and schedule price changes for publishing.