We ran the numbers on 87,528 X posts published between January 2024 and May 2026. In our experience, threads have consistently landed a noticeably higher engagement rate than the overall median, text-only posts have pulled meaningfully more impressions than posts with media, and certain days of the week reliably outperform others.
We can't tell you whether customer stories beat product announcements. Nobody recorded that. Not us, not the X API, and not you.
That gap is the whole subject of this piece. Custom analytics for social is a labeling problem (not a dashboard problem), and no BI connector, CSV export, or attribution model will fix it after the fact.
TLDR:
- Format, day, and character count are the only three variables platforms hand you for free, which is why every benchmark study stops there
- The variable that answers "which content works" has to be typed in by the writer before the post publishes
- A workable taxonomy is 5 to 8 categories, with message tags kept separate from format tags
- You need roughly 10 to 15 posts in a category before a comparison means anything
- Don't backfill eight months of unlabeled posts. Label forward, and bulk-tag only your top performers if the CEO needs something this week
Every Benchmark Study Stops at Format, Day and Length
Pull up any social media benchmark report you've read in the past two years. It segments by post type, by day of week, by length, maybe by industry. It never segments by message. The reason is simple: the person who ran that study had exactly the data you have, which is whatever the platform API returns.
Our own experience analyzing post performance tells a similar story. We could compare threads to single posts, because "thread" is a structural property the API reports. We could compare 100 to 200 character posts against 500 character posts, because character count is countable.
We could not compare a founder's hiring post against a customer proof point, because neither of those things exists as a field anywhere.
The gap is industry-wide. The product analytics market is projected to grow from $11.39 billion in 2025 to $13.04 billion in 2026 (Mordor Intelligence, 2026). The entire premise of that spend is that out-of-the-box measurement stops being useful the moment you want to know something specific about your own work.
What Custom Analytics Means for Social Teams
Custom analytics is the practice of adding your own dimension to platform data so you can segment performance by something the platform doesn't track. For a social team, that dimension is almost always content category: the message a post was making, recorded by the person who made it.
Notice what that definition leaves out. No new dashboard. No warehouse. No Looker seat. 81% of data analytics users worked with embedded analytics in 2025 (embedded analytics data, RevealBI), and that pattern holds here for a practical reason. The label has to be captured at the point of writing, and the writer won't open a separate BI tool to do it.
Two things people assume are the bottleneck usually aren't. Metric definitions matter, so pick your denominator and document it (impressions is the safest default), but that's a thirty-minute decision. CRM integration matters at the pipeline stage, though it can only attribute the posts you can already name. If you want the mechanics of the reporting layer, our analytics dashboard guide covers it.
Keep the Taxonomy to Five or Eight Categories
The taxonomy is where this usually dies, and it dies from ambition.
A team sits down, brainstorms every kind of post they might publish, and ends up with 19 labels including "culture," "behind the scenes," "team spotlight," and "employer brand." Those are four names for the same post.
Do the math. A B2B SaaS team publishing 12 posts a month across 20 categories averages 0.6 posts per category per month, so a sample worth comparing takes well over a year to accumulate. At six categories, the same cadence gives you two posts per category per month and a readable comparison by the end of the quarter. Fewer categories is what makes the exercise work at all.
A taxonomy for a 30 to 150 person B2B SaaS company usually lands on something like customer story, product update, POV or opinion, data and research, hiring, and event. Here's what separates a tag that earns its keep from one that quietly wastes eight months:
A Format Tag and a Message Tag Are Different Things
The most common taxonomy failure we see is a single flat list containing both "carousel" and "customer story." Those aren't alternatives. A customer story can be a carousel, a video, or 180 characters of plain text. If the two dimensions share one field, you're forced to pick one, and you permanently lose the other.
Keep them on separate axes. Format is already in the data, so the platform reports it for free and you never type it. Message isn't, so a human owns that field.
In Ordinal we split these deliberately: content-type filtering handles format, labels handle message, and you can cross them to ask whether customer stories do better as video than as text.
The Tag Has to Be Applied by the Writer, Before It Publishes
Here's the part that decides whether any of this survives contact with a real team. The tag has to be a required field on the draft. The writer applies it. An untagged draft shouldn't be schedulable.
The alternative everyone tries first is retroactive tagging by whoever owns reporting. It produces garbage, and the reason is worth being precise about. An analyst reading a two-month-old post can only infer intent from the copy, so a post that mentions a customer gets filed as a customer story even when it was written as a product update that happened to name an account. The writer knew which one it was. Nobody else can recover that.
So the tag field lives next to the composer and inside the approval workflow, alongside the reviewer and the schedule time. Put it in a separate spreadsheet and compliance collapses within a month. A half-labeled dataset is worse than no dataset, because you can't tell whether "customer stories underperformed" means underperformance or undercounting.
Write Down the Hypothesis With the Category
A tag on its own is a filter. A tag plus a stated hypothesis is an experiment.
"Labeled: customer story" lets you sort. "Labeled: customer story. Hypothesis: named-logo stories outperform anonymized ones on comments" gives you something you can settle in eight weeks, because it tells you what to publish next and what result would change your mind. We write ours as one sentence in the draft's description field, and we keep them stupid. Named versus anonymous. Founder voice versus company page. Question opener versus statement opener.
The hypothesis also stops you from rationalizing. Decide in advance what you expect, and a surprising result stays surprising instead of getting narrated into whatever story the team already believed.
How Many Posts Before a Category Comparison Means Anything
Roughly 10 to 15 posts per category. At a typical B2B cadence, that's one to two quarters. Below that, you're reading noise.
Our X data is the argument for patience. Against a median around 0.70% engagement, the spread between the strongest and weakest posts in any format was enormous. A single post that outperforms the average by a wide margin tells you almost nothing about its category. It tells you one post did well. Two customer stories outperforming two product updates is a coin flip dressed up as a finding.
Use medians. One post that caught a repost from a large account will drag a mean anywhere you want it. And resist the urge to kill a category after four posts. Give it a quarter, then decide.
What to Do With Eight Months of Unlabeled Posts
Leave them. Label forward, starting with the next post you draft.
Backfilling asks an analyst to reconstruct intent that no longer exists, and the labor cost of doing it across 200 posts buys you a dataset you'd be unwise to act on. We'd rather have eight clean weeks than eight guessed months.
One exception. If the CEO wants a directional read next week, bulk-tag your top 10 and bottom 10 performers only. That's an afternoon, and it's enough to say "our four best posts this year were all customer proof, and none of them were product announcements" while making clear it's a read on the extremes. Then start the real count.
Getting Labels Out of the Tool and Into Your Own Reporting
Ordinal applies labels in the composer, so the tag is captured by the writer at draft time and travels with the post into analytics. From there you can filter performance by label, by content type, and by campaign, with a daily analytics refresh across LinkedIn, X, Instagram, and Facebook.
For teams who want their own view, everything is available through the REST API, CSV export, webhooks, and the MCP server. Zapier's social team built employee advocacy and leaderboard dashboards on top of Ordinal data in a single afternoon using Claude. If you'd rather hand the reporting build to someone else, our directory lists analytics specialists who do this work.
Final Thoughts
Open your composer and add one required field. Give it six options. Write them down where the team can see them, and refuse to schedule anything that leaves it blank. Then wait a quarter before you draw a single conclusion.
Frequently Asked Questions
What Is Custom Analytics in Social Media Reporting?
Custom analytics means adding your own dimension to your social data, usually a content category or campaign label, so you can compare performance across something the platform's API doesn't track. LinkedIn and X hand you format, day and length for free. They don't know whether a post was a customer story or a product update. That tag has to come from your team.
How Is Custom Analytics Different From Scheduler Reporting?
Schedulers report what the platform API exposes: impressions, engagement rate, format, posting time. Custom analytics layers your own taxonomy on top, so you can filter by "customer story" or "hiring post" instead of just "video" or "text." Without that label applied at draft time, no dashboard can tell you which message is working.
How Many Content Categories Should I Use to Tag Posts?
Five to eight. A B2B SaaS team posting 12 times a month runs out of statistical room fast, since a 20-category scheme yields fewer than one post per category monthly. Customer story, product update, POV, hiring, data/research and event covers most B2B content without fragmenting the data.
Should I Go Back and Label Old Social Posts?
Generally, no. Backfilling means reconstructing intent you don't remember accurately eight months later, and the labor cost buys you a dataset you can't trust. The one exception: bulk-tag your top 10 performers if you need a directional read for a CEO conversation next week.
How Many Posts Do I Need Before I Can Compare Content Categories?
Aim for roughly 10 to 15 posts per category. In our experience, engagement rates across posts vary widely with no strong central tendency, meaning single-post swings tell you almost nothing. At typical B2B cadence, that's one to two quarters per category.
Can I Do Custom Analytics With a Spreadsheet Instead of a Tool?
Yes, mechanically. The bottleneck is getting someone to apply the tag before the post goes live, and a spreadsheet doesn't help with that. Teams fail here because the tag field lives somewhere disconnected from the draft itself.
Who on the Team Should Apply the Content Tags?
The writer, at draft time. An analyst reviewing performance after the fact can only guess from the copy, while the writer knows whether a post was meant as a customer story or a POV piece. Tagging belongs next to the draft, ideally as a required field before a post can be scheduled.
How Do I Report Content-Category Performance to a CEO?
Show category-level engagement trends over a full quarter rather than a single post, and pair it with earned media value where possible. If you don't have clean labels yet, say so directly and show the forward-looking plan. A CEO trusts "here's what we're tracking starting now" more than a backfilled chart built on guesswork.




