Export your data

Your data is yours. Click one button and we send you a ZIP with every metric we have for your site, aggregated by day, going all the way back to your first pageview. Open it in a spreadsheet, load it into a notebook, hand it to a contractor, or just keep it in cold storage. No format lock-in, no extra cost at any tier.

Open /<domain>/settings/export-data to find it. There is one button.

What you get

The ZIP contains 17 CSV files. Each one is a different cut of your traffic, grouped by day in your site timezone. Here is what they cover:

visitors.csvdaily totals
sources.csvreferrers + UTM
pages.csvpageviews per URL
entry_pages.csvwhere sessions start
exit_pages.csvwhere sessions end
locations.csvcountry, region, city
devices.csvdesktop, mobile, tablet
browsers.csvbrowser + version
operating_systems.csvOS + version
channels.csvorganic, paid, social
custom_events.csvyour custom tracks
custom_props.csvevent properties
outbound_links.csvexternal clicks
downloads.csvfile downloads
not_found.csv404 hits
engagement.csvscroll + time on page
hourly.csvtraffic by hour of day

A README.txt at the root of the ZIP lists every file, the date range covered, your site timezone, and a units legend so you know whether a number is seconds, milliseconds, or a percentage.

How it works

When you click Prepare export, we queue a job, scan your data on our analytics server, build the CSVs, zip them up, and email you when the file is ready. The link is valid for 24 hours.

Export data
Download every metric we have for this site as a ZIP of 17 CSVs.
Aggregated by day in your site timezone, all-time. We email you when
the file is ready, and the link is valid for 24 hours.
Prepare export
Ready
Requested 2 min ago, finished 8s ago
Size: 4.2 MB, expires in 23 hours
Download ZIP

For most sites this takes a few seconds. Big sites with millions of pageviews take longer. We run one export at a time per site, so if you click again while one is already running, the button stays disabled until the first one finishes.

How big is the file

The ZIP is gzip-compressed. Rough sizes by site volume:

  • Small site (a few thousand pageviews per month, a few months of history): 50 to 300 KB.
  • Mid-size site (50k to 500k pageviews per month): 1 to 5 MB.
  • Big site (a few million pageviews per month, a year of history): 10 to 50 MB.

The compressed size is roughly 5 to 10 percent of the raw CSV size, so a 5 MB ZIP is around 50 MB of CSV inside. Most spreadsheets and notebook tools handle that comfortably.

The email

We send a single email when the export is ready. It comes from david@clickport.io with the subject "Your <domain> export is ready", contains the download button, file size, and the expiry time. Reply to that email if anything looks off.

The email goes to the user who clicked Prepare export. If your account belongs to a team with multiple users, only the person who triggered the export gets the link. Anyone on the team can re-trigger and get their own.

What is in each CSV

Every CSV has date as the first column. Each row is one day of aggregated data, in your site timezone (the same timezone you set when you added the site). After date, the columns vary by file:

  • Sessions-based files (visitors, sources, entry_pages, exit_pages, locations, devices, browsers, operating_systems, channels) carry visitors, sessions, pageviews, bounces, and visit_duration_sec (seconds). One row per (date, dimension).
  • Pages.csv is event-based: one row per (date, hostname, normalized page path), with visitors and pageviews.
  • Engagement.csv covers scroll depth and active time on page, with total_engagement_time_ms (milliseconds) and avg_scroll_depth_pct (0 to 100).
  • Custom_events.csv rolls up your clickport.track() calls. One row per (date, event_name, currency), with visitor count, event count, and total revenue if you tracked it.
  • Custom_props.csv flattens event properties into one row per (date, event_name, prop_key, prop_value). Useful if you want to see how often a particular widget or button got used.
  • Outbound_links.csv, downloads.csv, not_found.csv are URL-level rollups for external link clicks, file downloads, and 404 hits.
  • Hourly.csv is by (date, hour_of_day) so you can see your daily rhythm down to the hour.

Column units are encoded right in the header where it matters: _sec for seconds, _ms for milliseconds, _pct for percentages. The README inside the ZIP repeats the legend.

What is not included

  • Goal-by-goal breakdown. The export covers everything you collect, but goal definitions live in our config and per-goal conversion rollups need a separate query. The has_converted flag is implicit in visitors.csv (sessions with no bounce + at least one event), and we will add proper goal columns in a future version.
  • Raw event log. Each row in events.csv would be one pageview, click, scroll, or form submission with full meta. We do not include that in the standard export because it is huge (millions of rows for a busy site) and is more useful for niche debugging than for ongoing reporting. Reply to the export email if you need this and we can arrange it.
  • Filtered or short-range slices. The Settings export is always all-time and unfiltered. If you want last 7 days with a country filter and a UTM source, use the Export button at the top right of the dashboard instead. That one respects everything you have selected.

How long the link is valid

24 hours from the moment the export becomes ready. After that the file is removed from our servers and the link returns a friendly "this export has expired" page. The row that records your request stays in our database forever as an audit trail, even after the file is gone, so you always have a record of when you exported.

If the link expires before you grab the file, just click Prepare export again. There is no cooldown and no daily cap.

Privacy and access control

The download link is protected by both a 64-character random token (in the URL itself) and your session cookie. Even if the email leaked, no one without your dashboard login can open the file. We never include the bytes in the email itself.

Share-link viewers (people you sent a read-only dashboard link to) cannot trigger exports. Only logged-in team members on the site's team can. This is enforced server-side, not just in the UI.

GDPR and data portability

Article 20 of the GDPR gives data subjects the right to receive their personal data in a structured, commonly-used, machine-readable format. The export is that, applied to the data we hold about your site.

Note that Clickport does not collect personal data in the GDPR sense (no cookies, no fingerprinting, no identifiers that follow visitors across sites). The aggregated rollups in the export reflect that: country and region but not city-level addresses, browser family but not the full user-agent string, daily totals but no per-session timestamps. If you need to respond to a data-portability request from one of your visitors, the export will not help, because we never had their personal data in the first place.

What the export does cover is the controller-side view: everything that flowed through our pipeline for your site. Useful for procurement audits, contract renewals, or just to confirm what is sitting on our infrastructure on your behalf.

Troubleshooting

The button is disabled and says "Export in progress..."

Another export for this site is already running. We process one at a time per site to keep the load predictable. Wait a few seconds (or up to a minute for very large sites), the page polls every 5 seconds, and the button re-enables when the first job lands at ready or failed.

I got "This site has no events yet"

The tracker has not delivered any pageviews for this site yet. Check that the snippet is installed (Site & Tracking snippet tab) and visit a page or two yourself. Once we see the first event, the export becomes available.

The status says "Failed"

Reply to the export-ready email or send a note to david@clickport.io with the export ID shown on the status panel. We retain the row indefinitely so the audit trail is intact even when the job did not succeed.

Archive Utility on macOS says "unsupported format"

Try unzipping with a different tool first: right-click the file, "Open With" then "The Unarchiver", or run unzip filename.zip in a terminal. If the file really is broken, re-trigger the export. We saw one early bug here in May 2026 (a 0-byte download due to a Fastify response quirk) and shipped a fix; this should not recur.