Contact Sales
Marketing and Campaign

SMS Marketing Attribution: How to Prove Which Messages Drive Revenue

13 min readNov 4, 2026
SMS marketing attribution

SMS marketing attribution is the process of connecting a text message to what the recipient did afterwards (a site visit, a purchase, a signup) so you can see which campaigns produced revenue and which only produced activity. It usually relies on tracked links, campaign-specific codes and matching orders back to the phone numbers that received a message. The difficult part isn’t the tracking. It’s that many SMS-driven purchases happen without a click, and some purchases credited to SMS would have happened anyway.

sms-marketing-attribution

Those two problems pull in opposite directions. One makes SMS look weaker than it is; the other makes it look stronger. A useful attribution setup has to handle both, and most setups handle neither.

Why SMS Marketing Attribution Is Harder Than It Looks

Email and paid ads were built with tracking in mind. Email platforms log opens and clicks, and ad networks pass click IDs through to the landing page. SMS has none of that by default. A plain text message sends no referrer when a link is tapped, carries no tracking pixel, and gives you no way to know whether it was read.

Customer behavior adds to this. People read a promotion on their phone, then buy on a laptop that evening. They type the store name into a search bar instead of tapping the link. They walk into a branch with the offer still on their screen. In each case the message did its job, and analytics records the sale as direct traffic, organic search or an in-store transaction.

On the other side, a loyal customer who buys every Friday will also buy on the Friday after your SMS promotion. If your reporting credits that order to the message, SMS gets credit for revenue it didn’t create. Inflated numbers like these are how SMS budgets grow on false premises and then get cut when someone finally checks.

SMS Campaign Metrics That Matter (and the Ones That Mislead)

Before getting to attribution models, it helps to agree what each SMS campaign metric actually tells you.

Sent and delivered are operational numbers. Delivery reports confirm that the carrier delivered a message to the handset and explain failures by code. A falling delivery rate tells you something is wrong with the list, the sender or the route. It tells you nothing about whether the campaign worked.

Open rate is the metric to stop quoting. The widely repeated claim that SMS has near-universal open rates comes from surveys, not measurement. Standard SMS has no read receipts, so any “open rate” in an SMS report is either an estimate or a label for something else.

Click-through rate is the first behavioral signal you can measure directly, provided links are tracked per recipient. Unique clicks matter more than total clicks, because one interested customer tapping a link four times is still one customer.

Conversions, revenue and cost per conversion are where the business case lives. They depend entirely on how you attribute, which is why most of this article focuses there.

Opt-out rate belongs in every campaign report, even though it’s rarely treated as a cost. A campaign that converts well but drives a spike in unsubscribes has spent part of your future audience to get today’s revenue.

How SMS Click Tracking Works

SMS click tracking replaces the destination URL in a message with a short link. When a recipient taps it, the request first hits a redirect server that records the click (with the recipient, campaign, time and device type) and then forwards the visitor to the real landing page. If the short link is unique per recipient, every click can be tied to a specific phone number, which is what makes later order matching possible.

Short links also save characters. A full product URL with tracking parameters can run past 100 characters, enough to split a promotion into two or three billable segments. A short link keeps the message inside one.

The domain matters as much as the length. Generic public shorteners are heavily used by spammers, and many carriers and filtering systems treat them with suspicion. A branded short domain looks more trustworthy to recipients and avoids being grouped with abuse traffic. That is why branded short links are worth insisting on in any messaging analytics setup, rather than relying on shared shortener domains.

UTM Parameters for SMS Campaigns

Click tracking at the redirect tells you who tapped. UTM parameters tell your web analytics where the visit came from. Without them, SMS traffic lands in analytics as “direct,” because messaging apps don’t pass a referrer.

Tag every destination URL before shortening it. A workable convention is utm_source=smsala, utm_medium=sms and a utm_campaign value that matches the campaign name in your messaging platform. Google Analytics 4 includes an SMS channel in its default channel grouping, and it picks up traffic tagged with sms as the medium, so a consistent value puts SMS visits in their own row without any custom setup.

The common failure is inconsistency rather than absence. One team writes SMS, another writes text, a third uses mobile, and the channel report splits into fragments nobody reconciles. Write the naming convention down and make it part of campaign setup, not something each person remembers.

