Tracking SEO leads from WhatsApp: codes, GA4, Search Console

To track SEO leads that arrive in WhatsApp, give every WhatsApp link on your site a page code, log the click on your own server before WhatsApp opens, and match the code in the first message to that click.

Published 9 min read

To track SEO leads that arrive in WhatsApp, give every WhatsApp link on your site a page code, log the click on your own server before WhatsApp opens, and match the code in the first message to that click. Google Search Console then tells you which queries brought people to those pages, and the code tells you which of those visits became a chat.

Why WhatsApp hides where a lead came from

Hypothetical example: a customer searches "notary translation Business Bay", lands on your service page, taps the green button and writes "Hi, how much?". Here is what each system records along the way:

  1. Google Search Console logs one click on that query to that page. It stores no visitor identity, only totals.
  2. Your web analytics logs a session with source google / organic. If nobody set up an event on the button, it records nothing about the tap.
  3. WhatsApp shows a new chat with a phone number, a time and the text "Hi, how much?". The app has no field for the page or the referrer.

In your phone, that chat looks the same as one from a business card, an Instagram bio or a friend's recommendation.

Two things break the chain. Organic Google results carry no UTM tags, because you do not control the link Google shows. And a tap on a wa.me link takes the visitor out of the browser into the app, so your analytics loses them at that moment.

The only point in this path you control is the button on your own page. That is where the identifier goes.

What each tool can see

Tool What it sees What it misses
Google Search Console Queries, impressions, clicks, average position, landing page Anything after the click
GA4 (or other web analytics) Session source such as google / organic, pages viewed, button taps if you set an event The WhatsApp conversation and the deal
Google Business Profile performance Calls, website clicks, direction requests from Maps and Search Which of those became customers
WhatsApp Business app The chat, first message, time The page and search that led there
Your lead log or CRM Whatever you write into it Nothing, if you fill it in

Your lead log is the only place where all the pieces can meet, so the rest of this article is about feeding it.

For the CRM side and a full UTM scheme for paid campaigns, see the Savage Media journal's guide to tracking WhatsApp leads from UTM to CRM. This article covers organic search, where you cannot tag the incoming link.

A wa.me link can carry pre-filled text: https://wa.me/9715XXXXXXXX?text=.... Use that text to say which page the visitor tapped from.

Hypothetical example: a car service in Al Quoz has three SEO pages. The button on each page opens WhatsApp with a different first line:

  • Brake repair page: "Hi, I'd like a quote for brakes [BR]"
  • AC repair page: "Hi, my car AC needs a check [AC]"
  • Home page: "Hi, I have a question [HM]"

Keep the code short and put it at the end, so it reads as part of a normal message. Write the full list of codes in a shared sheet, so whoever answers WhatsApp knows that [AC] means the AC repair page.

You can go further and give each visit its own code. On lucent-legal.com, the AI assistant sometimes hands a visitor over to WhatsApp. The link then carries a code: #REF plus six characters from the chat session. The same code arrives in the Telegram alert. Before replying, the person answering can match the WhatsApp chat to the assistant conversation that came before it.

Step 2: Count the tap before WhatsApp opens

People edit pre-filled text. Some delete it and type their own question. If the code is your only record, those leads vanish from the report.

So route the button through your own server first:

  1. The button points to something like /go/whatsapp?page=brakes.
  2. Your server writes a line: time, page, code, and the visitor's source if known.
  3. The server redirects to wa.me.

The visitor notices nothing. You now have a click log that survives an edited message. A chat that arrives at 14:32 with no code can be matched to a tap from the brakes page at 14:31.

Save the record first and send any notification second. On the Moon Mars site I built, requests are saved to a file and then sent to Telegram, with a limit on requests per IP address. A failed alert does not lose a lead, and a bot cannot flood the log.

If you also run GA4, fire an event on the same tap, for example whatsapp_click with the page as a parameter, and mark it as a key event. GA4 will then show taps by session source, so you can separate google / organic taps from social or direct ones.

Your Maps listing is the one organic Google surface where you set the link yourself. Add UTM parameters to the website link in your profile, for example:

https://yoursite.ae/?utm_source=google&utm_medium=organic&utm_campaign=gbp

Visits from the listing then show up separately from regular organic search in your analytics, and the WhatsApp taps that follow inherit that source. If you have several branches, give each listing its own utm_content value.

Profile setup and reviews are covered in the local SEO and Google Business Profile checklist. The UTM parameters entry explains each field.

Step 4: Read Search Console against your lead log

