Tag calls with their marketing attribution
Carry the marketing source behind a tracked visit onto the call itself, using pool tags and conditional tag rules, so campaign performance is readable in call reporting.
A tracked visit knows where it came from. A call record, on its own, does not. Tags are the bridge: you decide which marketing details deserve a label, and every call that arrives through a tracking number picks up those labels automatically — so the call log, its filters, and its exports can be read by campaign instead of by phone number.
Two panels on Settings > Phone Numbers > Dynamic Numbers do this work. Pool Tags labels every call the pool handles. Tag Rules labels calls conditionally, based on what the visit’s marketing details actually said.
Prerequisites
- An active tracking pool with numbers in it, and the snippet installed. See Configure dynamic number insertion.
- The tags you want to apply, already created under Settings > Call Analysis > Tags. A tag has to exist before a pool or rule can point at it, and a tag set to Inactive is never applied to new calls.
- A role that can manage call data — the same access that lets you create and edit tags. New rule is offered to anyone who can open the page, but saving is refused without that access.
How a visit’s source is decided
Before any rule runs, each visit is reduced to a marketing source and a marketing medium. The first rule below that fits wins:
| The visit arrived with | Source | Medium |
|---|---|---|
| A Google Ads click identifier | google |
cpc |
| A Meta click identifier | facebook |
paid_social |
| A Microsoft Ads click identifier | bing |
cpc |
utm_source in the page URL |
the utm_source value |
the utm_medium value, or (none) |
| A referring link from a known search engine | the engine name | organic |
| Any other referring link | the referring site’s host | referral |
| Nothing identifying | (direct) |
(none) |
Google, Bing, Yahoo, DuckDuckGo, Baidu, Yandex, and Ecosia are recognized as search engines.
A click identifier outranks campaign parameters, so an ad click reports as paid even when the landing page URL also carries UTM values. The raw UTM values are still recorded and can still be matched by a rule — the derived source and medium are a summary, not a replacement.
Tag every call the pool handles
Use Pool Tags for a label that is true of the whole channel, such as Website or
Call Tracking.
- Choose a tag in Add a default tag… and select Add.
- The tag appears as a chip. Remove it with the ✕ on the chip.
Pool tags apply to calls that arrive on a pool number and can be tied back to the pool. They are not conditional — nothing about the visit is inspected.
Create a tag rule
Use Tag Rules when the label depends on the campaign: Google Ads, Spring Promo,
Facebook Lead.
- Select New rule.
- Choose the attribution field to test.
- Choose the condition, and enter the value it should match.
- Choose the tag to apply.
- Set a priority and save.
Edit or delete a rule from its row. Deleting asks for confirmation and takes effect on calls from that point forward.
Fields you can match on
| Field | What it holds |
|---|---|
| Marketing source | The derived source from the table above |
| Marketing medium | The derived medium from the table above |
| UTM source | The raw utm_source value from the visit’s URL |
| UTM medium | The raw utm_medium value |
| UTM campaign | The raw utm_campaign value |
| UTM term | The raw utm_term value |
| UTM content | The raw utm_content value |
| Google click ID | The click identifier Google Ads appends |
| Meta click ID | The click identifier Meta ads append |
Microsoft Ads clicks have no field of their own — match Marketing source equal to bing
instead.
Conditions
| Condition | Matches when |
|---|---|
| equals | The field is exactly the value |
| contains | The value appears anywhere in the field |
| starts with | The field begins with the value |
| is present | The field has any value at all — the value box disappears for this |
Matching ignores letter case, so Google and google behave the same on both sides.
How several rules interact
Rules are listed highest priority first and are evaluated in that order, but priority does not stop the rest from being considered: every rule whose condition matches contributes its tag. Two rules pointing at the same tag put it on the call once. Use priority to keep a long list readable and ordered by importance, not as an exclusive if-else.
Pool tags and rule tags combine, as do tags attached to the number, extension, call group, or assistant the call reached. A call carries each distinct tag once.
When tags land, and on which calls
Tags are attached as the call arrives, from the rules and pool tags in force at that moment. Changing a rule, adding a pool tag, or retiring a tag affects calls from then on and never rewrites calls already recorded — which is what makes historical reporting stable, and why a rule added today will not explain last week’s numbers.
A call is tied to a visit through the tracking number the visitor was shown. If a caller who was tracked earlier calls a pool number again after their session has ended, the system falls back to the marketing details of their most recent tracked call. When neither applies — an expired session and no earlier tracked call from that number — the call arrives with no pool or rule tags.
Where the results show up
- Call Log shows a tags column and filters by tag, so a campaign becomes a one-click segment, and exports carry each call’s tags. Tags keep the name and color they had when the call happened.
- Recent Sessions & Attributes on the Dynamic Numbers page shows the visit side of the same story: source, medium, campaign, and the number the visitor was shown.
- Top Traffic Sources ranks the sources of visits that turned into calls.
- The Insights pages inherit whatever your tags make filterable, so a consistent tag vocabulary is what makes campaign comparisons possible there.
Expected result
A call from a tracked visit arrives in Call Log carrying the pool’s default tags plus a tag for every rule its marketing details matched, and filtering the call log by that tag returns the calls that campaign produced.
Troubleshooting
- New rule will not save: Saving a rule needs a role that can manage call data. The button is visible to read-only users, but the save is refused.
- A rule matches nothing: Check the field. A campaign link that sets
utm_campaigndoes not populate UTM source, and a derived Marketing source ofgoogleis not the same string as autm_sourceofGoogle Ads. Confirm what real visits carry under Recent Sessions & Attributes first, then write the rule against that. - The tag picker is empty: No tags exist on this phone system yet. Create them on the Tags page first.
- A tag stopped appearing on new calls: The tag may have been set to Inactive. Inactive tags stay on calls that already carry them but are never applied again.
- A tracked call has no tags at all: The call could not be tied back to a visit — most often a session that had already expired, a caller with no earlier tracked call, or a number that was removed from the pool. Calls to the fallback number are never attributed.
- Older calls did not pick up a new rule: Tagging happens when a call arrives. Rules are not applied retroactively.