Measure
Numbers that go blank rather than guess
Base counts are what Tempio stores. Every rate you read is worked out at the moment you read it, from the counts underneath, and a rate with nothing to divide comes back blank instead of zero.
Money is integer minor units with the currency the account reported in. Nothing crosses currencies quietly, and a figure that blends several is labelled an estimate and carries the date of the rate that made it.
A number you hope is right, or one you can take apart
- Three tabs, three date ranges, and a spreadsheet that adds them together as though they were the same money.
- A cost per acquisition of zero, because the campaign had no acquisitions and the formula divided anyway.
- Rates stored the day somebody pulled them, so a restated count leaves them wrong and nothing on the page says so.
- Two currencies summed at whatever rate was open that afternoon, with no note of the rate or the day.
- Last month’s figure cannot be reproduced, because the working was a formula somebody has since edited.
A figure you have to believe.
- One row per account, per campaign, per day, holding what the platform reported: impressions, clicks, spend, results and value.
- A cost per acquisition with nothing underneath it comes back blank, and blank says there was nothing to divide.
- Rates are worked out when you ask for them, so a restated count restates everything derived from it on the next read.
- Each row keeps its own currency. A blended figure is converted once, labelled an estimate, and carries its rate date.
- The working is a tool call: the same range, the same scope, the same counts, any time somebody wants to run it again.
A figure you can rebuild.
From the platform’s report to your answer
- 01
The counts arrive
Each connected account is read through the platform’s own reporting interface and stored as base counts: one row per entity per day, in the currency that account bills in. Ninety days are pulled by default when you connect (thirty, or none at all, if you would rather), so the first question you ask already has a baseline behind it.
- 02
The rates are worked out on the way to you
Click-through rate, cost per click, cost per thousand impressions, cost per acquisition and return on ad spend are derived at read time from the counts inside the scope you asked about. None of the five is stored anywhere, which is why none of them can disagree with the counts it came from, and each is blank whenever its denominator is zero.
- 03
The scope decides the currency
A scope that sits inside one currency answers in that currency and nothing is converted. A scope spanning several converts once into a target, marks the answer an estimate, and names the rate date and the currencies it drew from. The per-account rows beside it stay in their own money, so you can always see what was converted and what was not.
What the measurement layer refuses to do
Store a rate
Nothing in the database holds a click-through rate or a return on ad spend. Each is arithmetic over counts, done on the way to your screen, which is why a corrected count corrects every figure that leans on it.
Round money into a decimal
Spend, budgets and value are integer minor units of a named currency, from the platform’s response through to the figure on the page, where one formatter renders them once.
Turn absence into zero
A blank rate says the denominator was zero. A zero would say the answer is zero, which is a different statement about the account and usually a wrong one.
Call an estimate a fact
A cross-currency total is converted, marked as an estimate, and carries the date of the rate it used. The untouched per-account rows sit beside it, so the conversion is visible rather than assumed.
Pass off reach as people
Reach is the sum of each campaign’s daily reach across the range, not a count of people, and it is blank when no account in scope reported any. It is never presented as the size of an audience.
Order a list without saying what the order means
A per-campaign list states whether its order is a true ranking in one currency, a ranking converted at published rates, or raw minor units laid side by side, which is not a ranking at all and is reported as a hint.
Read the same counts from your own agentLeave the plan out of it
The counts are what a flight is weighted against while you are building it, and what a change is judged on once it has landed. One store, read by the planner and by the queue alike.
Build a flight on themIllustrative exchange
Questions
Put frontier AI to work on every ad account you run.
Connect your accounts, point your own AI at them over MCP, and read the numbers and draft the work in one place. Every change is a draft until you approve it, or until a rule you wrote does.
Request early access- Read and draft by default. Approve is a separate permission you grant.