On this page
- Before you start
- Steps
- What you will see
- How does a tracked link actually work, and what protects a recipient's privacy?
- What counts as a click, and what is deliberately excluded?
- How does a WhatsApp quick-reply button's click end up in the same count as a link tap?
- Settings and options
- Troubleshooting
- Related reading

Click tracking gives every recipient of a broadcast their own signed, private link that redirects to your chosen destination, so a click can be attributed to exactly one recipient of one campaign without exposing any of their data in the URL. This article covers how to set it up, how a click is counted, and what is deliberately excluded from the count.
Click tracking
- 1Enter the destination URL on the Message
- 2Map a template variable to "Tracked link."
- 3Send the campaign as normal
- 4Check click activity on the campaign detail
- 5Act on clickers
Before you start
- You need a template with either a variable in a website URL button, or a body variable you plan to map to "Tracked link."
- Decide the destination page before building the campaign; it applies to the whole campaign and cannot be set per recipient.
- No special plan or permission is required beyond the standard broadcast permissions; click tracking runs on every plan.
Steps
- Enter the destination URL on the Message step. Under Track clicks to, type the page you want recipients to land on, for example
https://example.com/offer.

Map a template variable to "Tracked link." In the Personalization panel, find the variable that should carry the link (a body variable, or the variable inside a URL button) and set its source to Tracked link. It only appears as an option once the destination URL field has a value.
Send the campaign as normal. No further setup is required; each recipient's message is built with their own unique tracked link, resolved automatically at send time.
Check click activity on the campaign detail page. A Clicked stat tile appears once at least one click is recorded, showing the count and rate against sent recipients. The Clicked filter tab on the recipient table shows exactly who has clicked.
Act on clickers. Once the campaign has recorded clicks, use Retarget, Tag clickers on the action bar to build a follow-up audience from exactly this highest-intent group. See retry failed vs retarget.
What you will see
Recipients who click show up under the Clicked filter tab and contribute to the Clicked stat tile's count and percentage. The underlying link a recipient sees in WhatsApp is a VGraple CRM redirect URL containing an opaque token, not your destination URL directly; tapping it redirects them to your real destination immediately and invisibly.
How does a tracked link actually work, and what protects a recipient's privacy?
Each recipient of a campaign that uses click tracking gets a unique token built from their broadcast-recipient row id and a cryptographic signature, so the link resolves to exactly one recipient of one campaign and nothing else. No contact data, name, phone, or email, ever appears in the URL itself; the token is opaque and meaningless without the server-side signature check. If anyone tries to guess or edit a token, the signature check fails using a constant-time comparison (so even the time the check takes cannot leak information about a valid signature), and the link simply does not resolve, rather than falling through to a default page.
The destination itself is fixed at the moment you compose the campaign and stored against the campaign, not the individual link, so there is no way for the link to be redirected somewhere else after the message has already been sent. Only the first click from each recipient counts toward the campaign's click total, specifically so a person opening the same link multiple times cannot push the click rate past 100% of accepted sends, a number that would undermine trust in every other statistic on the page the moment someone noticed it.
What counts as a click, and what is deliberately excluded?
A click is counted from three sources: a person tapping the tracked redirect link, a person pressing a WhatsApp quick-reply button on a template that has one, and Meta's own click webhooks from the Marketing Messages API. All three merge into the same underlying record, so the Clicked count and rate reflect real interaction regardless of which mechanism the template used.
Automated traffic is explicitly excluded. WhatsApp itself, along with most messaging apps and many browsers, automatically fetches a link before a human ever taps it, in order to generate a preview card. Link scanners, security crawlers and bot user agents do the same. VGraple CRM recognizes this traffic by its user agent and does not count it, so a campaign's click rate reflects people who actually chose to open the link, not the automated fetch that happens the instant the message arrives.
How does a WhatsApp quick-reply button's click end up in the same count as a link tap?
A template can offer a recipient two very different ways to act on a broadcast: tapping a variable website link, or pressing a quick-reply button that stays entirely inside WhatsApp. Both are genuine expressions of interest, so VGraple CRM merges both into the same underlying click record rather than tracking them as two separate, disconnected metrics that a marketer would have to add up by hand. Meta's own click webhooks from the Marketing Messages API, when that endpoint is in use, feed into the identical store as well, so switching between a standard send and optimised marketing delivery does not change how clicks are counted or where they show up. The result is one Clicked stat tile and one Clicked filter tab that always reflect the full picture of who engaged, regardless of which specific mechanism the template offered them.
Settings and options
| Setting | What it does | Notes |
|---|---|---|
| Track clicks to | The destination URL every recipient's tracked link redirects to | Set once for the whole campaign |
| Tracked link (variable source) | Maps a template variable to a per-recipient signed link | Available in the Personalization panel once a destination URL is set |
| Clicked stat tile | Shows total distinct clickers and click rate against sent | Appears once at least one click is recorded |
| Tag clickers (Retarget) | Builds a tag from everyone who clicked | Only shown once the campaign has recorded at least one click |
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| No "Tracked link" option in the variable source dropdown | The "Track clicks to" URL field is empty | Enter a destination URL first; the option appears once it has a value |
| Click count seems lower than expected engagement | Automated previews and bot traffic are deliberately excluded, and repeat clicks from one recipient only count once | Expected behavior; the number reflects distinct human clicks, not raw link fetches |
| Clicked filter tab is missing entirely | The campaign has recorded zero clicks so far, or click tracking was not set up for this template | Check that a Tracked link variable was actually mapped when the campaign was built |
| Tag clickers option missing from Retarget | Same as above, zero clicks recorded yet for this campaign | Wait for clicks to come in, or confirm click tracking was configured before sending |
| A URL button with a fixed link (no variable) shows no tracking | Only variable URL buttons and body variables mapped to Tracked link can carry a per-recipient token | Use a template with a variable in the button link, or track via a body variable instead |
Related reading
Pair click tracking with seeing revenue per broadcast to connect a click all the way through to a sale, and see mapping template variables and fallbacks for the full mechanics of the Personalization panel this setting lives in.