
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.
| Action | GA4 | Google Ads | Meta |
|---|---|---|---|
| Contact form received | generate_lead, marked as a key event | Primary conversion with enhanced conversions | Lead |
| WhatsApp click | A custom event such as contact_click | Secondary conversion | Contact |
| Phone tap | The same event, with the method recorded | Secondary conversion | Contact |
| Lead qualified in your CRM | qualify_lead | Uploaded as a qualified lead | CRM status update |
| Customer won | close_convert_lead | Uploaded as a converted lead | CRM 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.
Consent and the PDPL: how this site does it
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_dataandad_personalizationto denied andanalytics_storageto granted, so the data is used for analytics only. - Events fire on confirmed actions.
generate_leadfires only after the server confirms the contact form was received. A single click listener recordscontact_clickwith 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.
- 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.
- 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
eventIDin the Pixel andevent_idin 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
- Google Tag Assistant. Connect your site at tagassistant.google.com and check which tags fire and what reaches the data layer.
- 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.
- 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.
- Meta Ads Data Advisor, the Chrome extension formerly called Meta Pixel Helper, flags broken events and missing parameters.
- 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
- Google Analytics Help: Conversions vs. key events
- Google Ads Help: Configure the Google tag for enhanced conversions for leads
- Google for Developers: Consent mode overview
- Meta for Developers: Deduplicate Pixel and server events
- Meta Business Help Centre: About event match quality
- UAE Government portal: Data protection laws
Frequently asked questions
Do I need Google Tag Manager to track conversions?
Why does GA4 show fewer leads than my CRM?
Is the Meta Pixel enough on its own?
Can I track WhatsApp conversations, not just clicks?
Found this useful? Pass it on.

