Skip to content

Guide · Meta tracking

Meta Pixel and Conversions API for lead generation websites

For a lead generation site, the tracking question isn’t only whether the Pixel fires. It’s which event you teach Meta, whether each lead is counted once, and whether Meta’s numbers reconcile with your CRM. Fixing tracking changes the numbers; it doesn’t create demand.

Do I need the Conversions API if I already have the Meta Pixel?

Short answer

Yes, for most lead generation sites. The Pixel runs in the visitor’s browser and misses events lost to browser restrictions, ad blockers or pages that don’t finish loading. The Conversions API sends events from your server. Send both with a shared event ID so Meta counts each lead once and receives more complete matching information.

Meta PixelConversions API
Runs inThe visitor’s browserYour server or a server-side tag
Loses events whenScripts are blocked, cookies are restricted or the page doesn’t loadThe integration fails or sends incomplete data
KnowsBrowser context such as the click and browser cookiesWhat your server confirmed, such as a validated, non-spam submission
Best use for leadsBrowser signal and audiencesThe reliable record of a confirmed lead

Original framework

Which Meta events should a lead generation site send?

Short answer

Start with a Lead event fired only on a validated, server-confirmed form submission, not a page view or button click. Record calls and chat clicks as Contact for audiences and reporting. When you have enough volume and CRM stages, a deeper qualified-lead signal can steer delivery better; that step is covered in the Conversion Leads guide.

The lead-gen event map
EventFires whenSent byUsed forDeduplication key
LeadA form submission passes server validationPixel and Conversions APIEarly optimisation and reportingOne event ID per submission
ScheduleA meeting or site visit is booked through a schedulerConversions API from the scheduler, or Pixel on its confirmationReporting; optimisation if volume allowsBooking ID
ContactClick to call, WhatsApp or emailPixelAudiences and reporting, not optimisationNone needed
Qualified stageSales marks the lead qualifiedConversions API from the CRM, not the websiteDeeper optimisationMeta lead ID or your own lead ID
PageView, ViewContentPage loadsPixelRetargeting audiences onlyNot needed

Meta’s standard events reference defines Lead as a completed sign-up, Contact as someone initiating contact by phone, SMS, email or chat, and Schedule as booking an appointment. Stage mapping across Google, Meta and LinkedIn is in CRM lead stages for ad platforms.

Form submit or thank-you page?

Fire Lead when the server accepts the submission, and have the thank-you page read the same event ID rather than create a new one. A Lead fired on every thank-you page load double-counts refreshes and bookmarks, and counts spam that your server rejected. Button-click triggers are worse: they fire when validation fails.

Do Instant Form leads need the Pixel?

Short answer

No. Instant Form leads are captured inside Facebook or Instagram, so Meta already records the submission and no Pixel event is involved. What they need is feedback: sending CRM lead stages back through the Conversions API, matched by Meta’s lead ID, so Meta learns which form leads became qualified rather than optimising only for submissions.

That is Meta’s Conversion Leads set-up, covered step by step in Conversion Leads optimisation. Form design is in Instant Forms lead quality. Many accounts run both: Instant Forms for volume and a website form for buyers who need detail first. Only the website form needs this guide’s Pixel and Conversions API set-up.

How does Meta deduplicate Pixel and Conversions API events?

Short answer

Meta treats a browser event and a server event as the same conversion when they share the same event name and event ID and reach the same Pixel within 48 hours. Generate one unique ID per submission, pass it to the Pixel and send the identical value from the server. A missing or mismatched ID produces double-counted leads.

Meta’s deduplication documentation recommends event_id with event_name. It also describes an alternative using event_name with fbp or external_id, which has a limitation: server events aren’t discarded if no matching browser event arrived in the previous 48 hours. When both events match, Meta generally keeps the one received first.

  1. Create the ID once, when the form loads or on submit, such as a UUID.
  2. Send it with the Pixel Lead event as eventID.
  3. Post it with the form in a hidden field so the server has the same value.
  4. Send it from the server as event_id, with event_name set to exactly Lead.
  5. Check Events Manager for both sources and deduplicated counts.

Common failures: thank-you page reloads creating new IDs; a tag manager and a hard-coded Pixel both firing; a scheduler or form embedded in an iframe that the page’s Pixel can’t see; event names that differ in case; and plug-ins that send server events without any ID.

Matching

What is Event Match Quality?

Short answer

Event Match Quality is Meta’s 0 to 10 score for how effective the customer information sent with a website server event is at matching events to Meta accounts. Meta calculates it from the last 48 hours of data. It improves when you send more valid identifiers, such as hashed email and phone, external ID, and click and browser IDs.

Customer information parameters for a lead event (Meta for Developers)
ParameterWhat it isHash it?Lead-gen note
em, phEmail and phoneYes, SHA-256Collected on almost every lead form; normalise before hashing
fn, ln, ct, countryName and locationYesSend when the form collects them
external_idYour own ID for the person or leadRecommendedUse the CRM lead ID so later stage events can match
fbc, fbpClick ID and browser IDNoCapture from the cookies or click URL and post with the form
client_ip_address, client_user_agentBrowser detailsNoMeta requires the user agent for website events

