Missed pickup orders are the silent killer of restaurant profit margins. A customer places an order online, gets an email confirmation buried under three Amazon receipts and a LinkedIn digest, and never shows up. The food sits under the heat lamp. The kitchen curses. The owner eats the cost.
I’ve been setting up ordering systems for restaurants for years, and the single biggest fix I keep recommending isn’t a fancier menu or a new POS — it’s SMS notifications. Text messages get read. Emails don’t. Let’s walk through how to wire up Twilio (or an alternative) to your WooCommerce restaurant in 2026, what to actually send, and how to stay on the right side of the compliance rules that have gotten stricter every year.
Why SMS Notifications Matter for Restaurant Orders in 2026
Here’s the number that convinced me years ago: SMS open rates hover around 98%, and most texts are read within three minutes of arriving. Email? You’re lucky to hit 20% on a transactional message, and average time-to-open is measured in hours. For a restaurant, that gap between “sent” and “seen” is the difference between a hot pickup and a wasted order.
Restaurants are a near-perfect fit for SMS because the entire customer journey is time-sensitive. When someone orders a pizza at 7:14 PM, they don’t want to check email at 7:32 to find out it’s ready. They want a buzz in their pocket that says “your order is ready, come grab it.” That immediacy translates directly into fewer no-shows, faster pickup turnover, and — this one surprised me the first time I measured it — higher tip averages, because customers feel taken care of.
There’s also a staff-side benefit that owners underestimate. When your kitchen printer jams or your tablet dies (and it will), an SMS backup to the manager’s phone means no order gets lost. That’s a safety net worth paying for.
SMS vs Email vs Push Notifications: What Restaurants Actually Need
Not every notification needs to be a text. Sending six SMS messages per order will burn through your budget and annoy your customers. The trick is matching the channel to the urgency.
Here’s the split I usually recommend:
- Email — order receipt with itemized breakdown, tax, and tip. Good for records, not for urgency. Costs basically nothing.
- SMS — order accepted, ready for pickup, out for delivery. The moments that matter. Costs roughly $0.008–$0.04 per message in the US depending on provider and volume.
- Push notifications — great if you have a branded app, useless if you don’t. Most independent restaurants shouldn’t bother building one just for this.
The combo that works: email for the full receipt, SMS for the two or three status updates that actually move the customer. Skip the “your order is being prepared” text unless prep times exceed 30 minutes — otherwise it’s noise. Save the SMS budget for the moments that prevent a support call or a cold meal.
Choosing an SMS Gateway: Twilio, MessageBird, Vonage, and Local Providers
Twilio is the default answer for a reason. Their API is well-documented, deliverability is excellent, and nearly every WordPress SMS plugin supports it out of the box. Pricing in the US sits around $0.0083 per outbound SMS at time of writing, plus about $1.15/month per phone number. For a restaurant doing 500 orders a month with two texts per order, you’re looking at roughly $10–$12 monthly. Reasonable.
MessageBird (now called Bird) is the European favorite. Better rates in EU countries and solid coverage across Africa and the Middle East. If your restaurant is in Amsterdam or Dubai, this often beats Twilio on price.
Vonage (formerly Nexmo) is another mature option — reliable, similar pricing to Twilio, slightly less friendly UI in my opinion. Fine if you already have a Vonage account for voice.
Then there are local providers worth considering depending on your country: Plivo, Sinch, and Telnyx in North America; ClickSend in Australia; Netgsm and İletimerkezi in Turkey; SMS.to for global. Local providers frequently beat Twilio’s pricing by 20–40% but require more manual setup and their WordPress integrations can be spotty.
My honest take: if you’re doing under 2,000 texts a month, just use Twilio. The time you’d save shopping for cheaper providers isn’t worth the $15 you’d save. Once you scale past 10,000 messages monthly, revisit the math.
Step-by-Step Twilio Setup for WooCommerce Restaurant Orders
Alright, let’s get our hands dirty. This assumes you already have WooCommerce running and a restaurant ordering plugin like FoodMaster restaurant ordering system installed. FoodMaster has native SMS notification support that hooks right into order statuses, which saves you from stitching together a separate SMS plugin.
1. Create your Twilio account
Head to twilio.com and sign up. You’ll get a free trial with a small credit — enough to test but not enough for production. Verify your email and phone number. Twilio will ask what you’re building; pick “Alerts & Notifications” and mention you’re running a restaurant. This matters later for A2P registration.
2. Buy a phone number
Inside the Twilio console, go to Phone Numbers → Buy a Number. Pick a local area code that matches your restaurant’s location — customers trust local numbers more, and delivery rates are better. Make sure the number has SMS capability enabled. Toll-free numbers are also an option and easier for A2P registration, but they cost more per message.
3. Grab your API credentials
From the Twilio dashboard, copy your Account SID and Auth Token. Treat the Auth Token like a password — don’t paste it into Slack or commit it to git. You’ll also need your Twilio phone number in E.164 format (like +14155552671).
4. Connect to WooCommerce
In your WordPress admin, open FoodMaster’s settings (or your SMS plugin of choice) and find the Notifications section. Paste in the Account SID, Auth Token, and sender number. Save. Most plugins include a “Send test SMS” button — use it. If the test message hits your phone in under 10 seconds, you’re good.
If the test fails, 90% of the time it’s one of three things: wrong country code on the destination number, the Twilio number doesn’t have SMS enabled for that region, or you’re still on trial mode and the recipient number isn’t verified.
[IMAGE: WordPress admin screen showing Twilio API credentials configured in a WooCommerce restaurant plugin settings panel]
5. Map SMS to order statuses
This is where the real work happens. You want to trigger SMS on specific WooCommerce order status changes: “processing” (order received), “preparing,” “ready for pickup,” “out for delivery,” and “completed.” FoodMaster exposes these as checkboxes with editable templates. Turn on only the ones that add customer value — probably three of the five.
Crafting SMS Templates for Each Order Status (With Examples)
Bad SMS templates read like they were written by a lawyer. Good ones sound like a friendly host. Keep them under 160 characters when you can — that’s a single SMS segment. Go over and you’re paying for two messages per send.
Here are templates I’ve used successfully. Swap in your own tokens (FoodMaster uses {customer_first_name}, {order_id}, {estimated_time}, {store_name}):
Order received:
“Hey {customer_first_name}! We got your order #{order_id} at {store_name}. We’ll text you again once it’s confirmed. 🍕”
Order accepted / being prepared:
“Order #{order_id} is in the kitchen! Estimated ready time: {estimated_time}. Reply STOP to opt out.”
Ready for pickup:
“{customer_first_name}, your food is ready! Come grab order #{order_id} at {store_name}. See you soon.”
Out for delivery:
“Your order is on the way! Driver: {driver_name}. ETA: {estimated_time}. Track: {tracking_link}”
Delivered:
“Delivered! Enjoy your meal, {customer_first_name}. We’d love a quick review: {review_link}”
A few things I’ve learned the hard way. Don’t use emojis in every message — they double the character count in some encodings and can push you into two segments. Always include the store name in at least one message, because customers order from multiple places and forget who’s texting them. And always, always include an opt-out instruction in at least the first message per order. Compliance rules basically require it now.
Sending SMS to Kitchen Staff and Delivery Drivers
Customer SMS is table stakes. Staff SMS is where things get interesting.
The setup I recommend for busy restaurants: create a second notification rule that fires on “new order” and routes to the kitchen manager’s phone. The message should be dense with info — order number, items, prep notes, order type (pickup vs delivery), and pickup/delivery time. Something like:
“NEW ORDER #4482 — DELIVERY — 2x Margherita, 1x Caesar Salad (no croutons), 1x Coke. Ready by 7:45 PM. Address: 123 Main St.”
For delivery drivers, the trick is only sending the SMS when the order status flips to “ready for delivery” and including a Google Maps deep link to the customer’s address. That saves the driver from copy-pasting into their nav app. FoodMaster handles this via a driver role and mobile-friendly dispatch view, so you don’t have to build the routing logic yourself.
If you’re running multiple shifts, don’t hardcode staff phone numbers. Use a WordPress user role for “kitchen staff” and let each shift log in — the plugin then routes to whoever is currently on duty. Managing this via a shared Twilio number also lets you two-way message with drivers, which is genuinely useful when a customer isn’t answering their door.
[IMAGE: mobile phone screen displaying an incoming restaurant order SMS notification with itemized order details for kitchen staff]
Compliance, Opt-Ins, and Avoiding Spam Complaints
The regulatory side of SMS has gotten notably stricter, and 2026 is not the year to wing it. Here’s what you need to know without turning this into a legal treatise.
A2P 10DLC (United States)
If you’re sending SMS from a standard US long-code number to US customers, you must register your brand and campaign under A2P 10DLC. Unregistered traffic gets throttled or blocked outright by the carriers. Registration takes 1–3 business days via Twilio’s console, costs a small one-time fee plus a few dollars monthly, and requires you to describe your use case. For restaurants, “order status notifications” is a standard, easily-approved category.
TCPA (United States)
The Telephone Consumer Protection Act requires clear consent before sending marketing texts. Transactional messages like order confirmations are treated more leniently, but you still need consent. The safe move: add a checkbox at checkout that says “Send me order updates by SMS. Message and data rates may apply. Reply STOP to opt out.” Do not pre-check it. Store the timestamp and IP address of the consent — you may need to prove it later.
GDPR (EU and UK)
Same principle as TCPA but broader. Consent must be explicit, granular, and revocable. Include SMS opt-in as a separate checkbox from your general terms. Log everything. If a customer requests deletion, you must be able to purge their number from Twilio’s logs too — not just your database.
Handling STOP requests
Twilio automatically processes STOP, UNSUBSCRIBE, and CANCEL keywords and blocks further messages to that number. Good. But your WooCommerce database doesn’t know that happened. Set up a webhook so opt-outs sync back to WordPress and you don’t accidentally try to send to a blocked number (which you’d get charged for anyway). Most decent SMS plugins handle this, but verify it’s working.
If you also want to explore the checkout flow more broadly, we’ve covered related WooCommerce restaurant guides that pair well with SMS setup — things like order type selection, tip prompts, and delivery zone validation all interact with when and what you should text.
Troubleshooting Common SMS Issues and Measuring ROI
Even with everything set up cleanly, you’ll run into weird stuff. Here are the failures I see most often.
Messages not delivering
Check the Twilio Console → Monitor → Logs → Messaging. Every attempted send shows up with a status. “Undelivered” usually means the carrier rejected it — often because of A2P registration issues, bad content (avoid words like “free,” “winner,” “click here” in the first message), or a number that’s flagged as landline. “Failed” typically means a bad phone number format. Enforce E.164 format at the WooCommerce checkout with a phone validation plugin.
Wrong country codes
WooCommerce doesn’t force country codes on phone fields by default. A customer types “555-1234” and your Twilio call fails silently. Fix this by making the phone field required with a country prefix dropdown. Every restaurant I’ve onboarded has needed this fix.
Costs creeping up
Check your average messages per order. If it’s above three, you’re probably over-notifying. Cut the “being prepared” message unless your prep time is leg
Commission-free ordering
Run restaurant orders on your own WordPress site
FoodMaster adds delivery, pickup, dine-in, POS, and kitchen tools — with zero per-order fees.