Enscale Docs
Growth

Revenue attribution

See what your messaging actually earned — direct, assisted, estimated, and saved revenue.

The Revenue page answers the question every messaging tool should be able to answer: did this make money?

Enscale attributes revenue to the message that influenced it, and is explicit about how confident that attribution is.

Attribution types

TypeMeaningConfidence
DirectThe customer clicked a link in your message and bought in that session.Highest
AssistedYour message touched the customer before they bought, but wasn't the last click.Medium
EstimatedModelled influence where a direct link can't be established.Lowest
SavingsCost avoided rather than revenue earned.Different metric

Report Direct separately from Estimated. They're different claims. Direct revenue is a click you can trace; estimated revenue is a model. Combining them into one headline number is how messaging tools end up claiming credit for revenue that would have happened anyway.

Attribution sources

SourceAttributed when
Abandoned checkoutA recovery message preceded the purchase.
BroadcastA campaign preceded the purchase.
WorkflowAn automated message preceded the purchase.
AI chatAn AI conversation preceded the purchase.
Review widgetA storefront review influenced the purchase.
Coupon popupA popup signup preceded the purchase.
Support savingsSupport handled without a human.
ManualYou attributed it yourself.

Getting accurate attribution

Direct attribution depends on links being tagged. Two rules:

Don't paste raw URLs into messages. The Format link node adds UTM parameters and shortens the URL, and it's what makes a click traceable back to the specific message that carried it.

Defaults are utm_source=whatsapp and utm_medium=automation. Set utm_campaign per flow so you can tell your recovery flow from your review request.

A raw URL in a message produces untracked traffic, which lands in Estimated at best.

Connect ad-click triggers

The three ad-click triggers — WhatsApp Ad Click (CTWA), Instagram Ad Click, Facebook Ad Click (CTM) — tell Enscale which conversations came from paid ads. That connects ad spend to conversations to orders.

Ad tracking requires a paid plan.

Meta Conversions API

For contacts with an active ad attribution, Enscale forwards purchase events back to Meta through the Conversions API — Purchase, InitiateCheckout, OrderShipped, OrderDelivered, and OrderCanceled.

This closes the loop for Meta's ad optimisation: Meta learns which ad clicks became orders, which makes its targeting better.

Events are only sent for contacts with a live ad attribution. Customers who found you organically aren't reported to Meta.

Support savings

Savings measures cost avoided, not revenue earned — conversations an AI agent resolved that would otherwise have needed a person.

Treat it as a separate line, not as revenue. It's a real saving, but adding it to a revenue total produces a number that means nothing.

The honest comparison is: savings from AI-resolved conversations, minus what those resolutions cost you at your plan's rate. See AI usage and spend.

Reading the report

Filter by date range, source, and attribution type. Useful views:

  • Direct revenue by source — which flows genuinely earn.
  • Direct only, by campaign — which campaigns were worth sending.
  • Savings — what AI handled on its own.
  • Assisted vs direct — whether messaging opens conversations or closes them.

Troubleshooting

ProblemWhat to check
No direct revenueLinks aren't tagged. Use the Format link node.
Everything is EstimatedSame cause — no traceable click.
Ad-sourced revenue missingConfirm the ad-click triggers are in use and you're on a paid plan.
Numbers lower than expectedAttribution windows are finite. A purchase weeks after a message isn't attributed.
Totals don't match ShopifyExpected — Enscale counts messaging-influenced orders, not all orders.

Next steps

On this page