nod.

Set up the Meta server-side send-back (CAPI)

Connect a dataset, understand the consent gate, and verify Purchases in Meta's Test Events tab.

Updated July 31, 2026

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

  • Available for ecommerce workspaces only, on the Tracking page, under Meta Conversions API.
  • Connect Meta first. Then pick or paste a dataset (pixel) id — saving it turns the send-back on immediately.
  • nod. requires an explicit marketing and data-sharing grant. Unknown and denied states always skip.
  • Use the Test Events code to verify with a real or dev purchase — test orders in Shopify are skipped entirely.
  • Configuring CAPI is admin-only.

1. Connect Meta first

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.

2. Set the dataset (pixel) id

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:

  • Pick from a list. nod. lists up to 25 pixels/datasets from the Meta ad account you currently have selected. If the lookup fails, the list is simply empty and you can fall back to pasting the id.
  • Paste it manually. The id must be digits only. A non-numeric value is rejected with "Dataset id must be numeric (your Meta Pixel / Dataset ID)."

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.

3. The master switch

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.

5. Verify with Test Events

Before trusting live data, open Delivery diagnostics, then paste a code into Meta Test Events code (letters, digits, -, _, 1–64 characters). Then:

  1. Open Meta Events Manager → your dataset → Test events.
  2. Place a real order, or a dev-store purchase your Meta account can see.
  3. Confirm a Purchase event with test_event_code set shows up in the Test Events tab.
  4. Click Mark verified in nod. to record the check date.

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.

What's in the event

FieldValue
Event namePurchase (always, exactly this string)
Event idnod-order-<order id> — one id per Shopify order, not per visitor
Event timeShopify's order creation timestamp, preserved across retries
Stable order keyShopify order id in custom_data.order_id
Value / currencyOrder total and currency (uppercased, defaults to USD if absent)
IdentifiersEmail and phone are SHA-256 hashed; Meta click id (fbc), browser id (fbp), IP, and user agent are sent unhashed (Meta hashes IP itself)

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.

What happens next

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.