Skip to main content
  1. Home
  2. Integrations
  3. Meta Conversions API
Upstack Data

Meta Conversions API integration: identity-resolved conversions, sent server-side

Forward deduplicated, identity-resolved conversions to Meta through the Conversions API, and give the model a customer instead of a session.

Role
Destination
Category
Ad platforms
Pre-built connectors
12 sources
Plans
All plans
Spend in
Meta Ads

What Upstack sends

Every conversion reaches Meta Conversions API with the identifiers it matches on. Captured on the server, resolved to a person, then sent.

In: from Shopify1 of 12 sources
  • order_idShopify order and checkout token
  • email / phonecustomer contact from checkout
  • customer_idShopify customer record, if they have one
  • line_itemsproducts, variants and quantities
  • total / subtotal / discountorder economics

Storefront events from the Upstack Pixel, orders directly from Shopify.

Upstack DataResolved before it is sent
  • IdentityMatched against a 750M+ device graph, so a phone browse and a desktop checkout resolve to one customer.
  • customer_typeNew or returning, resolved before send.
  • DeduplicationBrowser and server copies of the same purchase collapse on event ID, so nothing is counted twice.
  • Bot and fraud filteringAutomated traffic never reaches the model, because what you keep out of the training set matters as much as what goes in.
Out: to Meta Conversions APIOn every event
  • em, ph (SHA-256)raise Event Match Quality
  • fbclid / _fbpcredit the click that drove it
  • external_idstable person across sessions
  • event_iddedupe against the browser pixel
  • value / currencyvalue-based bidding

Conversions API with higher Event Match Quality.

About Meta Conversions API

Meta will optimize against whatever you send it.

Upstack changes what you send: every conversion arrives server-side with hashed email and phone, a restored click ID, and a stable external ID, so Event Match Quality rises on parameters rather than volume alone. Browser and server events collapse on a shared event ID, so higher match quality does not come with double-counted purchases. And because the conversion is built from resolved order data, you can send profit rather than revenue, or new customers rather than every checkout, and have Meta go looking for those specifically.

What Meta Conversions API is

Meta runs advertising across Facebook, Instagram and its audience network, and is the single largest acquisition channel for most DTC brands.

Meta’s delivery system is only as good as the conversions it can see. Its Conversions API exists because browser-side signal degraded, and Event Match Quality is Meta’s own measure of how many identifiers you attached to each event it received.

How Meta Conversions API works

Meta’s delivery system decides which people to show an ad to by learning from conversions advertisers report back. Historically that reporting came from the browser pixel; as browser signal degraded, Meta built the Conversions API so the same events could be sent server-to-server. Each event carries customer parameters (hashed email and phone, external ID, click ID) and Meta attempts to match them to a person on its side. Event Match Quality is Meta’s 0 to 10 score for how reliably it can match an event, and it is scored per event type. Browser and server events for the same purchase are collapsed using a shared event_id.

What you can do with it

Three jobs this connector does inside Meta Conversions API.

01

Send complete conversions

Conversions reach Meta through its server-side API with restored click IDs and hashed identifiers attached, so more of what you send is matched on arrival, and the conversions you never saw stop being invisible.

02

Optimize on the customer you want

Map any order attribute to the conversion Meta receives (profit rather than revenue, new customers rather than repeat buyers, high-value orders rather than every checkout), so the platform learns from the buyers worth acquiring.

03

Pixel and CAPI without double-counting

One install is the source of truth for both browser and server events, deduplicated on event ID, so Event Match Quality rises without purchases being counted twice.

How it works

How the Meta Conversions API integration works.

Upstack maps each storefront event to Meta’s standard event, attaches every match key it has, and sends it with the event_id Meta uses to drop the browser copy.

Standard events, mapped for you

PageView, ViewContent, AddToCart, InitiateCheckout and Purchase reach your pixel as Meta standard events of the same name, with content_ids, value and currency in Meta’s structure. NC Purchase and RC Purchase custom events mark orders from new and returning customers, and the standard Purchase still fires on every order.

