Skip to content

BlogB2B Marketing Attribution

Are X Ads Worth It? Measuring X Ads ROI on Revenue

Whether X Ads are worth it depends on what you measure and on what you sell. How to calculate X Ads ROI and ROAS on closed revenue, what X's own conversion numbers include (a like a month before the purchase counts by default), what a fair test needs, and the traps that make X look better or worse than it is.

X Ads ROI: X spend set against the closed revenue from the customers whose journey began with an X click
Contents
  1. Quick summary
  2. The honest answer
  3. ROI and ROAS
  4. X's own numbers
  5. A fair test
  6. Budget and duration
  7. Tracking first
  8. When X works
  9. The traps
  10. Sanity checks
  11. Reading the result
  12. How LeadJourney does it
  13. Further Reading
Summarise this article with AI

Opens the page with a ready prompt in:

Nothing is sent until you pick a service.

Ask whether X Ads (formerly Twitter Ads) are worth it and you get two camps. One ran a campaign for a fortnight, judged it on cost per click and moved the budget elsewhere. The other quotes Ads Manager, where the conversions look healthy. Neither measured what the question is about: whether the money spent on X came back as revenue.

This guide answers it the way that holds up in a budget meeting: on closed deals and paid orders, from a test set up to be able to say no. The formulas, what X's own numbers actually count, what a fair test needs, the traps that bend the verdict, and what to do with the result.

Quick Summary: Are X Ads Worth It?

In short

X Ads are worth it when the closed revenue from customers whose journey includes an X click exceeds what you spent, and that depends on your offer and on whether your buyers pay attention on X. X's own conversion columns cannot answer the question on their own: by default X credits a website conversion up to 30 days after any engagement with the ad, a like, repost, follow or reply as well as a click, plus 1 day after a view. Answer it with a fair test: tracking live before launch, one conversion event close to revenue, a run long enough for deals to close, and revenue joined to the X click in your CRM or shop rather than read from Ads Manager.

The rest of this guide is the working: which revenue and costs go into the formula, what X's numbers mean, how to run the test, the traps, and a table for reading the result.

The Honest Answer: It Depends on What You Measure and What You Sell

"Worth it" has two variables. The first is the measurement. The same campaign can look like a failure, a success and a coin toss, depending on which number you hold against the spend.

  • Measured on clicksCost per click and click-through rate tell you what attention costs. They say nothing about what a customer costs.
  • Measured on X's conversionsX's columns count conversions inside its windows, after engagements and views as well as clicks. Useful for comparing ads with each other, and closer to a ceiling than a floor.
  • Measured on closed revenueDeals won and orders paid by customers whose journey includes an X click. The only version that answers the question, and the only one that needs your CRM or your shop.

The second variable is the offer. X is a feed of posts and conversations, and an ad there competes with the news of the hour. An offer people can understand from one post and act on has something to work with; one that needs a long explanation has to get the click first and do the explaining on your site. Neither case is decided by a benchmark from somebody else's account, and X publishes no CPM or CPC benchmarks anyway, which is why this post quotes no average.

X Ads ROI and ROAS, Measured on Closed Revenue

Two formulas, both on revenue that has actually closed. ROAS is the ratio a media buyer reads. ROI is the one finance reads, because it subtracts what the ads cost before it divides.

Closed revenue from X-sourced customers÷X Ads spend=X ROAS

Example: $6,000 spent over a quarter, $15,000 closed from customers whose journey includes the X click: ROAS 2.5.

Closed revenue minus X spend÷X Ads spend=X Ads ROI

The same example: ($15,000 minus $6,000) ÷ $6,000 = 150% ROI.

