Skip to content

Conversion tracking with GA4, Meta Pixel and the Conversions API

Performance MarketingAlmahira Editorial Team7 min read

A GA4 conversion tracking setup for a Dubai business has one job: show which ads and pages produce enquiries that turn into customers. That means tracking a few meaningful actions properly in GA4, Google Ads and Meta, rather than dozens of events nobody reads. It also means asking for consent before the tags run.

This guide covers the setup in order: the plan, the tags, consent, Google Ads, Meta and testing. We use this website's own consent-first GA4 setup as a worked example.

Key events, conversions and what changed

Google Analytics now calls the actions that matter to your business key events. The word conversion is reserved for actions used to measure ad campaigns and guide bidding in Google Ads. The flow is event, then key event, then Google Ads conversion, and the last step needs a linked Google Ads account.

Meta's equivalent is a set of standard events sent by the Pixel and the Conversions API. For lead generation, the ones you'll use most are Lead, for a completed sign-up such as a form, and Contact, which Meta defines as someone starting contact with your business by phone, SMS, email or chat.

GA4 conversion tracking setup: write the plan first

Decide what counts before anyone touches a tag. For most service businesses, five actions are enough.

ActionGA4Google AdsMeta
Contact form receivedgenerate_lead, marked as a key eventPrimary conversion with enhanced conversionsLead
WhatsApp clickA custom event such as contact_clickSecondary conversionContact
Phone tapThe same event, with the method recordedSecondary conversionContact
Lead qualified in your CRMqualify_leadUploaded as a qualified leadCRM status update
Customer wonclose_convert_leadUploaded as a converted leadCRM status update

Use GA4's recommended event names where they fit; generate_lead, qualify_lead and close_convert_lead all exist for lead generation. If you give leads a value, send the currency code AED with it, because GA4 requires a currency whenever a value is set.

Keep WhatsApp clicks and phone taps separate from leads. A click shows intent; it isn't a conversation. Our guide to WhatsApp on your website covers how to turn those chats into recorded leads.

Google Tag Manager or the Google tag?

Either works. The Google tag (gtag.js) in your site's code is simpler when you have a handful of events. Google Tag Manager suits sites with several platforms' tags, or teams that need to change tracking without a developer.

In Tag Manager, use a click trigger on links that start with tel: or contain wa.me for calls and WhatsApp. Be careful with the form submission trigger: unless you tick "Check validation", it fires whenever someone tries to submit, not only when the form is sent. For forms that send data in the background, the reliable approach is to push an event from your code only when your server confirms the enquiry, and fire tags from a custom event trigger.

GA4's enhanced measurement can log form_start and form_submit automatically. Useful as a diagnostic, but form_submit fires when someone submits a form, which isn't the same as the enquiry reaching you. Base key events on your own confirmed event instead.

The UAE's Personal Data Protection Law, Federal Decree-Law No. 45 of 2021, prohibits processing personal data without the owner's consent, subject to listed exceptions. Analytics and advertising tags that set cookies and recognise returning browsers are hard to fit into those exceptions, so loading them only after consent is the cautious approach. Our guide to the PDPL covers the law itself. This is general information, not legal advice.

This website works like this:

  • GA4 doesn't load until the visitor clicks "Allow analytics" in the cookie notice, which shows a "Reject" button alongside it. The choice is stored in the browser, and a footer link reopens the settings. Withdrawing consent reloads the page so the analytics script is dropped.
  • It only runs on the live domain. Local, preview and staging visits never load GA4 or show the notice, so test traffic stays out of the data.
  • Advertising signals stay off. When GA4 loads, it sets ad_storage, ad_user_data and ad_personalization to denied and analytics_storage to granted, so the data is used for analytics only.
  • Events fire on confirmed actions. generate_lead fires only after the server confirms the contact form was received. A single click listener records contact_click with the method: phone, WhatsApp or email.

In Google's terms this resembles basic consent mode: tags are held back until the visitor responds, and Google says no data, not even the consent status, is sent when consent isn't given. The alternative, advanced mode, loads tags straight away with consent defaulting to denied.

If you run ads, your notice needs to ask for advertising consent as well. This site asks for analytics consent only, which is why it sends no advertising data. And if you advertise to people in the EEA, the UK or Switzerland, Google's EU user consent policy requires their consent for ad personalisation, and for cookies where the law requires it.

Sending conversions to Google Ads

There are two routes, and each action should use one of them as its primary source.

  1. Import GA4 key events. Link GA4 and Google Ads with auto-tagging on, then create the conversion from the key event in GA4's conversion management. It is quick, but imported conversions don't include view-through conversions, which need Google Ads' own measurement.
  2. Use the Google Ads conversion tag with enhanced conversions. The Google tag sends the conversion directly, with the visitor's email or phone number from the form, hashed. Since April 2026, enhanced conversions for web and for leads are one setting. You must accept Google's customer data terms, and in consent mode terms the visitor must have granted ad_user_data.