Every available match key

Each event carries hashed email, phone, first and last name, city, state, zip and country, plus fbc, fbp, external_id, IP address and user agent when Upstack has them. Personal data is hashed with SHA-256 before it leaves Upstack.

Deduplication on event_id

The default Tracking Method is Browser + Server: Upstack loads the Meta tag and sends the same events from its servers with the same event_id, and Meta keeps one. It works as long as the Pixel ID in Upstack matches the pixel on your store. Choose Server if you don’t want the Meta tag in the browser.

Click IDs that outlast the browser

An ad click adds fbclid to the URL, and Meta’s pixel stores it as the _fbc cookie. Meta treats a click ID as valid for 90 days. Upstack keeps click IDs past that window, restores them across sessions and devices through its identity graph, and always sends the most recent one.

What to expect from EMQ

Meta takes 24 to 48 hours to score new events. The gain shows up mainly on PageView, ViewContent and AddToCart; Purchase EMQ stays largely unchanged, because checkout already collects email, name and address. As a guide, 7.0 or higher is good and below 5.0 points to missing identity data.

Which orders Meta receives

First subscription orders are sent as Subscription Initial and count as purchases. Renewals stay out of Meta so optimization stays on prospecting. Order Source Exclusions can also keep sources such as POS or draft orders from feeding Meta.

Events and the data they carry

Upstack event Sent as Data on the event
PageView PageView URL, referrer, user agent
ViewContent ViewContent content_ids, content_type, value, currency
AddToCart AddToCart content_ids, value, currency
InitiateCheckout InitiateCheckout value, currency, num_items
Purchase Purchase value, currency, order_id, content_ids

Setup

Set up the Meta Conversions API integration.

What you need

  • Admin or full access to the Meta Business Manager that owns the pixel.
  • Your Meta Pixel ID, labeled Dataset ID in Events Manager: a 15 or 16 digit number.
  • A Conversions API access token generated from that pixel. It starts with EAA and is shown once.
  • Access to your Shopify admin to turn off duplicate Meta tracking.
Complete Meta onboarding guide
  1. Step 1

    Generate the access token

    In Events Manager, open your pixel, then the Settings tab, and click Generate access token in the Conversions API section. For Upstack to read EMQ back, the token needs ads_read plus ads_management or business_management.

  2. Step 2

    Add the Meta destination

    In Upstack, open Destinations, click New Destination, choose Meta Ads, enter the Pixel ID and paste the token. Once saved, the destination shows Healthy.

  3. Step 3

    Turn off duplicate senders

    In Shopify, open Sales channels, Facebook & Instagram, Settings and turn Share data off. Remove pixel apps, pixel code in theme.liquid and Meta tags in Google Tag Manager. Shopify’s native integration doesn’t send a matching event_id, so Meta can’t deduplicate it.

  4. Step 4

    Add NC Purchase (optional)

    After the first new-customer order, confirm the ncPurchase event in Events Manager, create an NC Purchase custom conversion, share it with your ad accounts, and add NC Purchase and NC-ROAS columns in Ads Manager.

Check it

How to verify it’s working, and common fixes.

How to verify it’s working

  • Upstack’s Destinations page shows the Meta destination as Healthy.
  • In Events Manager, the Overview and Test Events tabs list server events with a Server badge.
  • Visit your store with ?fbclid=ABC123 in the URL, check out, and confirm the Purchase event carries the click ID (Meta receives it as fbc).
  • Wait 48 hours before troubleshooting an EMQ of 0.0. Meta scores new events on its own schedule, and Upstack reads the score every 4 hours.

Common problems and fixes

