> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squid-id.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Campaign tracking

> Tag your links with UTMs so Squid ID shows which campaign drove each identified visitor, then filter and route by campaign. Close the loop between the emails you send and the accounts that actually show up.

Squid ID reads the UTM tags on the first URL a visitor lands on and keeps them on that person forever. So when you run an email or ads campaign, you can see which campaign brought each identified visitor, filter your list down to a campaign, and route campaign arrivals straight to your team. It works with standard `utm_` tags and with the bare `source=` some email tools add.

Campaign attribution is first-touch: the tags on the URL that started the session, not whatever page they are on now. Squid ID captures it once and shows it on the [visitor profile](/finding-visitors/visitor-profile), so a later navigation never overwrites how they arrived.

## If you're coming from RB2B

RB2B surfaces a referrer and a coarse source. Squid ID keeps the full first-touch campaign and lets you both filter and route on it.

<div className="compare">
  <table>
    <thead>
      <tr><th /><th>RB2B</th><th>Squid ID</th></tr>
    </thead>

    <tbody>
      <tr><td>Campaign capture</td><td>Source / referrer</td><td>First-touch utm\_source, utm\_medium, and utm\_campaign, shown per visitor</td></tr>
      <tr><td>Filter by campaign</td><td>Limited</td><td>Saved filter on campaign source, campaign name, or landing URL</td></tr>
      <tr><td>Route by campaign</td><td>Limited</td><td>Add the campaign as an ICP rule, so an arrival flames and notifies your team</td></tr>
    </tbody>
  </table>
</div>

<p className="why"><strong>Why this matters.</strong> Opens and clicks tell you a campaign got attention. Squid ID tells you which named accounts it actually brought to your site, and lets you act on them the moment they arrive. That closes the loop between the campaign you sent and the pipeline it created.</p>

## Tag your links

Add UTM parameters to the links in your campaign. The standard set:

```
https://yoursite.com/?utm_source=instantly&utm_medium=email&utm_campaign=spring-outbound
```

* **utm\_source** is who sent them (for example `instantly`, `linkedin`, `google`). This is the one to filter and route on.
* **utm\_medium** is the channel (`email`, `cpc`, `social`). Squid ID uses it to set the acquisition [Source](/finding-visitors/identified-visitors) pill, so `utm_medium=email` shows the visitor as **Email** instead of Direct.
* **utm\_campaign** is the specific campaign name.

<Info>A bare `?source=instantly` (no `utm_` prefix) works too. Squid ID reads `utm_source` first and falls back to the bare param, so links from tools that don't use the `utm_` prefix still attribute correctly.</Info>

## See it on a visitor

Open any identified visitor. The acquisition line shows the resolved **Source** (the campaign source when tagged, for example "Instantly", otherwise the inferred channel), the **Landing** URL with its query string intact, and a row for each UTM that was present (medium, campaign, term, content).

## Filter your list by campaign

Use the **Filter** button on the [Visitors](/finding-visitors/identified-visitors) list, open the **Audience** tab, and set any of:

* **Campaign source (UTM)**: matches `utm_source` or a bare `source=`. Comma-separate to match several (for example `instantly, linkedin`).
* **Campaign name (UTM)**: matches `utm_campaign`.
* **Landing URL contains**: matches any substring of the raw landing URL, a catch-all for custom or opaque params.

Give the filter an emoji tag and **Save as permanent** to get a reusable tab with a live count, so "everyone from the spring campaign" is one click away.

## Route campaign arrivals to your team

To do more than tag them, make the campaign an [ICP](/finding-visitors/icp-filtering) rule. In the ICP editor's **Behavior** tab, set **Campaign source (UTM)** (and optionally **Campaign name**). Now an arrival from that campaign gets a hot-lead flame in the dashboard and fires your [Slack](/routing/route-to-slack), Teams, or HubSpot routing, so a warm campaign lead reaches a rep in real time instead of waiting for a report.

<Steps>
  <Step title="Tag your campaign links">
    Add `utm_source`, `utm_medium`, and `utm_campaign` to every link in the campaign.
  </Step>

  <Step title="Save a filter (to watch them)">
    Filter, Audience tab, Campaign source. Save it as a permanent tab.
  </Step>

  <Step title="Add an ICP (to route them)">
    ICP editor, Behavior tab, Campaign source. Pair it with routing so arrivals notify your team.
  </Step>
</Steps>

<Warning>Attribution is first-touch and needs the tags on the landing URL. Untagged traffic, or a visitor who first arrived before you started tagging, has no campaign to match. Tag consistently across a campaign for clean reporting.</Warning>

## Related

* [Identified visitors](/finding-visitors/identified-visitors)
* [ICP filtering](/finding-visitors/icp-filtering)
* [Visitor profile](/finding-visitors/visitor-profile)
* [Route to Slack](/routing/route-to-slack)
* [Instantly](/integrations/instantly)
