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.
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
| File | Useful for | Check before using it |
|---|---|---|
| Post Activity Dashboard CSV | Reviewing post performance | Selected dates, time zone, organic and promoted fields |
| Ads campaign CSV | Reviewing advertising results | Campaign scope and reporting definitions |
| Account archive | Browsing account information and old content | Included files and private information |
| Agent-prepared local CSV | Reviewing the post data already stored in PilotMyX | Coverage, 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