Skip to content
Start something

Insights One lead, counted once

Meta’s Conversions API and GA4 see the same lead form from two sides. How to wire them so each lead is counted once, keeps its source, and reports back what it became.

Lead forms · 5 min read · By Fezey Media ·

Contents
  1. Two systems, one form
  2. Meta: the browser and the server
  3. GA4: the tag stays, the server adds
  4. Consent comes first
  5. Send back what the lead became
  6. A setup for a UAE lead form

To count a lead form once in Meta and GA4, send the lead from the browser and from your server with the same event ID, so Meta merges the two copies. Keep the GA4 tag on the page, set consent defaults before any tag loads, and send the CRM’s outcomes back to the ad platforms.

Two systems, one form

A lead form on a website is usually watched by at least two systems. The Meta Pixel tells Meta’s ad system that a lead happened. Google Analytics 4 records it for your reports.

Both run in the visitor’s browser, and both miss some of what happens there: blocked scripts, declined consent, a phone that closes the page before the tag fires.

The fix is a second path from your own server, and a rule that stops the two paths counting the same lead twice.

Illustrative

Lead

ID QKXR-VTPA

Browser · Pixel

Blocker

Server · Conversions API

Meta

ID WMZT-HBRC

Counted once: the server copy carries the browser’s ID, so Meta keeps one lead.

Meta: the browser and the server

Meta’s Conversions API sends events to Meta from your server, website platform, app or CRM. Meta recommends running it alongside the Pixel, a “redundant setup”, so a lead the browser missed still arrives from the server.

Two copies of one lead then have to become one. Meta treats them as the same event when the Pixel’s eventID matches the server’s event_id and the event names match, and only if the second arrives within 48 hours of the first.

In practice, create one ID when the form is submitted. Send it with the Pixel event, and send the same ID with the server event.

Illustrative

First event

48 hours

Counted once

Counted twice

The server event carries contact details only in hashed form. Meta’s systems are designed to refuse unhashed contact information such as email and phone, while its browser identifiers, the fbp and fbc cookies, go as they are. If you run click-to-WhatsApp ads, Meta’s parameters also include the click ID those ads create (ctwa_clid).

GA4: the tag stays, the server adds

In GA4, mark the form submission as a key event, which Google defines as an action “particularly important to the success of your business”.

GA4 has its own server path, the Measurement Protocol, for “server-to-server and offline interactions”. Google says it is meant “to augment automatic collection”, not replace it. Keep the tag on the page, and use the server path for what the browser can’t see, such as a lead your CRM marks qualified days later.

Illustrative

Browser tag

CRM

GA4

Qualified

“to augment automatic collection”

Every tag above should wait for the visitor’s choice. Google’s Consent Mode adjusts its tags to that choice. In its basic form the tags don’t load until the visitor answers the consent banner. In its advanced form they load at once and send cookieless pings while consent is denied. The Meta Pixel has its own switch: Meta’s documentation shows it revoked before the Pixel starts and granted once the visitor agrees.

Illustrative

Google tag

Meta Pixel

Google

Meta

Basic, consent denied: the tags wait behind the banner and send nothing.

Send back what the lead became

A form submission is the start of the story. Ad platforms optimise for whatever you report, so report what the lead became, as we argued in Cheap leads are expensive.

Meta’s CRM integration sends lead stages from your CRM back through the Conversions API, so campaigns can optimise towards the stage you care about. Its conditions are specific. It works with Meta’s Instant Forms. Meta lists at least 200 leads a month as a fit, the chosen stage should happen within 28 days of the lead, and the data should be uploaded at least once a day.

Google Ads has its own route, enhanced conversions for leads. It uses details the visitor typed into your form, such as an email address, hashed, to credit the outcomes you import to the ads that produced them.

Illustrative

New

Qualified

Won

Meta

Google Ads

200 leads a month · within 28 days · daily upload

hashed form details

A setup for a UAE lead form

  1. One event, one ID. Name the event once (Lead in Meta, generate_lead in GA4) and create a fresh ID per submission, shared by the browser and the server.
  2. The source travels with the lead. Save campaign tags and click IDs with each form into the CRM, as in Measure before you scale.
  3. Consent before tags. Set the defaults before any tag loads, and choose between basic and advanced Consent Mode.
  4. The server sends the same lead. The same event name, the same ID, and only the contact details the visitor agreed to share, hashed.
  5. Outcomes go back every day. Qualified and won leads from the CRM to Meta, and to Google Ads through enhanced conversions for leads.
  6. WhatsApp gets its own event. Many UAE enquiries start with a tap on a WhatsApp button; record it as a contact, separate from the form.

Illustrative

Ad platforms

Analytics

CRM

The monthly check from Measure before you scale: three readings, close enough to agree.

If your ad platforms and your CRM disagree about how many leads you had, start there. Start something, and we’ll wire the form with you.

Related reading Performance Marketing · Tech, Automations & AI · Interior design lead generation

Growth only makes sense when you can see the whole system.

What we do

All capabilities

Talk to us

Second lineWhatsAppCall

WhatsApp and calls

Usually replies within an hour, all days of the week.

Office #118, Your Own Business Center, Zalfa Building, Al Garhoud, Dubai, UAE

Studio time

CareersOpen roles in Dubai.

LinkedIn

Start something