A reliable monthly paid-media report does more than total spend and conversions: it standardizes data from Google Ads, Meta Ads, Microsoft Ads, and GA4 so you can compare performance, calculate ROAS, identify tracking gaps, and make defensible budget decisions. This guide provides a repeatable reporting workflow, a spreadsheet structure you can copy into a workbook, metric-mapping guidance, worked examples, and a UTM and conversion-tracking checklist.
Overview
Cross-channel reporting is difficult because advertising platforms do not always define or attribute metrics in the same way. A platform may report conversions using its own attribution window, while GA4 may assign the same conversion to a different source or medium. Revenue can also differ when one system uses purchase value, another uses imported conversion value, and a third includes modeled or assisted interactions.
The goal of a monthly ROAS dashboard is therefore not to force every number to match. It is to create a consistent decision layer above the source platforms. The dashboard should answer five questions:
- How much did each channel spend during the reporting period?
- How many primary conversions and how much attributed revenue did it produce?
- What were the resulting CPA, conversion rate, and ROAS?
- How confident are we in the tracking and attribution behind those figures?
- Should the next budget change be an increase, decrease, test, or hold?
Use a workbook with four tabs: Raw Imports, Standardized Data, Dashboard, and Checks and Notes. Keep the original exports unchanged in Raw Imports. Standardize fields only in the next tab so that formulas remain auditable when a platform changes a column name or export format.
For a broader measurement foundation, see this UTM tracking and attribution audit guide and the Google Ads and GA4 integration guide.
How to estimate
Start by choosing one reporting period and one primary conversion definition. A calendar month is practical, but the same method works for a fiscal month or a rolling 30-day period. Do not mix periods between spend, conversions, and revenue.
1. Import the source data
Export campaign-level data from each advertising platform for the same date range. Depending on the account, useful fields may include campaign name, campaign ID, spend, impressions, clicks, conversions, conversion value, and platform-reported revenue. Export GA4 data separately with date, session source and medium, campaign, users or sessions, key events, and purchase revenue where applicable.
Retain source labels such as Google Ads, Meta Ads, Microsoft Ads, and GA4. Never overwrite the source value with a blended number.
2. Normalize the fields
In Standardized Data, use one row per channel, campaign, and reporting period. A practical column structure is:
period | source | campaign_id | campaign_name | spend | impressions | clicks | platform_conversions | analytics_conversions | reported_revenue | analytics_revenue | primary_revenue | notes
Select a primary revenue field before calculating ROAS. For example, an ecommerce team may use validated purchase revenue from its analytics or commerce system, while a lead-generation publisher may use approved lead value rather than platform-reported revenue. If revenue is estimated, label it as estimated and record the valuation rule in Notes.
3. Apply the core formulas
- CTR = clicks ÷ impressions
- CPC = spend ÷ clicks
- Conversion rate = primary conversions ÷ clicks
- CPA = spend ÷ primary conversions
- ROAS = primary revenue ÷ spend
- Revenue per conversion = primary revenue ÷ primary conversions
Use error handling for zero denominators. A campaign with no clicks should show “not available” for CPC rather than zero. A campaign with spend but no conversions should show an unqualified result such as “no conversions,” not a misleadingly low CPA.
4. Compare like with like
Build the dashboard with both channel totals and campaign detail. A blended ROAS is calculated as total primary revenue divided by total spend; it is not the average of each campaign’s ROAS. Use weighted totals for decision-making:
Blended ROAS = SUM(primary revenue) ÷ SUM(spend)
Include a comparison column for the previous period, but interpret changes alongside spend levels, conversion volume, landing-page changes, promotions, and tracking status. Small-volume campaigns can produce unstable percentages, so pair efficiency metrics with absolute volume.
Metric-mapping comparison table
| Source metric or label | Standardized report field | Mapping guidance |
|---|---|---|
| Google Ads cost | Spend | Use account currency and document whether taxes, fees, or adjustments are included. |
| Meta Ads amount spent | Spend | Keep the platform export value separate from any finance-reconciled amount. |
| Microsoft Ads spend | Spend | Confirm date range, currency, and campaign-level granularity. |
| Platform conversions | Platform conversions | Record the source definition; do not automatically treat it as a deduplicated business conversion. |
| GA4 key events or purchases | Analytics conversions | Use the selected event consistently and document event parameters. |
| Conversion value, purchase revenue, or revenue | Reported revenue | Store the original source and choose a separate primary revenue field. |
| Campaign or UTM campaign | Campaign name | Map naming variants deliberately; retain the original label for auditability. |
Names and available fields can change by account configuration and platform interface. Before each reporting cycle, confirm the export columns and attribution settings rather than relying on a saved mapping indefinitely.
Inputs and assumptions
A useful monthly ROAS dashboard makes its assumptions visible. Add an Inputs section with these fields:
- Reporting dates: start date, end date, time zone, and currency.
- Primary conversion: the event used for the main CPA and conversion-rate calculations.
- Primary revenue: validated revenue, imported value, modeled lead value, or another defined measure.
- Attribution view: platform-reported, analytics-reported, or a separately reconciled view.
- Deduplication rule: how duplicate conversions across systems are handled.
- Exclusions: refunds, test transactions, internal traffic, canceled leads, or other excluded records.
- Decision threshold: the minimum conversion volume or data-quality confidence required before changing budget.
Use two ROAS views when stakeholders need both optimization and financial context. “Platform ROAS” can show each advertising platform’s own reported conversion value. “Standardized ROAS” can use the same primary revenue rule across all channels. These values should not be blended into one unlabeled figure.
For the dashboard’s decision column, use simple statuses such as Scale candidate, Hold and validate, Reduce or restructure, and Insufficient data. A status should reflect both performance and measurement confidence. A campaign with strong reported ROAS but broken UTMs belongs in “Hold and validate,” not automatically in “Scale candidate.”
Keep a separate Notes field for unusual conditions: a promotion, creative refresh, budget cap, tracking outage, landing-page change, or delayed conversion import. These notes often explain month-to-month movement better than a percentage comparison alone.
Worked examples
Example 1: channel-level ROAS
Assume a monthly report contains the following standardized values:
| Channel | Spend | Primary revenue | Primary conversions |
|---|---|---|---|
| Google Ads | $4,000 | $12,000 | 80 |
| Meta Ads | $3,000 | $7,500 | 60 |
| Microsoft Ads | $1,000 | $2,000 | 15 |
Google Ads ROAS is 3.0, Meta Ads ROAS is 2.5, and Microsoft Ads ROAS is 2.0. The blended result is not the average of those three figures. It is ($12,000 + $7,500 + $2,000) ÷ ($4,000 + $3,000 + $1,000), or 2.69. Total CPA is $8,000 ÷ 155, or approximately $51.61.
These calculations support a discussion, not an automatic budget rule. Before moving budget toward Google Ads, check whether its additional spend would reach a different audience, whether marginal performance is declining, and whether the revenue definition is equally reliable across channels.
Example 2: diagnosing a reporting mismatch
Suppose Meta Ads reports 60 conversions while GA4 records 42 purchases from the same campaign group. Do not replace one number with the other without investigation. Compare the event definition, attribution window, date time zone, consent or tracking coverage, purchase deduplication, and campaign parameters. Record both values, choose the number appropriate to the dashboard’s stated purpose, and flag the difference in Checks and Notes.
When the discrepancy is material, postpone an aggressive budget shift until the conversion-tracking audit is complete. The PPC campaign optimization checklist can help organize that review.
UTM and conversion-tracking checklist
- Use a consistent lowercase convention for source, medium, and campaign values.
- Define how campaign names map between platform exports and analytics reports.
- Confirm that paid clicks retain UTMs through redirects and landing-page navigation.
- Verify that the primary conversion fires once and only once for a completed action.
- Test revenue, transaction ID, currency, and item or lead-value parameters.
- Check that internal, test, canceled, or duplicate transactions are excluded as intended.
- Compare a sample of platform records with analytics records before finalizing the report.
- Record attribution windows, time zones, import delays, and known tracking limitations.
When to recalculate
Rebuild the report every month after the reporting period is closed and late conversions or refunds have been handled according to your documented rule. Recalculate sooner when a campaign changes substantially, a landing page is replaced, conversion tracking is edited, a new channel is added, or a major promotion changes the revenue pattern.
Refresh the workbook’s field mappings and formulas quarterly, or whenever a platform changes its export columns, conversion definitions, attribution-window defaults, API behavior, or analytics event structure. Recheck GA4 event and parameter mappings after measurement changes rather than assuming an existing import still represents the same action.
At the end of each quarter, review channel mix using three views: efficiency, volume, and confidence. A channel with lower ROAS may still provide useful incremental volume; a channel with high reported ROAS may deserve a tracking review before receiving more budget. Use the paid media benchmarks guide for diagnostic context, not as a substitute for account-specific trends.
Finish each monthly report with three decisions: one budget action, one measurement action, and one test. For example: hold Google Ads budget while validating incremental scale, repair missing Meta UTMs, and test a new landing-page message for a high-intent campaign. This keeps the dashboard connected to campaign optimization rather than turning it into a retrospective scorecard.
For the next cycle, duplicate the prior workbook, preserve the previous period’s raw exports, update the reporting dates, run the tracking checks, and document every change to the metric definitions. That simple routine makes the monthly ROAS dashboard easier to audit and more useful for responsible cross-channel budget allocation.