Skip to main content

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. The conversion goals guide 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. The program-wide channel and campaign split is covered in multi-touch attribution, and the click-to-chat funnel reading is in read the click-to-chat attribution funnel. If a conversion goal feeds AI-agent traffic, 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 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 vocabulary is what the goal matcher and the attribution reports read.

4. Where the deep guides and references plug in