Sample report

A sample tracking audit, start to finish.

This is the report format you receive after a Tracking Audit, written for a demo store we made up. The findings are the problems we see most often; the store, numbers and dates are invented.

Sample:Sample report. Demo store and invented data.

Download the PDF

InnovaNext Digital

Sample:Demo store, invented data

Tracking audit reportNorthwind Outdoor Co.

Prepared for
Northwind Outdoor Co. (demo store)
Store platform
Shopify
Ad platforms
Meta and Google Ads
Data window
Sample week of test data, Monday to Sunday

Signal quality

Needs work

  • 4 High
  • 3 Medium
  • 1 Low

1. Summary

Sample:Demo store and invented data.

The store is fine. The numbers the ad platforms see are not.

Signal-quality score

38/ 100

Needs work

Share of our checks passed, weighted by severity.

Meta and Google Ads each count most sales about twice, and GA4 counts about one in ten twice. Every platform uses a different definition of revenue, and analytics and ad tags fire before visitors make a consent choice. The store’s own events and checkout tracking are in good shape, so the fixes are contained.

  • High4 findings
  • Medium3 findings
  • Low1 finding
  • BrokenPurchase counts. Meta and Google Ads count most sales twice
  • BrokenPurchase values. Three definitions of revenue across platforms
  • BrokenConsent behaviour. Tags fire before a choice is made
  • CleanStore events. Product, cart and checkout events are complete
  • CleanCross-domain checkout. Sessions survive the move to checkout

2. Scope and method

Sample:Demo store and invented data.

How we tested

  1. Test orders

    Three real orders through the live checkout (T-01 to T-03), with a discount code, a shipping charge and a page reload. Each one followed from the browser to every platform. Refunded afterwards.

  2. Platform comparison

    Read-only review of GTM, GA4, Google Ads and Meta Events Manager, then a week of purchase counts and values compared with the store’s orders.

  3. Consent tests

    Fresh browser sessions with consent refused, accepted and ignored, recording every cookie and tag request in each case.

In scope: GTM web container, GA4 property, Google Ads conversions, Meta pixel and Conversions API, consent banner and Consent Mode v2, store app integrations. Out of scope: email platform, offline sales, legal review of policy wording.

3. Findings

Sample:Demo store and invented data.

Findings, ranked by severity

High means the platforms optimize or report on wrong data today. Medium skews reports or bidding. Low is worth fixing while someone is in the container.

Findings summary (sample data): severity, area, owner and effort
#FindingSeverityAreaOwnerEffort
F1Meta Purchase sent by both the store app and a GTM tagHighMetaDeveloper2 hours
F2No shared event_id between Meta pixel and Conversions APIHighMetaDeveloper3 hours
F3Consent Mode defaults to granted before the visitor choosesHighConsentDeveloper, legal adviser for banner wording4 hours
F4Google Ads counts each sale twice: tag and GA4 import both primaryHighGoogle AdsAds manager15 minutes
F5Purchase value includes tax and shipping in some platforms onlyMediumGA4, Meta, Google AdsDeveloper2 hours
F6Enhanced conversions are off in Google AdsMediumGoogle AdsDeveloper2 hours
F7Reloading the thank-you page fires another purchaseMediumGA4Developer1 hour
F8Payment gateways show up as referral sourcesLowGA4Developer30 minutes
  1. High

    F1 Meta Purchase sent by both the store app and a GTM tag

    Evidence
    Test order T-02 produced two browser Purchase events in Meta Test Events, one from the store’s Meta sales channel app and one from a pixel tag in GTM, 0.8 seconds apart.
    Impact
    Meta counts most sales twice and optimizes towards buyers who look more valuable than they are.
    Fix
    Keep one browser source. Turn off the pixel tag in GTM and let the app send browser events, or the reverse, then pair it with the server events in F2.
    Owner and effort
    Developer, 2 hours
  2. High

    F2 No shared event_id between Meta pixel and Conversions API

    Evidence
    In Events Manager the browser Purchase has no event_id and the server Purchase uses the order number, so the two never match and both are counted.
    Impact
    Every order that reaches Meta from both paths is counted again on top of F1.
    Fix
    Generate one event_id per order (the order ID works) in the data layer and send the same value with the pixel and the server event.
    Owner and effort
    Developer, 3 hours
  3. High

    F3 Consent Mode defaults to granted before the visitor chooses

    Evidence
    On a fresh visit with no banner interaction, the first GA4 request carried consent state granted and set the _ga cookie. The Meta pixel loaded on the same page view.
    Impact
    Analytics and ad cookies are set without consent, which is a PIPEDA and Quebec Law 25 exposure, and modelled conversions are calculated on the wrong basis.
    Fix
    Set all four Consent Mode v2 signals to denied in a consent-initialization tag that runs before any other tag, and block the Meta pixel until marketing consent is given.
    Owner and effort
    Developer, legal adviser for banner wording, 4 hours
  4. High

    F4 Google Ads counts each sale twice: tag and GA4 import both primary

    Evidence
    The Purchases goal contains “Purchase (Google Ads tag)” and “Purchase (GA4 import)”, both set to Primary and both included in the Conversions column.
    Impact
    Smart Bidding sees roughly double the real conversions and bids as if campaigns were more profitable than they are.
    Fix
    Keep the Google Ads tag as the primary purchase action and set the GA4 import to Secondary so it is still visible for reference.
    Owner and effort
    Ads manager, 15 minutes
  5. Medium

    F5 Purchase value includes tax and shipping in some platforms only

    Evidence
    For test order T-01 the same purchase reached GA4 with tax and shipping included, Meta with shipping excluded and Google Ads with the subtotal only.
    Impact
    Revenue and ROAS cannot be compared across platforms, and value-based bidding learns from inconsistent numbers.
    Fix
    Agree one definition (we suggest subtotal after discounts, before tax and shipping), send it as value everywhere and pass tax and shipping as their own parameters.
    Owner and effort
    Developer, 2 hours
  6. Medium

    F6 Enhanced conversions are off in Google Ads

    Evidence
    The account-level setting is off and the purchase tag sends no user-provided data.
    Impact
    Google matches fewer purchases to ad clicks, especially on Safari and in-app browsers, so reported conversions run low.
    Fix
    Turn on enhanced conversions through GTM using the hashed email and phone from the order, sent only when ad_user_data consent is granted.
    Owner and effort
    Developer, 2 hours
  7. Medium

    F7 Reloading the thank-you page fires another purchase

    Evidence
    Refreshing the order status page for test order T-03 sent a second GA4 purchase with the same transaction_id.
    Impact
    GA4 orders and revenue run above the store, and returning customers who bookmark the page inflate it further.
    Fix
    Fire purchase from the checkout-completed customer event instead of a page-view trigger, so it runs once per order.
    Owner and effort
    Developer, 1 hour
  8. Low

    F8 Payment gateways show up as referral sources

    Evidence
    Sessions from the payment gateway domains appear as referrals in GA4 and are credited with purchases.
    Impact
    The ad or email that brought the buyer loses the credit, so channel reports undervalue paid media.
    Fix
    Add the payment gateway domains to the GA4 unwanted referrals list and confirm with a test order.
    Owner and effort
    Developer, 30 minutes

