Home › Guides › Meta Conversions API setup
Meta Conversions API setup: a step-by-step guide for lead-gen businesses
Meta Conversions API setup comes down to four jobs: choose a route (Meta's one-click setup, a partner, the Gateway or a direct build), send the same events as your Pixel with a shared event_id, add hashed customer data so Meta can match each event, and send CRM outcomes through the separate Conversions API for CRM.
A common setup in UAE lead-gen accounts is a Pixel that fires on the thank-you page and nothing else. Meta then learns from whoever fills in a form, not from who picks up the phone, books the viewing or pays the deposit.
The Conversions API fixes the first half of that problem. This guide covers the setup I use for real estate, clinic and service businesses, including the step that matters most for lead-gen: getting what happens after the lead back to Meta.
What the Meta Conversions API does, and what it does not
The Conversions API sends events from your server, website platform, app or CRM straight to Meta, which processes them like Pixel events, according to Meta's Conversions API overview.
The Pixel runs in the visitor's browser, and browser events can go missing. Meta's best-practice page says the Conversions API can capture website events the Pixel may lose, plus offline events the Pixel cannot see at all.
It does not, on its own, tell Meta which leads became customers. Sales that close on WhatsApp, on a call or in your CRM a week later need a separate data flow, covered below.
Choose your Meta Conversions API setup route first
Meta's get-started page says the integration methods "vary by level of effort, cost, and the features they enable", so the route is the first decision, not the last.
| Route | What it is |
|---|---|
| Set up with Meta (one click) | Turned on in Events Manager for a site that already has the Pixel. Meta says it needs no code, configuration or setup fees |
| Partner integration | Your website platform or CRM connects to Meta for you |
| Conversions API Gateway | Meta's gateway, installed in your own AWS account from Events Manager |
| Direct or server-side GTM | Your developer sends events to the API with an access token, with full control over what is sent |
The one-click option covers website events only. The Gateway runs in AWS, and Meta's setup guide says creating it takes about 30 to 40 minutes and that it can only live in one region.
My decision rule for UAE lead-gen businesses:
- Website form leads, small team, no developer. Start with the one-click option in Events Manager. Meta says it needs no code.
- Your platform or CRM offers a Meta connection. Use it before building anything, and check which events it sends.
- No code, but someone can manage an AWS account. The Gateway is an option.
- Leads close offline and you have a developer or a CRM admin. Build a direct integration or use server-side GTM for the website, and plan the CRM integration as a separate project.
Step 1: use your existing Pixel and generate the access token
Meta's get-started page requires a Pixel ID and a Meta Business Suite account, and says to "use the same Pixel ID for your browser and server events". No Pixel on the site yet? Do the Meta Pixel setup first, then come back to this step.
A mistake I see: a developer creates a fresh Pixel for the server events, and Meta ends up with two half-complete data sources. Check in Events Manager which Pixel your ads optimise for, and use that one.
A direct integration also needs an access token with every API call. Meta recommends generating it in Events Manager: choose the Pixel, open Settings, find the Conversions API section and click "Generate access token" under "Set up manually". The link is only visible to users with developer privileges for the business.
Then open the Overview tab, click Manage Integrations and Manage next to Conversions API. Meta says this creates a Conversions API app and system user for you, with no App Review needed. Treat the token like a password: share it through a password manager, not on WhatsApp or by email.
Step 2: send the events that matter for leads
Server events need an event name, event time, customer information and action source, and Meta's best-practice page says website events also need the page URL and user agent.
For lead-gen sites, Meta's standard events already cover the actions you care about: Lead (a sign-up is completed), Contact (someone reaches out by phone, text, email or chat), Schedule (an appointment is booked) and SubmitApplication. Pick the events your Pixel already sends and send the same ones from the server.
Meta also says to send events in real time or in batches close to real time, so website leads should go out as they happen.
Step 3: deduplicate with event_id
Meta's deduplication guide says that when the Pixel and the Conversions API send the same event, you must deduplicate, ideally with a matching event_id and event name.
In practice: when the form submits, your site creates one ID for that lead. The Pixel sends it as eventID and your server sends it as event_id, with the same event name (Lead and Lead, not Lead and lead_submitted). Meta generally keeps the first one and discards the copy.
Meta only deduplicates events that arrive within 48 hours of the first event with that event_id, so a late server copy counts again.
What I see in UAE accounts: duplicates are the first thing I check, before missing events. A plugin sends a server Lead, a developer adds another, and the Pixel fires a third. The cost per lead looks great; the sales team cannot find the leads. Check deduplication in Events Manager before you trust any number.
Step 4: send customer information Meta can match
Meta's customer information parameters page says email, phone and name must be normalised and SHA-256 hashed, while IP address, user agent and the fbc and fbp browser IDs must not be.
- Email. Trim spaces and convert to lowercase before hashing.
- Phone. Remove symbols, letters and leading zeros, and include the country code. Meta says numbers "must include a country code to be used for matching", even if all your customers are in one country. A Dubai mobile written 050 123 4567 becomes 971501234567 before hashing.
- fbc and fbp. Read them from the _fbc and _fbp cookies on your domain and send them as they are.
- external_id. Your own lead or customer ID. Meta's best-practice page says to include it with every event.
The phone format is a fix I make often in UAE accounts: forms store 05x numbers without 971, so the hashed phone matches nothing.
Step 5: test, then watch Event Match Quality
Meta recommends the Test Events tool in Events Manager to confirm server events arrive and are deduplicated. Use your own details: Meta says test events that do not match an account may be discarded.
Submit a test lead with a 971 phone number, then check that the server event arrives with the same event_id as the browser event and only one Lead counts.
After that, look at Event Match Quality, a score out of 10 that Meta shows for each server event. Meta says only matched events can be used for attribution and ad delivery optimisation; unmatched ones count for basic measurement only. Meta says sending more customer information may help increase Event Match Quality. EMQ is currently shown only for web events.
Web CAPI does not send CRM outcomes
Meta describes the Conversions API for CRM as a separate integration from your website setup, because the parameters differ and the data comes from your CRM.
Meta says that connecting your CRM and using the Conversion Leads goal may bring higher quality leads that are more likely to convert. That goal currently only works with Facebook and Instagram Instant Forms, and Meta's fit check lists:
- the 15 to 17 digit Meta Lead ID stored in your CRM (or, without it, click ID, phone or email)
- at least 200 leads a month
- uploads at least once a day
- the stage you optimise for happening within 28 days of the lead, with a conversion rate between 1% and 40%
Meta puts a developer build at 3 to 4 weeks and a Zapier or partner connection at under a day, followed by a training period of 2 to 4 weeks. If you run click-to-WhatsApp ads instead of forms, the data flow is different; I compare the two in click-to-WhatsApp ads vs Instant Forms.
Below 200 leads a month, I still send CRM stages back: the data is ready when volume grows, and you see which campaigns bring buyers. My Meta Ads learning phase guide covers what to optimise for when the event you care about is too rare.
The set-up order I use
On one full-funnel account, rebuilding CRM lifecycle stages and syncing them to Meta and Google, plus CAPI and offline conversion tracking, was a core part of reaching a 780% ROI. This is the order I follow, and why my advice is always to fix your ad tracking first before touching budgets:
- Audit what exists. List every Pixel, plugin and partner sending events, and which Pixel your ads use.
- Pick one route. One-click, partner, Gateway or direct, using the rule above. One source of server events per action.
- Match the events. Same event names on the Pixel and server, with a shared event_id on every lead.
- Clean the customer data. Lowercase emails, 971 phone numbers, fbc and fbp passed through, your lead ID as external_id.
- Test with your own lead. Test Events tool, one Lead counted, then check Event Match Quality once real leads have come through.
- Connect the CRM. Store the Meta Lead ID, define your stages and send them back daily, whether or not you qualify for Conversion Leads yet.
Frequently asked questions
Do I still need the Meta Pixel if I set up the Conversions API?+
What is the easiest way to set up the Meta Conversions API?+
How do I stop Meta counting the same conversion twice?+
Does the Conversions API send my CRM lead stages to Meta?+
Related
Is Meta learning from leads your sales team never closes?
Apply for a free strategy call. We'll check your Pixel, your Conversions API events and deduplication, and what Meta is really optimising for.