12 signed-off metrics, plus formulas you add without a deploy.
No raw metrics yet
Add Followers, say, by mapping it to the field each platform reports.
clicks / impressions * 100 is combined CTR, not an average of platform rates.| Metric | Formula | Format | |
|---|---|---|---|
Click share click_share | clicks / impressions * 100 | ||
Cost per session cost_per_session | spend / sessions | ||
Frequency frequency | impressions/reach |
| Metric |
|---|
GA4
Google Ads
Meta
Spend Money billed by the platform for the day, converted to the client's reporting currency at that day's rate. Converted at the daily-row grain, then summed. A period total times today's rate is a different and wrong number. QAR and AED use their USD pegs; other pairs come from the ECB via Frankfurter. | not reported | metrics.cost_micros ÷ 1,000,000 | insights.spend | metrics.spend | METRIC_TOTAL_MEDIA_COST_ADVERTISER | stats.spend ÷ 1,000,000 | spend column |
Impressions Times an ad was served. Not unique people. | not reported | metrics.impressions | insights.impressions | metrics.impressions | METRIC_IMPRESSIONS | stats.impressions | impressions column |
Reach Unique people who saw an ad at least once in the period. Reach is de-duplicated per platform per period — it is NOT additive across days or channels. We never sum it; we show the period figure the platform returns. | not reported | not reported | insights.reach | metrics.reach | not reported | stats.uniques | reach column |
Link clicks Clicks that sent someone to the destination URL. Meta reports three different click numbers — clicks (all), link clicks, and outbound clicks. We standardise on LINK CLICKS because it is the one that maps to Google's metrics.clicks. Meta's headline 'Clicks (all)' in Ads Manager will always read higher. Snapchat has no click; a swipe-up is the destination action, and that is what we store. | not reported | metrics.clicks | insights.actions → link_click | metrics.clicks | METRIC_CLICKS | stats.swipes | clicks or link_clicks column |
CTR Link clicks ÷ impressions. Always recomputed by us from the two raw fields, never taken from the platform's own CTR column — otherwise a rollup would be an average of averages. | not reported | derived | derived | derived | derived | derived | derived |
CPC Spend ÷ link clicks. | not reported | derived | derived | derived | derived | derived | |
CPM Spend ÷ impressions × 1,000. | not reported | derived | derived | derived | derived | derived | derived |
Conversions Actions counted against the conversion actions each account has marked primary. Google's 'conversions' counts only primary conversion actions; 'all conversions' is a different, larger number. Meta attributes on 7-day-click/1-day-view by default. These will not agree with each other, and neither will agree with GA4 — this is expected, not a bug. Homes R Us and Daiso also import conversions no platform API exposes; those rows are tagged origin=sheet or origin=manual and sit beside the API rows. | conversions (key events) | metrics.conversions | insights.actions → the account's configured purchase/lead event | metrics.conversion | METRIC_TOTAL_CONVERSIONS | stats.conversion_purchases | |
Cost / conv. Spend ÷ conversions. | not reported | derived | derived | derived | derived | derived | derived |
Conv. value Revenue the platform attributes to those conversions. Restated for up to 30 days after the fact. Our nightly job re-fetches a rolling 30-day window and upserts, so yesterday's number can legitimately change tomorrow. | purchaseRevenue | metrics.conversions_value | insights.action_values → purchase | metrics.total_purchase_value | METRIC_REVENUE_ADVERTISER | stats.conversion_purchases_value ÷ 1,000,000 | conversion_value column |
ROAS Conversion value ÷ spend. Platform-attributed, not incremental. Every channel claims the same sale, so channel ROAS figures do not add up to a business ROAS. | not reported | derived | derived | derived | derived | derived | derived |
Sessions GA4 sessions on the client's property. GA4 sessions will never match Meta landing-page views. Different definitions, different attribution, different bot filtering. We show them side by side and never subtract one from the other. | sessions | not reported | not reported | not reported | not reported | not reported | sessions column |
TikTok
DV360
Snapchat
Sheets
derivedconversions column