The arithmetic is trivial. The three decisions behind it are not, and a number without them written next to it cannot be compared with anything.

  1. Which revenue. Closed-won contract value or paid orders, never pipeline. For subscriptions, pick first-year value or a lifetime value estimate and say which.
  2. Which attribution. First click credits X for every journey it opened, last click only for the ones it closed. State the model beside the figure.
  3. Which costs. Ad spend alone gives ROAS. Add creative, agency fees and tooling for a true ROI, and use gross profit instead of revenue when margins are thin. X says billing and the spend in Ads Manager should match after 36 hours, so close the books on spend after that.

Divide the same spend by the number of new customers and you have X's customer acquisition cost, often the easier number to compare with other channels. The ROAS calculator does the sums.

What X's Own Conversion Numbers Count

Before you quote a conversion count or a CPA from Ads Manager, know exactly what went into it. Three settings decide it, and all three are documented by X.

  • Engagement, not only clicks

    The post-engagement window credits a conversion after a like, repost, follow, reply or link click. It runs 1 to 30 days and defaults to 30.

  • Views too

    The post-view window credits a conversion after the ad was seen without any engagement. Off, or 1 to 30 days, 1 by default.

  • Set per event, retroactive

    The windows are chosen per event in Events Manager, and changing them rewrites the conversions already reported.

Read together: somebody who liked your post, forgot it, searched your brand three weeks later and bought counts as an X conversion under the defaults. That is not X being wrong; it is X answering a different question from yours. X's API defines CPA as billed charge divided by total conversions, so a generous window makes a cheap CPA. For lead generation, the value behind any ROAS in Ads Manager is the value you sent with the event, which for a lead is your own estimate.

Three reporting details that move the number

  • Reporting is finalised within 24 to 48 hours, after a batch process that removes duplicate tag fires, adjusts attributions and merges identities across devices. Yesterday's figure is not final.
  • Ads Manager opens on the last 7 days. Pick the test period explicitly every time.
  • iOS users who opted out are aggregated at campaign and ad group level but not at ad level, so per ad conversions undercount them. Use the "Website conversions by tag" export to see post-view and post-engagement conversions apart.

What a Fair X Ads Test Looks Like

A test is fair when it can come back with no as easily as yes. Missing one of these usually means it cannot answer at all.

  • Tracking live before the first dollarA Sales campaign needs the X Pixel or the Conversions API and at least one conversion event before it can optimise on anything. Launch without it and you are testing clicks.
  • One conversion event, close to revenueLead or Purchase rather than Page view, with a value that means something. Choose the event you would defend in a revenue review.
  • Windows decided up frontPick the post-engagement and post-view windows before launch and leave them. A change rewrites the history, so a mid-test change makes the before and after unreadable.
  • Hands off while it runsDecide the budget, the audience and the creative, then leave them alone long enough to see a pattern. Every change starts a new test inside the old one.
  • A run long enough to see revenueWeeks, not days. Conversions keep arriving for up to 30 days after an engagement under the default window, and deals close on your sales cycle.

How Much Budget a Test Needs, and How Long to Run It

X says there is no minimum campaign spend, and it publishes no event threshold for optimisation that we could find. So the budget follows from the answer you want, not from a platform rule: enough spend to produce the number of qualified leads or orders you would need to see before trusting a cost per customer.

Expected cost per qualified lead×Qualified leads you need to judge=Test budget

Example: if a qualified lead is expected to cost $200 and you want to see 30 before deciding, the test needs about $6,000. Both figures are yours to set.

Two consequences. Run fewer campaigns and ad groups: a budget that could produce thirty qualified leads in one ad group produces six in each of five, and six is an anecdote. And if your real goal is too rare to reach that number, optimise on an earlier stage that predicts revenue and measure revenue outside the platform.

How long

Four to six weeks of spend is a workable frame, then give the revenue time to arrive. Read revenue by click cohort once your typical time to close has passed since the last cohort, rather than reading the last week on a Monday.

The budget is the price of the answer

Decide it before launch and write down what result would make you scale, fix or stop. A test topped up or cut halfway because the first week looked good or bad has answered nothing.

Tracking That Has to Be in Place Before Launch

