Skip to main content

Revenue Attribution

Joryio ties ecommerce orders back to the campaigns and journeys that drove them, so you can see the revenue each one generated. Revenue attribution is a special case of conversion attribution: revenue is simply the value of the purchases a message is credited with.

Attribution models

An attribution model decides which touch gets credit when a customer engaged more than once before buying:

ModelWho gets credit
Last touch (default)The most recent engagement before the order. A click always beats an open.
Last clickOnly a click can earn credit; opens never count.
First touchThe earliest engagement in the window.

Revenue and conversions on a campaign/journey page are computed under the same model, so they reconcile - the revenue is the value of the conversions the model credits.

Where the model is set

  • Workspace default - Settings → Revenue attribution: the default model and whether opens count (opens are weaker and noisier than clicks; on by default).
  • Per campaign / journey - each can override the model (and the window) in its Conversion Settings. So an app-install campaign and an order campaign can attribute differently.
  • Compare models - E-Commerce → Overview → Compare models shows net revenue by source under each model side by side, so you can see how the picture shifts, without changing anything.

Changing a setting applies to new orders immediately and re-credits existing orders in the background (or use Recompute now).

Click-through vs assisted

Every attributed order is earned in one of these ways:

HowMeaningConfidence
Click-through (Direct)The shopper clicked a tracked link in your message and bought (deterministic - the order carries Joryio's id).Strong
Assisted clickThe shopper clicked a message within the window before buying.Strong
Opened onlyThe shopper opened but did not click (counts only when count opens is on; shown in amber).Weak

Click-through only: some teams trust only the deterministic click-and-buy, excluding the windowed/assisted effect. That view is available as the Attribution → Click-through only filter on the Orders page, a toggle on the Overview attribution card, and the Direct figure on a campaign's analytics.

Why assisted (window) catches more than click-through

Window attribution keys on the person (their identity), not a cookie or device - real orders carry the customer's email - so a purchase is credited even when they bought without clicking, came back a day later, or clicked on one device and bought on another. Click-through is stricter: click, browse and buy all in one session with the link intact.

The attribution window

A touch only earns credit if it happened within the conversion window before the order. This comes from the campaign/journey's Conversion Settings; unset defaults to 7 days (168 hours). The same window drives conversion counts, so revenue and conversions share it.

Refunds

Every figure is net of refunds. Refund amounts sync from Shopify and WooCommerce (and a custom integration can send totalRefunded on the Orders API). A partial refund reduces the order's net revenue; a fully-refunded order contributes nothing to its campaign's credit.

Incremental revenue (uplift)

When a campaign has a control group (a held-back variant that receives no message), the analytics view also shows Incremental revenue and Uplift % - the revenue the campaign actually caused, measured against the control:

Incremental revenue = (treated revenue-per-recipient − control revenue-per-recipient) × treated recipients

This is the causal number - it strips out purchases the shopper would have made anyway, and can be negative (a genuine finding). See A/B testing for configuring a control group.

Where you see it

  • Orders - per-order attribution (which campaign/journey, how, and when), with the click-through filter. See the Orders guide.
  • E-Commerce Overview - the "Where revenue came from" card (campaigns / journeys / unattributed), Compare models, and the click-through toggle.
  • Campaigns - a Revenue section on the campaign analytics page: the model-aware attributed revenue (reconciling with conversions), orders, revenue per recipient, the Direct/Window breakdown, and (with a control group) uplift.
  • Journeys - a revenue pill in the journey analytics summary row, labeled with the model.

For the click-through path to fire, the links you send carry Joryio's identifiers so the resulting order can be traced back. Joryio appends them to every tracked link:

  • jr_cid / jr_jid - opaque, encrypted tokens that resolve to the campaign / journey on order sync. The real internal id is never exposed, and the tokens are tamper-proof (AES-256-GCM) so a forged value can't misattribute an order.
  • Standard utm_source / utm_medium / utm_campaign (and optional utm_content / utm_term) for your own analytics tools.

Control these under Settings → General → Link tagging (a workspace default), with an optional per-campaign override. Templates support the variables channel, campaign.name and campaign.id. Turning tagging off disables click-through attribution.

note

Click-through attribution requires the storefront to record the landing URL on the order (Shopify's landing_site; WooCommerce's Order Attribution; on Magento the Joryio Connect extension captures it). Assisted (window) attribution only needs the purchase to be identified (which real orders are, via email) and to fall inside the window - so it works even where the landing URL isn't captured.

Multi-currency

When a campaign's orders span more than one currency, totals are shown with a and marked approximate - Joryio does not silently convert currencies. Per-currency figures are exact; a single combined figure is a rough proxy until base-currency normalization is enabled.