A performance marketing team needs one number many times a day: for each campaign, how much did we spend and how many real orders did it bring? The ad platform knows the spend. The point-of-sale system knows the orders. Neither knows both, and the people running campaigns should not have to stitch them together by hand.
What the report shows
Every hour, and in a daily summary, the team receives a report on Telegram with, for each marketer and each campaign:
- ad spend so far today,
- leads received,
- orders confirmed by the sales team,
- cost per confirmed order.
Where the numbers come from
- Spend comes from the ad platform API for each ad account we run.
- Leads come from our server-side conversion log, which records the campaign and marketer for every lead.
- Confirmed orders come from the POS system's own analytics, by staff member and product.
Getting the order count right
The order count took several attempts. Counting orders by creation time missed orders confirmed later in the day. Counting purchase events from our conversion log covered only part of the orders in one market. The version we trust reads the "confirmed orders" figure directly from the POS analytics, the same figure the sales team sees, and then distributes it across campaigns in proportion to each campaign's leads.
After that change, the per-person totals in the report matched the POS system exactly in our audit.
Monitoring that suggests, people who decide
On top of the reports, we run four monitoring jobs on campaign data:
- Waste alert: campaigns spending without results.
- Scale digest: campaigns performing well enough to consider a higher budget.
- Funnel diagnosis: where a campaign loses people between click, lead and order.
- Creative winners: the videos that performed best over the last seven days.
These jobs send suggestions. They do not change budgets or switch campaigns on or off. Every change is approved by a person, because the data has known blind spots and the cost of a wrong automatic decision is real money.
Lessons
- Unknown ad accounts show as zero spend. When a marketer started using a new ad account, their campaigns appeared with no spend until the account was added to the report's list. When a campaign shows leads but no spend, the first thing we check is the account list.
- Platform revenue figures can mislead. For one market the platform reported order values in the wrong unit, so we do not use platform-reported revenue or return on ad spend. We use our own order data.
What is next
Next we plan to add written summaries generated with Claude to the daily report: what changed since yesterday and which campaigns need attention, in plain language, with the same rule that people approve every action.
More from VIREXAGROUP: Server-side conversion tracking for COD e-commerce · A Claude-powered support assistant