The measurement is the test. Five things should work before the campaign spends anything, in this order.

  1. The X Pixel, firing the event you will optimise on, once per conversion. See the X Pixel setup guide.
  2. The Conversions API sending the same events with the same Event ID and conversion_id, so X counts each conversion once and recovers what the browser loses. See the X Conversions API guide.
  3. The click ID kept. X appends twclid to the landing page URL automatically. Redirects strip it, so link directly, store it with the visitor and put it on the lead record, or nothing downstream can join the revenue to the click.
  4. UTM parameters on every ad. X documents no URL macros, so type the values per ad; the X Ads UTM guide has a naming scheme.
  5. The CRM stages mapped. Decide which stage is a qualified lead and which is a won deal before the first lead arrives, and send them back as conversions.

The whole system, from the Pixel to the CRM events, is in X Ads conversion tracking.

When X Ads Tend to Work, and When They Do Not

There is no blanket answer and no published benchmark to lean on. X describes its audience in its own words, "over half a billion highly engaged users who come to X daily", in the listing of its Shopify app. That is reach, not a forecast. The patterns that matter for your account follow from how people use the feed.

  • Your buyers are on XYour category has people who post, follow and argue about it on X. Your own organic account is the cheapest test of whether they do.
  • An offer that fits one postA clear promise, a clear next step, and a page that delivers what the post said. The feed rewards the short version.
  • A path you can follow past the clickTwclid on the record and revenue in the CRM, so a channel that opens journeys gets credit for them.

Where it tends to struggle

  • A long sales cycle judged only in Ads Manager, where anything after the window never appears and engagement credit fills the gap.
  • A goal that is cheap to hit and far from revenue, which X will optimise for faithfully.
  • A budget split across many ad groups, which leaves each with too few conversions to say anything.
  • Links through redirects or shorteners, which strip twclid and make X's clicks look like Direct visits in your CRM.

The Traps That Make X Look Worse, or Better, Than It Is

Each of these bends the verdict. Some flatter the channel, some bury it.

Common traps in judging X Ads, and the fix for each

The engagement trap deserves a sentence of its own, because it is specific to X. Meta, for comparison, has counted only link clicks as click-through since March 2026. On X a reply, a follow or a repost opens the same 30-day window a click does. A cheap X CPA next to an expensive Meta CPA may be two different definitions, not two different results. See the true cost per lead for what that does to a CPL.

Sanity Checks Without a Holdout

A proper lift study tells you what would have happened without the ads; see incrementality testing for the designs. Many teams will not run one for a first test. These checks do not prove cause, but they tell you whether the revenue figure is plausible.

  • First touch against last touchSplit the closed revenue from journeys with an X click by first and last touch. A large first-touch share with a small last-touch share is a channel that opens deals for others.
  • What follows the X clickLook at the visits after it in the same journeys. Branded search, AI search and Direct days later are the effect showing up under other names.
  • What the customer saysA "how did you hear about us" field or a question on the sales call. Unreliable alone, useful as a cross-check on the tracked journey.
  • Click-only against X's countHold the click-based conversions from your own tracking against X's engagement and view totals. The gap is how much of X's number rests on people who never clicked.

If all four point the same way, the verdict is probably right. If they disagree, the disagreement is the finding. More on the question-based check in self-reported attribution.

Reading the Result: Scale, Fix or Stop

Once the sales cycle has passed, the result usually falls into one of five patterns.

What the test result usually means, and what to do next

Be careful with the second pattern. Cutting a channel that opens journeys shows up months later as fewer branded searches and a thinner pipeline elsewhere, long after anybody connects it to the decision.

How LeadJourney Answers "Are X Ads Worth It" on Revenue

