> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.outpost.pub/llms.txt
> Use this file to discover all available pages before exploring further.

# Traffic Source Tracking

> Capture UTM and referral parameters as member labels to attribute signups to campaigns and channels.

When a new member signs up, Outpost automatically captures UTM parameters and referral values from the URL and applies them as member [labels](/features/labels). This lets you see exactly which campaigns, channels, and creatives are driving signups — directly in your member list and Ghost.

Attribution fires on any signup that flows through Outpost, including [Auto Display CTAs](/features/ctas), [paywalls](/features/paywalls), and [Gated Downloads](/features/gated-pdfs).

## Parameters captured

| URL parameter                    | Label applied      | Example                     |
| -------------------------------- | ------------------ | --------------------------- |
| `utm_source`, `source`, or `ref` | `source:[value]`   | `source:facebook`           |
| `utm_medium`                     | `medium:[value]`   | `medium:email`              |
| `utm_campaign`                   | `campaign:[value]` | `campaign:spring-sale-2026` |
| `utm_content`                    | `content:[value]`  | `content:hero-banner`       |
| `utm_term`                       | `term:[value]`     | `term:paid-subscribers`     |

Values are stored in the reader's browser session (`sessionStorage`, which lasts until the tab or browser is closed) and applied to their member record at the moment they sign up. If a reader visits from a UTM link, browses for a while, and then subscribes — the attribution is still captured. If they later arrive via a different UTM-tagged link in the same session, the newer values replace the older ones, so attribution reflects the last-clicked link.

## How it works

Outpost reads these parameters from the URL when a page loads and holds them in the browser session. When the reader submits any CTA form (In-Post, Popup, Slide-Up, Homepage, Metered Wall, or Gated Download), the stored values are sent along and applied as labels.

## Examples

**Newsletter campaign:**

```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
https://yoursite.com/welcome?utm_source=newsletter&utm_campaign=may-newsletter&utm_content=cta-button
```

Labels applied on signup: `source:newsletter`, `campaign:may-newsletter`, `content:cta-button`

***

**Social media post:**

```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
https://yoursite.com/big-story?utm_source=bluesky&utm_campaign=big-story-launch
```

Labels applied: `source:bluesky`, `campaign:big-story-launch`

***

**Referral link from another publication:**

```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
https://yoursite.com/?ref=newsletter-partner
```

Label applied: `source:newsletter-partner`

***

**Paid ad with full attribution:**

```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
https://yoursite.com/?utm_source=facebook&utm_campaign=fall-2026&utm_content=video-ad&utm_term=annual-subscribers
```

Labels applied: `source:facebook`, `campaign:fall-2026`, `content:video-ad`, `term:annual-subscribers`

***

**Outpost promotion link (automatically tracked):** Promotion URLs like `https://yoursite.com/promo/abc123` already have built-in Outpost tracking. You can append UTM parameters to add channel context on top:

```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
https://yoursite.com/promo/abc123?utm_source=podcast&utm_campaign=sponsorship-june
```

## Using attribution labels

Once applied, these labels work like any other Outpost label:

* **Filter your member list** — find all members who signed up from a specific campaign (`campaign:spring-sale-2026`)
* **Trigger email flows** — start a welcome sequence when `source:newsletter-partner` is added
* **Exclude from automations** — skip paid acquisition members from certain flows
* **Measure channel ROI** — compare free-to-paid conversion rates across sources using label-based segments

<Note>
  Parameters are captured on any page load where they appear in the URL, and newer values overwrite older ones within the same browser session (last-touch attribution). Labels are only applied at the moment of signup — they cannot be retroactively added to existing members unless you do so manually.
</Note>

## Related

<CardGroup cols={2}>
  <Card title="Labels" icon="tag" href="/features/labels">
    How member labels work and where they apply
  </Card>

  <Card title="Auto Display CTAs" icon="bullhorn" href="/features/ctas">
    The conversion widgets that trigger attribution on signup
  </Card>

  <Card title="CTA Dashboard" icon="chart-bar" href="/features/cta-dashboard">
    View signup and conversion analytics across all your CTAs
  </Card>

  <Card title="Analytics" icon="chart-line" href="/features/analytics">
    Trace signups and conversions back to campaigns and channels
  </Card>
</CardGroup>
