Measuring SMS Campaign Performance for Restaurants
Redemption rates reveal which messages drive orders, not just which ones get read.

This article is about the gap between SMS metrics that look good on a dashboard and SMS results that actually show up in a restaurant's bank account. Open rates and click-throughs tell you something happened on a phone; they say nothing about whether the phone's owner walked through your door and ordered the mole poblano. The whole piece is an attempt to walk that gap, end to end, from the numbers worth watching to the accounting that closes the loop at the register.
The SMS benchmarks worth tracking and what they actually tell you
Start with the numbers that make SMS look like the best channel in the building, because on paper, it is. Open rates run 90 to 98%, well above email's 28.6%, and 90% of text messages get read within three minutes of arriving. Compare that to an email sitting unopened in a promotions tab for four days and you start to understand why restaurant marketers get a little starry-eyed about SMS.
Food and beverage response rates land in the 28 to 38% range, and a 23% redemption rate on a promo is the kind of figure that makes a campaign report look like a victory lap. But here's the question worth sitting with: a victory over what, exactly? A high number in isolation is not proof of anything except that the number is high.
Redemption rate is the strongest signal you get without leaving the SMS platform. Restaurant SMS campaigns average a 23% redemption rate against 6% for email promotions, according to 2024 Mobile Marketing Association data, and that gap reflects something real about how people behave when a message lands in their pocket instead of their inbox. Conversion rates for restaurant SMS run 8 to 15% for orders broadly, climbing to 21 to 30% when the audience gets segmented by behavior or visit history. Abandoned checkout click-through, sitting at 10.1 to 14.2%, matters because it captures re-engagement at a specific, nameable moment. Someone started an order, walked away, and came back, which is a trackable intent signal, not a guess.
Now the metrics that flatter more than they inform. Open rate is high by default; the medium practically guarantees it, so a 90%-plus open rate tells you almost nothing about whether the recipient cared or just glanced at a notification while waiting for a bus. Click-through rate without something downstream to check against carries a similar limitation: someone tapped a link, sure, but did they show up? List size deserves its own skepticism too. A restaurant with tens of thousands of subscribers and a limp redemption rate doesn't have a scale advantage; it has a segmentation problem or an offer nobody wants, dressed up in a big number.
A few operational notes worth filing away. MMS messages generate roughly 15% higher redemption than plain text, because a photo of a dripping burger does something a sentence can't; craving is a visual reflex before it's a rational decision. Automated messages earn about five times more revenue per send than broadcast campaigns, $0.74 versus $0.15, which tells you that a message triggered by behavior beats a message triggered by the calendar. And frequency discipline matters: two messages a month is the benchmark, and exceeding it erodes both list quality and engagement over time. Send more, and you may find the list politely and permanently checks out.
The honest read on all of this: these are leading indicators. They narrow the field of what might have worked, but they don't hand you a conviction.
How message type and timing shape the revenue outcome before attribution even begins
Here's a thing that gets skipped over constantly: every text is trying to do a slightly different job, and the type of message you send determines how attributable the result will even be. This matters before you've measured anything, because some campaigns build their own tracking mechanism into the send, and others don't.
Birthday and occasion triggers are the cleanest case. Fire the message a week before the guest's date and you're looking at an average 35% redemption rate, high enough that even a basic coupon code scanned at the register produces usable, believable data. Win-back campaigns, aimed at guests who've gone quiet, recover roughly 12% of that lapsed group, about three times the rate email manages on its own. And because the whole premise of a win-back send is "you haven't been here in a while, come back," the lapsed-to-returned status is baked into the tracking; you already know who left and you're watching to see who returns.
Flash and scarcity offers, the "limited seats tonight" variety, tend to outperform week-out coupons on urgency alone, and the tight redemption window is a gift for attribution purposes. If the offer expires in six hours, the visit cluster is compressed into six hours, and there's nowhere for the data to wander off to.
One anchor point worth mentioning: a Thai restaurant running a birthday SMS campaign in 2024 brought back 6,830 customers and generated RM380,342 in additional sales, a result that worked partly because the campaign type itself created a natural window to measure against. Nobody had to invent a tracking method after the fact; the birthday trigger did the work.
Compare that to broadcast promotional blasts, sent wide, with no individual trigger and no tight timing. The revenue lift from these is probably real, but it's diffuse, and without a code or a reservation link attached, isolating it from ordinary Tuesday-night business is close to impossible. Awareness or brand-building texts are worse off still; with no redemption mechanism at all, there's no in-channel signal to even start with.
Which raises the real point of this section: message design is an attribution decision, not just a creative one. Building a redemption mechanism into the send, before it goes out, is what makes measurement possible later. Skip that step, and you're deciding in advance that you'll never really know if it worked.
Restaurants that move their loyalty programs onto SMS, away from email or a standalone app, tend to see redemption rates jump three to five times over. Part of that is the channel's inherent responsiveness. Part of it is structural: when SMS is also the loyalty vehicle, the loyalty record itself ties the text to the visit, and attribution stops being a separate project bolted on afterward.
The attribution methods that connect an SMS send to a recorded visit
Attribution, in the sense that actually matters here, means tracing one specific text to one specific event at the POS, with a traceable line from send to sale, rather than inferring the connection from a lift curve or leaning on a platform's self-reported numbers because they're the only numbers on hand.
Unique promo codes are the simplest version of this. Every campaign or segment gets its own code, entered or scanned at checkout. It works with any POS system on the market, requires no new technology, and is about as unambiguous as restaurant data gets. The weakness is human nature: guests forget codes, skip them, or don't bother mentioning the text at all even though it's the reason they showed up. That visit disappears from your data even though it happened.
Campaign-tagged booking or order links work through UTM parameters attached to a reservation link (OpenTable, Resy) or an online ordering page. When the SMS drives someone straight into a digital booking, the link tags that reservation back to the exact campaign in your analytics. It's reliable, but only for the segment of guests who book digitally. The walk-in who read the same text and just showed up unannounced is invisible to this method entirely.
POS-integrated loyalty match is the strongest option for tracking repeat guests, on the condition that SMS is already your loyalty channel. The subscriber's phone number becomes the identifier connecting the text they received to the transaction they eventually made. This requires a loyalty or CRM system that shares an identifier across the SMS platform and the POS, which is more infrastructure than some independent restaurants have, but it's the method that answers the fullest version of the question: who got the text, and what did they do next.
Control group testing, sometimes called a holdout, measures incremental lift rather than total revenue during a campaign window. You hold back a portion of eligible subscribers, send nobody in that group anything, and compare their visit and spend rates against the group that got the text. What the research on this makes pretty clear is that crediting an entire period's revenue to a single send is the exact mistake behind those inflated ROI claims that don't survive a second look. A holdout catches that mistake before it happens.
Foot traffic attribution tools round out the list. Platforms like Meta and Google offer store-visit tracking for businesses that clear certain volume thresholds, which is more useful for awareness-driven texts than direct redemption offers. Third-party vendors use device-level location data to see whether someone exposed to a campaign later showed up at the address. Worth noting: these vendors differ quite a bit in how transparent they are about method, so it's fair to ask exactly how they define a "visit" and what their false-positive rate looks like before taking their lift numbers at face value.
For most independent restaurants, the workable stack is a promo code required at the register, a campaign-tagged booking link, and a loyalty match for guests already in the system. Three overlapping signals, none of them requiring enterprise software, together catching most of the traffic that a single method alone would miss.
Where SMS attribution fits inside a restaurant's broader multi-channel measurement picture
But how does this affect the bigger picture, the one where a guest doesn't experience your restaurant through a single, tidy channel? Because that's not how people actually move. A TikTok video sparks the initial interest, a Google search confirms the hours and the location, and an SMS offer is what finally tips the decision toward "let's go tonight." Three touches, one visit.
Last-click logic, crediting the visit entirely to whichever touchpoint arrived closest to the reservation, overstates what the SMS did and understates what actually built the awareness in the first place. Multi-touch attribution offers a fuller picture: the text might be the trigger that closed the decision, but the creator post or paid ad that put the restaurant on the guest's radar in the first place earned some of that credit too.
Here's the useful part: the same POS-and-loyalty infrastructure that closes the attribution loop for SMS is what makes social-to-store attribution possible for paid ads. It's one system, doing the same job for every channel that eventually needs to prove itself against a transaction record.
Which is worth remembering the next time a platform dashboard reports reach and clicks with real confidence. Meta reporting reach, TikTok reporting views, an SMS platform reporting opens; these all share the same structural limit, and they stop reporting the moment the guest leaves the screen. Whatever happens between the tap and the table is outside their view.
There's a cost angle to this too. A 78.8% annual guest churn rate costs a single restaurant location an estimated $375,380 in lost opportunity every year, and SMS win-back and birthday programs are among the few tactics that let you measure recovery against that specific loss, directly and by name. That recovery is only visible in revenue rather than open rates when campaign outcomes are actually tied back to POS transactions. But that only works if the attribution is actually in place beforehand. Otherwise you're just hoping the churn number looks a little better next year and calling it a program.
The principle underneath all of this doesn't change by channel: anything that can't be tied back to a POS record is reporting activity, not revenue. That's as true for a Facebook ad as it is for a text message.
Calculating SMS campaign ROI without inflating the number
Somebody, somewhere, is going to bring up the $71-per-dollar figure, or the "6x ROI versus traditional advertising" line. These numbers exist and they're not fabricated, but they represent best-case outcomes, not a baseline you should expect to hit on a Tuesday. Understanding how a number like that gets built is the prerequisite to trusting it, or not.
The formula that holds up under scrutiny is ROI equals net profit divided by marketing cost plus food and operations cost, where net profit means incremental revenue tied specifically to the campaign, not total revenue during the campaign window. That distinction is where most restaurant ROI math quietly falls apart.
Three ways that math goes wrong, consistently. First, crediting every dollar that came through the door during the campaign period to the SMS send, which ignores the baseline revenue that would have shown up anyway, text or no text. Second, leaving labor out of the cost side of the equation entirely, which is probably the single most commonly skipped line item in restaurant marketing math. Third, trusting the SMS platform's own redemption count instead of checking it against the POS. The platform counts link taps and code submissions; the register counts actual transactions, and those two numbers are rarely identical.
A cleaner version of the calculation takes the revenue tied to attributable visits, meaning promo code redemptions plus loyalty-matched transactions in the holdout-adjusted group, subtracts food cost, labor for the period, and the SMS platform fee, then divides by total cost. It's slower to build, but it's also auditable, which the flashier version usually isn't.
What good actually looks like: a 300 to 500% ROI on restaurant digital marketing counts as solid performance, and anything approaching the top of that range is doing well. The exceptional cases, like automated birthday and win-back programs hitting 5,200 to 6,900% ROI according to Bloom Intelligence's data, are real numbers, not fantasy. They reflect the specific economics of retention campaigns aimed at high-margin repeat guests, sent at a cost per message that's close to nothing. That's not a typical result across the board; it's what happens when the type of campaign and the cost structure line up unusually well.
A practical gut check: if your SMS ROI number looks implausibly good, run it against a holdout group before you believe it. If you don't have a holdout group yet, discount the number you're looking at and build one in before the next send. And here's the allocation lesson buried in all of this: since automated, triggered messages consistently beat broadcast blasts on a per-message revenue basis, the highest-ROI move usually is sending smarter texts, aimed at behavior instead of the calendar, rather than simply sending more of them.
Building the measurement setup before the next campaign goes out
Measurement architecture gets built before the send goes out, not reconstructed afterward from whatever data happens to survive. That's really the entire argument of this piece, compressed into one sentence, and everything above has been building toward it.
Before you send anything, a few things are worth confirming. Check that 10DLC registration is current, since unregistered sends face heavier filtering that quietly corrupts your delivery numbers before attribution even gets a chance to start. Assign a unique promo code or a campaign-tagged booking link to the send; no code means no closed loop, full stop. Define the redemption window ahead of time too: flash offers want a tight window, something like 24 to 48 hours, to keep the resulting visits clustered close enough together to attribute cleanly, while evergreen offers need a longer tracking period with a clear, stated cutoff. Pull a holdout group before the send goes out, not after somebody asks for one; even a small holdout, 10 to 15% of eligible subscribers, is enough to start measuring incremental lift instead of guessing at it. And confirm that your loyalty or CRM system actually records visit dates against subscriber phone numbers, since that's the exact match that makes loyalty-integrated attribution function at all.
After the campaign runs, the reconciliation work matters just as much. Compare promo code redemptions in the POS against what the SMS platform reported; the size of that gap is your data quality check, right there. Compare visit rate and average spend between the texted group and the holdout to get an actual incremental lift number instead of a total-revenue number dressed up as one. And record which message type, offer, and segment produced each result, because that record is what makes the next campaign smarter than this one.
Here's what operators who actually build this out tend to notice: the campaigns that look weakest by in-channel metrics, modest open rates, unremarkable click-through, sometimes drive the most verified visits once you check the POS. And the reverse happens too; a campaign with eye-popping engagement numbers can produce a quiet register. Closing the loop matters more than watching the dashboard.
SMS volume grew 31% in 2024 and is projected to grow another 40% in 2025, which means every restaurant's texts are landing in an increasingly crowded inbox. The operators who measure this correctly will keep steering budget toward whatever's actually proven to work. The ones who don't will keep congratulating themselves on open rates while the competition quietly walks off with the table.


