Google Analytics 4GA4 reports are only as good as the events behind them. duckmetric checks that your view_item, add_to_cart and purchase events fire - and that they carry value, currency, transaction_id and items, without duplicates or PII.
This audit is for teams that need proof, not guesses: whether tags fire on the real page, whether events contain the right parameters, and whether ad platforms receive the signal they need to optimise campaigns.
view_item_list, view_item, add_to_cart, begin_checkout, purchase and more - which fire, which are missing across your funnel.
purchase needs value (a number), currency (ISO 4217), transaction_id and an items[] array with item_id, name, price, quantity.
The same transaction_id sent twice, or two G- config tags on one page, inflate your revenue. We flag it.
Email or phone in event params breaks GA4's terms; debug_mode left on in production skews data.
You can verify the most important GA4 events with the browser alone:
Reload and click through the funnel. Each GA4 event is a request to /g/collect; the event name is the en= parameter (e.g. en=purchase).
On the purchase request confirm value (a number), currency (ISO 4217 like EUR), transaction_id, and that the items array has item_id and price.
Turn on debug mode and watch events land in real time in GA4 → Admin → DebugView - the fastest way to see exactly what parameters arrive.
If the purchase fires again on refresh with the same transaction_id, you're double-counting revenue. A unique transaction_id per order is what prevents it.
Inspect the /g/collect request with en=purchase and confirm it carries value, currency, a unique transaction_id and an items array. Missing any of these means broken revenue reporting or value-based bidding.
Almost always a duplicate purchase (fires on thank-you-page refresh or from two GA4 config tags) or a missing/non-unique transaction_id. GA4 de-duplicates on transaction_id, so if it's absent every refresh counts again.
Yes. Sending email, phone or other personal data in event parameters violates GA4's terms and can lead to data deletion. An audit checks that no PII leaks into parameters and that debug_mode isn't left on in production.
No. The free scan reads the events from your URL in a real browser. Account access only helps to cross-check configuration and reporting after the on-page events are verified.
See your Analytics 4 events the way Google receives them. The full audit then verifies purchase end-to-end.