Key takeaways
- The Conversions API is a server-to-server connection that lets you send conversion events to Meta from your own systems instead of relying only on the visitor's browser.
- Most setups run the Pixel and the Conversions API together and use a shared event name and event ID so Meta counts each conversion once.
- The strongest reason for a small advertiser to adopt it is not recovering lost browser events. It is sending events that only your CRM knows about, such as a qualified lead or a booked job.
- Sending an event does not remove your duty to have a lawful basis and honest consent handling. The API moves data; it does not clear it.
01
What is the Conversions API?
The Conversions API is Meta's server-to-server route for sending marketing events, such as a lead, a purchase or a booked appointment, from your own systems to Meta for ad optimisation and measurement. Meta's developer documentation describes it as a connection between an advertiser's data sources and Meta, and lists websites, apps, business messaging, offline conversions and CRM systems among the sources.
The contrast with the Pixel is where the event originates. A Pixel event fires from JavaScript running in the visitor's browser, so it exists only if the browser loads the script and lets it send. A Conversions API event is sent by a system you control, usually after something has been recorded in your database or CRM. Meta says server events are processed like events from the Pixel and its other channels, which is why the two can feed the same campaigns.
02
How do browser events and server events differ?
A browser event knows things the server may not: the page the visitor was on, the Meta cookie values the Pixel set, and the moment of the click. A server event knows things the browser never sees, such as whether a lead was later judged qualified, whether a quote was accepted, or what the order was worth after a refund. Neither is a replacement for the other in every case.
That is why Meta's documentation describes sending events redundantly through both channels for website activity. If one channel fails to deliver an event, the other can still carry it. The cost of running both is that the same conversion can arrive twice, and that is what deduplication is for.
| Question | Browser (Pixel) | Server (Conversions API) |
|---|---|---|
| Where does the event start? | JavaScript in the visitor's browser | Your server, form handler, CRM or automation tool |
| What can stop it? | Anything that prevents the script from running or sending | A failed request from your side, or missing data you did not capture |
| Good at reporting | Page views, button clicks, on-site behaviour | Confirmed outcomes: qualified, booked, paid, refunded |
| Cookie values (fbp, fbc) | Set and read automatically | You must capture and pass them yourself |
| Typical maintenance | A tag in your site or tag manager | An integration, a partner platform or custom code |
03
How does deduplication stop one lead counting twice?
When the same conversion arrives from both channels, Meta needs a way to recognise it as one event. Its documentation gives two methods. The recommended one matches on event_name plus event_id: both channels must send the same name and the same ID for the same conversion. Meta says it generally keeps the event it receives first, and the matching window is 48 hours from the first event.
The second method matches on event_name together with fbp or external_id. It works only when the browser event arrives first and the server event follows within 48 hours; server events sent with no earlier browser event are not deduplicated. For a form-based business the simplest reliable pattern is to generate one ID when the form is submitted, put it in the Pixel call and store it so the server can send the same ID.
A worked example, with invented values. A roofing site generates lead_8841 when a form is submitted. The Pixel fires Lead with event_id lead_8841. The CRM saves the record and, two minutes later, the server sends Lead with event_id lead_8841. Same name, same ID, inside 48 hours, so Meta treats the pair as one lead. If the server had invented its own ID, the report would show two.
04
What is event match quality, and what raises it?
Event match quality is a score from 0 to 10 that Events Manager shows for web events. It reflects how well the customer information in your events can be matched to Meta accounts. Meta's best-practice page says that richer customer data, including email, IP address, name and phone, improves matching, and that events should be sent as they happen or in near real time.
The parameters have rules. Contact fields such as email and phone go in hashed, after normalising: email is trimmed and lowercased, phone numbers carry a country code with symbols and leading zeros removed. Client IP address and client user agent must never be hashed, and the fbp and fbc cookie values are also sent as they are. Hashing a field that should be sent as it is, or the reverse, is an easy mistake to make and can leave a match score low even though plenty of data is being sent.
- Pass the email or phone the person typed into your form, normalised and hashed as Meta specifies.
- Pass client_ip_address and client_user_agent unhashed; Meta's parameter documentation says the user agent is required for website events.
- Capture fbp and fbc from the browser at form submission and store them with the lead so a later server event can include them.
- Include an external_id, such as your CRM contact ID, so events from the same person link up.
- Send the event soon after it happens. A batch that goes out days later gives Meta less to work with.
05
What about privacy and consent?
Sending data from a server does not change whether you are allowed to send it. If your visitors are covered by laws that require consent for advertising cookies or for sharing personal data with an ad platform, the Conversions API call needs the same permission the Pixel would have needed. Hashing an email address makes it harder to read in transit; it does not make it anonymous in a legal sense.
The practical rule we recommend is to make the server send conditional on the same consent state the browser holds. Store the visitor's choice with the lead record, and let the integration skip or reduce the event when consent was not given. Requirements differ by country and by industry, and health, finance and legal businesses face stricter expectations, so confirm the setup with counsel before switching on any server-side sharing.
06
When does a small advertiser actually need it?
Skip it if you run a small spend, your leads are counted well enough by the Pixel, and nothing happens after the form that you want Meta to learn from. Setting it up adds an integration to maintain and a consent path to audit, and a small account may not repay either. This is also not for anyone who cannot say who owns the ad account and the website tag today.
Adopt it when the outcome you care about happens away from the browser. A home-services business that books jobs by phone, a clinic that confirms appointments by staff call, or a B2B team that qualifies leads in a CRM can all send the real result back to Meta. In that case the server event is the only way for the algorithm to learn which leads turned into revenue. Start with one event, the CRM-confirmed lead or booking, confirm in Events Manager that it deduplicates, then add more.
| Your situation | Suggested next step |
|---|---|
| Low spend, simple form, Pixel counts leads accurately | Keep the Pixel; revisit when spend or complexity grows |
| Leads are qualified or booked in a CRM | Send the qualified or booked event by server; start there |
| Ecommerce store on a major platform | Use the platform's native integration if it supports the API |
| Regulated vertical or strict consent rules | Get legal review first; send only with recorded consent |
07
What does a sensible first setup look like?
Choose the route with the least custom code that your stack allows. Meta's documentation presents the API as a way to send several event types and reduce the number of separate integrations a business maintains, and many website platforms, tag managers and CRMs offer a ready-made connector. A connector that already handles hashing, deduplication IDs and cookie capture is usually a better first move than a bespoke script, because the details in this post are exactly where hand-built versions go wrong.
An illustrative sequence for a service business. Week one: confirm the Pixel fires a Lead event on form submission and write down the exact event name. Week two: connect the CRM or form handler so that the same submission produces a server Lead with the same ID and the hashed email and phone. Week three: open Events Manager, check that browser and server events are both received, that the duplicate count is falling rather than rising, and that match quality has moved. Week four: add one CRM-confirmed event, such as a booked consultation, and give it a different event name so that it can be reported and optimised on separately.
Keep a log of what you changed and on what date. Server-side tracking failures are quiet: nothing breaks on the website, the number simply drifts. A monthly comparison of leads in the CRM against leads reported in Meta will show a gap long before the ad results do. The aim is a gap you understand, not a gap of zero, since the two systems count differently.
Was this useful? Send it to someone who owns this problem.
Primary sources and further reading
Use the source material to validate details against your own context and current platform configuration.
- Meta for Developers: Conversions API
- Meta for Developers: Handling duplicate Pixel and Conversions API events
- Meta for Developers: Customer information parameters
- Meta for Developers: Conversions API best practices
This field note follows the XenGrowth editorial policy: primary sources where available, visible limitations, material review dates, and no invented first-hand experience.
Stay with the problem
Related field notes
Revenue OperationsMarketing Audit: A 12-Point Check for Where Your Spend Leaks
GTM StrategySales Enablement for Small and Mid-Size Teams: Build What Sales Will Actually Use, and Measure It Honestly
GTM StrategyBrand Messaging Framework: A One-Page Version That Sales and Marketing Can Both Use, With a Fill-In Table