Once a month, open the Performance report in Google Search Console and export the Pages tab. Next to each page, put the number of WhatsApp leads with that page's code from your log.

Page Search clicks (GSC) WhatsApp taps (log) Chats with code Paid jobs
/brake-repair/ 410 38 21 9
/ac-repair/ 190 25 17 11
/ (home) 620 30 12 3

Hypothetical numbers, for structure only. Read the table row by row:

  • Many search clicks, few taps: the page has a weak offer or a hidden button.
  • Fewer clicks but more paid jobs: the page deserves more content and more internal links.

Then open the Queries tab for your best page and note which searches lead there. Those are the topics worth a second article.

Search Console counts clicks from Google Search only. GA4 counts sessions, and it misses visitors who block analytics or decline cookies. Expect the two columns to differ, and compare each tool with itself month to month.

Step 5: Close the loop in a sheet or CRM

Taps and chats are half the picture. The other half is which searches bring paying customers, and for that every lead needs a status that someone updates.

A simple sheet works with these columns: date, code, page, first message, status, amount. If you outgrow the sheet, a CRM does the same job with less typing.

In the Lucent Rental system I built, a booking moves through six statuses: new, contacted, confirmed, paid, active and completed. Site chat, WhatsApp and Telegram arrive in one inbox through webhooks. That system is built and ready; the client has not connected it to a public domain yet.

Whether WhatsApp messages should flow into a CRM automatically depends on volume. The article WhatsApp Business API: do you need it helps you decide.

What not to do

  • Rely on "How did you hear about us?" Customers answer "Google" whether they came from Maps, an ad, Search or a friend who googled for them. Use the answer to check your log, and keep the log as the record.
  • Use one WhatsApp link for the whole site. Every page then shows up as "website", and you cannot tell the service page from the blog.
  • Put long tracking strings in the message. "Hi [utm_source=google&page=/ac-repair/]" looks like spam and gets deleted. Two or three letters are enough.
  • Count taps as leads. People tap and close WhatsApp. Report taps, chats and paid jobs as three separate numbers.
  • Tag internal links with UTM. UTM tags on links inside your own site replace the real source (google / organic) with your own label. Tag only links that bring people from outside.
  • Let staff answer from personal numbers. If half the chats go to a manager's own phone, the codes never reach your log.
  • Judge SEO after two weeks. Pages take time to rank. Compare month to month, by page.

Questions to ask whoever builds your site

  1. Does every WhatsApp button carry a page code, and where is the list of codes?
  2. Is the tap logged on our server before the redirect, and can I download that log?
  3. Is there a GA4 event on WhatsApp taps, and is it marked as a key event?
  4. Does the Google Business Profile link carry UTM tags, one per branch?
  5. Is the Search Console property verified for the right domain, and do I have owner access?
  6. If the notification (Telegram, email) fails, is the lead still saved?
  7. Who updates the lead status, and where?

The answer to the second question might be "we use the analytics only". If so, ask what happens to leads from visitors who block analytics or decline cookies. A server log does not depend on the browser.

I save leads on the server before any alert, as on Moon Mars. More on that in website development.

Checklist

  1. List your SEO pages and give each a two- or three-letter code.
  2. Add the code to the pre-filled text of each page's WhatsApp button.
  3. Route each button through a server redirect that logs time, page and code.
  4. Save the record before sending any alert to Telegram or email.
  5. Add a GA4 event on the tap and mark it as a key event.
  6. Put UTM tags on your Google Business Profile website link, one value per branch.
  7. Tell everyone who answers WhatsApp what the codes mean and where to log them.
  8. Keep a lead sheet or CRM with status and amount for every chat.
  9. Once a month, export Search Console clicks by page and place them next to taps, chats and paid jobs.
  10. For the page with the most paid jobs, check its top queries in Search Console and plan the next article around them.

Questions and answers

Can I put UTM tags on my Google search results?

No. Organic results link to your page as Google shows it, so you cannot add tags there. You can tag the website link in your Google Business Profile, and you can tag every WhatsApp link on your own site.

Does Google Search Console show how many leads SEO brought?

No. Search Console shows impressions, clicks, queries and pages from Google Search. It never sees what happens after the click, so you join it with your own lead log by page.

What if the customer deletes the pre-filled text before sending?

Some will. That is why the click should also be logged on your server with a timestamp, so you can match the chat by time and page even without the code.

Do I need the WhatsApp Business API for this?

No. A wa.me link with pre-filled text and a server-side click log work with the regular WhatsApp Business app. The API helps when you want messages to land in a CRM automatically.