Decide what counts before you touch a tag
- List the business outcomes that matter: purchases, qualified lead form submissions, booked appointments, trials, phone calls from the site.
- Separate primary outcomes from micro actions such as scroll depth or video views. Micro actions are useful for analysis, not for bidding.
- Write down one event name per outcome and the parameters each needs, such as value, currency, transaction_id and lead type.
- Use GA4 recommended event names where they fit (purchase, generate_lead, sign_up, begin_checkout), so reports and integrations understand them without extra mapping.
- Agree who owns the tracking plan and keep it in a shared document that changes only on purpose.
Configure key events in GA4
- Mark only true business outcomes as key events in the GA4 admin. GA4 calls conversions key events, and Google Ads imports from that list.
- Check the counting method: once per session for leads, so a refreshed thank-you page does not count twice, and once per event for purchases.
- Send value and currency with every purchase and, where you can estimate it, with leads.
- Include transaction_id on purchases so GA4 can drop duplicate hits of the same order.
- Remove key event status from events that are not business outcomes, such as page_view or session_start.
Clean up Google Tag Manager
- Run one Google tag configuration for GA4 per property and confirm it fires on every page, once.
- Trigger conversion events on confirmed actions (a successful form response, an order confirmation data layer push), not on button clicks that may fail.
- Push ecommerce data to the data layer in the documented GA4 format with items, value and currency.
- Remove legacy tags, duplicate hard-coded snippets and old Universal Analytics leftovers that inflate or confuse data.
- Use clear naming for tags, triggers and variables, and publish with a version note so changes are traceable.
- Consider a server-side GTM container if you send events to several ad platforms, to control data flow and improve reliability.
Set up consent mode properly
- Implement consent mode with the four signals ad_storage, analytics_storage, ad_user_data and ad_personalization.
- Set defaults before any Google tag fires, and update them when the visitor makes a choice in your consent banner.
- Decide between basic mode (tags wait for consent) and advanced mode (cookieless pings before consent, enabling modeling), based on your legal advice.
- Test that declining consent actually stops cookies from being set, and that accepting updates the state without a page reload.
- Check the consent mode diagnostics in Google Ads to confirm signals arrive.
Turn on enhanced conversions
- Enable enhanced conversions in Google Ads for web conversions, and enhanced conversions for leads if you import offline outcomes.
- Capture email address and, where available, phone number and address at the moment of conversion, from the data layer rather than by scraping the page.
- Let the Google tag hash the data with SHA-256, or hash it yourself after normalizing (lowercase, trimmed, phone numbers with country code).
- Only send customer data when consent and your privacy policy allow it.
- Review the enhanced conversions diagnostics a few days after launch to confirm a healthy share of conversions include matched data.
Fix cross-domain and referral issues
- If the journey crosses domains (marketing site to app, site to booking tool, site to checkout), configure cross-domain measurement in the GA4 data stream so the session continues.
- Add payment gateways and third-party checkouts that send users back to your site to the list of unwanted referrals, so sessions are not restarted and attributed to the gateway.
- Test the full path in a browser and confirm the _gl parameter carries over and the session source stays the same.
Keep UTM hygiene strict
- Use auto-tagging (gclid) for Google Ads and do not override it with manual UTMs on Google Ads links.
- Tag every other paid link with utm_source, utm_medium and utm_campaign, using lowercase and one agreed vocabulary.
- Use utm_medium values that GA4 default channel groups recognize, such as cpc or paid_social, so traffic lands in the right channel.
- Never use UTMs on internal links. They break sessions and overwrite the real source.
- Keep a shared UTM sheet or builder so every team member tags the same way.
Connect GA4 and Google Ads correctly
- Link the GA4 property to the Google Ads account and enable auto-tagging.
- Decide which conversions Google Ads uses for bidding: either imported GA4 key events or the Google Ads tag, not both for the same action, to avoid double counting.
- Set the chosen conversions as primary and others as secondary, so bidding optimizes toward the right goal.
- Align conversion values between GA4 and Google Ads so value-based bidding sees real numbers.
- Share GA4 audiences with Google Ads for remarketing and exclusions.
Verify with DebugView and real orders
- Use GTM preview and GA4 DebugView to watch each event fire once with the right parameters.
- Place a real test order or submit a real form and trace it from the data layer to GA4 to Google Ads.
- Compare GA4 purchase counts and revenue with your store or CRM for the same days. Small gaps are normal, large ones are a bug.
- Check the realtime report after each publish, and keep a simple log of what changed and when.
Import offline conversions
- For lead businesses, store the gclid (and, where available, gbraid or wbraid) with each lead in your CRM.
- Import qualified leads and closed deals back into Google Ads with their values, on a regular schedule.
- Use enhanced conversions for leads as a match path when click IDs are missing.
- Mirror the same idea on other platforms with the Meta Conversions API and TikTok Events API, so every channel learns from real pipeline.
Common mistakes we find in GA4 accounts
- Every button click marked as a key event, so bidding chases noise.
- Purchases counted twice because both a hard-coded tag and GTM fire.
- Thank-you page key events counted on every refresh.
- Payment gateways stealing credit as referral sources.
- Manual UTMs on Google Ads links overriding auto-tagging.
- Data retention left at the shortest setting, limiting exploration reports.
- Internal and developer traffic not filtered out.
Hand the checklist to a team that runs it every month
Every item above is part of our conversion tracking setup work, which also covers server-side tagging and the meta conversions api setup described in our earlier guide. Campaigns built on that data are run by our google ads agency team and covered by ppc management services. If you want an outside view of what is broken today, our onboarding ppc audit starts exactly here. Plans are listed on ppc management pricing.