Derived metrics
ROAS, CPA, AOV, CTR, CPM — Level doesn't ship these as built-ins. You create them as Formula custom metrics; the auto-formatter does the rest.
The metrics every performance marketer wants — ROAS, CPA, AOV, CTR, CPM — aren't built into Level as fixed metrics. You create them yourself as Formula custom metrics. The catch: Level's auto-formatter recognises these names and applies the right currency / percent / ratio formatting automatically.
Define them once per client, picking the canonical short names below, and they look right in every report.
The five canonical formulas
| Metric | Name | Formula | Auto-format |
|---|---|---|---|
| Return on ad spend | roas | #revenue / #cost | 3.58× |
| Cost per acquisition | cpa | #cost / #purchases | currency ($24.18) |
| Average order value | aov | #revenue / #purchases | currency ($134.20) |
| Click-through rate | ctr | #clicks / #impressions | percent (2.84%) |
| Cost per mille | cpm | #cost / (#impressions / 1000) | currency ($8.42) |
The pattern: name drives auto-formatting; display name can be anything readable.
Why naming matters
Level's metric formatter recognises a small set of canonical names:
- Monetary (renders as currency):
cost,revenue,cpa,cpm,aov. - Percent (renders as
XX.XX%):ctr. - Ratio (renders as
X.XX×):roas.
If you name your custom metric roas (lowercase, no suffix), Level renders the column as 3.58× — which is what stakeholders expect. If you name it Smart ROAS or roas_blended, the formatter doesn't match and the column renders as a plain number.
The display name (what shows in report headers) can be anything. So you can have:
- Name:
roas - Display name: Blended ROAS
- Formula:
(#revenue * 0.85) / #cost
…and it shows in reports as Blended ROAS with 3.58× formatting.
Variations worth defining
Once the basic five are in place, the following come up often:
| Display name | Name | Formula | Why |
|---|---|---|---|
| Profit | profit | #revenue - #cost | Direct margin reading. Renders as currency. |
| ROI | (any) | (#revenue - #cost) / #cost | Profit-as-percentage view. |
| True ROAS | roas | (#revenue * 0.85) / #cost | Apply a margin factor; still auto-formats as 3.58×. |
| Blended CPA | cpa | #cost / (#purchases + #lead) | Combine system metrics for a unified cost-per-conversion. |
| Cost per 1k impressions | cpm | #cost / (#impressions / 1000) | Same as the canonical CPM but useful when impressions metric is named differently. |
The Name column matters most; pick from the canonical list when you want auto-formatting, otherwise the metric still works — it just renders as a plain count.
Order of definition
Formula metrics can reference other metrics, including other custom metrics. Plan the dependency order:
- Map system metrics first (Purchases, Revenue, Lead) — see Conversion mapping.
- Define basic derived metrics (
cpa,roas,aov,ctr,cpm) — they reference system metrics. - Define composite metrics (
profit, Blended CPA, etc.) — they can reference your basic derived metrics.
If you try to reference a metric that doesn't exist yet, the formula editor flags Unknown metric: … and Save is disabled. Build prerequisites first.
What about platform-side ROAS?
Each platform (Google Ads / Meta) computes its own ROAS using the conversions tracked on that platform. Level's roas is computed across whatever conversion definitions you mapped to Revenue, summed across all the placements in the report.
So Google's reported ROAS for an account ≠ Level's ROAS row for that placement, by design — Level's number reflects your unified definition, not the platform's view of itself.