Different conversion totals do not always mean a tag is broken. GA4, Google Ads, and your CRM can count different actions, assign them to different dates, or apply different attribution rules. GTM controls when tags run; it is not another business-outcome counter.
Start with one test submission or purchase that you can identify in the business records. A thank-you message alone does not prove the lead or order was saved.
Give the test an opaque ID
Use a submission or transaction ID to connect the browser activity with the private lead or order record. Keep names, emails, phone numbers, and form messages out of ordinary analytics event parameters. Google's PII guidance covers that restriction.
Enhanced conversions have a separate supported process for permitted first-party data. That is not permission to put customer details into arbitrary event parameters or URLs.
Follow one action through the setup
| Step | What to check |
|---|---|
| Lead or order record | The test ID, timestamp, and actual saved outcome |
Application event or dataLayer | Event name, ID, value, currency, and whether it appears once |
| GTM | Trigger, tag, exceptions, consent state, and destination |
| Browser request | The outgoing request, payload, destination ID, and any blocking error |
| GA4 debug collection | The event and device in the intended property's DebugView or Realtime |
| GA4 standard reports | The event or key event after processing |
| Google Ads | Conversion action, source, counting, window, and Primary/Secondary setting |
| CRM total | Whether it counts all submissions, qualified leads, paid orders, or another outcome |
Tag Assistant shows trigger and tag behavior. DebugView helps check collection in GA4. Neither alone explains how a later Google Ads report will count or attribute the action.
Fix collection problems before comparing totals
| Finding | Likely area to investigate |
|---|---|
| No application event after a successful action | Form callback, purchase confirmation, or application event code |
| Event exists but the tag does not run | Trigger conditions, exceptions, or consent sequencing |
| Tag runs but no request reaches the destination | Browser blocking, request errors, or the wrong destination ID |
| One action produces duplicate requests | Hard-coded tags plus GTM, repeated listeners, or overlapping SPA triggers |
| The wrong account receives the event | Container configuration, measurement IDs, or conversion-action IDs |
Test successful actions as well as validation failures, refreshes, back-button navigation, and repeated submissions. Include cross-domain or embedded-form paths where they are used.
Check the consent states your implementation supports: first visit before a choice, granted consent, denied consent, and a returning visitor with a stored choice. Record the expected behavior for each before deciding a missing request is an error.
Then reconcile the reporting settings
| Difference | What to compare |
|---|---|
| Action definition | Whether both reports count the same step |
| Date and timezone | Conversion time, ad-interaction time, and account/property timezone |
| Counting | One conversion or every conversion, including transaction-ID deduplication |
| Eligibility | Eligible ad interaction, source, and conversion window |
| Attribution | Model, lookback window, and applicable view-through or engaged-view reporting |
| Report column | Conversions versus All conversions and action inclusion |
| Processing | Whether collection, standard reporting, and imports have finished |
Google documents import delays and setting differences in its Analytics-to-Ads conversion guidance. Use the settings and processing times that apply to the accounts you are checking.
Keep a reproducible test record
Record the test ID, timestamp, page, browser, consent state, container version, outgoing event, destination IDs, business record, and later report result. Keep private account and customer details out of a public write-up.
If the trace breaks, fix that step and repeat the action. If collection works but reports apply different rules, explain the difference rather than changing attribution settings merely to force the totals to match.
