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

# Attribution analytics

> First-touch acquisition, per-event UTM breakdowns, a pageview-to-lead conversion funnel, and conversions by source, campaign, and landing page — so you can see what actually brings in leads.

Attribution analytics answers the question every aggregate dashboard dodges: **what actually brought this person in, and did it lead to a conversion?** Because Sapt resolves visitors to [people](/docs/mintlify/analytics/visitors), it can carry the source that acquired someone all the way through to the lead they become.

## First-touch acquisition

The acquisition report groups your **visitors, sessions, and pageviews** by the source / medium / campaign that *originally* acquired each visitor — not the source of their latest visit. That's what tells you which channels genuinely create new audience versus which ones just collect people who were coming back anyway.

| Dimension    | Example                                        |
| ------------ | ---------------------------------------------- |
| **Source**   | `google`, `facebook`, `newsletter`, `(direct)` |
| **Medium**   | `organic`, `cpc`, `email`, `referral`          |
| **Campaign** | `spring-sale`, `retargeting-q2`                |

<Note>
  **First-touch is immutable; last-touch refreshes.** The first source/medium/campaign a visitor ever arrives on is recorded once and never overwritten — it's the credit for *acquiring* them. Their last-touch is updated on every new session, so you can still see what most recently re-engaged them.
</Note>

## UTM breakdown

The per-event UTM breakdown rolls up `utm_source`, `utm_medium`, `utm_campaign`, `utm_term`, and `utm_content` across your events, so you can audit campaign tagging and compare how individual UTMs perform — down to the event, not just the session.

## Conversion funnel

The funnel shows how visitors progress through the stages that matter, and where they drop:

```
pageview  ──▶  engaged  ──▶  form_submit  ──▶  lead
```

* **pageview** — anyone who landed.
* **engaged** — visitors with real, active time on the page (not a bounce).
* **form\_submit** — visitors who submitted a tracked form.
* **lead** — submissions that became a lead in your CRM.

Each step reports its count and its conversion rate from the previous step, so a leak (e.g. lots of engaged visitors but few form submits) is obvious at a glance.

## Conversions by source, campaign & landing page

Where the acquisition report counts *people*, the conversions report counts *outcomes* — broken down by:

* **Source / campaign** — which channels and campaigns produce leads and purchases, not just traffic.
* **Landing page** — which entry pages convert, so you can double down on the ones that earn.

## Lead time-to-conversion

For every conversion, Sapt knows the visitor's first touch, so it can report **how long it took** from first visit to becoming a lead. A short lead time points to high-intent channels; a long one tells you which sources need nurturing before they pay off.

## Do it from an agent

The same reports are available to AI agents through the [Attribution MCP](/docs/mintlify/analytics/attribution-mcp):

* `getAcquisition` — first-touch acquisition
* `getUtmBreakdown` — per-event UTM rollups
* `getConversionFunnel` — the pageview → lead funnel
* `getConversions` — conversions by source, campaign, and landing page
* `getLeadTime` — lead time-to-conversion
* `getTraffic` — overall traffic

## Keep going

<CardGroup cols={2}>
  <Card title="Visitors & identity" href="/docs/mintlify/analytics/visitors" description="The people behind the attribution numbers." />

  <Card title="Server-side conversions" href="/docs/mintlify/analytics/conversions" description="Send the conversions you measure back to Meta and Google." />

  <Card title="Attribution MCP" href="/docs/mintlify/analytics/attribution-mcp" description="Query every report here from an AI agent." />
</CardGroup>
