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:
| Model | Who gets credit |
|---|---|
| Last touch (default) | The most recent engagement before the order. A click always beats an open. |
| Last click | Only a click can earn credit; opens never count. |
| First touch | The 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:
| How | Meaning | Confidence |
|---|---|---|
| Click-through (Direct) | The shopper clicked a tracked link in your message and bought (deterministic - the order carries Joryio's id). | Strong |
| Assisted click | The shopper clicked a message within the window before buying. | Strong |
| Opened only | The 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.
How click-through (Direct) is wired (link tagging)
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 optionalutm_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.
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.