Metrics glossary
This page defines every metric Kreel computes and shows where the number you see in the API differs from what the dashboard displays. Every ratio metric is computed by exactly one formula in Kreel’s backend, reused by the dashboard, the REST API, MCP tools, and the query DSL, so the same metric name means the same math everywhere. The differences documented below are about representation, a 0-1 fraction versus a percentage, gross versus net revenue, not different formulas.
For the full rules behind revenue and refunds, see Revenue accounting. For how date ranges and period comparisons work, see Dates and comparisons.
Glossary
Section titled “Glossary”AOV (average order value)
Section titled “AOV (average order value)”Net revenue divided by order count, both taken from the same refund-correct basis. Because the order count is not mixed with a differently-filtered count from a cached table, AOV always reconciles with the headline revenue number for the same period.
Attributed revenue
Section titled “Attributed revenue”Each ad platform’s (Meta, Google) or Klaviyo’s own last-click conversion-value report, tagged revenue_kind: "attributed_last_click" on MCP responses.
Attributed revenue overlaps across channels, the same sale can be attributed by more than one platform, so it is never additive.
Do not add Meta’s attributed revenue, Google’s attributed revenue, and store revenue together to get a “total” - see Revenue below.
Bounce rate
Section titled “Bounce rate”The share of a campaign’s sends that bounced, computed over recipients. Klaviyo’s flow-series reporting does not measure bounces, so Kreel reports bounce rate for email campaigns only, never for flows.
Click rate
Section titled “Click rate”Unique clicks divided by emails delivered, not raw click events (which count every click, including repeats from the same person) and not divided by recipients.
The dashboard shows this as a percentage.
The API (Klaviyo REST v2, the compact REST API, MCP get_performance, and the query DSL) returns a 0-1 fraction to 4 decimal places, for example 0.0821 for 8.21%.
One exception: the get_entities tool’s metrics_7d rollup and the legacy email-summary avg_* fields still use 0-100 percentages.
Conversion rate
Section titled “Conversion rate”Conversions divided by clicks, for ad-platform entities such as campaigns, ad sets, and ads.
Returned as a ratio to 4 decimal places, and omitted (not shown as 0) when clicks is 0.
Conversions
Section titled “Conversions”Meta and Klaviyo report conversions as whole numbers. Google reports conversions as fractional numbers, because its data-driven attribution can assign part of a conversion, for example 0.63, to one ad and the rest to another. Kreel never floors these to integers - a low-volume Google campaign showing “2.4 conversions” is correct, not a bug; flooring it to 2 would overstate cost per acquisition.
CPA (cost per acquisition)
Section titled “CPA (cost per acquisition)”Spend divided by count, where count is orders at the account level and platform conversions or purchases at the campaign, ad set, or ad level. Because the denominator changes by level, CPA is not directly comparable between an account-level number and a campaign-level number. Currency value, 2 decimal places.
CPC (cost per click)
Section titled “CPC (cost per click)”Spend divided by clicks. Currency value, 2 decimal places.
CPM (cost per mille)
Section titled “CPM (cost per mille)”Spend divided by impressions, times 1,000 - the cost to reach a thousand impressions. Currency value, 2 decimal places; guarded on impressions being present, not on spend.
CTR (click-through rate)
Section titled “CTR (click-through rate)”Clicks divided by impressions. Ratio, 4 decimal places.
Delivery rate
Section titled “Delivery rate”The share of a campaign’s sends that were actually delivered, computed over recipients. Kreel does not compute this for flows.
MER (marketing efficiency ratio)
Section titled “MER (marketing efficiency ratio)”Kreel’s blended efficiency metric: store revenue (net) divided by total paid ad spend across Meta and Google combined.
It is the same ROAS formula, value divided by spend, applied to a blended numerator and denominator instead of a single platform’s own numbers.
Email and organic carry no spend, so they are excluded from the denominator.
Surfaced as a summary block when the MCP get_performance tool is called with platform="all" and entity_type="account", and on the per-brand rows of get_portfolio - both show the numerator and denominator alongside the ratio so it is checkable, not a black box.
Open rate
Section titled “Open rate”Unique opens divided by emails delivered, not raw open events and not divided by recipients.
The dashboard shows this as a percentage.
The API returns a 0-1 fraction to 4 decimal places.
The legacy avg_open_rate field predates this definition: it is a percentage (not a 0-1 fraction) blended across every campaign and flow in the selected period, rather than reported per entity - keep that difference in mind if the two numbers do not match for a single campaign.
Orders
Section titled “Orders”Order count follows two different, deliberate rules depending on the table.
Headline order counts (the dashboard, revenue endpoints, MCP get_performance) include voided and cancelled orders, matching Shopify’s own Total Sales report - they add roughly nothing to revenue, but must still appear in the count.
The pre-computed trend and cohort tables exclude voided and cancelled orders, since a never-charged order is just noise in an AOV or retention average.
Retention rate
Section titled “Retention rate”The fraction of an acquisition cohort, customers who first ordered in a given month, that ordered again in a later snapshot month.
It is a stored fraction per cohort/snapshot-month pair - never sum it across snapshots; average it if you need to aggregate.
Related customer-segmentation fields, RFM recency, frequency, and monetary scores and segment labels such as champion or at_risk, are available through the query DSL’s customers_rfm table for agents building retention or win-back analyses.
Revenue
Section titled “Revenue”Store revenue is what Kreel means by “revenue” on the dashboard headline and in the MCP get_performance tool: the refund-correct net total, real money the store took in for the window.
It already subtracts refunds that landed inside the window for orders created before it (a cross-period refund).
get_performance also returns gross_revenue (before that subtraction) and refund_adjustment (the amount subtracted), so an agent can see exactly what changed.
The pre-computed tables behind trend charts and cohorts, and daily_channel_summary.revenue in the query DSL, store gross Shopify revenue only, not the refund-correct figure - a small gap between a headline number and a trend-chart number for the same period is expected, not a bug.
Selecting that column through the query DSL returns a notices entry pointing back to get_performance for the net figure.
See Revenue accounting for the full rules, including cross-period refunds and the Revenue Basis (tax and shipping) setting.
Revenue per recipient
Section titled “Revenue per recipient”Revenue divided by recipients, available for email campaigns, flows, and individual flow messages.
The query DSL exposes it at message grain, on the email_flow_messages table.
Ratio, 4 decimal places.
ROAS (return on ad spend)
Section titled “ROAS (return on ad spend)”Value divided by spend.
Ratio, 2 decimal places, for example 3.45.
At the account level with platform="all" this becomes MER, described above; at the campaign or ad level it is the platform’s own attributed conversion value over spend.
Spam complaint rate
Section titled “Spam complaint rate”The share of a campaign’s delivered emails marked as spam, computed over delivered sends. Like bounce rate, this is reported for email campaigns only - Klaviyo’s flow-series reporting does not measure spam complaints for flows.
Ad spend from Meta and Google, in the brand’s single base currency. Kreel does not convert currencies - a brand connected to ad accounts in a different currency than its Shopify store is not automatically reconciled.
Unsubscribe rate
Section titled “Unsubscribe rate”The share of a campaign or flow’s delivered emails that triggered an unsubscribe, computed over delivered sends.
Related pages
Section titled “Related pages”- Revenue accounting - the full net-vs-gross, cross-period refund, and Revenue Basis rules.
- Dates and comparisons - how date ranges, windows, and Compare To periods are resolved.
- MCP data tools - the tools that return these metrics (
get_performance,get_entities,compare,get_portfolio). - Query DSL - exact column types and precision for every metric, table by table.
Need help?
Section titled “Need help?”Email support@kreel.ai if a number doesn’t match what you expect.