Migrate from Google Analytics 4
Move from GA4 to self-hosted, cookieless analytics: import every pageview and event from GA4's BigQuery export into trckable, then remove the Google tag.
trckable imports GA4's events one row at a time, from the BigQuery export. It does not import GA's reports or its Data API summaries: those are totals, and totals cannot become visits. The general order (run both for a week, import, compare, switch) is on Migrating.
GA4 keeps its events to itself, except through its BigQuery export, which has every pageview and event one row at a time. That is what trckable imports.
-
In GA4, open Admin → Product links → BigQuery links and link a Google Cloud project, with the daily export on. The free BigQuery sandbox is enough.
-
Export the events as newline-delimited JSON to a bucket:
EXPORT DATA OPTIONS (uri = 'gs://your-bucket/ga4-*.json', format = 'JSON') AS SELECT event_timestamp, event_name, event_params, user_pseudo_id, device, geo, collected_traffic_source FROM `your-project.analytics_123456789.events_*` -
Stream it straight in:
gcloud storage cat 'gs://your-bucket/ga4-*.json' | trckabled import tkb_a1b2c3d4 -
What comes across:
| From GA4 | Becomes |
|---|---|
page_view | A pageview. The path is kept and the query string dropped, after its UTM tags are read |
Any other event (sign_up, purchase, file_download…) | A goal of the same name |
session_start, first_visit, user_engagement, scroll and GA4's other housekeeping | Left out, and counted separately so you can see they were |
user_pseudo_id | The visitor, hashed on the way in |
page_referrer | The source, unless it is your own site |
collected_traffic_source | The campaign, for that visit — never the user's first-ever one |
geo, device | Country (named in GA4, stored as a code), region, city, device, browser, OS |
Two things to know first:
- The BigQuery export is not retroactive. It starts on the day you link it, so history from before then exists only as GA's own summaries, which cannot become real events. Link it now, even if you import later.
- Money stays with your payment provider. A GA4
purchasearrives as a goal; revenue comes from connecting Stripe and the others, which is where the real amounts, refunds and currencies live.
GA4 records no time-on-page per pageview in a form that survives the export, so imported days show bounces as single-page visits, the same as any tool without engagement data.
Then
Run both scripts for a week, compare, and remove the Google tag (and, if the banner was only there for GA, your cookie banner: see Privacy). Why GA's numbers and trckable's differ is explained on Migrating.
Migrating
Bring your history with you from Plausible, Umami or Google Analytics 4, keep both running for a week, and only then switch.
Migrate from Plausible
Move from Plausible Community Edition to trckable: export raw pageviews and goals from Plausible's ClickHouse and import them, sessions and sources included.