Pick a multi-touch attribution model
A converting contact usually crosses several channels before the conversion — an email nurture, an SMS offer, a push reminder. The multi-touch attribution report answers how credit for a conversion is split across the touchpoints that preceded it, so you can compare channels and campaigns on the same footing instead of exporting your CDP event stream into an external tool. This guide covers choosing a model, running the report from the dashboard or the API, and reading the two rollups (by channel, by campaign). For full request/response schemas, see the CDP analytics API reference.The report surface
In the dashboard, open Insights → Attribution. Pick a conversion event (for examplepurchased, booked_demo, or subscribed), a lookback window, and an attribution model, then run the report. The pipeline joins every conversion in the (optional) time window to the touchpoints recorded within its lookback, then allocates exactly one conversion-credit across those touchpoints under your chosen model and rolls it up per channel and per campaign.
Every model normalises so each conversion contributes exactly 1.0 of credit — the channel and campaign rollups always reconcile to the conversion count, so switching models re-weights answer, never the sample.
The models
Choose the model that matches how you think about influence — the underlying set of conversions does not change; only the credit split re-weights.
Running it over the API
POST /api/v1/cdp/analytics/attribution. Only owner / admin / developer keys with the contacts:read scope can run it (it reads the PII-adjacent event stream).
Reading the report
The response returnscredit_by_channel[] and credit_by_campaign[], each row carrying credit, conversions, and credit_share (the fraction of total credit), so a channel-level view and a campaign-level view come back in one round-trip. attributed_conversions and unattributed_conversions tell you how many conversions had no touchpoint inside their lookback (those still count toward total_conversions).
If a very touch-heavy window exceeds the read cap, the response flags touch_rows_capped: true and the report becomes a lower bound — re-run with a tighter window or narrower touchpoint_events to raise the ceiling.
Choosing a window and model together
A shortlookback_days with last_touch is the standard “closer” report. A long lookback_days with first_touch or linear surfaces awareness. time_decay pairs well with a long lookback because it still rewards the earliest touches while skewing toward the close. If you are comparing channels on a level field, prefer linear; if you are deciding where to add budget, last_touch under-credits upper-funnel channels — read both so you do not defund your introductions.