Meta’s about Event Match Quality page describes the score and says recommended improvements are shown in Events Manager. Meta publishes no target score per event type, so don’t chase a number from a blog. Improve the trend, act on Meta’s own recommendations, and never send prohibited information such as health or financial details, in parameters, URLs or event names (Meta’s prohibited information rules).

Delivery checks: accepted, rejected, retried

Tracking breaks quietly: a site release drops a hidden field, a token expires, a plug-in update changes the event name. A monthly routine catches most of it.

  • Accepted vs rejected. Check Events Manager diagnostics for server events that failed and why.
  • Retries without duplicates. If your integration retries failed sends, it must reuse the same event ID so a retry never becomes a second lead.
  • Both sources present. Lead should show browser and server events, deduplicated.
  • Reconcile with the CRM. Compare Meta-reported website leads with CRM leads from Meta for the same dates. Remember that Meta attributes leads to ad interactions within its attribution setting, while your CRM may use last click, so agree the comparison before judging it.

Zephra supports first-party and server-side conversion tracking, including the Meta Conversions API where configured, and checks whether events are accepted, rejected or retried without duplicates. See conversion tracking.

Worked numbers

Why Meta showed 140 leads and the CRM showed 96

An EPC engineering firm in India spends ₹84,000 a month on Meta website lead campaigns.

FindingCauseFix
Refreshes countedPixel fired Lead on every thank-you page loadFire on server confirmation; thank-you page reuses the event ID
Double countingServer events sent without an event IDShared event_id on both sources
Spam countedPixel fired before server-side spam filteringSend Lead only after validation
Before

140 vs 96

Reported cost per lead was ₹600 (₹84,000 ÷ 140). The CRM’s real cost per lead was ₹875 (₹84,000 ÷ 96).

After

101 vs 96

The 5 extra leads were internal test submissions, now excluded from the CRM. Reported cost per lead is about ₹832.

What changed

The numbers, not the business

Reported cost per lead rose by about 39% overnight. Nothing about demand changed; Meta now learns from real leads. Re-baseline targets before judging the next month.

A US SaaS team saw a similar gap the other way: its demo scheduler ran inside an iframe, so the page’s Pixel missed bookings. Sending Schedule from the scheduler’s server confirmation closed it. More in the signal gap.

What fixing tracking does and doesn’t change

Adding the Conversions API or fixing deduplication changes what Meta reports and what it learns from. It does not create leads. Expect reported leads to rise when lost events are recovered, or fall when duplicates are removed, and treat either as a new baseline rather than a performance change. Any real gain shows up weeks later as more qualified leads for the same spend.

Meta’s Business Tools Terms require you to have the lawful rights to collect and share data, to hash contact information and not to share sensitive information. National law adds its own requirements:

  • India. The Digital Personal Data Protection Act 2023 requires notice and consent for processing personal data (MeitY). Say in the form notice that data may be shared with advertising platforms.
  • UAE. The federal Personal Data Protection Law applies outside free zones with their own regimes, such as DIFC and ADGM (u.ae). Check your free zone’s rules.
  • US. State privacy laws give people rights to opt out of sharing for advertising; honour opt-outs in your tags and server events.

This is platform and technical guidance, not legal advice. The legal detail is in lead generation compliance.

What to measure next

  • Gap between Meta-reported website leads and CRM leads from Meta, monthly.
  • Share of Lead events received from both browser and server.
  • Event Match Quality trend for Lead.
  • Rejected server events per week.
  • Share of CRM leads carrying a click ID, Meta lead ID or external ID.

Related: B2B retargeting on Meta, Google offline conversion import and the event deduplication glossary entry.

Questions, answered

Meta Pixel and Conversions API FAQ

01Will the Conversions API increase my leads?

Not by itself. It improves measurement and the signal Meta learns from. Reported leads may change straight away; any real gain shows up later as more qualified leads for the same spend.

02Why does Meta show more leads than my CRM?

The usual causes are duplicate events without a shared event ID, Lead firing on thank-you page loads, spam counted before validation, and different attribution rules. Fix the first three, then compare on agreed dates and attribution.

03Should I install the Pixel through a tag manager or hard-code it?

Either works. Choose one. Most duplicate-event problems come from running both, or from a website plug-in adding a second Pixel without anyone noticing.

04Should I use a direct integration or a partner or gateway?

A partner integration or gateway is faster to set up; a direct server integration gives more control over validation and event IDs. For lead forms, what matters most is that the server event fires after validation and carries the same ID as the browser event.

05Is the Conversions API allowed under India’s DPDP Act or the UAE PDPL?

Server-side sharing is subject to the same rules as browser tracking: clear notice, a lawful basis or consent, and hashed contact data. Take legal advice for your situation; this guide is not legal advice.

06How often should I reconcile Meta and CRM leads?

Monthly, and after every website release or form change. A sudden jump or drop in the gap is usually a tracking change, not a demand change.

Your account

Check whether your Meta events are complete and counted once.

The free ad account assessment covers measurement gaps across Meta, Google and LinkedIn in 10–15 minutes, with no CRM required and no campaign changes.