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

# Conversions and attribution across channels — the overview

> One map for the conversion-goal surfaces: how attribution models and lookback windows work, which goals dashboard answers which question, how to export and reconcile conversion data, and where the deep guides and API references plug in.

# Conversions and attribution across channels

Conversion work in Orbit spans several surfaces that all read the same recorded signals. This overview ties them together so you can pick the right surface for the question in front of you — a single goal's drill-down, a whole-program channel split, campaign-level economics, or the funnel through-flow. It is the map; the depth lives in the linked guides.

## 1. How conversions are attributed

A conversion is a recorded event tied (optionally) to a contact, with a timestamp and an optional monetary value. You define which events count by creating a **conversion goal** (Insights → Goals), a journey goal (on a campaign's journey), or by naming a conversion event in an ad-hoc attribution report. From there, every attribution surface applies the same grammar of two choices:

* **The model** — `first_touch`, `last_touch`, `linear`, `time_decay`, and (where supported) a position-based `custom` split. The model decides how each conversion's credit or value spreads across the touches the contact had. It re-weights the answer, never the sample — switching models on saved-off totals never changes which conversions exist.
* **The lookback window** — how far back from each conversion a touch counts. Goals carry a 1–180 day window on their definition; ad-hoc reports parameterize it per run (up to a year on the multi-touch endpoints). A window that is too tight shows up as unattributed revenue; one that is too wide over a high send cadence can truncate the per-conversion join.

Conversions recorded with no contact id, or with no in-window touchpoints, surface as **unattributed** counters rather than being silently dropped — treat that share as a signal about your tracking coverage, not noise. Orbit attributes touches over your own sending channels (messages, AI-agent conversations); it never invents a touch to explain a conversion.

## 2. Reading the conversion-goals dashboards

"Which of the goal-shaped surfaces answers my question?" is the first fork. They all join recorded conversions to touches; they differ in the join key and the reporting shape.

| Surface                                                            | Join key                                                | Question it answers                                                           |
| ------------------------------------------------------------------ | ------------------------------------------------------- | ----------------------------------------------------------------------------- |
| **Insights → Goals** (conversion goals on CDP events)              | message, campaign, and AI-agent touches per goal        | "Which messages, campaigns, and agents drove this named outcome?"             |
| **Journey conversion goals** (set on a campaign's journey)         | the campaign's own sends, one outcome event per journey | "How far did this campaign's recipients move toward its one defined outcome?" |
| **Insights → Attribution** (multi-touch over the CDP event stream) | arbitrary event names, channel and campaign rollups     | "How is credit split across channels and campaigns for a whole program?"      |
| **Click-to-chat attribution funnel** (ads)                         | the ad that opened the chat, first-touch                | "Which ads acquired customers, and what did they return?"                     |
| **Outbound → Goals** (approvals)                                   | approvals gate, not attribution                         | "May this campaign send?" — governance, not reporting.                        |

The [conversion goals guide](/guides/conversion-goals-attribution) is the deep walk-through of the first row — goal creation, the four goal models, firing by pixel, webhook, or direct record, and role gating. Journey goals feed per-step conversion into the campaign's [ROAS and revenue attribution view](/guides/campaign-roas-attribution). The program-wide channel and campaign split is covered in [multi-touch attribution](/guides/multi-touch-attribution), and the click-to-chat funnel reading is in [read the click-to-chat attribution funnel](/guides/attribution-funnel-changelog). If a conversion goal feeds AI-agent traffic, [agent ROI attribution](/guides/agent-roi-attribution) reads the agent-attributed revenue.

Inside a goal's detail page, the window selector scopes every statistic to trailing 7–90 days, and the attribution panels (top messages, campaigns, agents) plus the recent-conversions table are the drill-down that tells you *who* drove the number — not just how many.

## 3. Exporting and reconciling conversion data

Three export paths cover the reporting needs, ordered by shape:

* **Campaign-level bulk export.** `GET /campaigns/roi-summary` returns Cost / Revenue / Conversions / ROI for up to 200 campaigns in one bounded call — the endpoint behind the Insights → Reports **Campaign ROI** card. Use it for flat report rows; never fan the per-campaign attribution endpoints out in a loop. The [campaign ROI bulk export guide](/guides/campaign-roi-summary-export) maps API fields to CSV columns.
* **Per-conversion row audit.** The goal detail page's recent-conversions table and the analytics record endpoints give row-level conversions with the attributed message / campaign / agent each joined to — the reconciliation surface when a rollup looks wrong.
* **Direct-attribution aggregates.** Bulk exports and report cards compute direct-attribution aggregates; multi-touch detail endpoints compute allocated credit. They answer different questions by design, so reconcile spend-side figures (which come from the send-cost ledger) across surfaces, and reconcile revenue-side figures within one attribution model at a time.

The goal-attribution join is bounded (at most 100 touchpoints per conversion are considered; ad-hoc reports carry an explicit read cap they surface), so a reconciliation mismatch is usually a window or a tracking-coverage issue, not a dropped row. When you own the numbers end to end, the [CDP event model](/concepts/cdp-event-model) vocabulary is what the goal matcher and the attribution reports read.

## 4. Where the deep guides and references plug in

* [Conversion goals (Insights → Goals)](/guides/conversion-goals-attribution) — the one deep guide this overview positions: goals from end to end.
* [Multi-touch attribution](/guides/multi-touch-attribution) — channel and campaign credit across the whole program.
* [Campaign ROAS and revenue attribution](/guides/campaign-roas-attribution) — per-campaign economics, including the campaign attribution-funnel view.
* [Read the click-to-chat attribution funnel](/guides/attribution-funnel-changelog) — ad-entry attribution for click-to-chat traffic.
* [Agent ROI attribution](/guides/agent-roi-attribution) — goal-attributed revenue read back per AI agent.
* [Campaign ROI bulk export](/guides/campaign-roi-summary-export) — the export path for flat campaign rows.
* [CDP event model](/concepts/cdp-event-model) — the event vocabulary every conversion surface matches against.
* The API endpoints behind these surfaces live in the [analytics](/api-reference/endpoints/analytics), [insights](/api-reference/endpoints/insights), [CDP](/api-reference/cdp), and [campaigns](/api-reference/endpoints/campaigns) references — as the dashboard side of the surfaces above, so you can mirror every read from your own tooling.
