Growth

Measure a Twitter thread launch from click to sale

Ownlytics team · · 6 min read

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.

yourapp.comToday7d30d9 online
SourceVisitorsSalesRevenue
Yproducthunt.com3,9006$294
Xx.com2,8005$245
@newsletter9004$196
Ggoogle.com7002$98
Rreddit.com6400$0

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.

FieldConventionExample
utm_sourcexx
utm_mediumwhat kind of postthread
utm_campaignlaunch name plus positionlaunch-nov-t1-demo, launch-nov-t6-pricing
reffallback, since the X app on iPhone cannot be told apart from Safariref=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?

  1. 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.
  2. Build and test the links. Click each one and confirm it lands on the intended page with the tag intact.
  3. 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.
  4. 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.
  5. 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.

CampaignVisitorsSignupsSalesRevenueRevenue per visitor
launch-nov-t1-demo420140$0$0.00
launch-nov-t6-pricing130184$196$1.51
launch-nov-t9-cta210212$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.

V
Visitor 4821First seen 12 days ago · India · desktop
  1. Read “Setup guide”x.comNov 1 · 3 min on page
  2. Came back from a newsletternewsletterNov 6 · read pricing
  3. Opened checkoutNov 12 · 14:02
  4. 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?

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

ItemRule
Links per thread2 to 3 tagged, not every tweet
utm_sourcex
utm_mediumthread
utm_campaignlaunch name plus tweet number and topic
Fallback?ref=x
First review24 hours: visitors only
Sales review7 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.

See the live demo · View pricing

Keep reading