Ad Platforms & CAPI · Sent server-side (beta)

Meta Conversions API (CAPI) integration

Beta: send confirmed purchases, leads and other conversions to Meta server-side, with hashed customer details and the visitor's Meta click data.

No credit card required · one script tag

Send confirmed conversions from SourceTrack to the Meta Conversions API, from SourceTrack’s servers rather than the visitor’s browser. You paste your dataset (Pixel) ID and a Conversions API access token, and SourceTrack sends each confirmed conversion to that dataset.

Server-side sending to ad platforms is in beta. Every attempt, success, failure and skip is listed in SourceTrack so you can check what reached Meta. Meta decides what it accepts and how it matches it.

What SourceTrack records

  • Meta click data: the fbclid from the landing page URL, and the _fbp and _fbc browser cookies when your Meta Pixel set them and ad storage was not denied.
  • A delivery log: each send appears under Delivery Health as sent, failed (with Meta’s error) or skipped (with the reason).
  • Meta’s own Event Match Quality: the Meta card shows the score Meta reports for your dataset, labelled as Meta’s number. When Meta does not return one, no number is shown.
  • Deduplication with your Meta Pixel: The standard SourceTrack tag gives each conversion it records one event ID and uses it as the event_id whenever SourceTrack sends that conversion to Meta. Turn on Fire the Meta Pixel event with the same event ID (off by default) and the tag fires your Pixel event with that ID, so Meta counts the conversion once. The cookieless tag does not do this.

What SourceTrack sends to Meta

  • An event name: for example Purchase, Lead, CompleteRegistration, Subscribe, Schedule, AddToCart or InitiateCheckout, depending on the conversion type. You can rename or block each event for Meta.
  • The value and currency, only when they are known. A missing value is left out, never sent as zero.
  • The order ID, and an event ID when the conversion has one, which Meta uses to drop a duplicate.
  • Match keys: the fbp and fbc values, a SHA-256 hash of the visitor’s email when the conversion has one, and a hash of SourceTrack’s visitor ID, the browser user agent, and the visitor’s IP address when SourceTrack could trust where it came from.
  • Hashed customer details from Stripe Checkout and Shopify orders: email, phone, city, state, postal code and country (plus first and last name from Shopify orders), normalized to Meta’s rules and hashed with SHA-256 before they leave. Only the hashes are sent; the plain values are not stored.

What SourceTrack does not do

  • It does not send a conversion the visitor declined consent for, or one from a browser that sent Global Privacy Control or Do Not Track.
  • It does not send test conversions, or browser conversions that were never confirmed (see below).
  • It does not fire your Meta Pixel unless you turn on Fire the Meta Pixel event with the same event ID, and it never changes your Pixel setup.
  • It does not send plain-text email addresses, phone numbers or names.

Step-by-step setup

Server-side sending is not part of the free plan.

Step 1: Get your dataset ID and access token

In Meta Events Manager, open the dataset (Pixel) you want to use. Copy its ID, then generate a Conversions API access token from the dataset’s settings.

Step 2: Add them in SourceTrack

Open Integrations → Advanced Tracking → Server-side Conversions (CAPI). On the Meta card, paste the Pixel ID and the Access token and save. The token is stored encrypted and is never shown again.

Step 3: Check the events

Open the Meta card’s event list to see which SourceTrack conversion types go out under which Meta event name, and rename or block any of them.

How it works under the hood

A conversion is sent only after something SourceTrack trusts has confirmed it: a Stripe or Shopify payment webhook, your inbound webhook signed with your secret API key, or a CSV import by a site owner or admin who ticks the box confirming the sales are real. A conversion reported by the browser alone is held for up to 72 hours and released only when a payment webhook confirms the same order. If nothing confirms it, it is not sent and the log says so.

When Meta answers with a temporary error, SourceTrack tries again a few times straight away, then keeps the event in an encrypted retry queue for up to 24 hours. If Meta gave no answer at all, SourceTrack does not send the event again, because Meta may already have counted it.

Common problems and fixes

  • The card says the platform rejected the token. It may have expired or been revoked. Generate a new one in Events Manager and paste it again.
  • Purchases are counted twice. Your Meta Pixel also records them with a different event ID. Turn on Fire the Meta Pixel event with the same event ID and remove your own Pixel call for those conversions, or use the sourcetrack_event_id from the dataLayer as the Pixel event ID.
  • A conversion shows “Held back”. It was reported by the browser and no payment webhook or other trusted source confirmed it. Connect Stripe or Shopify, or send it through your inbound webhook.
  • Nothing was sent for a visitor. Check the reason in Delivery Health. Declined consent, Global Privacy Control and Do Not Track all stop the send.

Frequently Asked Questions

Will Meta count conversions twice if I already have the Meta Pixel?

Not if the Pixel event and the server event carry the same event ID. Meta matches them on event name and event ID and keeps one. The standard SourceTrack tag creates that ID for each conversion it records (or uses the event_id you pass to sourcetrack.conversion()) and SourceTrack sends it with the server event. You can use it in two ways:

  • Let SourceTrack fire the Pixel event: turn on Fire the Meta Pixel event with the same event ID in your Meta CAPI settings. On pages that run the Meta Pixel, the tag calls it with the same event name and event ID as the server event, and never when the visitor has declined consent or sends Do Not Track or Global Privacy Control. Remove your own Pixel call for those conversions.
  • Fire it yourself with Google Tag Manager: the tag pushes a sourcetrack_conversion event to the dataLayer with sourcetrack_event_id; use it as the Pixel event’s eventID.

A sale that reaches Meta only from a Stripe or Shopify webhook, with no matching conversion from the SourceTrack tag, is sent with the webhook’s own ID, which your Pixel does not have.

Do I need my own server?

No. SourceTrack sends the events from its own servers. You only provide the dataset ID and the access token.

Does this import my Meta ad spend?

No. Ad spend comes from the separate Meta Ads account connection on the Integrations page, or from a CSV import.

What happens when Meta’s API is down?

SourceTrack retries temporary errors for up to 24 hours. After that the event is recorded as failed, not as sent.