WhatsApp Link for Business: Format and Checks
The exact wa.me format for an Indian number, the characters that silently cut your message short, and how to check the link before it reaches a printed flyer.

The short answer
A WhatsApp link for a business is a single URL in WhatsApp's own click to chat format. For a number registered in India it looks like this:
https://wa.me/919876543210?text=Hi%2C%20I%20would%20like%20a%20quoteTap it and WhatsApp opens a chat with that number, with the message already typed in the box, and the customer never has to save the number first.
There are only two halves to get right, and almost every broken link fails in one of them. The number is 91 followed by the ten digits, with no plus sign, no leading zero, no spaces and no brackets. Everything after ?text= is percent-encoded, which is why the spaces above are %20, and why a handful of perfectly ordinary characters will cut your message in half if you paste them in raw.
Write the message with the URL encoder, check the finished link with the URL parser, and what you end up with is a link you own outright: no account, no monthly fee, and no shortener in the middle that somebody else can switch off. That last point is the reason this page does not send you to a hosted generator, and we come back to it at the end.
The number: country code and digits, nothing else
WhatsApp states the rule plainly in its click to chat help page: use https://wa.me/<number>, where the number is a full phone number in international format, and omit any zeroes, brackets or dashes.
For an Indian mobile that means one thing: drop the way you normally write the number and keep twelve digits.
| What you have | What goes in the link |
|---|---|
+91 98765 43210 | 919876543210 |
098765 43210 | 919876543210 |
98765-43210 | 919876543210 |
(+91) 98765 43210 | 919876543210 |
91 98765 43210 | 919876543210 |
The leading zero is the one people argue about. A zero in front of a mobile number is a domestic trunk prefix for dialling inside India, and it is not part of the international number, so it has no place in the link. The same goes for 0091 or 00 91.
The plus sign deserves its own warning, because it does not fail loudly. One cross-platform test of click to chat links found that a + in front of the country code worked on iPhone and Android but failed on WhatsApp Web and WhatsApp Desktop, while a 00 prefix produced an error on Android. The bare country code was the only format that worked everywhere. So a link with a plus sign can pass your own test on your own phone and then quietly fail for the customer who clicked it on a laptop.
Two more things about the number:
- It has to be the number WhatsApp is registered to. Not the landline, not the number on the signboard, not a second SIM you have never installed WhatsApp on. A link to a number that is not on WhatsApp gives the customer an error page instead of a chat.
- One link, one number. Click to chat has no concept of a team or a queue. If enquiries need to reach three people, that is a WhatsApp Business account question, not a link question.
The message: what actually has to be encoded
The part after ?text= is a query parameter value, and a query string is not plain text. A few characters have a job in a URL, and if you leave them in raw, the browser does that job instead of passing them along.
Here is what we get by feeding an untouched message through a standard URL parser. The message was Hi! Price & availability? Order #2291:
| Character | What happens if you leave it raw | Encoded form |
|---|---|---|
| space | works, but reads badly in the address bar | %20 |
& | ends the message; everything after it becomes a separate parameter | %26 |
# | ends the message; everything after it is dropped entirely | %23 |
+ | arrives as a space, so 10+2 becomes 10 2 | %2B |
? | safe after the first one, but encode it and stop thinking about it | %3F |
% | read as the start of an escape sequence, so it corrupts what follows | %25 |
| newline | cannot exist in a URL at all | %0A |
That message came out the other side as Hi! Price and nothing more. The & started a new parameter, and the #2291 was read as a page fragment and never sent anywhere. The link still worked. It just opened a chat with a third of the message in it, which is the worst of the two outcomes, because nobody notices.
The & and the # are the two that catch real businesses, because they are exactly the characters a small business writes: Spare parts & service, Order #4471, Terms & conditions. The + is the sly one, since 10+2 chairs turns into 10 2 chairs with no error and no clue.
Emoji and the rupee sign are fine, and they do not need special treatment beyond encoding. The encoder turns them into UTF-8 percent sequences, so a waving hand becomes %F0%9F%91%8B and ₹ becomes %E2%82%B9. They look alarming in the address bar and arrive correctly in the chat. Line breaks work too, as %0A, which is worth knowing if you want a two-line enquiry rather than one long sentence.
The practical route is the URL encoder, and there is one choice on it that matters. Pick Encode component, not Encode full URL. Component encoding is for a value you are about to drop inside a query string, which is exactly what your message is. Encoding the whole wa.me address as a component would percent-encode the : and the / as well and wreck the link's structure. Type the message, copy the result, paste it after ?text=.
Keep it short. For the QR code and short link flow in the WhatsApp Business app, Meta's documentation says a pre-filled message can contain up to 140 characters, and 140 characters is a sensible ceiling for a typed link too. The message is a conversation opener, not a form. One line that says who the person is and what they want is enough, and it leaves the customer something to do rather than a wall of text to delete.
One thing to be clear about with yourself: the message is pre-filled, not sent. It lands in the compose box and the customer presses send, which means they can edit it or wipe it first. Write it as something a real person would be happy to send under their own name.
Check the link before anybody else does
This is the step the generator sites skip, and it is the one that saves you reprinting five hundred flyers.
Paste the finished link into the URL parser. It splits the URL into protocol, host, path and a decoded table of query parameters, which turns four separate assumptions into four things you can read:
- Host is
wa.me. If it is anything else, you are looking at somebody else's redirect, not WhatsApp's. - The path is your twelve digits and nothing else. No plus, no zero, no stray space that a word processor inserted.
- There is exactly one parameter, called
text. A second parameter you did not add is the signature of an unencoded&. The parser lists every occurrence of a key as its own row, so a duplicate shows up rather than hiding. - The decoded
textvalue is your whole message. The parser percent-decodes values for display, so you read the message as the customer will see it. If it stops early, you have found your&or your#.
Then open the link for real, and not only on the phone you built it on. Test it on an Android phone and an iPhone, on WhatsApp Web, and once from a device that has never messaged you, because a chat that already exists hides a number of problems. Check that the chat opens on the right account and that the message arrives whole.
Only then does it go anywhere permanent.
Where the link goes
On your website
A click to chat link is an ordinary link. It needs no plugin, no script and no third-party widget:
<a href="https://wa.me/919876543210?text=Hi%2C%20I%20would%20like%20a%20quote"
target="_blank" rel="noopener">Message us on WhatsApp</a>Put it where the decision happens, which is next to the price, the service or the booking step, not only in the footer. Keep the raw wa.me address in the markup rather than a shortened one: a shortener adds a hop, a dependency and a third party who can see every click.
In an Instagram bio
Instagram allows several links in a profile bio now, edited from the mobile app, and only the first is shown in full. If WhatsApp is how you actually want to be contacted, it goes first, with a label that says so.
On your Google Business Profile
This one is a real field, not a workaround, and it is also the one with conditions. Google's help page on chatting with customers from your Business Profile sets out the path: Edit profile, then Contact, then Edit next to Chat, then select WhatsApp and add your click to chat URL, then Save.
Three details from that page are worth reading before you plan around it:
- The profile has to be claimed and verified.
- Google says chat options are available for select regions and might not be available for your profile at all.
- If you enable both WhatsApp and text message, only the text message option is shown to customers. Pick one.
Note what is not on offer: WhatsApp is not one of the platforms in the Social profiles section of a Business Profile, so the Chat field is the supported route.
On a printed flyer
Print cannot be tapped, so the link becomes a QR code. Paste it into the QR code generator, which encodes it in your browser and hands back a PNG with no shortener and no tracking layer in between.
Print sizing is where QR codes fail in the wild. The reliable minimum is about 2 x 2 cm for a short URL scanned at arm's length, and bigger for a poster read across a room, where at least 512 x 512 px is the right starting point for A4. Keep a clean white margin, the quiet zone, all the way around the code, keep it dark on light, and never stretch it to fit a layout.
Length matters here in a way it does not on a web page. A short URL produces coarser, more forgiving modules; a two hundred character tracking link produces a dense, finicky code that a cheap camera in poor light will refuse. This is the single strongest argument for keeping the message to one short line, and against bolting a tracking string onto a link that is about to be printed.
The last point about print is the one to sit with. These codes carry no redirect service in the middle, so they never expire, and for the same reason they can never be changed. A thousand printed flyers are a thousand copies of exactly the link you encoded. Decide the number and the message before you send the file to the press.
Telling which channel a chat came from
Here is the thing the vendor guides get wrong, and it is worth understanding before you spend an afternoon on it.
A wa.me link is not a page on your website. Your analytics tag never runs on it, so adding utm_source and friends to a wa.me URL puts those values nowhere you can read. They do not appear in a report and they do not appear in the chat. The only thing that crosses from the link into WhatsApp is the pre-filled text.
So attribution splits into two layers, and you need both.
Layer one, your own pages. When a channel sends people to a page of yours that carries the WhatsApp button, tag that inbound link. The UTM link builder assembles utm_source, utm_medium and utm_campaign on your destination URL and preserves any query parameters already on it. Use the lower case option: UTM values are compared literally in most analytics tools, so Instagram, instagram and INSTAGRAM become three rows and split one campaign for no reason, and that is not something you can clean up afterwards. One rule to go with it, straight from the tool's own notes: never put UTM parameters on a link between two pages of your own site, because it restarts the session attribution and credits the visit to you instead of to whoever actually sent it.
Layer two, the chat itself. Give each channel its own pre-filled message. It is the only signal that survives the jump into WhatsApp, and it costs nothing.
| Where the link lives | Inbound link | Pre-filled message |
|---|---|---|
| Website service page | not tagged, it is your own page | Hi, I am on your website and would like a quote |
| Instagram bio | tagged instagram / social | Hi, I found you on Instagram |
| Google Business Profile | not under your control | Hi, I found you on Google |
| Printed flyer | no inbound link | Hi, I have your flyer here |
Four links, four codes, and the first line of every enquiry tells you where it came from. Read it as a signal and not as a count, because the customer can edit the message before sending, and some will. Even so, a rough split between the flyer and the Instagram bio is a great deal more than you had, and it needs no software at all.
Why not a hosted link generator
Several sites will take your business number and your message, mint a short link on their domain, and give you a dashboard. The convenience is real and so is the cost, which is that the redirect is theirs.
The link you print or paste no longer points at WhatsApp. It points at their server, which then points at WhatsApp. That is one more thing that can change price, change behaviour, go down on a Saturday, or quietly disappear in two years, and it sits between your customer and your business on every single click. On a printed code, where the link cannot be edited afterwards, that is a bet with no upside.
A wa.me link needs no account and no third party. It is also worth knowing the one first-party alternative: the WhatsApp Business app generates its own short link under wa.me/message/ with a matching QR code, which masks the phone number and carries one editable default message. If hiding the number matters to you, that is the version to use, with two trade-offs: you did not choose the short code, and the single default message means every channel sends the same first line, which is the one channel signal you had.
Putting it together
Say you run a printing shop in Chennai, the WhatsApp number is +91 98765 43210, and the flyer goes to press on Friday.
- The number becomes
919876543210. - The flyer message is
Hi, I have your flyer. Need wedding cards.Put it through the URL encoder on Encode component. - The link is
https://wa.me/919876543210?text=followed by the encoded result. - Paste the whole thing into the URL parser. Host
wa.me, path919876543210, one parameter namedtext, and the decoded value reads as the full sentence including the full stop. - Open it on an Android phone, an iPhone and WhatsApp Web, from a device that has never messaged the shop.
- Generate the code at 1024 px in the QR code generator, place it at 2.5 cm square with a white margin, and test-scan the printed proof rather than the screen.
- Repeat steps 2 to 5 with
Hi, I found you on Instagramfor the bio link, and tag the Instagram link to your website separately with the UTM link builder.
That is the whole job, it costs nothing, and nothing in it expires.
When it is worth getting help
Do this yourself. It is an afternoon, the tools are free, and the result is yours.
Bring in help when the WhatsApp link is the symptom rather than the task: when enquiries arrive and nobody answers them, when there is no page worth sending people to in the first place, or when the enquiries that do arrive by email never reach the inbox. Our note on local business website design covers the pages that earn the enquiry, and contact form emails going to spam covers the case where the website side is quietly broken. If you would rather hand over the build, website design and development is the service that does it.
Frequently asked questions
What is the correct WhatsApp link format for an Indian number?
https://wa.me/91XXXXXXXXXX, where the ten digits follow 91 directly. No plus sign, no leading zero, no spaces, no dashes and no brackets. Add a pre-filled message with ?text= and percent-encode everything after it.
Do I need a WhatsApp Business account to create a link?
No. Click to chat works with any number that has WhatsApp registered on it. The WhatsApp Business app adds its own short link, a QR code and a default message, which are conveniences rather than requirements.
Why does my pre-filled message get cut off?
Almost always an unencoded & or #. The & ends the parameter and the rest of your text becomes a separate parameter; the # turns the rest into a page fragment that is never sent. Encode the message with the URL encoder and confirm the decoded value in the URL parser.
Why does 10+2 show up as 10 2?
Because a + in a query string means a space, a convention left over from early web forms. Encode a literal plus sign as %2B.
Can I put emoji in a WhatsApp link?
Yes. Encode them with the rest of the message and they arrive as UTF-8 percent sequences, which look strange in the address bar and render correctly in the chat. The same applies to ₹ and to any other non-English characters.
Can I add UTM parameters to a WhatsApp link to track clicks?
Not usefully. A wa.me address is not a page on your site, so your analytics never sees it and the UTM values go nowhere you can read. Tag the inbound links to your own pages instead, and give each channel a different pre-filled message so the first line of the chat tells you where it came from.
Can I add WhatsApp to my Google Business Profile?
Yes, through Edit profile, Contact, Chat, where you select WhatsApp and paste your click to chat URL. The profile must be claimed and verified, Google says the feature is limited to select regions, and if you enable text message as well then only text message is shown.
How big should a printed WhatsApp QR code be?
About 2 x 2 cm at minimum for a short link scanned at arm's length, larger for anything read from a distance, with a clean white margin around it and no stretching. Keep the encoded link short: a long link makes a denser code that is harder to scan.
Does a WhatsApp QR code expire?
A code generated from a plain wa.me link does not, because the code is a direct encoding of the link with no redirect service in the middle. That also means it cannot be changed once printed, so settle the number and the message first.
What happens if someone clicks the link on a desktop?
WhatsApp opens the chat in WhatsApp Web or offers to hand it to the desktop app. This is exactly why the plus sign is worth avoiding: it survives on phones and fails on the desktop clients.
Tools mentioned in this post
- URL Encoder / DecoderPercent-encode or decode URLs and query parameters, with the component/full distinction done right.
- URL ParserExplode any URL into protocol, host, path and a decoded query-parameter table.
- QR Code GeneratorCreate a QR code for any link or text and download it as PNG, free, no signup.
- UTM Link BuilderTagged campaign URLs with consistent casing, so your analytics does not split one campaign into four.


