Connect a dataset, understand the consent gate, and verify Purchases in Meta's Test Events tab.
The Meta Conversions API (CAPI) send-back is a server-side Purchase event nod. sends to Meta after each qualifying Shopify order. It gives Meta a consented server signal for delivery, optimization and platform reporting. nod. attribution does not depend on it. This guide sets it up and shows you how to verify it before you trust it.
tl;dr
CAPI needs an active Meta connection. If your workspace hasn't connected Meta yet, do that first in Settings → Data sources. Until then, the Tracking page explains that nothing is missing for nod. attribution and links to the connector.
CAPI only appears for ecommerce workspaces. Lead-gen workspaces don't see this block.
Open Settings → Tracking and find Meta Conversions API. Meta renamed "Pixel" to "Dataset," but it's the same numeric id — nod. treats the two names as interchangeable.
You have two ways to set it:
Saving a dataset id is what activates the send-back — there's no environment variable, no redeploy, and no separate "go live" step. An unconfigured workspace never sends, and it never sends to another workspace's dataset by accident.
Once set and enabled, the block shows Sending to dataset <id>. The block is labeled with the Meta ad account it belongs to. Shopify remains the order source; this choice only controls where Meta receives the event.
Configuring CAPI (dataset, master switch, test code) requires the admin role. Non-admins see the current state as read-only.
Send Shopify Purchases to Meta is the master on/off switch. It defaults to on. Turning it off pauses every send-back, including the retry queue, until you turn it back on. Shopify orders continue entering nod. either way.
nod. forwards a Purchase only when Shopify carries an explicit marketing grant, an allowed data-sharing state, and a supported consent source. Unknown fails closed. An explicit denial or withdrawal marker always blocks the send, even if stale identity or click attributes remain on the cart.
The old capi_send_all setting is retained for audit and rollback visibility only. It no longer authorizes a send. Workspaces that still carry it see a blocking readiness warning until a supported consent adapter supplies the required state.
Before trusting live data, open Delivery diagnostics, then paste a code into Meta Test Events code (letters, digits, -, _, 1–64 characters). Then:
Purchase event with test_event_code set shows up in the Test Events tab.Shopify test orders (orders with test: true) are skipped entirely by nod. — no conversion row, no CAPI send — so you can't use a Shopify test order to verify this flow. Use a real or dev-store purchase instead.
Clear the test code once you're done. It doesn't clear itself, and a lingering code silently keeps all your real Purchases routed to the Test Events tab instead of counting as live conversions.
The click id is never invented — it's only sent when the pixel actually captured one. If no identifiers at all are available, the event is skipped rather than sent empty.
Once a dataset is saved, the next qualifying order fires from the Shopify webhook. If Meta receives no browser Purchase, there is nothing to deduplicate and no dedup pixel to install. If the same dataset also receives a browser Purchase, open Browser Purchase dedup and choose one owner: either disable nod. CAPI and keep the existing integration, or replace the competing browser Purchase with the matching custom pixel. A successful server send does not prove browser delivery. For delivery failures and retries, see CAPI delivery, health, and retries.