Tracking Which Ads and Flyers Bring WhatsApp Chats

A plain wa.me link cannot tell you where a chat started. To trace it, give each flyer, poster, or ad its own tag and put that tag in the pre-filled message, for example FLY-PNE-04 at the end of the text. Build each link so the number is in international format and the message is URL-encoded. Then log every chat's tag when it arrives. For paid Click to WhatsApp ads on a Cloud API number, Meta also sends an ad referral with the first message, so ad chats can be matched automatically. Use the free calculator on this page to build each tagged link. The link tells you the source the customer tapped, not why they decided to buy.
Work it out: Click-to-Chat Link Generator for WhatsApp. Free, no sign-up.
In short
- A plain WhatsApp link does not reveal its source; a unique code in the pre-filled message does, if the customer keeps it.
- On a Cloud API number, paid Click to WhatsApp ad chats carry a referral with an ad ID and click ID, but chats from links, QR codes or forwards do not.
- Status ads omit the click ID, and an app-only number sends no webhook to your system.
- Log the outcome of each chat as well as its source, because chat counts are not sales.
- Keep tracking data minimal, and confirm the applicable data protection law with a lawyer.
The short answer and the rule behind it
A WhatsApp chat carries no source label by default. Two things make tracking possible: a unique tag on each place you promote your number, and a record that matches each incoming chat to that tag. The tag can sit inside the link, in the message the customer sends, or both.
The message is the reliable part for printed material. WhatsApp's own help page explains that a link can include a pre-filled message, and that this message appears in the text field of the chat when the link is opened. The customer still has to press send. So the code you place in that text travels with the chat only if the customer leaves it there.
The legal side concerns personal data. The General Data Protection Regulation of the European Union, Regulation (EU) 2016/679, defines personal data in Article 4(1) as any information relating to an identifiable person. It names an online identifier as one example. A tag that can be linked to a particular person who messaged you can fall under that definition. The Regulation applies to businesses outside the EU when they offer goods or services to people in the EU. Other countries have their own data protection laws, so the rule that applies to you depends on where your customers are. Under Article 4(11), consent has to be freely given, specific, informed and unambiguous, which matters if you plan to add a chat to a marketing list.
In practice, this means you should keep tracking data to the minimum: the source tag, the date, and the outcome. Do not copy personal details into a spreadsheet just to measure a flyer.
How the tag is built, step by step
Give every placement its own code. Use a short label that names the channel and the placement, such as FLY-PNE-04 for the fourth flyer batch in Pune, or AD-SPRING-A for one Facebook ad. Keep a written list of codes and where each one appears.
Write the pre-filled message from the customer's side. It should read like something a customer would send, and it should end with the code. For example: "Hi, I saw your offer on the flyer. Code FLY-PNE-04."
Encode the message for a web address. Spaces become %20 and line breaks become %0A. An unencoded ampersand breaks the link because browsers read it as a separator.
Build the link. Start with https://wa.me/ and add your number in international format, with the country code and no plus sign, leading zeros, brackets or dashes. Then add ?text= followed by the encoded message.
Test it on a phone that has WhatsApp installed, and on a desktop. Check that the message appears in the text box and that the code is intact.
Print or publish the link or its QR code, and record the code next to the placement. Do not reuse one code across two placements, or the count will mean nothing.
When chats arrive, read the code at the start or end of the first message and log it against the chat's date and outcome. If your number runs on the WhatsApp Business Platform, ad chats also carry referral fields that a webhook can capture (see the next section).
Worked example: a language school in Pune and a clinic in Leeds
These numbers are an illustration of how the sums work. They are not a benchmark or a result from any business.
A language school in Pune prints a flyer batch with the code FLY-PNE-04 and runs one Click to WhatsApp ad. A physiotherapy clinic in Leeds prints a poster with the code POS-LDS-02 and sends the same number through a link on its website. In March, the school's log shows 77 chats in total. Here is how they split.
| Source of chat | Chats in March (illustration) | How it was identified |
|---|---|---|
| Flyer FLY-PNE-04 | 40 | Code read in the first message |
| Click to WhatsApp ad | 25 | Ad referral in the first message on the Cloud API number |
| No code, no referral | 12 | Could be a friend's forward, a saved contact, or a deleted code |
The flyer produced 40 of 77 chats, which is about 52 per cent of the total. The ad produced 25, which is about 32 per cent. The remaining 12 chats cannot be assigned, and the sheet should say so rather than split them by guesswork. The clinic in Leeds would run the same sum with its poster code and website chats, and it would also keep an unassigned line.
The sum shows volume by source. It does not show how many of those 40 flyer chats became paying students. For that, the school needs a second column for the outcome, such as booked trial lesson or enrolled, recorded by the staff member who handled the chat.
Cases that change the answer
The same tag does not work the same way in every setup. The table below lists the cases that most often change what the data shows.
| Situation | What the tag or referral shows | What to do |
|---|---|---|
| Chat from a Click to WhatsApp ad on a Cloud API number | The referral object is included only when the message came through a Click to WhatsApp ad, and it carries the ad ID and a click ID | Store the ad ID and click ID with the chat, and read the code too |
| Ad placed in WhatsApp Status | Meta states that the click ID is omitted for messages from Status ads, though other referral fields may still arrive | Expect a missing click ID for Status ads and log them by ad ID |
| Number used only in the WhatsApp Business app | No webhook exists, so no referral data reaches your own system | Use codes in the message and log them by hand, or move the number to an API setup |
| Link in a bio, a forwarded link, or a saved contact | No referral is created for these chats | Treat them as unassigned unless the code is present |
| Same number used for several campaigns | The number alone does not identify the source | Always rely on the code or the ad ID, never the number |
| Customer edits or deletes the pre-filled text | The code is lost from the message | Keep the code short and place it where the customer is less likely to remove it, and accept some unassigned chats |
Two more cases matter for organisations with several teams. If a chatbot or shared inbox handles the first reply, make sure the tag is written to the record before anyone deletes or merges the conversation. If one number serves several countries, the codes should carry the country too, so a Pune flyer is not counted in a Leeds report.
What the link cannot tell you
A tagged link shows the source the customer tapped or typed. It does not show what else the customer saw. A person who read a flyer, searched your name, and then tapped a link from your website will look like a website chat. Chats also have no reliable time of first exposure, so a flyer can be credited for a chat that a neighbour's recommendation started. Treat the tag as a strong clue, and the outcome column as the measure that matters.
The method also does not give you a cost per chat unless you add the cost of each placement yourself. The number of chats is not the number of customers.
Common mistakes
- Putting a plus sign, a leading zero, or dashes in the number, which breaks the link.
- Skipping URL encoding, so the message is cut short or the link fails.
- Testing only on a desktop, when most customers tap on a phone.
- Using one code for every flyer and poster, so the source is lost.
- Changing a code after printing, which makes older chats impossible to match.
- Counting chats as sales, or treating unassigned chats as a sign that a placement failed.
- Copying customers' names and phone numbers into a tracking sheet that many staff can open.
What to check with HR, a lawyer or your data protection contact
If your staff log chat sources on their own phones or in their own accounts, check your device and messaging policy first. Ask who can see the log, how long it is kept, and who deletes it. If the chats are kept in a shared inbox, the same questions apply to the inbox.
For the data question, ask a lawyer or your data protection officer to confirm which law applies to your customers, what your privacy notice says about the code, and whether any chat that you add to a marketing list has the consent the law requires. Do not move a customer onto a mailing list because they tapped a flyer. This explains the rule in general terms; it is not legal or tax advice for your case.
How employers take the routine tracking work off their staff
Many businesses ask a team member to copy codes from chats into a sheet every evening. An AI worker can do that copying. It can read the code or the ad referral on each incoming chat, write the source and the date to the sheet or CRM, and pass the chat to the right person. A person still decides which placements to print, reviews the monthly totals, and records the outcome of each conversation.
Sources
How AiStaffo would automate this
AiStaffo would connect your WhatsApp number and, where you run them, your ad account to a workflow that reads each incoming chat for its code or ad referral. The workflow writes the source, date and chat link to your sheet or CRM without anyone copying by hand. Chats with no code or referral go into a separate unassigned line rather than being guessed. Your team still chooses which placements to print, checks the monthly totals and records what each chat led to. Book a free automation audit.
Questions people ask
Can I track which flyer sent someone to WhatsApp without an app?
Does a WhatsApp link show which Facebook or Instagram ad sent the chat?
What is the difference between a UTM tag and a WhatsApp code?
Do I need customer consent to track where a chat came from?
Can one WhatsApp number serve many flyers and ads?
Book a free automation audit
Thirty minutes. We look at one process you run every week and tell you exactly what an AI worker would take off your desk, and what it would not.

































