An SMS QR code opens the phone messaging app with the number and the message text already filled in. The person still has to press send. Nothing is sent automatically, and nothing leaves their phone without them reading it first.
That single constraint is what makes this format useful in some places and useless in others.
What actually happens on scan
The code carries a short instruction — the recipient number and the message body. The camera hands that to the messaging app, which opens a draft. From there it is an ordinary text message sent from the customer own number, billed at their normal rate.
So the person scanning is always the sender. That matters for two reasons: you get their number when it arrives, and they know they gave it to you.
Where it earns its place
| Situation | Why a pre-filled text fits |
|---|---|
| Booking confirmation | The reply is one fixed word, and older customers trust SMS more than an app |
| Report a problem | A sticker on a lift or a meter, where nobody wants to install anything |
| Opt-in to a promo list | The customer sends the keyword themselves, so consent is on record |
| Rural or low-signal areas | SMS works where a web form times out |
| Staff shortcuts | Warehouse or site codes that log a standard status message |
The common thread is a short, predictable message that the customer would otherwise have to type from a sign.
Where it does not
If the reply needs details you cannot pre-fill — a name, an address, a photo — the customer ends up typing into a cramped message box anyway. A web form behind a normal website QR code is easier for them and easier for you to process. Use SMS when the message is nearly complete before they touch it.
Writing the message
Keep it short. Our generator caps the body at 500 characters, but the practical limit is much lower: if someone has to scroll the draft before sending, the shortcut stopped being a shortcut. One sentence usually does it.
Write it from the sender point of view, not yours. "Confirm my table for 7pm, 4 people" reads naturally coming from a customer. "You have confirmed your booking" does not.
Get the number format right
Write the number the way you would dial it internationally, including the country code: +66 for Thailand, then the number without its leading zero. So 081 234 5678 becomes +66812345678.
A local-format number often still works for people on the same network and fails for everyone else, which is the worst kind of bug — it looks fine when you test it on your own phone. Spaces and dashes are stripped automatically, so type it however you find it easiest to check.
Short codes and five-digit service numbers are a different matter: many carriers block them from this kind of link, so test one before printing anything.
What it cannot do
It is not a chatbot. It cannot send automatically, cannot receive a reply on your behalf, and gives you no delivery report. Once the customer taps send, it is a plain text message arriving on whatever phone or SMS platform owns that number.
If you need automatic replies or a keyword system, you need a proper SMS gateway. The QR code only gets somebody to the compose screen — it is the first step, not the system.
Test it on both platforms
iPhone and Android handle these links slightly differently, and some third-party camera apps handle them worse than the built-in one. Before anything is printed, scan your own code with one of each using the native camera. Check that the number is right, the message is complete, and nothing has been truncated.
The full pre-print routine is in our testing checklist.
One note on consent
Because the customer sends the message, you receive their number. That is personal data, and Thailand PDPA applies to it the same way it applies to a form. Tell people on the sign what you will use the number for, and do not add them to a marketing list they did not opt into.
Ready to build one? Make an SMS QR code — it takes about thirty seconds.
