Skip to main content

Keep the meaning with the numbers

How to export Twitter analytics without losing context

You downloaded your Twitter data, but the file doesn't answer which posts worked. Start with the right export, then keep the dates, post types, and missing values beside the results.

By ImNotAVirus Updated October 26, 2026
On this page

Start with the question your export needs to answer

You want to compare your posts, but the download contains account files instead of the impressions and clicks you expected. Or you have a spreadsheet full of numbers with no clear record of when they were measured.

To export Twitter analytics, use the performance export available in your dashboard, select the dates, and keep the original CSV before editing it. An account archive serves a different purpose. If an agent prepares a file from PilotMyX, it should use the stored post data and explain its coverage, not present that file as a native X export.

Write down the question first. "Which original posts earned profile clicks during this review?" needs different columns from "Where is the post I wrote last year?" A larger download won't fix choosing the wrong source.

Choose the file that matches the job

FileUseful forCheck before using it
Post Activity Dashboard CSVReviewing post performanceSelected dates, time zone, organic and promoted fields
Ads campaign CSVReviewing advertising resultsCampaign scope and reporting definitions
Account archiveBrowsing account information and old contentIncluded files and private information
Agent-prepared local CSVReviewing the post data already stored in PilotMyXCoverage, observation times, unavailable metrics

X's campaign export reference distinguishes campaign reporting from the Post Activity Dashboard export. Don't combine rows from those files simply because both have an impressions column. Check what each row represents first.

Export from the Post Activity Dashboard when available

X's Post Activity Dashboard documentation describes this process: select a date range, then choose Export to download the CSV. It says the export includes post data and permalinks, with organic and promoted metrics separated, and uses UTC/GMT.

The documented limits are up to 30 days and 3,000 posts per file. If your selected range exceeds the available limit, use smaller ranges and record which dates each file covers. Those limits describe this export, not a universal rule for every X data surface.

Use the controls actually available in your account. A missing Export button doesn't tell you, by itself, which subscription you need or why access differs. This guide doesn't claim that every current analytics screen offers the same download.

After downloading, open the file and check its first and last dates, row count, headers, and several post links. Don't assume that a successful download contains every item you intended to review.

Keep the account archive separate from performance reporting

The X archive guide describes an account snapshot with browser-readable and machine-readable files. It can include posts, media, Direct Messages, and other account information. X says preparing the download may take a few days.

An archive is useful when your task is finding or keeping old content. It is not a substitute for checking whether a performance export contains the metrics you need. Don't promise yourself a complete history of impressions or clicks merely because the archive includes an old post.

For content lookup, follow the guide to finding old tweets. Keep the original archive private; a post-performance review doesn't need your whole account ZIP or private messages.

Keep dates, identifiers, and unknown values intact

Save an unchanged copy before sorting or merging files. Record the source, requested dates, export time, time zone, content filters, and any known gaps in a short note beside it.

Import post identifiers as text so your spreadsheet doesn't reformat them. Keep the full content and a way to reopen the post. An impressive number is hard to learn from after you've discarded the wording that produced it.

For a custom local file, a useful starting set of columns is:

x_post_id, post_type, published_at, metrics_captured_at,
content, impressions, likes, replies_received, reposts,
profile_clicks, url_clicks

These are proposed column labels, not a promise about X's headers. Use a CSV writer that preserves commas, quotation marks, and line breaks in the content. Inspect the imported rows before calculating anything.

Keep a known zero as zero. Leave unavailable metrics empty and explain that convention. X's metrics reference distinguishes public metrics from private click metrics and separates organic from promoted results. A missing private field doesn't mean nobody clicked.

The export time and a metric's observation time are different facts. Creating a file now doesn't refresh an older stored count. Likewise, current totals for posts published last week aren't automatically impressions earned during last week.

When you combine overlapping downloads, check for repeated post IDs and observation times. Don't add two snapshots of the same post together as though they were two posts. Keep snapshots separate if you need to compare how a count changed.

Prepare a local file from PilotMyX without inventing history

PilotMyX supplies stored posts and their available metrics to a connected agent. An agent with file-writing tools can arrange those returned records into a local CSV. The agent creates the file; PilotMyX isn't supplying a native CSV download in this workflow.

Ask for explicit dates and content scope. The agent should read every page of the selected group, check the reported count, and include the metric capture times. Exporting only the highest-impression results would bias a review of your usual performance.

The file can only contain data the account connection and stored history make available. It cannot recreate an unrecorded count at a post's first hour or recover missing private metrics by changing a column name. If coverage is incomplete, keep that limit in the report.

You can also review the data directly in PilotMyX without making a spreadsheet. Use a file when you need a durable snapshot or your own calculation, not just because a download feels more complete than the screen.

Ask your agent for a bounded export

After connecting your agent, adapt this request. It allows a local file, not changes to your account:

Prepare a local CSV for posts published from [start date] to
[end date] in my PilotMyX account time zone.
Use [original posts / replies / both], keeping post types distinct.
Read only stored PilotMyX data. Do not refresh, change settings,
create drafts, schedule, or publish.

Read every page of the selected group. Report the requested dates,
actual coverage, row count, source freshness, and any unavailable
metrics. Include post IDs as text, post type, full content,
publication time, and each available metric's capture time.

Keep known zeros. Leave unknown metrics empty and document that
choice. Do not invent historic snapshots or label lifetime totals
as activity earned during the selected dates. Preserve CSV quoting
and line breaks. Don't include credentials or private messages.

If you can write files here, save the CSV locally and provide its
path plus a short coverage note. Otherwise say that you cannot
create a file; don't claim a download exists.

Use the export to choose one next test

Check the imported rows against a few source posts before trusting a formula. Separate posts and replies, keep promoted results identifiable when your data supports it, and compare observation ages as well as publication dates.

If you want a typical-post summary, use the average-versus-median guide rather than describing your top rows as the whole account. If engagement rates disagree, check the numerator and denominator before blaming the file format.

Then read the actual posts behind the result. Pick one subject, opening, or format worth retesting, with a metric that fits its purpose. The useful output is a decision you can explain, with the source file still available when you need to check it.

Use your own account

Turn the next guess into a decision you can test.

Review my post data
PilotMyX

Your account. Your data.

Here’s what PilotMyX needs, and what it doesn’t.

Only what makes the product work

Your posts, replies and stats, plus your profile to identify your account.

Not for sale. Not for ads.

We don’t sell your personal data. Your connected X data is used to run PilotMyX, not for advertising.

Your connection is protected

Access tokens are encrypted. We never see your password or read your DMs. You can revoke access anytime in X.

X asks for publishing access so you can schedule posts. We only publish when you, or an agent you authorize, ask us to.

Any question? You can reach me directly here: