A wa.me link opens a WhatsApp chat with your business: https://wa.me/ plus your number in full international format, no plus sign or spaces. Add ?text= and a URL-encoded message to prefill what the customer sends. Turn it into a QR code for packaging, receipts and pop-up stands, with different prefilled text per placement so you know where each chat came from.
It's one of the cheapest, most useful things you can set up this afternoon. Here's how to do it properly, and where it's worth putting.
These are made-up numbers. Notice the Pakistani example: the local leading zero disappears once you add the country code 92. That's the most common mistake I see.
Test the link on your own phone before printing anything. If it opens "phone number shared via url is invalid", the number is wrong or isn't on WhatsApp.
How to add a prefilled message (and URL-encode it)
Add ?text= after the number, followed by your message, URL-encoded. The text shows up in the customer's input box. They can edit it, and nothing is sent until they tap send.
URL encoding replaces characters that break web addresses. The ones that matter most:
Character
Encoded
Space
%20
Comma
%2C
#
%23
&
%26
%
%25
Line break
%0A
Example. You want customers to send:
Hi Noor Skincare, I would like refill reminders on WhatsApp.
If you leave the & unencoded, everything after it gets dropped. If you leave the % unencoded, the link can break entirely. Don't hand-encode long messages; any free URL encoder does it, or in a browser console, encodeURIComponent("your text") gives you the encoded string.
Turn the link into a QR code
Any QR generator works. A few rules that save reprints:
Use the full wa.me link, not a shortened link from a service that might expire or start showing ads. If you want scan counts, use a redirect on your own domain (yourstore.com/wa-box) that forwards to the wa.me link. Then you can also change the destination later without reprinting.
Keep the prefilled message short. Long text makes a denser QR that's harder to scan from packaging.
Print it big enough. Roughly 2 cm square is a practical minimum for a box insert, bigger for a stand people scan from a distance. Test at the real size on a couple of phones.
High contrast, quiet zone. Dark code on a light background, with a clear margin around it.
Say what happens. A bare QR gets ignored. "Scan to chat with us on WhatsApp about care tips" gets scanned.
Where to put WhatsApp links and QR codes
Use a different prefilled message for each placement. That's your free tracking: when a chat starts with "I scanned the box insert", you know exactly where it came from.
When the customer opens the box, they're holding your product and paying attention. That's the moment for:
"Not sure how to use it? Scan and ask us."
"Scan for refill reminders." (opt-in, see below)
"Scan to tell us how it went." This pairs well with a review link; the post on QR codes for review requests covers how to avoid dead ends.
Pop-ups and events
At a market stall, people won't type a URL. A big QR on the table, with a reason to scan ("Scan for today's 10% code"), captures people who'd otherwise walk away. Reply quickly with the code and ask, once, if they'd like updates.
Turning scans into opt-ins
A customer who sends you a message has started a conversation. Meta's pricing docs say their message opens a 24-hour customer service window, during which you can reply freely. It doesn't mean they've agreed to marketing.
So make the prefilled text itself the opt-in request, and confirm it in your reply:
Customer (prefilled): Hi Noor Skincare, I would like refill reminders on WhatsApp.
You: You're in, Aisha! We'll message you here when your serum's due for a refill, about every 6 weeks, plus the occasional new launch. Reply STOP anytime and we'll remove you.
Meta's opt-in guidance says opt-in can come from websites, in person or on paper, as long as it's clear the person is agreeing to messages from your business, by name. The prefilled message plus your confirmation covers both. More on this in collecting WhatsApp opt-ins on Shopify.
Common wa.me link mistakes
Keeping the local leading zero or the plus sign in the number.
Unencoded characters (&, #, %) that cut the message short or break the link.
A personal number. If the founder's phone is on 10,000 boxes, every one of those chats is tied to one person forever. Use your business number.
One generic message everywhere, so you can't tell the packaging from the Instagram bio.
A QR code with no explanation next to it.
Never testing on Android and iPhone. Both should open the right chat with the text in place.
Changing your number later. Every printed code dies. A redirect on your own domain avoids that.
Handle the chats in one place
QR codes on thousands of boxes mean chats arriving whenever customers open them, including weekends. If those messages land on one person's phone, they get missed. WhatFlow's shared team inbox puts every chat in one place with assignment and saved replies, and there are no seat fees. Pair it with a sensible away message for out-of-hours scans.
Free plan available
Run WhatsApp for your Shopify store with WhatFlow
Templates, COD confirmation, Shopify Flow automations and a shared team inbox with no seat fees. Every feature is included on every plan, including Free.
Generate QR codes, print a test sheet at real size, and scan it.
Prepare a reply for each prefilled message.
Then print. Mistakes on a website take a minute to fix. Mistakes on 5,000 boxes don't.
Frequently asked questions
How do I create a wa.me link for my business?
Write https://wa.me/ followed by your full phone number in international format, with no plus sign, spaces, brackets, dashes or leading zeros. For example, a UAE number +971 50 123 4567 becomes https://wa.me/971501234567.
How do I add a prefilled message to a wa.me link?
Add ?text= after the number, followed by your message URL-encoded, so spaces become %20 and commas become %2C. The text appears in the customer's message box, and they still have to tap send.
Does a wa.me link send the message automatically?
No. The prefilled text only appears in the customer's chat input. Nothing reaches you until they tap send, which also means the customer always starts the conversation.
Can I track how many people scan my WhatsApp QR code?
Not from wa.me itself. Use a different prefilled message for each placement, then count incoming messages by that text, or point the QR at a short redirect you control that logs scans.