Measuring SMS Conversions That Don’t Start With a Click

Click-based tracking misses everyone who acted without tapping. There are three practical ways to recover part of that.

The first is order match-back. If your store or CRM records phone numbers or customer IDs, you can match orders against everyone who received a message within a defined window, whether or not they clicked. This captures the laptop buyer and the search-bar typer. It also captures the Friday regular who was buying anyway, which is why match-back numbers should always be read alongside a holdout comparison (covered below).

Match-back only works if message data and order data meet somewhere. Most teams do this by pushing delivery and click events from the messaging platform into their CRM or data warehouse through webhooks or an API, then joining them to orders on phone number or customer ID. Agree the join key before the first campaign. A store that saves phone numbers in local format while the messaging platform uses international format will match almost nothing, and the campaign will look like it failed.

The second is unique codes. SMS coupon codes that exist only in a specific campaign give you a clean signal at checkout, online or at a till, even when no link was tapped. The trade-off is that codes leak to coupon sites and get shared, so treat redemptions as strong but not perfect evidence.

The third is response behavior inside the channel: keyword replies, appointment confirmations, callback requests. These aren’t revenue, but for service and lead-generation campaigns they are often the conversion that matters.

When someone does click, where they land shapes what you can measure. A dedicated campaign page with one offer and one action converts better and reports more cleanly than a homepage, which is one reason SMS landing pages are worth building for any campaign you plan to measure seriously.

Choosing an Attribution Window for SMS

An attribution window is the period after a message during which a conversion is credited to it. SMS tends to work quickly. Most clicks happen within the first hour or two after delivery, and response falls off sharply after that. A 30-day window, borrowed from display advertising, will credit SMS with weeks of ordinary purchasing.

A sensible starting point is to set the window by message type rather than using one for everything:

Message type

Suggested starting window

Flash sale or same-day offer

24 hours

Cart or browse reminder

24 to 48 hours

Weekly promotion

2 to 3 days

Product launch or considered purchase

Up to 7 days

These are starting points, not standards. Look at the actual time-to-conversion curve in your own data after a few campaigns and adjust. Most importantly, define the window before a campaign runs and keep it fixed when comparing campaigns. Changing the window after seeing results is the most common way teams flatter their own numbers without meaning to.

It also helps to report click-through and send-through conversions separately. Click-through counts orders from people who tapped the link. Send-through counts orders from anyone who received the message. The gap between the two shows how much of the impact happens without a click, and it varies widely between audiences.

Cross-Channel Attribution: When SMS Shares the Credit

Few customers see only one message. A shopper might get a promotional email on Monday, a WhatsApp reminder on Wednesday and an SMS on Friday morning, then buy at lunchtime. The email platform, the WhatsApp dashboard and the SMS report can each claim that sale, and the total of platform-reported conversions ends up well above the number of real orders.

Cross-channel attribution models divide that credit. Last-touch gives everything to the final message, which tends to favor SMS because it is often sent last and closest to purchase. First-touch rewards whatever started the sequence. Linear and position-based models spread credit across touches. None of these is “correct”; each is a convention that answers a slightly different question.

The practical answer for most teams is to pick one model for budget conversations, apply it consistently, and stop adding up each platform’s own conversion claims. Reporting all channels in one place makes this far easier, because the same order can’t be counted three times when there is only one record of it. When campaigns are planned as one coordinated effort across SMS, WhatsApp, RCS and other channels, it also becomes possible to measure the campaign as a whole and then ask what each channel added to it.

Incrementality Testing: The Honest Measure of SMS Marketing ROI

Every method so far estimates correlation: these people got a message, and these people bought. Incrementality testing answers the real question, which is how many of them bought because of the message.

The method is simple. Before a send, randomly hold back a small share of the eligible audience (often 5 to 10 percent) and send them nothing. After the attribution window closes, compare conversion rates between the group that received the message and the holdout. The difference is the lift the campaign actually caused.

A worked example with illustrative numbers shows why this matters. Suppose an audience of 100,000 is split into 90,000 recipients and a 10,000 holdout. Recipients convert at 4.2 percent, which is 3,780 orders. The holdout converts at 3.1 percent, so without the message you would have expected roughly 2,790 of those recipients to buy anyway. The campaign’s incremental effect is about 990 orders, roughly a quarter of what a standard attributed report would show.

