Home / Growth Radar / Campaign P&L
Drop your campaign CSV here
One row per campaign per group works best: messaged and control, with users, conversions, and optionally revenue and cost.
Check the columns
No revenue or cost column? Add rough averages instead (optional)
Want this run on your real campaigns?
I will help you set up the holdouts, read the result and fix the campaigns that are not paying for themselves.
Talk to Growth CircuitWhy this matters
Most CRM platforms report attributed revenue: every purchase made by someone who received a message. Many of those people would have bought anyway. The only fair way to tell the difference is to hold back a random group, send to the rest and compare. Campaign P&L does that comparison and puts a rupee value on it.
It is built by Growth Circuit, an independent CRM consultancy. We do not sell a CRM platform, and the tool works with an export from any of them. See all free tools.
What goes in the file
For each campaign, two lines: one for the people you messaged and one for the control group. Columns for the number of people and conversions are required. Revenue and cost are optional but unlock the profit view.
How to prepare your file
You need one simple table. One row for the people you messaged and one row for the people you held back, for every campaign. No names, emails or phone numbers are needed.
What the file looks like
| campaign | group | users | conversions | revenue | cost |
|---|---|---|---|---|---|
| Welcome push | messaged | 9000 | 540 | 432000 | 1080 |
| Welcome push | control | 1000 | 42 | 33600 | 0 |
| KYC reminder | messaged | 45000 | 2700 | 1620000 | 5400 |
| KYC reminder | control | 5000 | 250 | 150000 | 0 |
The sample matches the industry you choose at the top of the tool.
What each column means
| Column | Needed | What to put in it |
|---|---|---|
| campaign | Yes | The campaign or journey name. Spell it the same way on every row. |
| group | Yes | Who was messaged and who was held back. Use messaged and control. |
| users | Yes | Number of people in that group. People, not messages sent. |
| conversions | Yes | How many of those people did the goal action, such as paid, renewed or bought. |
| revenue | Optional | Total value of those conversions in rupees, as a plain number. Adds the revenue view. |
| cost | Optional | What it cost to message the messaged group. Use 0 for the control group. Adds the profit view. |
| segment | Optional | Any label you want to split by, such as risk band, lead source or plan. Adds the "who to nudge" view. |
Other common headers such as audience, orders, amount or spend are recognised too. Your export can also list one row per customer. In that case leave the users column out and each row counts as one person.
Checklist before you upload
- CSV with a header row. In Excel, use File, Save As, CSV.
- Plain numbers only. Commas and the rupee sign are removed for you. Do not write "5k" or "2 lakh".
- Random control group. Held-back people must be picked at random before the send. About 10% is a good start.
- Enough people. At least about 100 people in control and 30 conversions overall.
- Same period for both groups. Export after the conversion window has finished.
- Count people, not messages. Someone who got three messages is still one person.
Collections note: confirm with your compliance team that holding back a group from an optional reminder is allowed. Notices that must reach every customer should go to everyone, so test only optional reminders.
Frequently asked questions
Do you store the data I upload?
No. The file is read inside your browser and never sent to our servers. Nothing is saved, there is no account, and when you refresh or close the tab, it is gone. You can test this: load the page, switch off your internet, and the tool still works.
What does the file need to look like?
A CSV with one row per campaign per group is easiest: campaign, group (messaged or control), users, conversions, and optionally revenue and cost. A row per person also works, with a 1 or 0 for converted. Download the template on the page to see the layout.
What if I have no control group?
Then nobody can say how much a campaign really caused, and the report will say so. Hold back a random 10% of the audience on your next send, then upload that result.
How do you decide Keep, Fix or Stop?
Keep means a solid lift that also pays for itself. Fix means a lift that is not yet proven or costs more than it brings. Stop or rework means no sign of lift. Need more data and No control group mean the file cannot support a fair answer yet.
Can I trust the numbers?
They are estimates from a standard statistical test on the data you give. They are as good as your holdout: it must be random and set before the send. Use the report to decide where to look and what to test next.
Can it handle things like video watch time?
Yes. Choose "An average per person" and give either one row per person with their minutes, or one row per group with the average and the standard deviation. The report compares the averages and tells you whether the nudge raised them.
What does "Who to nudge" mean?
If your file has a segment column, such as risk band or lead source, the report shows for each segment whether messages help, whether people would act anyway, whether they are not responding, or whether the message hurts. In collections that separates customers who repay on their own from those who need extra effort.
Which CRM platforms does it work with?
Any. It only needs the numbers, so you can export from CleverTap, MoEngage, WebEngage, Zoho or your own warehouse.