Marketing campaign performance
See which campaigns and channels bring orders, where people drop out on the way, and what each order costs, with calculated fields you can trust.
A marketing team spends across several channels. They want to know where the money works, so they can move it. That takes spend and orders side by side, which usually live in different systems.
The question
Which channels and campaigns bring orders, and what does each order cost? And where do people fall out between first visit and a repeat order?
The data you need
| Table | Columns | From |
|---|---|---|
| Spend | Date, channel, campaign, spend | Your ad platforms' exports |
| Orders | Date, channel, campaign, revenue, orders, customer | Your orders database |
| Funnel | Stage, people | Web analytics, by stage |
If the spend is in a spreadsheet, upload it, and refresh it by uploading a new version. If it's in your warehouse, connect it.
The two tables have to agree on campaign names. Fix this at the source, or map them with a calculated field. Otherwise spend and orders won't line up.
The dataset
Build a dataset that joins orders to spend on date, channel and campaign. Spend and orders count at different grains, so check totals against your sources before you trust a ratio. Halo's discovery suggests how tables relate. See Datasets.
Calculated fields
These are the numbers marketing argues over. Define them once in the dataset.
SUM([Spend]) / SUM([Orders])SUM([Revenue]) / SUM([Spend])SUM([Spend]) / COUNT_DISTINCT([Customer])Try one here, with Cost from the sample data standing in for spend:
Type a field's name for completion, and hover a function for its help.
Write these as a ratio of sums, not a sum of ratios. SUM([Spend]) / SUM([Orders]) stays right when you group by channel or by month, and an average of per-row ratios doesn't. Dividing by zero gives no value rather than an error. See Formula language.
Halo AI can write these: press Write with Halo above the formula box and describe what you want.
The charts
The funnel. Each stage and how many people reach it. The biggest drop is where to look first.
From a visit to a repeat order. Hover a stage for its count.
Channels over time. A line of revenue by channel shows whether a shift is lasting.
Channel share. A donut gives this quarter's mix at a glance. Keep it to a handful of slices.
Spend against result. Cost per order by campaign as a bar chart, sorted, shows what to move. In a combo chart, bars for one measure and a line for another show two scales together, as here with revenue and orders.
A combo chart. Swap in spend and cost per order, by campaign.
Who responds. A scatter of order size against frequency by segment shows which customers campaigns bring.
A color rule on the cost-per-order bars marks campaigns above what you're willing to pay. See Color rules and Choosing a chart.
The report
Press New report and pick the Dashboard grid layout.
Lead with scorecards for spend, orders and cost per order, compared with the Previous period.
Place the funnel, the channel charts and the campaign bars beneath.
Add a date range, a channel and a campaign filter.
Leave Clicking filters the page on for the channel chart, in its Interactions section, so choosing a channel narrows the rest. It's on by default. See Filters and parameters.
Publish it.
How it's shared
With the team, in an open workspace. People open a chart and explore it: drill down, change the grain, or see the rows.
With an agency, a public link with an expiry works when the data is fine to show. Hide the fields they shouldn't see first, because anyone with the link can open it.
Weekly, a scheduled email goes to the team's group on Monday morning.
Ask questions in plain English: "Which campaign's cost per order rose most last month?" See Ask Halo about your data.