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

# Meta Conversions API (CAPI)

> Send server-side conversion events to Meta Ads with Upstack Signal — improve Event Match Quality and campaign optimization.

<Note>
  **Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs.
</Note>

## What it does

Meta's Conversions API (CAPI) lets you send conversion events directly from a server to Meta, instead of relying solely on the browser-side Pixel. Upstack Signal forwards every storefront event — page views, product views, add-to-carts, checkouts, and purchases — to your Meta Pixel via CAPI, enriched with hashed customer data and click identifiers.

For most Shopify merchants, Meta CAPI is the highest-impact destination you can connect. Events captured server-side reach Meta even when the browser Pixel is blocked by ad blockers, ITP, or cookie restrictions, which means Meta's algorithm sees a fuller picture of the conversions your ads actually drove.

The practical result is higher Event Match Quality (EMQ), more accurate ROAS reporting inside Meta Ads Manager, and stronger optimization signal for campaigns that depend on conversion events.

## How it works

Upstack Signal runs as a dual-tracking layer. The Upstack Pixel captures events in the browser and forwards each one to Upstack's edge infrastructure, where it is hashed, enriched with identity and attribution data, and then sent to Meta's Conversions API as a server-side event with a shared `event_id`. Meta deduplicates against any matching browser Pixel event using that ID, so you do not double-count.

Every event carries the strongest available match keys — hashed `email`, `phone`, `first_name`, `last_name`, `city`, `state`, `zip`, `country`, plus `fbc`, `fbp`, and `external_id` — so Meta can attribute the conversion to the right user and ad interaction.

## Setup guides

<CardGroup cols={2}>
  <Card title="Onboarding guide" icon="route" href="/guides/facebook-ads/complete-how-to-guide-for-onboarding-facebook-meta-in-upstack-data">
    End-to-end walkthrough for connecting Meta to Upstack Data.
  </Card>

  <Card title="Configure pixel destination" icon="sliders" href="/guides/facebook-ads/how-to-configure-facebook-meta-ads-pixel-destination-in-upstack-data">
    Configure the Meta Pixel destination inside Upstack Data.
  </Card>

  <Card title="Find Pixel Dataset ID" icon="magnifying-glass" href="/guides/facebook-ads/how-do-i-find-my-facebook-ads-pixel-dataset-id">
    Locate your Meta Pixel Dataset ID in Events Manager.
  </Card>

  <Card title="Generate CAPI key" icon="key" href="/guides/facebook-ads/how-to-generate-my-facebook-conversion-api-key">
    Generate a Conversions API access token in Meta.
  </Card>

  <Card title="Update CAPI key" icon="rotate" href="/guides/facebook-ads/how-to-update-facebook-meta-conversion-api-key">
    Rotate or replace your existing CAPI access token.
  </Card>

  <Card title="Disable Shopify FB data sharing" icon="ban" href="/guides/facebook-ads/how-to-disable-facebook-and-instagram-data-sharing-in-shopify">
    Turn off Shopify's native Facebook integration to prevent duplicate events.
  </Card>

  <Card title="Approve custom events" icon="circle-check" href="/guides/facebook-ads/how-to-approve-facebook-meta-custom-events">
    Approve Upstack's custom events inside Meta Events Manager.
  </Card>
</CardGroup>

## Event mapping

Upstack maps storefront events to Meta standard events automatically:

| Upstack event      | Meta standard event | Key match data                                     |
| ------------------ | ------------------- | -------------------------------------------------- |
| `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`     |

PII is hashed with SHA-256 before it leaves Upstack. Upstack includes every available match key on every event — `em`, `ph`, `fn`, `ln`, `ct`, `st`, `zp`, `country`, `fbc`, `fbp`, `external_id` — to maximize EMQ.

## FAQ

<AccordionGroup>
  <Accordion title="What is Event Match Quality (EMQ) and why does it matter?">
    EMQ is Meta's score (1–10) for how reliably it can match a conversion event back to a Meta user. Higher EMQ means Meta's algorithm has more signal to optimize against, which lowers cost per acquisition and improves ROAS. Server-side delivery via CAPI typically lifts EMQ by 20–35% compared to a browser-only Pixel because the events carry more match keys and are not blocked by browser restrictions.
  </Accordion>

  <Accordion title="Why send events through CAPI when I already have the Meta Pixel?">
    The browser Pixel is blocked or degraded by ad blockers, Safari ITP, iOS privacy features, and third-party cookie restrictions. CAPI runs server-to-server, so it is not affected by any browser-side limitation. Meta itself recommends running CAPI alongside the Pixel for redundancy and higher data quality.
  </Accordion>

  <Accordion title="Will my events be counted twice if I run both the Pixel and CAPI?">
    No. Upstack sends a shared `event_id` on every server-side event, and Meta deduplicates against the matching browser Pixel event with the same ID. As long as the Pixel ID in Upstack matches the Pixel ID firing in your storefront, deduplication is automatic.
  </Accordion>

  <Accordion title="Do I need to disable Shopify's native Facebook integration?">
    Yes — if Shopify is also sending purchase events to the same Meta Pixel, you'll see duplicates that Meta cannot deduplicate (Shopify does not emit a matching `event_id`). Follow the guide above to disable Facebook & Instagram data sharing in Shopify before activating Upstack's Meta destination.
  </Accordion>

  <Accordion title="How do I verify CAPI events are arriving in Meta?">
    Open Meta Events Manager, select your Pixel, and check the **Overview** and **Test Events** tabs. Server-side events show up with a "Server" badge. Upstack also surfaces delivery status and EMQ inside the destination settings in your dashboard.
  </Accordion>
</AccordionGroup>

## Related

<CardGroup cols={2}>
  <Card title="Conversion API forwarding" icon="lightbulb" href="/concepts/conversion-api-forwarding">
    How Upstack Signal forwards events to ad platforms via server-to-server APIs.
  </Card>

  <Card title="Identity resolution" icon="fingerprint" href="/concepts/identity-resolution">
    How Upstack matches anonymous visitors to known customers for higher match rates.
  </Card>

  <Card title="TikTok Events API" icon="tiktok" href="/destinations/tiktok">
    Set up TikTok's Events API as another server-side destination alongside Meta.
  </Card>

  <Card title="Events not reaching destination" icon="wrench" href="/troubleshooting/events-not-reaching-destination">
    End-to-end diagnostic guide when events aren't arriving at any destination.
  </Card>
</CardGroup>
