Home/Help Center/Revenue attribution

Broadcasts

See Revenue Per WhatsApp Broadcast

Log a sale on any conversation and see it credited to the broadcast that reached that contact, automatically, with a Revenue tile on the campaign's own detail page.

By Chirag Darji · Updated 27 Aug 2026 · 8 min read

On this page
  1. Before you start
  2. Steps
  3. What you will see
  4. How does the 7-day automatic attribution window actually work?
  5. Settings and options
  6. Can revenue be attributed to more than one thing for the same sale?
  7. Troubleshooting
  8. How does this compare to relying on read rate or reply rate alone?
  9. Related reading
VGraple CRM analytics dashboard with delivery rates, flow performance and revenue attribution

Revenue attribution credits a sale back to the broadcast that reached that contact within the last 7 days, either automatically when you log a deal or instantly when a payment link is paid, and shows the total right on that campaign's own detail page. This article covers how to log a sale, how automatic attribution decides credit, and where the number actually appears.

Revenue attribution: first 5 of 6 steps

  1. 1Open the conversation where the sale happened
  2. 2Go to the Info panel and choose
  3. 3Let attribution resolve automatically, or override it
  4. 4Check the campaign's detail page
  5. 5Compare revenue across recent campaigns
The steps on this page, in order.

Before you start

  • Revenue attribution needs a conversation with the contact who bought; it is logged from the conversation, not from a standalone form.
  • Anyone with permission to send messages in the inbox can log a deal, it is not restricted to admins.
  • If you use Stripe payment links in chat, automatic attribution requires no setup beyond having the payment link feature configured. See collecting payments in chat.

Steps

  1. Open the conversation where the sale happened. Whether the deal closed by chat, by phone, or in person after a WhatsApp exchange, find that contact's conversation in the Inbox.

Integrations settings in VGraple CRM: Facebook Lead Ads, Calendly, Meta Conversion Tracking and payment collection

  1. Go to the Info panel and choose Log Deal. Enter the amount and currency (INR by default); an order ID and notes are optional.

  2. Let attribution resolve automatically, or override it. If you do not specify a broadcast, VGraple CRM checks whether this contact received a broadcast in the last 7 days and credits it automatically. To credit a different campaign, specify its broadcast_id explicitly when logging the deal.

  3. Check the campaign's detail page. Open the broadcast that should have received credit; once at least one sale is attributed, a Revenue stat tile appears next to the delivery funnel, showing the total.

  4. Compare revenue across recent campaigns. From Broadcasts, open Compare and select up to five campaigns; the comparison table includes a Revenue row alongside cost, so you can see which campaigns actually made money, not just which had the best read rate.

  5. Let payment links attribute themselves automatically. If you sent a payment link in chat and the customer paid through Stripe (or Cashfree, when available), the gateway's webhook creates the revenue event and attributes it the same way, with no manual Log Deal step needed.

What you will see

A campaign with attributed revenue shows a Revenue stat tile on its detail page, formatted in your organization's locale currency. The Compare view shows Revenue as a column across selected campaigns. A sale that does not attribute to any broadcast (organic revenue, from a contact who received no broadcast in the last 7 days) still counts in your organization's total revenue figures but does not appear against any specific campaign.

How does the 7-day automatic attribution window actually work?

Manually picking a broadcast for every single sale does not scale past a handful of deals a week, and forcing every sale into a campaign bucket, even ones with nothing to do with a recent send, produces numbers nobody trusts. When a deal is logged without an explicit broadcast, VGraple CRM looks up the most recent broadcast that reached this specific contact within the last 7 days and, if one exists, credits it automatically. The 7-day window is a deliberate judgment call rather than a claim of perfect causality: a sale that happens further out than a week from the last broadcast is treated as organic rather than force-attributed to a campaign that most likely had nothing to do with it.

You can always override the automatic pick by specifying a broadcast explicitly, which matters when two campaigns reached the same contact close together and you know from the conversation itself which one the customer actually mentioned.

Example

A salon sends a Friday flash-sale broadcast to 3,000 contacts. Forty of them book an appointment through WhatsApp over the following four days, some the same day, some three days later. Every one of those forty deals, logged from the conversation, auto-attributes to the Friday broadcast, giving the salon a real revenue figure for that specific campaign instead of a guess.

Settings and options

