Measure a Twitter thread launch from click to sale
To measure a thread launch, give every link in the thread its own utm_campaign, add ?ref=x as a fallback, and compare visitors, signups and revenue per tweet afterward. X hides which tweet sent a visitor, so the tag you add to the link is the only reliable record.
Fig.A thread’s clicks and the sales behind them. Sample data, not a real site.
Impressions and likes describe the thread. They do not say whether the tweet with the demo clip or the tweet with the pricing link sold your product.
Why can't you see which tweet sent a visitor?
X sends visitors through its own link shortener, so browsers pass on only the shortener's address as the referrer. The X app's in-app browser often passes nothing, and on iPhone it cannot be told apart from Safari. In your analytics this looks like "x.com" at best and "Direct" at worst. We cover the mechanics in how to see which tweet made a sale.
The fix is a habit, not a tool: one distinct link per tweet.
What naming scheme should you use?
Keep it boring and consistent so reports are readable a month later.
| Field | Convention | Example |
|---|---|---|
| utm_source | x | x |
| utm_medium | what kind of post | thread |
| utm_campaign | launch name plus position | launch-nov-t1-demo, launch-nov-t6-pricing |
| ref | fallback, since the X app on iPhone cannot be told apart from Safari | ref=x |
Number the tweets (t1, t2, ...) and add a short word for the content. Position matters: the link in tweet 1 and the link in tweet 7 are different decisions for the reader. Full example: https://yoursite.com/pricing?utm_source=x&utm_medium=thread&utm_campaign=launch-nov-t6-pricing.
Two cautions. Do not reuse a campaign name for a different thread, or you will merge two experiments. And remember that UTM tags win over the referrer when both are present, so tag even if you think the referrer is fine. How that works is in sources and attribution.
How do you set it up before posting?
- Draft the thread and decide where each link goes. Fewer links is better. Two or three tagged links beat links in every tweet, and they make the data cleaner.
- Build and test the links. Click each one and confirm it lands on the intended page with the tag intact.
- Check the sale path. Run a test purchase and make sure a source appears. Revenue attribution setup explains how payment links and checkout metadata carry the visit through. If you use Stripe Checkout, UTM tracking with Stripe Checkout shows how to keep the tags through to the payment.
- Post when your audience is online. The Peak hours card shows when visits arrive and when buyers pay, and suggests a posting time an hour before the visit peak. Filter it by x.com to see your own audience.
- Pin the thread on the chart. One note, "Launch thread posted", at the time you posted.
Example (made-up numbers for illustration)
A 9-tweet thread with three tagged links, checked 7 days later.
| Campaign | Visitors | Signups | Sales | Revenue | Revenue per visitor |
|---|---|---|---|---|---|
| launch-nov-t1-demo | 420 | 14 | 0 | $0 | $0.00 |
| launch-nov-t6-pricing | 130 | 18 | 4 | $196 | $1.51 |
| launch-nov-t9-cta | 210 | 21 | 2 | $98 | $0.47 |
Tweet 1 got by far the most clicks, likely because the first tweet gets the most eyes. It did not sell. Tweet 6, with a pricing link, got a third of the visitors and most of the revenue.
The decisions this triggers: next time, put your strongest purchase-intent link earlier than tweet 6, and keep the first tweet for curiosity. Keep the demo link, since it feeds signups, but do not expect it to sell by itself. If tweet 9 outperformed expectations, test a closing link earlier in the thread.
- Read “Setup guide”x.comNov 1 · 3 min on page
- Came back from a newsletternewsletterNov 6 · read pricing
- Opened checkoutNov 12 · 14:02
- Paid $49Dodo PaymentsCredited to the newsletter visit (last non-direct)
Fig.One buyer from a thread. Sample data, not a real site.
What should you look at, and when?
- First 24 hours: visitors per tagged link. This is only about distribution. Do not judge sales yet.
- Days 2 to 7: signups and checkout starts per link. This shows which link made people act.
- Day 7 to 30: sales and revenue per link. Some buyers take days or weeks. If you plan to repost, wait for this window first.
- Telegram or notifications: if you have alerts on, a source sending far more than its usual traffic triggers a spike alert while the thread is taking off. The alerts docs give the exact thresholds.
When this does not apply
If most of your sales come from people who read the thread, then search for your product by name later, the thread's tags will understate its effect. Those buyers show up as Direct or organic search. First touch attribution gives the thread more credit than last touch; see first touch vs last touch attribution to pick a model. And with a small audience, one buyer changes every ratio, so treat a single thread as a hint, not a verdict.
At a glance
| Item | Rule |
|---|---|
| Links per thread | 2 to 3 tagged, not every tweet |
| utm_source | x |
| utm_medium | thread |
| utm_campaign | launch name plus tweet number and topic |
| Fallback | ?ref=x |
| First review | 24 hours: visitors only |
| Sales review | 7 and 30 days |
To see per-link revenue per visitor without a spreadsheet, the live demo shows campaign breakdowns on a sample site.
Next steps: set your campaign names with the UTM guide, then judge the result by revenue per visitor rather than clicks.
FAQ
Do UTM tags make my links look spammy?
They are longer, and some readers may notice. A link hidden behind a button or card shows less of the URL. If the length bothers you, use ?ref= with a short code instead and keep a note of what each code means.
Which tweet should get the main link?
There is no universal answer, and it is exactly what tagging lets you test. A common pattern is a curiosity link early and a buying link after you have made the case.
Why does my thread show as Direct?
Some in-app browsers and link paths pass no referrer at all. Untagged links from X often land in Direct for that reason. Tagged links keep their source.
Should I tag replies and quote tweets too?
Yes, if they carry a link. Use utm_medium=reply or quote so you can tell them apart from the main thread.