4. Event-parity check

Sample:Demo store and invented data.

One week of purchases, four answers

Purchase events each platform received in the sample week, by event date, compared with the store’s orders. Attribution differs between platforms, so this compares events received, not attributed conversions. We treat anything within 5% of the store as clean.

Event parity for one sample week (invented numbers)
SourcePurchasesRevenue (CAD)vs storeStatusCaused by
Store orders212$31,480BaselineBaselineSource of truth
GA4 purchases236$36,210+11%BrokenF5, F7
Meta purchase events389$54,930+83%BrokenF1, F2, F5
Google Ads conversions401$55,870+89%BrokenF4, F5

Target after fixes: GA4, Meta and Google Ads each within 5% of store orders, using the same revenue definition.

5. Consent tests

Sample:Demo store and invented data.

Consent test results (sample data): expected and observed behaviour per scenario
ScenarioExpectedObservedResult
RefusedNo analytics or ad cookies. GA4 and Google Ads send cookieless pings only. Meta pixel does not load.The _ga cookie and the Meta pixel were already set on the first page view, before Refuse was clicked.Fail
AcceptedAll four consent signals update to granted. Tags fire with full data.Consent update sent with all four signals granted. GA4, Google Ads and Meta fired as expected.Pass
IgnoredSame as Refused until the visitor makes a choice.Three pages browsed without a choice. Every tag fired as if consent had been granted.Fail

Consent findings are flagged for your legal adviser. We test behaviour; we do not give legal advice on PIPEDA or Quebec Law 25.

6. Fix plan

Sample:Demo store and invented data.

Fix plan in three phases

  1. Phase 1 Days 1–3

    Stop the double counting

    • F1 Meta Purchase sent by both the store app and a GTM tag
    • F2 No shared event_id between Meta pixel and Conversions API
    • F4 Google Ads counts each sale twice: tag and GA4 import both primary
    • F7 Reloading the thank-you page fires another purchase
  2. Phase 2 Days 4–6

    Fix consent and agree one revenue number

    • F3 Consent Mode defaults to granted before the visitor chooses
    • F5 Purchase value includes tax and shipping in some platforms only
  3. Phase 3 Days 7–9

    Improve matching and attribution

    • F6 Enhanced conversions are off in Google Ads
    • F8 Payment gateways show up as referral sources
  4. Check Days 10–24

    Repeat test orders, then 14 days of monitoring and a new parity check

Fixed implementation quote

Set per store, within our Tracking Implementation range of $2,000–2,500 CAD, before applicable tax.

The audit fee is credited against Implementation if you go ahead. You can also hand this report to your own developer.

7. What happens next

Sample:Demo store and invented data.

After you receive the report

  1. Walkthrough call

    About an hour with you and whoever will do the fixes. We go through every finding until the plan is clear.

  2. You choose who fixes it

    Your developer works from the report, or we build the fixes under the fixed quote. Either is fine.

  3. Fixes and QA

    Each fix is tested with new test orders and recorded in a QA log you keep.

  4. Parity check

    After 14 days of monitoring we repeat the event-parity check above and send you the result.

Want this for your store?

A Tracking Audit costs $1,000 CAD, before applicable tax, and takes 5–7 business days.

Download this sample as a PDF

Get a report like this for your own store.

We place real test orders, trace them into every platform and hand you a ranked fix list with a fixed quote.

Free tracking check