Two surfaces
| Surface | Used for | Endpoints |
|---|---|---|
| Campaign attribution | Per-event sales adjustments tied to specific campaigns. Lives on the Wave Campaign detail page. | /campaign_results/ |
| Backhaul attribution | Package-level evaluation: which clusters converted, at what rate. Lives on the Package Builder Results page. | /package_builder/packages/{id}/backhaul_evaluation* |
1. Campaign attribution
Read
Render
The reference webapp surfaces these on the Event/Campaign detail page in two places:- As the
manual_adjustmentsoverlay on the daily revenue chart (theDailyRevenueChartreads them from/daily_revenue_summary/’smanual_adjustmentsarray, which includes the same rows). - As individual rows in the “Attribution / adjustments” expandable panel.
Mutate (rarely)
The platform runs the underlying attribution job on its own schedule —
partners should not POST
campaign_results directly except to record a
manual adjustment that the user explicitly enters (e.g. “we sold 12 tickets
at the box office that the data feed missed”).2. Backhaul attribution (per package)
Configure
Each package can override the partner-level default attribution model.| Value | Meaning |
|---|---|
ALL_PURCHASES | Count any purchase by the customer in the window. |
EVENTS_FROM_PACKAGE | Only count purchases of events in this package. Default. |
EVENT_SERIES | Count purchases in the same event series. |
backhaul_evaluation_attribution_window is an integer (days) starting from
email_sent_date.
Read results
customers / items / purchase across clusters client-side for
header KPIs.
Partner-level defaults
email_sent_date. Set once
in your settings UI; each new package starts with these as defaults.
3. Lookout attribution model (per event)
Independent of Backhaul, each event has its own attribution-model selection that controls how the daily-revenue chart attributes sales:Reference implementation
Gotchas
Saving settings triggers re-evaluation server-side
Saving settings triggers re-evaluation server-side
There’s no separate “run evaluation” button. The PUT kicks off the job;
the GET on
backhaul_evaluation reflects the result once it completes.
The reference webapp uses an evaluationReloadKey counter to invalidate
— replace with your query cache’s invalidation.Partner-level default doesn't auto-apply to existing packages
Partner-level default doesn't auto-apply to existing packages
Changing the partner default only affects new packages. Existing
packages keep whatever settings were stored at their last PUT.
`email_sent_date` is optional but anchors the window
`email_sent_date` is optional but anchors the window
Omit it for partner-level defaults. For per-package, set it to the day
your partner sent the marketing communication; the window starts there.
Attribution jobs are platform-side, not partner-driven
Attribution jobs are platform-side, not partner-driven
Read
/campaign_results/ for the output. The platform runs the
underlying attribution job on its own schedule; there are no
partner-callable endpoints to trigger it.Related
- Attribution concept — the model semantics.
- Package Builder — where Backhaul lives.
- Lookout — Event detail — campaign_results display.