Skip to content

Meta Ads ​

What It Does ​

The Meta Ads connection is done exclusively through OAuth (Connect button, authorization in Facebook). No token is ever pasted by hand. Once connected, DURUM.ai imports:

  • Spend per ad per day: spend, impressions, clicks, reach, CPM, CPC, CTR, actions and action values reported by Meta.
  • Metadata of campaigns, ad sets and ads (names, statuses) and creatives (body, title, call to action, thumbnail).

The same connection is the base of the Conversions API: the pixel chosen in the Meta configuration enables server-side sending of your conversions without any extra token.


Before You Start ​

  • A Facebook account with access (in Business Manager) to the ad account to track.
  • Ideally a role on the Facebook Page that publishes your ads and access to the pixel of that account.
  • Access to DURUM.ai with permission to edit integrations.

Step-by-Step Connection ​

  1. Open Settings → Integrations → Meta Ads card → Connect.
  2. Facebook shows the authorization window. Permissions requested: ads management and reading (ads_management, ads_read), Page list (pages_show_list) and Page engagement reading (pages_read_engagement).
  3. Accept. You return to DURUM.ai and the configuration window opens.
  4. Ad account to track: the list shows every accessible account with its status (Active, Disabled, Unsettled). Choose one: that is the account whose spend will be synced.
  5. Facebook Page (ad publishing): the Page your ads are published from.
  6. Meta Pixel (Conversions API): the pixel chosen here is connected to the Conversions API immediately, with no separate setup.
  7. Click Save. DURUM.ai immediately starts an import of the last 30 days of spend and the creative import.

To change the account, Page or pixel later: Settings → Integrations → Meta Ads → Configuration.

Access token

The token obtained through OAuth is encrypted. When Meta reports that it does not expire, it is kept as is; when it has an expiration date, an automatic weekly refresh renews it before the deadline. If the card shows "Access to Meta Ads is no longer valid", click Reconnect.


Sync Frequency ​

PassFrequencyWindow
Spend syncEvery hourLast 3 days, per account
Deep passAbout once a day (as soon as the last one is older than 22 hours)Last 30 days
ReconciliationEvery day at 08:45 UTC30 days, with a comparison of the stored total to the Meta total (1% or $5 tolerance)

Why three passes: Meta revises its numbers retroactively (attribution windows, refunded invalid traffic) up to about 28 days after the date. The hourly pass keeps freshness, the deep pass and the reconciliation guarantee parity.

When Meta rate-limits, the sync slows itself down and resumes on the next pass; the card then shows a yellow dot, not an error.


Verify It Works ​

  1. After saving the account, the Meta Ads card shows Connected and the last sync date.
  2. Open the Ads page: the campaigns, ad sets and ads of the chosen account appear with their spend over the last 30 days.
  3. If the card shows a sync error, the technical detail is visible under Technical detail (for support).

Conversions API (server-side conversions) ​

On top of the browser pixel, DURUM.ai sends your conversions to Meta server to server. This lets Meta optimize on real outcomes (appointments, sales, new customers), including when the conversion happens offline, days after the click.

Where it is configured ​

Settings → Events and CAPI group → Conversions tab.

  • Destinations: the Facebook destination is connected as soon as a pixel has been chosen in the Meta Ads configuration. You can also add a pixel from Conversions (Connect a destination → "Meta Pixel (connected account)"): no token to paste, the Meta Ads connection is reused. A System User token pasted by hand remains available as a fallback.
  • Several pixels: one account can connect several pixels (for example one per service) and route each event to the right pixel by domain or URL path, with a default pixel for the rest.
  • Conversions (workflows): New conversion button.
    • Step 1, Event: one or more events received by DURUM.ai: lead, application, booking, no-show, sale, payment, refund, new customer, or a custom event. Optional filters: source (utm_source), campaign (utm_campaign), calendar, product, custom field.
    • Step 2, Destination: Facebook and the Meta event to send (standard event, or an existing or new custom conversion), pixel choice (or automatic routing).
    • Test mode: with a test event code, events only appear in Events Manager, Test events tab; no real conversion is counted.
  • Recent logs: every send with its status, the payload sent, Meta's response and a Resend button for failures.

