Import & export
Bring history from Plausible, Fathom, GA4, WireBoard or DataFast, import event CSVs, and export everything back out.
Supported imports
Two shapes are supported. Event files carry one row per hit and keep full detail. Aggregate files carry per-day totals; Numative synthesizes pageview events from them that reproduce your visitor, pageview and bounce-rate numbers, but detail dimensions are only as rich as the file.
| Source | Format | Notes |
|---|---|---|
| Numative (JSON) | Events | The file produced by Export events (JSON) in this screen, or any JSON with an events array. Full fidelity, including props, revenue and bot flags. |
| Events CSV | Events | Generic per-hit CSV; also fits Umami event exports. |
| Plausible (ZIP) | Aggregate | The Imports & Exports zip, as-is. Not the dashboard's CSV export. |
| Fathom (CSV) | Aggregate | Fathom's aggregate export. |
| Google Analytics (CSV) | Aggregate | A GA4 daily export with date, users and pageviews columns. |
| WireBoard (API token) | Aggregate | Read over WireBoard's API with a token that has analytics:read. No file needed. |
| DataFast (API key) | Aggregate | Read over DataFast's API with a website key (df_) or an account token (dft_). Revenue is not imported. |
For events CSVs, columns are matched by header name. Recognized headers include timestamp, path, name, referrer, session_id, visitor_hash, country, browser, os, device, UTM columns and revenue. A minimal file works:
timestamp,path,name,referrer
2026-05-01T09:14:00Z,/pricing,pageview,https://news.ycombinator.com
2026-05-01T09:16:30Z,/signup,Signup,Run an import
- 1
Pick the source
On the site's Import screen, choose the source that matches your file. The choice decides how the file is parsed, so pick Plausible, Fathom or Google Analytics for those exports rather than the generic CSV option.
- 2
Choose the file and import
Select the
.csv,.jsonor.zipfile and click Import. The import reports how many events were created, and anything in the file it could not store. - 3
Check the history
Every run appears in the import history table with its status, row count and date. Failed imports show the error; a file with no usable rows is marked failed rather than silently importing nothing.
WireBoard and DataFast
Neither tool exports a file, so Numative reads your history through their API instead. Choose the source, paste a token, and click Import. For WireBoard, mint a token under Settings, API with the analytics:read ability, then click Find sites and pick the site. For DataFast, use a website API key (df_), or an account token (dft_) with the analytics:read and websites:read permissions, then click Find sites and pick the website.
The import runs in the background, one day at a time, inside each tool's rate limit, so a year of history takes around half an hour. You can leave the page. The token is stored encrypted only while the import runs and is deleted when it finishes.
Daily visitors and pageviews match the source exactly. Bounce rate and visit duration match too, unless the source counts a bounce differently: Numative counts a bounce as a visit with one pageview, so WireBoard history usually shows a somewhat higher bounce rate. Pages, sources, countries, devices, browsers and operating systems each match on their own; combining two of them in one filter is an estimate, because neither API reports them visit by visit. WireBoard reports days in UTC. A free WireBoard plan only lets the API read back 30 days. DataFast revenue is not imported.
If you used DataFast's Bot traffic tracking, those crawler requests come across too, as bot traffic: each crawler is classified the way Numative classifies live crawlers, its IP verification is kept, and it appears under Bots. Bot traffic never counts toward your plan's pageviews. Very large crawler histories are capped at 25 million requests per import, keeping the most recent days.
The day you install Numative is filled in too. Tracking only covers that day from the first tracked visit, so the import adds the whole hours before it from the source's hourly totals. The hour tracking started in is left to tracking, so no visit is counted twice. Run the import any time after installing the snippet.
Plausible exports
Plausible has two zip exports, and they are not interchangeable. Use the one under the site's Settings, then Imports & Exports, then Export data. It is a zip of about eleven CSVs whose names begin with imported_, and every file has a date column. Each one breaks the same traffic down by one dimension: pages, sources, browsers, countries, and so on. Upload the zip as downloaded. Numative reads the files together and reconstructs the visits behind them.
visitors.csv, pages.csv, referrers.csv and so on. It cannot be imported. Apart from visitors.csv, every file in it is one total for the range the dashboard had selected, with no dates, and over a long range even visitors.csv is bucketed by month. There is no day-by-day history in it to rebuild.What comes across:
- Visitors, visits, pageviews, bounce rate and visit duration, at the values Plausible reported.
- The per-page, per-source, per-device, per-country, entry-page and exit-page breakdowns.
- Browser and OS versions, scroll depth, and time on page.
- Cities. Plausible exports these as numeric GeoNames ids, which Numative resolves to names using GeoNames (CC BY 4.0). Places under 1,000 people are not in that dataset: those visits keep their country and region, and the import reports how many were affected.
Two limits are worth knowing. Plausible records aggregates rather than individual hits, so single-dimension reports are exact but a cross-filter of two imported dimensions is not: the export never recorded which browser was in which country. And Plausible's own engagement events, which carry its scroll and time telemetry, are not imported as events. On a busy site they outnumber real goals many times over. The measurements they carry are imported, as scroll depth and time on page against each page.
Overlapping data
If a day in the export is one Numative already has data for, whether from the tracker or an earlier import, that day is skipped. Nothing links an imported visit to the real visit it represents, so the two cannot be merged: importing the day would add Plausible's reconstruction on top of the existing record and roughly double every metric for it. The import reports which days were skipped, as a date or a range.
Running both tools in parallel during a migration is therefore safe. Export from Plausible whenever you like: the days Numative already tracked are left as they are, and only the earlier history is added.
Skipping works a whole day at a time, because that is the only unit these exports have. If you install the tracker at noon and import afterwards, that day is already partly Numative's, so the export's version of it is skipped entirely and the morning stays empty. The hours before noon cannot be filled from the file: it holds one row per day with no time of day in it, and the day's total gives no way to tell how much of it fell before the changeover. Numative marks the day on your chart with an annotation reading Imported history ends here rather than inventing a number for it.
If you have the choice, run the import first and install the tracker afterwards. Then no day belongs to both and the history joins up exactly.
Reverting an import
Every imported event is tagged with its import id, and imported events are never counted as bot traffic. The undo button on a row in the import history deletes every event carrying that id and marks the import reverted. An import can therefore be run, inspected and redone.
Large histories
Large exports are uploaded in parts and reconstructed by a background job. A site with several years of traffic can hold millions of events, which takes minutes to rebuild and ingest.
- The progress bar counts events against the export's own daily totals, so it reports real progress rather than elapsed time.
- Leaving the page does not interrupt the import. The job runs on the server and records its progress as it goes; the Import screen shows the current state whenever you return.
- A failed import is undone as a unit rather than leaving a partial history behind.
Export
The Import screen's export card downloads your site's all-time data:
- Export events (JSON): every raw event, ordered by time, with path, referrer, session and visitor identifiers, location, device, UTM fields, custom props, revenue and bot flags. The file re-imports into Numative at full fidelity using the Numative (JSON) source, so you can move a site between accounts or keep an offline backup.
- Export timeseries CSV: one row per day with visitors, visits and pageviews.
Events exports are capped at 200,000 events per file, matching the import ceiling. A capped file has "truncated": true in its metadata.
Individual reports elsewhere in the dashboard, such as the Rankings section and the Backlinks tables, have their own CSV export buttons scoped to what is on screen.
The toolbar menu beside the range selector also exports a dashboard snapshot: the headline numbers and every breakdown currently rendered, over the selected window and honoring the active filters, as CSV. It is the fastest way to hand someone the report you are looking at. Export is owner-only, so a shared dashboard does not offer it.