Setting or fieldWhat it doesNotes
Log DealRecords a revenue event on a conversationAmount and currency required; order ID and notes optional
Automatic broadcast attributionCredits the broadcast that reached the contact in the last 7 daysApplies when no broadcast is specified explicitly
Manual broadcast overrideCredits a specific broadcast you chooseSet via broadcast_id when logging the deal
Revenue stat tileShows attributed revenue on a campaign's detail pageAppears once at least one sale is attributed
Payment link auto-attributionLogs revenue automatically when a chat payment link is paidRequires payment collection set up under Stripe (or Cashfree, when available)

Can revenue be attributed to more than one thing for the same sale?

Yes, in two independent ways at once. A sale attributes to a broadcast when one reached the contact within the automatic 7-day window (or was specified explicitly), and separately, if the same conversation carries Click-to-WhatsApp ad attribution, meaning the contact first messaged your business by tapping a Meta ad, that ad's identity travels alongside the revenue event too. These two attributions are resolved independently of each other, so a single sale can genuinely show both its originating broadcast and its originating ad in your reporting, rather than the system forcing a choice between crediting the ad or the campaign when in reality both contributed to the contact ending up in that conversation.

Troubleshooting

SymptomLikely causeFix
Revenue tile does not appear on a campaignNo sale has been attributed to it yetLog a deal on a conversation with that campaign's contact, or wait for a payment link to be paid
A sale attributed to the wrong campaignTwo campaigns reached the same contact within 7 days and the automatic pick chose the more recent oneSpecify the correct broadcast_id explicitly when logging the deal
A sale did not attribute to any campaign at allThe contact did not receive a broadcast within the 7 days before the sale was loggedExpected behavior; the sale counts as organic revenue in your overall totals instead
Payment link paid but no revenue event appearedThe gateway webhook has not been received yet, or payment collection is not fully configuredCheck Settings, Payments for the gateway's connection status; webhooks typically arrive within moments of payment
Expected to see revenue in the exported CSVThe broadcast recipient CSV export does not currently include a revenue columnCheck the campaign detail page or the Compare view for revenue instead of the export

How does this compare to relying on read rate or reply rate alone?

A read rate or a reply rate tells you whether people opened and responded to a campaign, but neither tells you whether the campaign actually made money. Two campaigns can post nearly identical read rates and produce very different revenue, depending on the offer, the audience segment, and how well the message matched what that specific group was ready to buy. Revenue attribution closes that gap by carrying the funnel all the way through to a rupee figure, so a campaign's real performance is judged on the outcome that matters to the business, not a proxy for it.

This is also why the Compare view puts Revenue next to Cost for every selected campaign: a campaign that cost Rs 2,000 to send and produced Rs 40,000 in attributed revenue is a very different result from one that cost the same and produced nothing, even if their read rates looked identical on the day.

Pair revenue attribution with tracking link clicks to see the full path from a click to a sale, and see exporting broadcast results for what the recipient-level CSV export actually contains.

Frequently asked questions

How does a sale get credited to a specific broadcast?
When you log a deal on a conversation without specifying a broadcast, VGraple CRM checks whether that contact received a broadcast in the last 7 days and, if so, credits it automatically. You can also specify a broadcast explicitly when two campaigns reached the same contact close together.
What counts as revenue that is NOT attributed to any broadcast?
Any logged deal where the contact did not receive a broadcast in the 7 days before the sale, called organic revenue. It still counts in your total revenue figure, just not credited to a specific campaign.
Do I have to log every sale by hand?
Not if it came through a payment link. A payment link sent in chat and paid through Stripe (or Cashfree, when available) logs its own revenue event automatically the moment the gateway confirms payment, with no manual entry.
Where does a broadcast's revenue actually show up?
On the campaign's own detail page, as a Revenue stat tile next to the delivery funnel, once at least one sale has been attributed to it. It is also visible in the multi-campaign compare view alongside cost, so you can see which campaigns actually made money.
Does revenue attribution require a paid plan?
No. Logging revenue and payment-link auto-attribution both work on every plan including Free. The visual Revenue Attribution dashboard with per-agent, per-flow and per-campaign breakdowns requires Starter or above.
Can a single sale be credited to both a broadcast and a Click-to-WhatsApp ad?
Yes, independently and at the same time. Broadcast attribution and ad attribution are resolved separately, so a sale can show both its originating campaign and the ad that first brought the contact into conversation.
Does the broadcast CSV export include revenue?
No, not currently. The recipient CSV export includes contact name, phone, status, error code, sent and replied timestamps, retry count and reason, but not a revenue column. Revenue is visible on the campaign's own detail page and in the compare view.

Run your WhatsApp on VGraple CRM

Free forever plan, official Meta WhatsApp Business API, set up in 15 minutes. No card needed.