Conversion Tracking Setup for Google and Meta
Here is the whole setup in one paragraph. For Google Ads, install the Google tag site-wide, then create conversion actions either directly — URL-based for simple page loads, code-based for buttons and dynamic values — or by importing GA4 “key events,” keeping in mind that only events marked as key events are eligible for import and that conversion actions created through the Google Analytics interface arrive set as secondary, so you have to change their action optimization settings in Google Ads before bidding uses them. Layer on enhanced conversions, which hashes first-party customer data with SHA256 before it ever reaches Google. For Meta, install the Pixel via Events Manager and add the Conversions API as a redundant server-side channel using the same Pixel ID — Meta explicitly recommends running both, with event_id-based deduplication so the same purchase is not counted twice. If any of your traffic comes from end users in the EEA, UK, or Switzerland, Google’s EU User Consent Policy applies regardless of where your business is based, and if you maintain your own consent banner you have to implement consent mode v2 yourself. Every platform-behaviour claim below links to Google’s or Meta’s own documentation — that is the point of this guide.
One thing up front: we have not run this exact setup on a portfolio of live client accounts, so this article makes no experience claims. Its value is that each step cites a primary source you can check, and where we could not confirm something from a primary source, we say so instead of guessing. Platform UIs change constantly; documentation links age better than screenshots of menus, which is why there are no screenshots here.
Step 0: decide what a conversion actually is
Before touching any code, write down which actions are real conversions for your business: a purchase, a lead form submit, a phone call, a booking. Everything downstream — which setup method you use, which events you mark as key events, what Smart Bidding optimizes toward — depends on this list. Our own bias is to keep that list short, so the signal you feed bidding is the signal you actually care about. If you are still deciding whether Google or Meta comes first for your budget, that question has its own answer on our small business page.
Google Ads conversion tracking, step by step
1. Install the Google tag on every page
The Google tag (gtag.js) is a single tag that replaces managing separate tags for different Google product accounts, and it is currently only accessible and configurable from Google Ads, Google Analytics, and Campaign Manager 360, per Google Ads Help — About the Google tag. Two useful details. First, from that same page: if your site still has the older global site tag, it was already converted to a Google tag and you do not need to update your site. Second, from its click-tracking companion: tags from the previous version of Google Ads still function, and Google recommends migrating rather than forcing it (Google Ads Help — Track clicks on your website as conversions). The tag belongs on every page of the site, not just the thank-you page — a partial install is one of the most basic documented causes of conversions never recording (Google Ads Help — conversion tracking troubleshooting).
2. Pick your setup path: URL, code, or GA4 import
Google Ads Help — Set up your web conversions describes two direct paths. Set up with URL is “best for simple tracking of page loads” — it is fast and “requires no code changes once your tags are set up.” Set up with code is “required for tracking button clicks, dynamic values, like variable purchase amounts, or transaction IDs.” The code path is not passive: for click tracking, your website must call the gtag_report_conversion function when someone clicks the link, button, or button image, per the click-tracking documentation. Pasting the snippet and never wiring the call is a silent failure.
| Method | Best for | The catch |
|---|---|---|
| Set up with URL | Simple page-load conversions (confirmation pages); no code changes | Page loads only — no buttons, no dynamic values |
| Set up with code | Button clicks, variable purchase amounts, transaction IDs | Site must call gtag_report_conversion() on click — the snippet alone does nothing |
| Import GA4 key events | Reusing analytics events you already fire | Key events only; 24–48h propagation; imports arrive as secondary, not biddable |
Sources: Google Ads Help — Set up your web conversions (answer/16560108) for the URL-vs-code split, key-event eligibility, and the 24–48 hour propagation window; Track clicks on your website as conversions (answer/6331304) for the gtag_report_conversion requirement; Measure web key events from Google Analytics properties (answer/9520128) for the secondary-by-default behaviour.
3. If you use Google Tag Manager, use only Google Tag Manager
Running gtag.js and Google Tag Manager simultaneously can cause conflicts. Google’s troubleshooting guidance is to check for conflicts and “consider consolidating to a single method, preferably Google Tag Manager” (Google Ads Help — conversion tracking troubleshooting). Pick one delivery mechanism and delete the other.
4. The GA4 route: link, mark key events, wait, import
If you would rather import conversions from GA4 than tag directly, the prerequisites are specific. You must have Admin access in Google Ads and Edit access in the linked Google Analytics property. After linking accounts or marking an event as a key event, it can take 24 to 48 hours for the system to propagate before the import options appear in Google Ads — that delay is documented, not a bug (answer/16560108). And only events marked as key events in Google Analytics are eligible for import (same page). The one exception: Google Ads Help — Measure web key events from Google Analytics properties states that ecommerce events are automatically enabled as key events, so those you do not have to mark by hand. We are deliberately not giving click-by-click menu paths for the import screen — our research pass could not verify current UI labels against a primary source, and menu paths rot faster than any other content in this category.
5. Check primary vs. secondary — the step almost everyone misses
This is the sharpest trap in the entire Google setup. Conversion actions created through the Google Analytics interface will be set as secondary, and to use them for bidding you must change their action optimization settings in Google Ads (answer/9520128). Google’s own setup page calls configuring conversion actions as Primary (biddable) or Secondary (observation-only) critical, warning that misconfiguring these settings “can prevent Smart Bidding from optimizing effectively, as the algorithm relies on these signals to improve your campaign performance” (answer/16560108). A business can import its GA4 purchases, watch the numbers appear in reports, and never realize bidding is not using them — a pattern that produces exactly the “spend with nothing to show for it” outcome we walk through in why Google Ads wastes money for beginners.
6. Turn on enhanced conversions
Enhanced conversions is, in Google’s own words, “a feature that can improve the accuracy of your conversion measurement and unlock more powerful bidding” — not just prettier reports. Mechanically, it uses a secure one-way hashing algorithm called SHA256 on your first-party customer data, such as email addresses, before sending it to Google; plaintext PII is not transmitted (Google Ads Help — About enhanced conversions).
Consent mode: scoped by where your users are, not where you are
Google’s EU User Consent Policy applies to end users located in the EEA, the UK, and Switzerland — the EEA being the EU Member States plus Iceland, Liechtenstein, and Norway (Google Ads Help — Fix issues with your EU User Consent Policy consent audit). A US business with EEA visitors is in scope. That same page runs an active audit process with eight named failure reasons, including cookies set before consent, missing or incomplete personal-data-use disclosure, user affirmative action not set up correctly, missing data-sharing disclosure, a missing link to Google’s Business Data Responsibility site, consent signal not set up correctly, and CMP not set up correctly — concrete criteria that none of the general troubleshooting guides we checked in our research pass mention.
Practically: consent mode v2 adds two advertising parameters, ad_user_data (sets consent for sending user data to Google for advertising purposes) and ad_personalization (sets consent for personalized advertising), per Google Ads Help — Updates to consent mode for traffic in the EEA. If you use a Google-certified CMP, your provider automatically updates to the newest version of consent mode; if you maintain your own banner, you implement consent mode v2 yourself. Advertisers using Advanced consent mode or the consent mode APIs must set the default consent state through their CMP with ad_storage set to denied for the EEA and UK region (answer/16724512). Two clarifications from Google Analytics Help — Consent mode on websites and mobile apps: consent mode does not provide a consent banner or widget — it interacts with the one you already have — and when visitors deny consent, tags send pings to Google instead of storing cookies. Counterintuitively, hard-blocking Google tags until banner interaction is the wrong move: if you prevent your Google tags from loading until a user interacts with your consent banner, Google will not be able to verify user consent choices and this may lead to loss in data (answer/13695607). One caveat on scope: everything above is what Google’s advertising policies require. Whether and how consent law applies to your business is a legal question, and you should confirm your obligations with a qualified professional rather than with an ads blog.
Meta: Pixel plus Conversions API, step by step
The Meta Pixel is a snippet of JavaScript code that allows you to track visitor activity on your website. Per Meta for Developers — Meta Pixel, it collects standard HTTP header data (including IP address and browser information), pixel-specific data (the Pixel ID and the Facebook cookie), button click data, optional custom values, and website form field names — field values are not captured unless included as part of Advanced Matching or optional data. The Conversions API is the server-side counterpart: it is designed to create a connection between an advertiser’s marketing data — website events, app events, business messaging events, offline conversions — from their server, website platform, mobile app, or CRM to the Meta systems that optimize ad targeting, decrease cost per result, and measure outcomes.
- Install the Pixel through Events Manager. Our research pass could not verify Meta’s consumer-facing Business Help Center pages or their click paths from a primary source, so confirm the exact buttons in the live Events Manager UI rather than trusting any blog’s menu walkthrough. Everything else in this section comes from developers.facebook.com.
- Add the Conversions API using the same Pixel ID. Meta’s get-started guide is explicit: if you have already set up a Pixel for your website, use the same Pixel ID for your browser and server events. The access token can be generated in Events Manager — there is no need to go through App Review or request any permissions.
- Run both, deliberately. Meta’s best practices call for a “redundant event setup” — use the Conversions API in addition to the Meta Pixel and share the same events using both tools — because the Conversions API lets you share website events the Pixel may lose to network connectivity issues or page loading errors.
- Set up deduplication yourself — it is not automatic. Per Meta’s deduplication documentation, advertisers must set up a deduplication method so the ad delivery system can differentiate between distinct and overlapping events. The recommended method matches the Pixel’s eventID to the Conversions API’s event_id with matching event names; Meta discards the subsequent duplicate only when the matching pair reaches the same Pixel ID within 48 hours of the first event with a given event_id. The fallback fbp/external_id method is weaker: generally it only deduplicates events sent from the browser first and then the server, it will not discard a server event if no browser event arrived in the past 48 hours, and it does not deduplicate events from a single source.
- Send rich matching parameters. Meta’s best-practices page lists action_source for all events, event_source_url and client_user_agent for website events, and event_id, or a combination of external_id and fbp, for deduplication. The same page explains that an event’s Event Match Quality (EMQ) score, out of 10, indicates how effective your server event’s customer information may be at matching it to a Facebook or Meta account.
- Validate in Events Manager that both channels arrive and are deduplicated rather than double-counted — inflated conversion counts feed directly into inflated cost-per-result math, which matters when you are budgeting from our Facebook ads cost breakdown.
Six myths the top-ranking guides repeat
Myth 1: The Conversions API replaces the Pixel. Meta’s own developer documentation says the opposite: use the Conversions API in addition to the Meta Pixel and share the same events using both tools, because the Pixel may lose events to network connectivity issues or page loading errors (Conversions API best practices). CAPI is a supplement, not an upgrade path off the Pixel.
Myth 2: Importing GA4 conversions gives you a bidding-ready conversion. Conversion actions created through the Google Analytics interface will be set as secondary; you must change their action optimization settings in Google Ads before bidding uses them (answer/9520128). Google calls the primary/secondary configuration critical (answer/16560108).
Myth 3: Enhanced conversions sends raw emails and phone numbers to Google. The feature uses a secure one-way hashing algorithm called SHA256 on your first-party customer data before sending to Google; plaintext PII does not go to Google (answer/9888656).
Myth 4: Any GA4 event can be imported into Google Ads. Only events marked as key events in Google Analytics are eligible for import (answer/16560108); ecommerce events are automatically enabled as key events (answer/9520128), and everything else must be marked manually first.
Myth 5: Consent mode is only for EU businesses. The policy is scoped to where the user is — EEA, UK, Switzerland — and Google actively audits banners against eight named failure conditions (answer/16724512).
Myth 6: Deduplication is automatic once Pixel and CAPI both fire. Meta requires advertisers to set up a deduplication method themselves; skip it and the same purchase or lead can be counted twice (deduplication documentation).
Why your conversions are not recording
When the numbers stay at zero, work down this list — each item is a documented failure mode, not folklore. The Google tag is missing from some pages (it should be installed on every page of your website). The conversion ID or label in your event snippet or GTM configuration does not match the conversion action in Google Ads. gtag.js and GTM are both running and conflicting. Your GA4 events were never marked as key events, so there was nothing eligible to import. Or nothing is actually broken: it may take up to 48 hours for the conversion status to update in Google Ads after implementing or correcting your tags, so a fix that “did nothing” yesterday may simply not have propagated (all from Google Ads Help — conversion tracking troubleshooting). On Meta, pixel-only setups can lose events to network connectivity issues and page loading errors that a deduplicated CAPI channel would have recovered. Use Tag Assistant and Google Ads’ conversion diagnostics to confirm tags fire correctly, and recheck after every site redesign, consent-banner change, or GTM edit — tracking breaks silently. If tracking checks out and results are still missing, the problem is the campaign, and our first-campaign no-results diagnostic is the next stop.
What we could not confirm
Honesty about the edges of the research, as of our July 2026 verification pass: Google’s consent-mode page (answer/13695607) contained no explicit enforcement or cutoff date when we fetched and searched it, so we are not repeating the widely-cited “March 2024” deadline — we found no support for it in that primary source. Meta’s consumer-facing Business Help Center pages were not verifiable in that pass, so every Meta claim here comes from developers.facebook.com, and exact Events Manager click paths remain unverified — confirm them in the live UI. Separately, developers.facebook.com blocks direct HTTP clients, so the Meta pages were verified via rendered fetch rather than raw-HTML matching, one verification layer thinner than the Google sources. We did not verify a dedicated enhanced-conversions-for-leads page, server-side Google Tag Manager, or iOS App Tracking Transparency and Meta’s Aggregated Event Measurement; none of those are covered here, confirmed or denied. And we did not check whether GA4’s own product UI has fully replaced “conversions” with “key events” everywhere — only the Google Ads-side help pages.
Where AdFlint fits
AdFlint runs Google Ads and Meta ads for small businesses on a connected-account model: you own the ad account, your card pays the platforms directly, and the tracking you set up above stays yours if you ever leave. Self-serve plans are a flat monthly fee with 0% markup on ad spend — from $10/month for up to $100 in monthly spend — with hard budget caps and an autopilot that keeps optimizing after launch; see pricing and how it works. Everything in this guide matters to us for a selfish reason: an optimizer is only as good as the conversion signal it reads, which is why our small business setup treats tracking as step one, not an afterthought. There is a 7-day free trial if you want to see the small-business flow end to end.
Related guides
How Much Do Facebook Ads Cost a Small Business?
A first useful Meta test runs about $600 to $2,800 over three to four weeks. Why CPM is the real meter, the 50-event math, and what each budget band proves.
First Campaign, No Results: A 16-Step Diagnostic
Zero conversions usually means broken tracking, no delivery, or too few clicks, not bad creative. Run these 16 steps in order, starting with the event itself.
Why Google Ads Wastes a Beginner's First $500
Smart Campaigns, broad match, and audience expansion drain a small budget before it teaches you anything. What to switch off, plus a $500 test framework.
Skip the learning curve
AdFlint writes, launches, and optimizes Google and Meta campaigns inside the ad account you own — you approve every ad, and hard budget caps protect your spend. 7-day free trial.
Free tools: ad copy generator, ROAS calculator, budget calculator · ads by industry