salesascode
← All feature docs
Feature docs · /attribution

Revenue Attribution

Per-channel sourced pipeline, influenced pipeline, and closed revenue, joined from the touches on your opportunities, across four attribution models.

Included with crocronjob . A seat without it sees an upsell here instead of the page.

Overview

Revenue Attribution answers the question every GTM channel is measured on: how much pipeline did it source, how much did it influence, and how much revenue did it earn. It joins the chain from signal to touch to pipeline to revenue over your opportunities and reports the credit per channel, so a leader can see which motions actually pay and the efficiency scorecard has an honest input.

What it is for, on the page. Under the headline, this page says what it produces, what makes it run, and where the output lands. Every Work page reads that line from one registry, so the three answers cannot drift from the page.

Sourced vs influenced

Sourced pipeline is credited to the channel of an opportunity's first touch: the motion that opened the door. Influenced pipeline is credited to every channel that touched the opportunity at all. A lost deal earns no pipeline, because it is not future revenue; only open and won deals count toward pipeline. This separation is the split channel teams argue about, made explicit and deterministic.

First-touch vs multi-touch revenue

Closed-won revenue is reported under two models, side by side, so neither hides the other. First-touch gives the whole amount to the channel that sourced the deal. Even multi-touch splits the amount equally across the distinct channels that touched it. Both are deterministic: the same opportunities and touches always produce the same numbers, so the attribution holds up in a board review. The board ranks channels by multi-touch revenue.

Where the data comes from

Attribution reads your opportunities and the touches recorded on them (each a channel and a date) from your connected CRM and stored records. If you have not recorded touches yet, the board is empty rather than guessing a channel. The more complete the touch history, the sharper the attribution, but the model never invents a touch that is not there.

Time-decay and W-shaped

Two more models sit below the first-touch and multi-touch tables, the two a revenue team actually argues over. Time-decay weights each touch geometrically toward the win, so the latest touch earns twice the one before it and the credit splits proportionally. W-shaped gives the first and last touch 30% each and splits the remaining 40% across the middle, collapsing sensibly when a deal has only one or two channels. Seeing all four next to each other tells you whether a channel opens deals, closes them, or nurtures them.

These shipped as a separate page called Attribution v2 and were folded in here on 2026-09-10. They were never a different job: both pages attributed your own book, and splitting four models across two nav rows meant reading half the answer on each.

Wired into efficiency

From the W-shaped revenue the page derives channel diversification, one minus the concentration of revenue across channels, and folds it into a v2 GTM-efficiency composite as a real, weighted input. A concentrated channel mix is a risk a board should see next to the efficiency band, so if all your revenue comes through one channel, that score reflects the fragility. The shipped efficiency score is left untouched; the v2 composite is a separate, explicit view.

Modelling a what-if

Leave the opportunity box empty and it attributes your stored opportunities rather than asking you to paste a book the server already holds. Paste opps instead to model a what-if, and the paste wins. The result line says which of the two it used, because "nothing attributed" from a paste and from an empty account are different problems with the same number.

Attribution needs touches, and CRM import does not bring them. A stored opportunity carries its stage and its amount; it does not carry a channel-and-date history, because no connector supplies one. So on a freshly imported book this reads your opps and finds no channels, and it says exactly that rather than reporting an empty result: it names how many opps it read and what they were missing. Record touches on an opportunity, or paste a book here, and the models have something to work with.

Deterministic

All four models and the efficiency wiring are deterministic: the same opportunities and touches always produce the same attribution and the same diversification, so the numbers hold up in a planning or board review.

Booked vs collected

Every revenue figure on this page, and the "Closed won" cell on Home, is booked: what a seller marked closed-won on an opportunity. It is not the same claim as collected: what a customer actually paid. A deal can close and the invoice can still go unpaid, and a booked number alone hides that gap. Home's "Collected" cell answers the collected question directly, summed from paid invoices in your own connected Stripe account for the same quarter, never a number this platform holds about itself.

Content Studio's per-piece revenue (on /studio and /watch) is collected too, not booked: it follows a UTM-tagged signup through to what they actually paid, the same tenant Stripe connection, so a piece's credited revenue and Home's Collected cell are never two different sources of truth about the same money.

Requires your own Stripe

Every collected-revenue figure on this page and on Home reads your own connected Stripe account (Settings, Connect), a restricted read-only key you create and can revoke, never a key this platform holds for itself. Without it connected, Home's Collected cell reads not connected and a piece's attributed revenue is left unmeasured on the record rather than written as a $0 that would look like a real answer. Connect Stripe once and every collected figure across Home, Content Studio, and this page starts reading real numbers on the next scheduled pass.