EMQ stays at 0.0 while events look normal.
The token is missing ads_read plus ads_management or business_management. Generate a new one as a Business Manager admin, paste it, click Update Configuration and allow up to 8 hours.
Purchases show up twice in Meta.
Another sender is active: Shopify’s Facebook & Instagram data sharing, a pixel app, the Conversions API Gateway or another CAPI app. Turn it off, and the warnings should clear within 24 hours.
“Low rate of pixel events covered by Conversions API.”
For Upstack customers this generic Meta prompt is a false positive. Don’t click Review solution or install the Gateway or another CAPI app.
“Server sending expired fbclid value in fbc parameter.”
It comes from returning customers whose last Meta ad click was more than 90 days ago. No action is needed: Meta still matches on email, phone, IP address and external ID.
The destination turns Unhealthy.
The token expired, was revoked (often after a password change) or came from another Business Manager. Generate a new token from the account that owns the pixel and update the destination.
Meta and Upstack report different conversion counts.
Meta defaults to 7-day click and 1-day view, while Upstack’s Attribution report defaults to first click over 7 days. Compare Meta 7-day click with Upstack last click, 7-day: a 5 to 15% gap is normal.

Pre-built connectors

12 sources connect to Meta Conversions API. Whichever of these you run, Meta Conversions API is one switch away.

See all connectors

Documentation

Set-up reference.

Set-up, event schema and field mapping for Meta Conversions API as a destination, next to the Meta Conversions API developer docs.

FAQ

Meta Conversions API integration questions.

What does Upstack send to the Meta Conversions API?

Every storefront event (page views, product views, add-to-carts, checkouts and purchases) as Meta standard events, with hashed customer data, click IDs and a shared event_id. NC Purchase and RC Purchase custom events mark new and returning customers, and first subscription orders are sent as purchases.

Why use the Conversions API if I already have the Meta Pixel?

Ad blockers, Safari ITP, iOS privacy features and third-party cookie limits block or degrade the browser pixel. The Conversions API runs server to server, and Meta recommends running it alongside the pixel.

Will purchases be counted twice with the pixel and the Conversions API both running?

No. Upstack sends a shared event_id with every server event and Meta drops the matching browser event, as long as the Pixel ID in Upstack matches the pixel on your store. Turn off Shopify’s Facebook & Instagram data sharing, because it sends no matching event_id.

What do I need to connect Meta to Upstack?

Admin access to the Meta Business Manager that owns the pixel, your Pixel ID (a 15 or 16 digit number, shown as Dataset ID) and a Conversions API access token generated from that pixel in Events Manager, which starts with EAA.

How long does Meta take to score Event Match Quality?

Meta takes 24 to 48 hours to score new events, and EMQ is scored per event type. Expect the increase on PageView, ViewContent and AddToCart; Purchase EMQ stays largely unchanged because checkout already sends email, name and address.

Why is my EMQ panel in Upstack showing 0.0?

Right after connecting, Meta simply hasn’t scored the events yet. If it stays at 0.0 while events look normal, the token lacks ads_read plus ads_management or business_management: generate a new one as a Business Manager admin and update the destination.

Can I send new customers or profit to Meta instead of every purchase?

Yes. The NC Purchase event becomes a custom conversion you can optimize toward, and Override event value can send Net Revenue, CM1, CM2 or a custom formula such as net revenue minus COGS as a purchase’s value.

Does it work for health and wellness stores Meta has flagged?

Yes, with Restricted Category Mode. It never loads the Meta browser pixel, sends events through the Conversions API only, replaces product names with placeholders, removes categories and brands, and reports events from an alias domain with a hashed page path.

Which plans include the Meta Conversions API integration?

All plans. Upstack has three plans that scale with your order volume, and the same integrations are on every plan.

Can Upstack also pull spend from Meta Ads?

Yes, through the Meta Ads integration. Pull Meta cost and delivery data into Upstack alongside your orders, so blended ROAS and true CAC are computed from both halves of the equation rather than one.

Guides

Guides and related pages.

Background reading for the Meta Conversions API integration, and the Upstack pages that go with it.

Similar integrations

Other Ad platforms integrations.

See all integrations

Get Meta Conversions API tracking right.

A 15-minute walkthrough tailored to your stack and channels.