Facebook Conversions API (Meta CAPI)

Send web, app, offline, and physical store conversion events from your data warehouse to Meta using the Conversions API (CAPI). This is Meta's recommended server-side integration for improving ad targeting, attribution, and measurement.

Weld Facebook Conversion API

Meta's modern architecture centers on datasets, which unify website, app, offline/store, and messaging event data into a single pipeline. The Conversions API is the primary way to send events to your dataset.

For a full walkthrough with use-cases, see our step-by-step blog guide.

Features

Feature nameSupported
Bulk uploadTrueOnly on event insert

Setup Guide - Reverse ETL

Step 1 - Create the Reverse-ETL Destination

  1. Click on Reverse ETL in the Weld sidebar.
  2. If this is your first Reverse-ETL sync, the setup guide starts automatically. Otherwise, click Add Reverse ETL Sync.
  3. Find Facebook Conversions from the connector list and either select an existing connection or create a new one. You'll be prompted to authorize with your Meta account.

Step 2 - Target Details

The Facebook Conversions connection does not have additional configuration. This step is skipped.

Step 3 - Map Your Data

This is the most important step. You'll connect your SQL model to Meta's CAPI parameters.

Source Model

Select the SQL model that produces the event data you want to send. Your model should output one row per event.

SQL data model for Meta CAPI

Sync Mode

  • Insert โ€” Sends new events only (the only supported mode for CAPI)

Choose Identifier

Select the unique identifier to match records between source and destination. This is typically event_id or a unique row ID.

Field Mapping

Map columns from your SQL model to Meta CAPI parameters. Below is a reference for which fields to include and how to format them.

Weld automatically hashes all customer information parameters that require hashing (email, phone, name, city, etc.). You do not need to hash them yourself.

Required Fields
Your ColumnMaps toDescription
event_nameevent_nameStandard event name (e.g. Purchase, Lead, AddToCart, PageView) or a custom event name
event_timeevent_timeUNIX timestamp (seconds) of when the event occurred
action_sourceaction_sourceWhere the event happened: website, physical_store, app, phone_call, email, chat, system_generated, or other
Recommended Fields (improve Event Match Quality)

The more customer information you send, the higher your Event Match Quality (EMQ) score, and the better Meta can optimize your campaigns.

Your ColumnMaps toFormatHashed by Weld?
emailemLowercase emailYes
phonephDigits only, with country code (e.g. 15551234567)Yes
first_namefnLowercaseYes
last_namelnLowercaseYes
cityctLowercase, no spacesYes
statest2-letter state code, lowercaseYes
zipzpLowercaseYes
countrycountry2-letter ISO country code, lowercaseYes
client_ip_addressclient_ip_addressIPv4 or IPv6No
client_user_agentclient_user_agentRaw user-agent stringNo
fbcfbcThe _fbc cookie value from the user's browserNo
fbpfbpThe _fbp cookie value from the user's browserNo
external_idexternal_idYour internal user/customer IDRecommended
Deduplication Fields

If you also send the same events via the Meta Pixel (client-side), include these fields to prevent double-counting:

Your ColumnMaps toDescription
event_idevent_idMust match the eventID passed in the Meta Pixel fbq('track') call
Custom Data Fields (optional)
Your ColumnMaps toDescription
valuevalueMonetary value of the event (e.g. 49.99)
currencycurrencyISO 4217 currency code (e.g. USD, EUR)
content_idscontent_idsProduct IDs associated with the event
content_typecontent_typeEither product or product_group
order_idorder_idUsed for offline event deduplication
event_source_urlevent_source_urlURL where the event occurred (required for web events)

Step 4 - Schedule Sync

Choose how often to sync events to Meta. Meta recommends near-real-time delivery for best optimization results.

  • Independent: The sync runs on its own schedule (e.g. every 15 or 30 minutes).
  • Orchestration: The sync runs as part of a Weld orchestration workflow, after your upstream models refresh.

For most use-cases, we recommend syncing every 15-30 minutes.

Export to Meta CAPI with Weld Reverse-ETL

Step 5 - Finalize and Run

Click Start Sync to save your configuration and begin sending events.


Verifying Your Setup

After your first sync completes, verify that Meta is receiving and matching your events:

  1. Meta Events Manager โ†’ Test Events: Use Meta's Test Events tool to confirm server events are arriving. You can also use test_event_code in your payload during testing to route events to the test view without affecting production data.

  2. Meta Events Manager โ†’ Overview: Check that your CAPI events appear under the correct dataset with the label "Server" as the connection method.

  3. Event Match Quality (EMQ): Review the EMQ score for each event type (visible in Meta Events Manager). Aim for 6+ out of 10. If your score is low, add more customer information parameters to your SQL model.

  4. Deduplication Check: If you're sending redundant events (Pixel + CAPI), verify in the Test Events tool that duplicate events are being properly merged, not double-counted.

  5. Payload Helper: Use Meta's Payload Helper to validate your event payload structure. Meta also offers a Parameter Builder Library, a lightweight SDK for generating high-priority match keys following best practices.


Ongoing Monitoring

Setup is not a one-time task. Monitor these metrics weekly to maintain integration health:

MetricWhere to checkWhat to look for
Event Match Quality (EMQ)Meta Events Manager โ†’ event detailScore trending at 6+ out of 10. Drops indicate customer data coverage issues.
Deduplication rateMeta Events Manager โ†’ Test EventsHealthy redundant setups show consistent dedup. Zero dedup may mean mismatched event IDs.
Data freshnessMeta Events Manager โ†’ OverviewEvents should arrive within minutes of occurring. Delays hurt optimization.
"Additional conversions reported"Meta Events ManagerShows how many extra conversions CAPI captured vs. Pixel alone. Your proof of lift.
Dataset diagnosticsMeta Events Manager โ†’ DiagnosticsWarnings about invalid parameters, rejected events, or low match rates.

For teams managing CAPI at scale, Meta's Dataset Quality API lets you monitor event quality, match rates, and diagnostics programmatically, which is useful for building automated alerts.


Common Issues

ProblemSolution
Events rejected with event_time errorEnsure event_time is within 7 days for web events (62 days for physical_store). Add a WHERE filter in your SQL model.
Low Event Match Quality scoreAdd more customer information fields (email, phone, name, IP address). Each additional field improves matching.
Events appear duplicated in reportingEnsure event_id and event_name match between your Pixel and CAPI events. Both must use the exact same values.
City/country formatting errorscity must be lowercase with no special characters. country must be a 2-letter ISO code (e.g. us, not USA).
action_source errorMust be one of: website, physical_store, app, phone_call, email, chat, system_generated, other.
Events not matching to Meta accountsCheck that you're sending hashed customer data. Weld hashes automatically, but verify the raw data format is correct (e.g. email is a valid email, phone includes country code).

Was this page helpful?