Get your GA4 Migration tracking to 95%+ accuracy guaranteed in writing.
Default GA4 is broken out of the box: no e-commerce schema, wrong attribution, double-counted conversions, no BigQuery, reports buried 4 clicks deep. Most teams check GA4 once a quarter, distrust it, and revert to Meta Ads Manager. We rebuild GA4 properly — clean events, custom dimensions, audiences, BigQuery, and a Looker dashboard your team will actually look at every day.
Free30 minutesNo obligation
GA4 Migration · what breaks
Why your GA4 is unusable — GA4 Migration
- 01
Default config is broken
(not set), bots, double-counting.
- 02
Reports buried 4 clicks deep
No one uses GA4 day-to-day.
- 03
BigQuery never set up
Free data goldmine ignored.
- 04
Wrong attribution model
Last-click default hides MOFU.
GA4 Migration · the fix
Outcomes — GA4 Migration
Clean e-commerce schema
All standard events fire correctly.
BigQuery export live
Free tier for most stores.
Looker Studio dashboard
Branded, daily, single-click access.
Audiences & key events
Wired to Google Ads.
GA4 Migration · architecture
How a GA4 property should be assembled — GA4 Migration
GA4 collects almost anything you send it, which is why so many properties are full of data nobody can use. The structure below is what makes reports answer questions.
- 1
One event taxonomy, written down before anything is tagged
Recommended event names where they exist, because those unlock built-in reports and ecommerce dimensions. Custom events only where nothing standard fits, named consistently.
- 2
Ecommerce events with real item arrays
view_item, add_to_cart, begin_checkout and purchase carrying item_id, item_name, price, quantity and currency. Without the items array, half the ecommerce reports stay empty.
- 3
Custom dimensions registered for the parameters you will actually filter on
An unregistered parameter is collected and then invisible in reports. This catches nearly everyone at least once.
- 4
Internal and test traffic filtered at the property
Staff sessions, staging, and test orders excluded before they reach reports, not filtered out by hand afterward.
- 5
Google Ads and BigQuery linked
The Ads link enables conversion import and audience sharing. The BigQuery export is free and is the only way to get at unsampled event-level data — turn it on early, because it is not retroactive.
- 6
Consent Mode signals wired to the same source as everything else
GA4's behavioral modeling requires consent signals to be present and correct. One consent source feeding every tag, not a separate implementation per tool.
GA4 Migration · events
The GA4 event set we build for an ecommerce property — GA4 Migration
Recommended names throughout. Every ecommerce event carries the items array; leaving it out is the most common reason the ecommerce reports look broken.
| Event | Fires when | Key parameters | Registered as |
|---|---|---|---|
| view_item_list | Category or search results render | items[], item_list_name | — |
| view_item | Product detail page loads | items[], value, currency | — |
| add_to_cart | Item added to cart | items[], value, currency | — |
| begin_checkout | Checkout entered with a non-empty cart | items[], value, currency, coupon | — |
| add_payment_info | Payment method accepted | items[], value, currency, payment_type | — |
| purchase | Order confirmed by the backend | transaction_id, items[], value, tax, shipping, currency | Key event |
| refund | Refund is issued | transaction_id, value, currency | — |
| generate_lead | Qualified lead, not every form submit | value, currency, lead_source | Key event |
| login / sign_up | Authentication completes | method | — |
GA4 Migration · diagnose
Where GA4 properties usually go wrong — GA4 Migration
- 01
Check for duplicate purchase events
GA4 deduplicates on transaction_id within a limited window. Without it, a refreshed thank-you page counts twice.
- 02
Confirm the items array is present and complete
Open a real purchase in DebugView and expand the payload. Missing or malformed items is the top cause of empty ecommerce reports.
- 03
Check which parameters are registered as custom dimensions
Collected but unregistered parameters are invisible. This is not an error anywhere in the interface.
- 04
Look for unfiltered internal traffic
Staff and staging sessions in the data distort every rate in the property.
- 05
Verify referral exclusions cover payment providers
A checkout that redirects through a payment domain and back will otherwise attribute the sale to the payment provider.
- 06
Reconcile purchases against the backend
One fully closed week, matched on transaction_id. GA4 will read slightly low; a large gap is a fault.
GA4 Migration · prove
What a finished GA4 property looks like — GA4 Migration
Source of truth
Backend order records
- purchase count within a small percentage of backend orders for a fully closed week, matched on transaction_id.
- No transaction_id appearing more than once.
- Ecommerce reports populated end to end, from item list through to purchase.
- Every parameter used in a report registered as a custom dimension.
- Internal traffic filtered and the filter confirmed active, not just created.
- BigQuery export enabled and receiving daily tables.
- A documented event taxonomy handed over, so the next person does not have to reverse-engineer it.
GA4 Migration · free audit
What we check in the free audit
- Check for duplicate purchase events
- Confirm the items array is present and complete
- Check which parameters are registered as custom dimensions
- Look for unfiltered internal traffic
- Verify referral exclusions cover payment providers
- Reconcile purchases against the backend
Checked against
Backend order records
Free30 minutesNo obligation
GA4 Migration · when not to buy
When you do not need this — GA4 Migration
- Your GA4 already reconciles against your backend and the ecommerce reports are populated. Verify it, then leave it alone.
- You make every decision inside the ad platforms and nobody opens GA4. A property nobody reads is not worth rebuilding — decide first whether you will use it.
- You only need conversion tracking for ads. GA4 is not required for Google Ads conversions; those can run entirely on their own tags.
- You are on a different analytics stack that already answers your questions. Running two properly is more work than running one well.
GA4 Migration · what we deliver
Deliverables — GA4 Migration
GA4 property rebuild
Property + data streams
GTM container update
Clean event spec
BigQuery export
Daily, with sample queries
Looker Studio dashboard
Branded template
Notion runbook
How to maintain & extend
Written guarantee
95%+ tracking accuracy
Measured against Backend order records. Miss it and we keep working at no cost.
Pricing
Pick the package that fits your ad spend
GA4 — Starter
$400one-time setup
Clean GA4 setup with standard e-commerce events and core reports. No BigQuery, no Looker.
- GA4 property rebuild
- Standard e-com events
- Conversions wired to Google Ads
- QA + handover doc
- 30-day support
GA4 — Recommended
Recommended$800one-time setup
Production GA4 with clean schema, BigQuery export, and a branded Looker Studio dashboard your team will actually open.
- Clean event spec
- Custom dimensions + audiences
- BigQuery export with sample queries
- Branded Looker Studio dashboard
- Notion runbook
- 30-day support
GA4 — Enterprise
$1,800one-time + optional retainer
Enterprise GA4 with multi-property, multi-stream, advanced custom dimensions, server-side measurement protocol, and quarterly reporting reviews.
- Multi-property / multi-stream
- Server-side Measurement Protocol
- Cross-domain identity stitching
- BigQuery + Looker + Hex notebook
- Quarterly reporting review
- 90-day support
FAQ
GA4 Migration questions, answered
Universal Analytics has been deprecated since July 2024. We rebuild fresh on GA4.