LeadJourney is one script on your site or in your GTM container, live in about 21 minutes, tracking server-side and first-party at 95%+ accuracy. On the first visit it issues the LeadJourney Click ID, its own visitor identifier kept for months, and every later session is stored under it. X's click ID, twclid, is captured server-side on your own domain on every X click and stored on that ID, next to gclid, fbclid, li_fat_id, msclkid and rdt_cid from the other platforms.

The X Ads integration signs in to your X Ads account with OAuth and imports campaigns, ad groups, ads and daily spend, with history on connect and spend synced every two hours. The lead is followed through the CRM, with HubSpot, Salesforce, Microsoft Dynamics 365, Zoho CRM, Pipedrive, Attio, Close, GoHighLevel, ActiveCampaign and Odoo native, or to the order, with Shopify and Stripe native. So spend and closed revenue sit on the same rows: ROAS, cost per qualified lead and cost per closed deal per X campaign, ad group and ad.

There is no attribution window on LeadJourney's side, so a deal in month four still carries the X click that started it, under five attribution models switched without re-tracking. The stages you map go back through X's Conversions API as they change, a qualified lead or a won deal, and Shopify orders and Stripe payments as Purchase with value, each with twclid, hashed email and phone, and a conversion_id that deduplicates against a running X Pixel. The same numbers can be queried from Claude or ChatGPT through the MCP server, which is the revenue half next to X's own Ads MCP server for managing campaigns.

The limits, plainly: LeadJourney counts clicks and visits, not likes, follows or views, so it does no engagement or view-through attribution, and it runs no incrementality tests. Tracking respects consent. Every plan starts with a 14-day free trial. Read verified reviews on Trustpilot, G2 and leadjourney.io/testimonials.

Platform ROAS against the ROAS your closed revenue actually shows.45 seconds

Further Reading

FAQ

Frequently Asked Questions

What founders and performance marketers ask before they put budget into X, and after the first month.

Are X Ads worth it?

They are when the closed revenue from customers whose journey includes an X click is higher than what you spent, and that depends on your offer and on whether your buyers pay attention on X. Clicks and X's own conversion count cannot settle it. A test with tracking in place, one event close to revenue and a run long enough for deals to close can.

Are Twitter ads worth it in 2026?

Twitter Ads are now X Ads, and the same answer applies: measure on closed revenue joined to the X click. X's conversion reporting by default credits engagements up to 30 days before the conversion, so read Ads Manager as X's view and your CRM as yours.

What is a good ROAS for X Ads?

One above your break-even, which is 1 divided by your gross margin: at a 50% margin you need a ROAS of 2 to pay for the ads. X publishes no ROAS, CPM or CPC benchmarks, and an average from somebody else's account says little about yours.

Why does X report more conversions than my analytics?

X credits a conversion after any engagement with the ad, a like, repost, follow, reply or click, within a window of up to 30 days (30 by default), plus 1 day after a view. Your analytics counts sessions from clicks. Add redirects that strip twclid and blocked pixels, and the two will rarely agree.

How much budget do I need to test X Ads?

X has no minimum campaign spend. Work backwards: your expected cost per qualified lead times the number of qualified leads you would need to see before trusting the result. Keep the test in few ad groups so each one gets enough of them.

How long should an X Ads test run?

Weeks, not days. Four to six weeks of spend is a workable frame. X finalises its reporting within 24 to 48 hours and keeps crediting conversions inside the window, and your deals close on your sales cycle, so read revenue by click cohort once your typical time to close has passed.

Can X see the revenue from my CRM?

Partly. You can send a won deal through the X Conversions API as a Purchase with its value and the twclid, and X credits it if it falls inside the event's attribution window. Anything that closes later has to be joined to the X click in an attribution tool.

X Ads ROI

Ready to see what X Ads return in revenue?

LeadJourney imports your X spend, captures twclid server-side on every X click, follows each lead to closed won or the paid order, and shows ROAS per campaign, ad group and ad on real revenue. Live in about 21 minutes, 14-day free trial.

LeadJourney dashboard showing lead sources, campaign performance and attributed revenue side by side