---
title: "X Analytics: Metrics, Reports and Baselines Explained"
description: "Where X analytics live, what each metric means, how the API's 30 day window works and how to build a monthly report around your own baseline."
url: https://kairopost.com/blog/x-analytics
---

# X analytics: the complete guide

By Sami Kerr

Published

13 October 2026

18 min read

(Analytics. X analytics: the complete guide. A caliper closes on a post card and reads 3.0%, with the words engagements over impressions beneath it.)

## The short answer

X shows analytics as account level figures, as numbers for each post in the Post Activity Dashboard (which exports a CSV), and through the API for developers. The core metrics are impressions, engagements, engagement rate, profile visits, link clicks and followers, judged against your own baseline.

## Key takeaways

- Impressions count views, not people, and engagements include clicks that only you can see.
- The Post Activity Dashboard opens on the last 28 days and exports up to 30 days or 3,000 posts at a time.
- Through the API, non public metrics exist only for posts created in the last 30 days, so save your numbers on a schedule.
- Read every number at the same post age, with the same formula, against your own median.
- Tag every link, then compare X's link clicks with your site's sessions knowing the two will not match.

### Contents14 sections

You open X analytics and find a dozen numbers. Impressions are up, the engagement rate is down, profile visits did something odd, and someone wants a report by Friday. Which of these numbers deserves your attention? If you report to a client, start from our monthly X report template. Two numbers deserve their own guides: vanity metrics you can ignore and what profile visits tell you.

X analytics is the set of figures X gives you about your posts and your account. This guide covers where to find them, what each metric means, what the API adds, what X does not show, and how to turn it all into a monthly report built on your own baseline. Where we could not confirm a detail from X, we say so.

## Where do you find X analytics

X shows analytics in a few connected places. Which views you can open depends on your account, so check your own. These are the ones X's pages describe.

The summary

Account home

X's Ads glossary lists Account home next to the post and video dashboards as part of X Analytics. It is the account level view, so start here for the trend.

Every post

Post and Video Activity dashboards

A list of your posts with impressions, engagements and an engagement rate for each, plus a CSV export. Start here to compare posts.

For tools and code

The X API

The same kinds of counts, read by a program. Some are public for any post. The private ones are for your own posts.

After the click

Your website analytics

X can tell you someone clicked. Only your own analytics, such as GA4, can tell you what they did next.

Professional accounts add Professional Home analytics, according to X's help. Our guide to the X professional account covers what else changes when you switch.

One post, four readoutsThe same post shows up as a summary figure, a dashboard row, a CSV line and an API reply. Each has its own date range, so check the range before you compare.

Check access before the first report

With X's Delegate feature, an admin can view analytics and a contributor cannot. If you run a client's account as a contributor, ask for admin access first.

## What the main X analytics metrics mean

Six numbers cover most of what you need: impressions, engagements, engagement rate, profile visits, link clicks and followers. Each answers a different question, and none of them answers all of them. To keep link tags consistent across people and campaigns, use our UTM naming conventions.

| Metric | What it counts | The question it answers | Watch out for |
| --- | --- | --- | --- |
| Impressions | Times the post appeared on a user's screen | How often was it shown? | Views, not people. One person seeing it twice is two |
| Engagements | Every interaction: clicks anywhere on the post, reposts, replies, follows, likes | How much did people do with it? | Includes clicks only you can see |
| Engagement rate | Engagements divided by impressions | Of the times it was shown, how often did something happen? | Only comparable if you use one formula |
| Profile visits | Visits to your profile, shown in your account analytics | Did the post make people look at you? | Not the same as new followers |
| Link clicks | Clicks on a URL in the post | Did people leave for your site? | Clicks are not visits on your site |
| Followers | The running total of accounts that follow you | Is the audience growing? | A total, so save it to see change |

These definitions come from X's own pages: its developer docs for impressions, its Export CSV Definitions for engagements and link clicks, and its Ads glossary for engagement rate. For the wider vocabulary, see our [X glossary](https://kairopost.com/blog/x-glossary).

The one that causes most confusion is engagements. It is bigger than the likes, replies and reposts you can see under a post, because it also counts clicks on the post, on media, on your name and on your photo.