At an average order value of $60, attributed revenue looks like $226,800 while incremental revenue is about $59,400. If the send cost $2,700, the campaign still pays back comfortably, but the realistic SMS marketing ROI is around 22 times on revenue, not 84 times. That difference changes how much you can safely spend on the next campaign, and it matters even more once margins rather than revenue are in the calculation.

Holdouts matter most when baseline buying is already high. During peak periods, much of what Black Friday SMS marketing appears to generate is demand that was arriving anyway, and a holdout is the only way to separate the two.

Two cautions apply. Small audiences produce noisy results, so with lists in the low thousands it is better to pool holdout results across several sends than to judge a single campaign. And keep the holdout truly random. Holding back your least engaged customers, which is tempting because it feels cheaper, guarantees an inflated lift.

Where SMS Attribution Data Usually Goes Wrong

Most reporting problems come from setup, not from the analytics tool.

Links without parameters. One untagged campaign is enough to make a month of channel reporting unreliable. Tagging needs to be part of the build process, not an afterthought.

Inflated clicks. Security scanners and link-preview services sometimes request a URL before any person taps it. Watch for clicks that arrive within a second or two of delivery, or from data-center networks, and filter them out of human engagement numbers.

Journey steps credited in isolation. In an automated sequence, the last message usually gets the credit even when the earlier ones did the persuading. When messages run inside a customer journey builder, measure the journey as a whole against a holdout as well as looking at individual steps.

Revenue without cost. A campaign report that shows revenue but not message cost, segment count or opt-outs isn’t a performance report. It’s a sales summary.

Platform and analytics numbers that disagree. The messaging platform counts conversions by recipient match within its window; web analytics counts sessions by last non-direct click. They will never match exactly. Decide which one answers which question instead of trying to reconcile them line by line.

The goal is a single view where delivery, clicks, orders and revenue sit together for every channel a campaign used. Analytics and conversion tracking that follows a message from delivery through to the order it produced, and traces that revenue back to the send, is what turns a delivery report into a revenue report your finance team will accept.

FAQ

What is a good conversion rate for SMS marketing?

It depends heavily on the message type and the audience. Cart reminders to recent visitors convert far higher than broadcast promotions to a cold list, so a single benchmark is misleading. A more useful comparison is your own holdout group: a good campaign is one whose recipients convert meaningfully better than people who received nothing.

How do you track SMS conversions in Google Analytics?

Add UTM parameters to every link before shortening it, using sms as the medium so GA4 places the traffic in its SMS channel. Then mark purchases or signups as key events. Expect GA4 to undercount compared with your messaging platform, since it only sees visitors who clicked and doesn’t capture purchases made without a click.

Can you track SMS open rates?

Not reliably. Standard SMS has no read receipts and no way to embed a tracking pixel, so any reported open rate is an estimate. Delivery confirmation and click tracking are the measurable signals. Channels such as WhatsApp and RCS do report read status where the recipient’s settings allow it.

What attribution window should I use for SMS?

Shorter than for most channels. Twenty-four to 48 hours suits most promotional and reminder messages, with longer windows of up to a week for considered purchases. Set the window before a campaign runs and keep it consistent so campaigns can be compared fairly.

Do link shorteners affect SMS deliverability?

They can. Generic public shortener domains are widely used in spam and are filtered more aggressively by carriers and handset filters. A branded short domain avoids that association, keeps messages within one segment, and still provides click-level tracking.

Set Up the Holdout Before the Next Send

If you change only one thing after reading this, make it the holdout. Tagging, short links and attribution windows make your numbers cleaner, but a randomly held-back group is the only thing that tells you whether a campaign changed behavior at all. Start with 5 to 10 percent of your next large promotional send, fix the attribution window in advance, and compare the two groups when it closes.

The first result is often humbling. It’s also the number that lets you defend an SMS budget with confidence, decide which campaign types deserve more volume, and stop paying to message customers who were going to buy on Friday anyway.

Ready to grow your business with SMSala?

Launch reliable SMS, WhatsApp and OTP campaigns on carrier-direct routes — live in minutes.