If the same form counts as primary through both routes, bidding sees two leads where there was one. Then add the CRM stages: upload qualified and won leads through Google Ads Data Manager, keep the GCLID with each lead, and upload often, ideally daily. Our guide to Google Ads for lead generation explains how those uploads change bidding.

Setting up the Meta Pixel and Conversions API

The Pixel runs in the visitor's browser. The Conversions API sends events from your server, website platform or CRM, and Meta now handles website, app, offline and messaging events through it; the separate Offline Conversions API was discontinued in May 2025.

Run both, and deduplicate:

  • Shared event ID. Send the same ID as eventID in the Pixel and event_id in the Conversions API, with the same event name. Meta deduplicates matching events that arrive within 48 hours of the first one.
  • Customer information. Event Match Quality, scored from 0 to 10, rates how well your server events match Meta accounts. Email address and click ID carry the highest priority; phone number, external ID and browser ID are medium. Contact details must be hashed, and Meta's Business Tools Terms require you to have the lawful right and any necessary consent to share them.
  • Setup route. Many website platforms and CRMs offer partner integrations, Meta offers the Conversions API Gateway, and a developer can build a direct integration. Meta says many setups need no developer at all.
  • CRM connection. Connect your CRM in Events Manager so lead status updates flow back through the Conversions API. Since April 2026, new campaigns can't use Meta's qualified leads goal without that integration.

Our guide to Meta Ads for lead generation covers how those signals are used in campaigns.

Test before you trust the numbers

  1. Google Tag Assistant. Connect your site at tagassistant.google.com and check which tags fire and what reaches the data layer.
  2. GA4 DebugView. Shows events in real time from devices in debug mode; Tag Assistant or Tag Manager's preview mode switches it on for yours.
  3. Meta Events Manager test events. Check that server events arrive and are formed correctly. For CRM integrations, generate a test lead and change its status to see the CRM event.
  4. Meta Ads Data Advisor, the Chrome extension formerly called Meta Pixel Helper, flags broken events and missing parameters.
  5. A real end-to-end test. Submit an enquiry and tap the WhatsApp button, then follow each through GA4, Google Ads, Events Manager and your CRM.

Common tracking errors

  • Firing the lead event when the button is clicked, not when the enquiry is received.
  • Counting thank-you page views, which repeat whenever someone reloads or revisits the page.
  • Importing a GA4 key event and tagging the same form in Google Ads, both as primary.
  • Sending the same lead from the Pixel and the Conversions API without a shared event ID.
  • Tags that fire before consent, or never fire after it because the notice and tags aren't connected.
  • Staging and test traffic recorded in the live property.
  • WhatsApp clicks reported as leads.
  • Leads saved without the GCLID, which weakens offline uploads.

Tracking is only as good as the page it measures; our guide to landing pages for lead generation covers the other half. If you'd like this set up or audited, our performance marketing team builds tracking first, before any budget goes live.

Sources

Frequently asked questions

Do I need Google Tag Manager to track conversions?

No. The Google tag added to your site's code can send GA4 events and Google Ads conversions by itself, and this website uses it directly. Tag Manager earns its place when you run several tags from different platforms, want marketers to change tracking without a developer, or want to preview changes before publishing them. Either way, the events should fire on confirmed actions.

Why does GA4 show fewer leads than my CRM?

Because GA4 only sees visitors who accepted analytics cookies and whose browsers loaded the tag. Declined consent, blocked scripts, enquiries by phone or WhatsApp, and leads your team enters by hand never reach it. Treat GA4 as a guide to which pages and campaigns produce enquiries, and your CRM as the count of leads you actually received.

Is the Meta Pixel enough on its own?

For basic reporting it works, but Meta's lead quality features now depend on server data. Since April 2026, new lead campaigns can't use the qualified leads goal without a Conversions API integration, and Event Match Quality is only scored for website events sent through the Conversions API. Run the Pixel and the Conversions API together, with a shared event ID for each event.

Can I track WhatsApp conversations, not just clicks?

On your website you can track the click, which shows intent rather than a conversation. Meta's Conversions API also accepts messaging events, so with a technical integration you can report which chats from click-to-WhatsApp ads became leads or sales. Whatever you automate, record the outcome of every chat in your CRM, because that is where qualified leads should be counted.

Found this useful? Pass it on.

Tell us what you're planning

One short call is usually enough to recommend a jurisdiction, licence and visa route. A written quote follows.

Or call +971 52 210 4014 (Mon–Fri, 9 AM – 6 PM)