(Nested boxes. The outer box is impressions, times the post appeared on a screen. Inside it is engagements, every interaction. Engagements holds two groups of chips. Anyone can see: likes, replies, reposts. Only you see: link clicks, profile clicks, post expands.)

Engagements sit inside impressions, and link clicks and profile clicks sit inside engagements. Two of the groups are invisible to anyone but you.

Here is how that reads on a single made up post.

Harbour Roasters@harbourroasters_example Example

The autumn beans land on Thursday. We wrote down how to brew them three ways: example.com/autumn

Example. The numbers beneath are made up.

Say the post shows 2,400 impressions and 72 engagements. The engagement rate is 72 ÷ 2,400 × 100, which is 3.0%. If 18 of those 72 engagements were clicks on the link, the link click rate is 18 ÷ 2,400, or 0.75%, and the link clicks are already inside the 72.

The full method, including the choice between dividing by impressions or by followers, is in our guide to [calculating engagement rate on X](https://kairopost.com/blog/x-engagement-rate).

### Which number answers which question

- **Was it shown?** Impressions.
- **Did people react?** Engagement rate by impressions.
- **Did it send traffic?** Link clicks first, then sessions in your web analytics.
- **Did it build the audience?** Profile visits, then followers.
- **Did a video hold attention?** The playback milestones, which are unique users who played through 25, 50, 75 and 100 per cent. Our video on X guide covers formats.

## How the Post Activity Dashboard and CSV export work

The Post Activity Dashboard lists your posts with their impressions, engagements and an engagement rate, and it can export a CSV. As X's help page reads in October 2026, it opens on the last 28 days and you can change the date range.

28 days

shown by default

X Business Help, Post and Video Activity Dashboards

30 days

in one CSV export

X Business Help, Post and Video Activity Dashboards

3,000

posts per export, replies included

X Business Help, Post and Video Activity Dashboards

36 hours

for numbers to stabilise

X Business Help, Post and Video Activity Dashboards

The Video Activity Dashboard works the same way for video, and X says both can export a file with post level data and permalinks, split into organic and promoted metrics. The 36 hours matters: X says its systems take up to that long to stabilise, so a slight fluctuation is normal.

Early numbers wobble, then settleAn illustration, not real data: a count moves slightly for the first hours, then holds. Read posts after the wobble, and always at the same age.

A clean export takes six steps.

1. Pick one date range: Choose the dates the post went out, up to 30 days at a time. For a month, export the whole month, not the last 28 days.
2. Export the CSV: If you reply a lot, replies count towards the 3,000 post cap. X suggests splitting a long range into smaller ones when the file will not download.
3. Convert the times: The export is in UTC, so a post you sent at 9 in the morning may show at another hour. Convert to your own time zone before you compare slots.
4. Leave out the newest posts: Posts under 36 hours old are still settling. Better, wait until every post in the file is the same age, such as 7 days.
5. Keep organic and promoted apart: The file splits them. Add them together only if the report covers paid and unpaid posts as one.
6. Name the file by its range: Save it as `x_posts_2026_09.csv` or similar, in a folder you own. This is the copy you will trust in a year.

Time zones also break timing tests

If you use the export to find your best hour, convert from UTC first. Our guide to the [best time to post on X](https://kairopost.com/blog/best-time-to-post-on-x) shows how to run that test without fooling yourself.

## What the X API shows, and why the 30 day window matters

The X API lets a program read the same kinds of counts. Public metrics cover any post. Non public metrics, which include URL clicks, profile clicks and the engagements total, are only for your own posts, and X says they are only available for posts created within the last 30 days.

That window is the single most important API fact for reporting. After day 30, the private counts for that post are no longer there to read. Three reporting guides go further: measuring brand awareness, measuring community health and reporting results to executives.

Thirty days to copy the numbersA post carries a due date. Copy its private counts into your own sheet before day 30 and the numbers are yours to keep.

X's developer docs sort the metrics like this.

| Kind | Who can read it | What is in it | Window |
| --- | --- | --- | --- |
| Public | Anyone with API access, for any post | Impressions, likes, replies, reposts (quotes counted separately), quotes, bookmarks, video views | No 30 day limit stated on the metrics page |
| Non public | The post's owner, with user context | URL clicks, profile clicks, engagements, video playback milestones | Posts created in the last 30 days |
| Organic and promoted | The post's owner, with user context | Counts split by whether they came from unpaid or promoted delivery | Posts created in the last 30 days |

The docs also describe a Get Posts Analytics endpoint, and a handful of facts shape how you use the API.

- **What you send.** Up to 100 post IDs and a start and end time, with results by hour, day, week or in total.
- **What comes back.** Fields such as impressions, engagements, likes, replies, bookmarks, detail expands, URL clicks, profile clicks, media views, follows and unfollows.
- **How far back.** That page states no maximum look back, and the metrics page states 30 days, so we plan for the shorter one.
- **No rate field.** The metrics page lists counts only. You divide them yourself, as in our [engagement rate guide](https://kairopost.com/blog/x-engagement-rate) .
- **Followers is a running total.** The API gives the current followers count on a user. To see growth, save the count on the same day each month.

Reading through the [API costs](https://kairopost.com/tools/x-api-cost-calculator) credits: X's docs say credits are bought in advance and deducted as requests are made.

Our posts on the [X API](https://kairopost.com/blog/x-api-guide) and X API pricing explain how that works. If you would rather not build this, [Kairo Post's analytics](https://kairopost.com/features/analytics) read post and account metrics from the official X API, and because X charges for reading post metrics, you choose how often they refresh and see the price first.

## What X analytics does not show

X analytics does not show who saw your post, what people did on your website afterwards, or the private numbers of other accounts. Knowing the gaps stops you drawing conclusions the data cannot hold.

- **People.** An impression is a view, not a viewer. We found no unique viewer count for organic posts on the pages we read.
- **Your website.** X records the click. What happens on your site, such as how long people stay or whether they buy, is visible only to your own analytics.
- **Other accounts' private numbers.** Link clicks, profile clicks and engagements need user context and are for your own posts.
- **Old private counts through the API.** After 30 days the non public metrics for a post are gone from the API.
- **A finished rate.** The API lists counts and no engagement rate, so the rate in a report is always one somebody calculated.
- **A reason.** X shows what happened to a post, not why. The why comes from comparing posts you changed on purpose.

### Things we could not confirm from X's own pages

We tried to confirm these and could not, so we do not state them as facts.

- The exact menu path to open analytics in the X app and on the web.
- Which accounts or plans see which views. Third party pages disagree, and X's pages we could read do not settle it.
- How long Account home looks back. Excerpts of X's help say the past month in one place and 28 days in another.
- Whether the engagements total counts bookmarks and quotes. The definition names clicks, reposts, replies, follows and likes.
- Whether repeat clicks from one person count once or twice, and whether X filters bots.

If a post of ours depends on one of these, it says so. Open the pages in the sources list and read them yourself.

## How often to check each number

You do not need every number every day. Match the check to how fast the number moves and what you would do about it. Most accounts need a short weekly look and one proper review a month.

| How often | What to look at | What you would do |
| --- | --- | --- |
| Weekly, five minutes | Impressions and engagements for the week, any post far outside your normal range | Note it. Do not change strategy on one week |
| Monthly, under an hour | The six numbers, the top and bottom post, link clicks against sessions | Write the report and pick one change |
| Every quarter | Your baseline: the median of your last 20 to 30 posts | Reset the baseline and drop old posts from it |
| Before day 30 of any post | Private counts you want to keep, if you read through the API | Copy them into your own sheet |

Profile visits and followers deserve one extra habit. Read them together. Profile visits show how many people looked at you, and followers show how many of those stayed. If visits climb and followers do not, the posts are interesting but the profile is not finishing the job. Our [profile optimisation guide](https://kairopost.com/blog/x-profile-optimization) covers what visitors see.

Followers also need a growth rate, not just a total. Subtract the followers at the start of the month from the followers at the end, then divide by the start. In the example later, 142 new followers on 3,120 is 4.6%. A total of 3,262 on its own cannot tell you whether that was a good month.

## How to find your own baseline

Your baseline is what a normal post of yours does, measured the same way each time. Take the median engagement rate of your last 20 to 30 posts, all read at the same age. A new post is then "above", "near" or "below" normal, which a single number cannot tell you.

We give no average engagement rate for X here, on purpose. We found none from X, and none from research that discloses its method and sample.

1. List 20 to 30 recent posts: Use the export, so the numbers share a source. Leave out [giveaways](https://kairopost.com/blog/x-giveaway-rules) and paid posts if they are not your normal output.
2. Pick one measuring age: Read every post at the same age, such as 7 days after it went out. Which age matters less than keeping it fixed.
3. Work out each post's rate by impressions: Engagements divided by impressions, times 100. Write the formula at the top of the sheet.
4. Take the median and the middle half: The median is the middle value. The range from the lower to the upper quarter shows how much a normal post varies.
5. Compare, then change one thing: A post above the middle half beat your normal. Test one change at a time, so you know what caused it.

Our free [engagement rate calculator](https://kairopost.com/tools/engagement-rate-calculator) does this for a pasted list of posts. The median beats the average because one very [good post](https://kairopost.com/blog/how-to-write-great-x-posts) drags an average up, and a median does not move.

When your baseline settles, it also gives you something to report that does not depend on anyone else's account.

## How to track clicks from X to your website

To track clicks from X, put UTM tags on every link you post, then compare X's link clicks for each post with the sessions your web analytics shows for that tag. The two counts measure different things, so they will not match. Our guide to tracking clicks from X has the full method.

Google asks you to always use `utm_source`, `utm_medium` and `utm_campaign`. Values are case sensitive, so `x` and `X` become two sources. A tagged link for an X post looks like this:

```
`https://example.com/autumn?utm_source=x&utm_medium=social&utm_campaign=autumn_launch&utm_content=post_01`
```

| What X shows | What your website analytics shows |
| --- | --- |
| Link clicks on a post | Sessions that arrived with your tag |
| Counted by X, per post | Counted by your tool, per tag |
| Can include clicks where the page never finished loading | Only visits where your tracking loaded |
| Found in the dashboard and CSV | Found in GA4 under Acquisition, Traffic acquisition |

Build the tags with the free [UTM builder](https://kairopost.com/tools/utm-builder), which lowercases values and has presets for a post, [a thread](https://kairopost.com/blog/how-to-write-an-x-thread) and a profile link. Use the same names every month, because a report that changes its labels cannot be compared with last month's. To compare two versions of a post without fooling yourself, see how to A/B test X posts fairly.

## How to build a simple monthly X report

A good monthly report fits on one page: six numbers, one line on what changed, one line on what you will do next. Anything longer is read once. Here is a routine that takes under an hour once you have done it twice.

1. Export the month: On the first working day of the month, export last month's posts. Wait until the newest posts are at your measuring age if you can.
2. Fill in the six numbers: The six metrics from earlier: impressions, engagements, engagement rate, profile visits, link clicks and followers at the start and end of the month. Add posts published and the sessions from your tagged links as context.
3. Put each number next to a comparison: Last month and your baseline. A number alone tells nobody anything.
4. Pick one post that beat your baseline and one that fell short: Link both. Write one line each on what you think made the difference.
5. Write the decision: One sentence: what you will keep, change or stop next month.
6. Save the report next to the export: Same folder, same file name pattern. In six months you can read the whole story in order.

Here is what the numbers might look like. The account and every figure are made up.

| Example: Harbour Roasters, September | Value | How it is worked out |
| --- | --- | --- |
| Posts published | 38 | Counted from the export |
| Impressions | 96,400 | Sum of the month's posts |
| Engagements | 2,890 | Sum of the month's posts |
| Engagement rate, pooled | 3.0% | 2,890 ÷ 96,400 × 100 |
| Median post rate | 2.7% | Middle value of the 38 post rates |
| Profile visits | 1,240 | Read from your account analytics; note the dates it covers |
| Followers | 3,120 to 3,262 | Up 142, or 4.6% |
| Link clicks on X | 410 | Dashboard total |
| Sessions from tagged links | 335 | 82% of the link clicks |

The pooled rate sits above the median because a few strong posts carried the month, a pattern worth a line in the report.

(A label for one number. Engagement rate 3.0%. Formula: engagements divided by impressions. Counted: clicks, reposts, replies, follows and likes. Post age: 7 days. Window: 1 September to 30 September. Source: Post Activity Dashboard CSV. Baseline: median 2.7%.)

Every figure in your report should carry a label like this, so next month's number means the same thing.

From our agency years

Reports with every number in them got skimmed, and reports with six numbers got used. What we changed was not the data but the ending: every report finished with one decision the client could say yes or no to.

The Kairo Post team

If you manage accounts for others, the [guide to managing X for clients](https://kairopost.com/blog/managing-x-for-clients) covers the wider routine. If you want a regular report, Kairo Post can save a daily or weekly one as a private file you can share.

## What to do when a post beats or misses your baseline

Treat one unusual post as a lead to follow, not a verdict. The first job is to rule out a boring explanation, and the second is to find what was different about the post.

| A post far above your baseline | A post far below your baseline |
| --- | --- |
| Check the age. Is it being compared at the same age as the others? | Check the age. Is it still inside the settling period? |
| Split the lift. Did impressions rise, or did the rate rise? | Split the drop. Were impressions low, or was the rate low? |
| Write down what was different: topic, format, hour, opener | Write down the same four things, without blame |
| Repeat the idea once on purpose before you call it a pattern | Try the topic once more in a different format before you drop it |

The split in the second row matters most. A post can have a strong rate on few impressions, which says the idea landed with the people who saw it, or a weak rate on many impressions, which says it travelled to people who did not care. Those two cases call for different next steps, and the engagement rate alone hides the difference.

If you export a month of posts, sort the sheet by impressions, then by rate, and read the top and bottom five of each. You will usually see the same few differences repeating. That short list is worth more than any single number in the report, and our guide to [how the X algorithm works](https://kairopost.com/blog/how-the-x-algorithm-works) covers what X has published about how posts are shown.

## Mistakes that make X analytics misleading

Most bad readings of analytics come from comparing numbers that were never comparable. These are the ones we would check first.

Age

Reading too early

Numbers keep moving, and X says its systems take up to 36 hours to stabilise. Compare posts at the same age.

Method

Mixing formulas

Engagement rate by impressions and by followers can differ by several times. Write the formula at the top of every sheet.

Months

Counting by the wrong date

X's page on analytics discrepancies gives this example: likes that arrive in April on a January post do not show in April's CSV. Decide which date your report goes by and say so.

Traffic

Treating clicks as visits

X's page also lists poor connections and slow loading among the reasons X and a third party tool can disagree. Expect a gap.

Targets

Chasing a benchmark

Someone else's average describes someone else's audience. Your own median describes yours.

Samples

Judging one post

A single post, especially from a small account, swings widely. Judge a pattern across 20 or more.

The way you write a result matters as much as the reading. Compare these two lines for the same made up month.

A line someone can check

Engagement rate by impressions, read 7 days after posting, was 3.1% against a baseline median of 2.8%. We tested a shorter opener on 8 posts.

A line nobody can use

Engagement is up and the account is growing nicely this month, so we are going to keep doing more of the same.

The [first line](https://kairopost.com/blog/x-hooks) names the formula, the age, the baseline and the change. The second says nothing that next month's report could be checked against.

## Your next step: a 30 minute analytics setup

Do this once and the monthly report gets much easier. It also gives you a record that survives the 30 day limit.

Set up in one sitting

- Open the analytics in your account and note which views you can see.
- Choose one measuring age, such as 7 days, and write it down.
- Export last month's posts and save the file with its date range in the name.
- Work out the median rate of your last 20 to 30 posts. That is your baseline.
- Create the six number sheet and fill in last month as a first row.
- Tag every link in your next posts with the same names each time.
- Put a monthly reminder in your calendar for the first working day.

From here, our guide to [growing on X](https://kairopost.com/blog/how-to-grow-on-x) and the [X content strategy](https://kairopost.com/blog/x-content-strategy) show how to act on what the numbers say. If you plan content around topics, content pillars for X gives you a way to see which topic earns its place.

In the product

## How Kairo Post does this

Everything above works by hand. Kairo Post does the same work for you, with your approval before anything goes out.

- [Free tool Engagement rate calculator Work out engagement rate the right way.](https://kairopost.com/tools/engagement-rate-calculator)
- [Feature Analytics & Rewards What works, and how close you are to payouts.](https://kairopost.com/features/analytics)

## Questions people ask

### Can I see X analytics for a client's account?

Yes, if you have the right access. With X's Delegate feature, an admin can view analytics and a contributor cannot. If you run a client's account as a contributor, ask for admin access before your first report, or ask the client to send an export.

### Why do my X analytics numbers keep changing?

Counts keep arriving after you post, and X says its systems take up to 36 hours to stabilise, so you may see a slight fluctuation. Impressions and engagements also keep growing as people find a post. Read every post at the same age, for example 7 days after it went out.

### Can I see analytics for someone else's posts?

Only the public ones. X's developer docs list impressions, likes, replies, reposts, quotes and bookmarks as public metrics. Link clicks, profile clicks and the engagements total are non public, so they are for your own posts only.

### How long does X keep my analytics?

We could not find a stated retention period for the dashboards. For the API, X says non public, organic and promoted metrics are only available for posts created within the last 30 days. Save a copy of your numbers every month so you never depend on how long X keeps them.

### Does X show how many different people saw my post?

On the pages we read, X defines an impression as the post appearing on a screen and says it is not unique, so one person seeing it twice counts twice. We found no unique viewer count for organic posts. Use impressions, and use them the same way every time.

### How often should I check my X analytics?

A quick look each week is enough to catch a problem. Do the real review once a month, with the same six numbers each time. Checking after every post mostly measures noise, because small accounts can swing a lot on a handful of views.

### Do I need a third party analytics tool for X?

Not to start. X's own dashboard and a saved monthly export answer most questions for one account. A tool starts to help when you want reports to arrive on their own, several accounts in one view, or a longer history than you have saved yourself.

## Sources

Every rule, limit and figure in this post was checked against these on the date shown.

1. [Metrics, X Developer Platform](https://docs.x.com/x-api/fundamentals/metrics) docs.x.com: · checked: 1 October 2026
2. [X API v2 data dictionary, X Developer Platform](https://docs.x.com/x-api/fundamentals/data-dictionary) docs.x.com: · checked: 1 October 2026
3. [Get Posts Analytics, X Developer Platform](https://docs.x.com/x-api/posts/get-post-analytics) docs.x.com: · checked: 1 October 2026
4. [Post and Video Activity Dashboards, X Business Help](https://business.x.com/en/help/campaign-measurement-and-analytics/tweet-activity-dashboard) business.x.com: · checked: 1 October 2026
5. [Common analytics discrepancies, X Business Help](https://business.x.com/en/help/campaign-measurement-and-analytics/common-analytics-discrepancies) business.x.com: · checked: 1 October 2026
6. [Export CSV Definitions, X Help Center](https://help.x.com/en/business-and-advertising/export-csv-definitions) help.x.com: · checked: 1 October 2026
7. [X Ads glossary, X Business Help](https://business.x.com/en/help/overview/twitter-ads-glossary) business.x.com: · checked: 1 October 2026
8. [How to use the Delegate feature, X Help Center](https://help.x.com/en/managing-your-account/how-to-use-the-delegate-feature) help.x.com: · checked: 1 October 2026
9. [Pricing, X Developer Platform](https://docs.x.com/x-api/getting-started/pricing) docs.x.com: · checked: 1 October 2026
10. [Collect campaign data with custom URLs, Analytics Help](https://support.google.com/analytics/answer/10917952) support.google.com: · checked: 1 October 2026

Written by

## Sami Kerr, founder of Kairo Post

Keep reading

## More in Analytics and measurement

[All posts on this topic](https://kairopost.com/blog#analytics)

- (Analytics. How to calculate engagement rate on X. A fraction, engagements over impressions equals 3%, sits above a grid of 100 dots. Three of the dots are lit in amber.) Analytics and measurement: ### [How to calculate engagement rate on X](https://kairopost.com/blog/x-engagement-rate) Work out engagement rate on X with one formula, a worked example and the choices that change the answer: impressions or followers, and which clicks to count. 8 November 2026: 11 min read

## Post at the right moment. Starting today.

Connect an account, describe your voice and let Kairo Post do the legwork.

[Get started](https://app.kairopost.com/signup) [See pricing](https://kairopost.com/pricing)
