Skip to main content
GA4 validatorFree tool

Validate your GA4 ecommerce payload

Paste a real purchase event and this checks the fields whose absence causes a specific known failure: transaction_id, without which a refreshed confirmation page counts twice; currency, without which GA4 silently assumes your property default and mixes amounts; a numeric value; and an items array whose totals roughly agree with the event value. It parses leniently, so you can paste straight from a browser console.

Free30 minutesNo obligation

Free toolRuns in your browser · nothing is uploaded

Validate a GA4 ecommerce payload

Paste a real purchase event and this checks it against what GA4 actually needs: transaction_id for deduplication, currency so multi-currency revenue isn't silently mixed, a numeric value, and an items array whose totals roughly agree with it.

GA4 purchase payload

Paste a payload and press Check. Everything happens in your browser. Nothing is sent anywhere.

GA4 validator · what breaks

What this tool is for — GA4 validator

  1. 01

    Your GA4 revenue doesn't match your store

    And you want to know whether the payload is the reason.

  2. 02

    You've just implemented ecommerce tracking

    And want it checked before you trust it.

  3. 03

    A refresh seems to double-count

    Which is nearly always a missing transaction_id.

GA4 validator · the fix

What you get out of it — GA4 validator

  • Field-by-field findings

    Ordered problems first, then warnings, then what's fine.

  • The specific consequence of each gap

    Not a generic 'recommended' label.

  • An item-total sanity check

    Comparing the items array against the event value.

GA4 validator · architecture

Why the purchase payload is the one to check first — GA4 validator

Every other ecommerce event exists to give context to this one. If purchase is wrong, nothing above it matters.

  1. 1

    A missing transaction_id makes refreshes count

    The confirmation page is a normal URL. Refreshable, bookmarkable, shareable — and without an ID, each visit is a new purchase.

  2. 2

    Currency defaults silently

    GA4 falls back to the property default. Totals still look plausible, which is why multi-currency stores can carry this for years.

  3. 3

    A string value is a type inconsistency waiting to happen

    It usually works, and it's how one page type ends up sending numbers and another strings.

  4. 4

    Item totals reveal convention drift

    A gap between items and value is often legitimate. It's a problem when begin_checkout and purchase disagree about which convention they follow.

GA4 validator · diagnose

What this tool cannot tell you — GA4 validator

Stated up front, because a tool that implies more confidence than it has is worse than no tool. These are checks you have to run yourself.

  1. 01

    Whether transaction_id matches your store's order ID

    It can see the field is present. It can't see your store, and a generated ID that isn't the order number is a real and invisible fault.

  2. 02

    Whether the event fires at all on some payment methods

    Wallet payments that skip the confirmation page send nothing, and nothing is exactly what this tool can't inspect.

  3. 03

    Whether a second system is also sending purchase

    Duplication across integrations is invisible from one payload.

  4. 04

    Whether the values are the right values

    It checks shape, not truth.

GA4 validator · prove

How to confirm the result — GA4 validator

Against your own records, not against the tool's output.

Source of truth

your store's order records, matched on transaction_id

  • A live purchase payload captured and read field by field.
  • transaction_id confirmed matching the store's order ID.
  • A test order placed in a second currency.
  • A wallet payment tested specifically.
  • Reconciled over a fully closed window, matched per record rather than on totals.
  • Re-checked after your next site release, which is when most breaks happen.

GA4 validator · free audit

What we check in the free audit

  • Whether transaction_id matches your store's order ID
  • Whether the event fires at all on some payment methods
  • Whether a second system is also sending purchase
  • Whether the values are the right values

Checked against

your store's order records, matched on transaction_id

Get my free conversion tracking audit

Free30 minutesNo obligation

GA4 validator · when not to buy

Why this isn't gated — GA4 validator

There's no email form in front of it, and that's deliberate.

  • A tool you have to pay for with your contact details is a lead form wearing a costume. If this is useful, it should be useful without a transaction.
  • Everything it does runs in your browser. There is no endpoint, so there is nothing for us to collect even if we wanted to — open your network tab and check.
  • It will tell you when you don't have a problem. That outcome costs us a sale and happens regularly, which is the point of publishing it rather than putting it behind a call.
  • If it does find something and you'd rather fix it yourself, the reference pages on this site cover the how. Hiring us is one option, not the conclusion.

GA4 validator · what we deliver

What it checks — GA4 validator

  • transaction_id

    Present, and flagged hard when absent — it's what GA4 deduplicates on.

  • value and currency

    Numeric value, ISO 4217 currency, and a warning when value arrives as a string.

  • Event name casing

    GA4's recommended events are lowercase; a differently-cased name is a different event and loses the standard reports.

  • The items array

    item_id and item_name present, and whether item totals roughly match the event value.

Pricing

Pick the package that fits your ad spend

Browser-side starter

$400One-time fee · lifetime ownership

If the tool found something and you'd rather not fix it yourself: we repair the root cause in your existing setup and verify it on a live conversion.

  • Root cause fixed, not worked around
  • Verified on a live conversion
  • Reconciled against your own records
  • Written handover
Have it fixed

1st-party server-side

Recommended

$800One-time fee · most popular

Removes the class of failure rather than the instance. Money events from your own records through a first-party container on your subdomain.

  • First-party server container on your own subdomain
  • Events from your records, not the browser
  • Deduplicated on a shared event ID at every destination
  • First-party cookies beyond Safari's 7-day cap
  • 95%+ accuracy and 8+ Meta EMQ, guaranteed in writing
Rebuild it server-side

Full 1st-party stack

$1,800One-time fee · lifetime ownership

Every paid channel server-side plus the offline loop, with monitoring so the next break surfaces in days rather than at quarter end.

  • Everything in 1st-party server-side
  • Pinterest, Snapchat, Reddit and LinkedIn CAPI
  • CRM and offline conversion loop
  • Refunds and cancellations corrected wherever each platform allows it
  • Monitoring on every destination
Get the full stack

FAQ

GA4 validator questions, answered

Yes. It also tolerates single quotes and unquoted keys, so you can paste straight out of a browser console.

Free · 30 min

Get the whole funnel checked, not one payload

Free30 minutesNo obligation