What is sent ​

Meta event proposed by default per trigger (editable):

DURUM.ai triggerMeta event
LeadLead
ApplicationSubmitApplication
BookingSchedule
No-showContact
Sale, payment, refundPurchase (refund sent with a negative value)
New customer (first paid purchase of an identity)NewClient, custom conversion created in the ad account

Fields sent automatically: amount and account currency, product name and identifier, order number. Sends leave every minute, in batches of 25, with an optional delay per conversion. A failure is retried 5 times (5 s, 30 s, 5 min, 30 min, 6 h) then parked as a permanent failure, visible in the logs and resendable.

"No event without an identifier" guard ​

Meta rejects an event whose customer parameters are missing or too broad, and a single empty event brings the whole batch down with it. Two protections are applied before sending:

  1. Identity guard: an event with no email, no phone, no first name + last name pair, no fbc/fbp, no external identifier and no IP + browser pair is set aside before sending with the reason meta_sans_identifiant, visible in the logs. It burns no attempt and does not block the others.
  2. Batch isolation: if Meta rejects a batch for an invalid parameter, each event is resent alone, so only the faulty one fails.

How Match Quality Is Maximized ​

Meta scores every received event with an Event Match Quality score. For every conversion, DURUM.ai assembles as much information as possible:

SignalSource
Email and phoneYour forms, your CRM and your payments (always sent hashed)
First name, last name, city, state, postal code, countryForm, CRM or billing data, when available
External identifierContact identifier
Click ID (fbc) and Meta cookie (fbp)Captured when the prospect lands from the ad, then reattached to the conversion even weeks later
IP address and browserThe prospect's original visit, never your sales team's
Event identifierThe same as the browser pixel when it fired the same event within the hour: Meta merges the two flows instead of counting twice

Matching works by email and by phone: a customer who pays with a different email than their opt-in is still recognized. Sales, payments and refunds are sent with the system_generated source, other events with website.

The match quality of every pixel is polled from Meta every day, and an hourly watch flags repeated failures or a dropping score.

Requirement

All of this matching is automatic. The only requirement: the DURUM.ai tracking script must be installed on your opt-in pages (see Behavioral Tracking).


Troubleshooting ​

ProblemSolution
No spend appearsCheck that an ad account is chosen in Configuration; the 30-day import starts on save, the hourly sync takes over
"Access to Meta Ads is no longer valid"The token was revoked or expired: Reconnect
No Page in the listThe pages_show_list permission was not granted: reconnect Meta and accept all permissions
No pixel in the listThe connected account has no access to the pixel: grant access in Business Manager, or enter the pixel manually in Conversions
Yellow dot on the cardMeta is temporarily rate-limiting: the sync resumes on its own
meta_sans_identifiant conversion in the logsThe event had no usable identifier: check that the tracking script is installed and that the form passes an email or a phone
Duplicate conversions in Events ManagerTwo active workflows send the same event to the same platform without a distinctive filter: add a filter or disable one of them

FAQ ​

Can I paste a Meta token instead of going through OAuth? ​

Not for the Meta Ads connection: only OAuth is offered. For the Conversions API, a System User token can be entered as a fallback, but the recommended mode reuses the OAuth connection.

Can I track several ad accounts? ​

The list shows every account your connection can access, and one is tracked per DURUM.ai account. To switch accounts, open Configuration.

How often is spend updated? ​

Every hour over the last 3 days, with a 30-day pass about once a day and a daily reconciliation. A number revised by Meta is therefore corrected by the next morning at the latest.

Are refunds sent to Meta? ​

Yes, as a Purchase with a negative value, which deducts them from the ROAS computed by Meta.


Powered by DURUM.ai: ad attribution and operational intelligence