Case studies

Claude skill /spilno-ga4-roas-corridor-analysis: 5-minute Google Ads revenue forecast

| 20 May 2026 | 11 min read 0 views
Google Ads revenue forecast — ROAS corridor method — Spilno Agency

TL;DR: we built a Claude skill that produces a ready forecast report in 5 minutes — how much revenue Google Ads will generate if you raise the monthly budget by +10k / +25k / +50k UAH. The method is “ROAS variation corridor” based on 6 months of actual GA4 data. The report is formatted to our internal text style guide (Montserrat, numbered sections, thousands-separated numbers) — no logo, no colors, no header/footer, just clean structured formatting. Below: what the skill does, what the template looks like, required permissions, how it works step-by-step, method limitations, and the GitHub link.

What the skill does

/spilno-ga4-roas-corridor-analysis automates the analyst routine around the typical client question “how much revenue do I get from 1 UAH of ad spend if I add another 25K to Google Ads?”. Instead of an hour of manual data collection — 5 minutes and a ready Google Doc formatted to our text style guide:

  1. how many UAH of revenue 1 UAH of Google Ads spend brings right now;
  2. how ROAS fluctuated over the past 6 months (min / avg / max corridor);
  3. how stable the corridor is (coefficient of variation CV);
  4. how much extra revenue a budget bump of +10k / +25k / +50k UAH will bring — across pessimistic / base / optimistic scenarios;
  5. which scenario to start with given the method’s limitations.

The report saves to Google Drive as a plain Google Doc formatted to the Spilno Agency style guide: Montserrat as the single font, numbered sections with no dots in headings, thousands-separated numbers, numbers right-aligned in tables, Pageless mode with collapsible headings, a dedicated “Short conclusion” TL;DR block at the end. This isn’t “branding” in the design sense — no logo, no brand colors, no decorative elements — just a text style guide easy to reproduce in any Google Doc.

What the report template looks like

Below is a fully filled sample report for a hypothetical e-commerce store with a Google Ads budget of ~130K UAH/month. This is exactly what you get in the Google Doc — all 10 sections with real numbers:

SAMPLE FILLED REPORT — Google Doc excerpt

Google Ads revenue growth forecast for shop-example.com.ua

OwnerSpilno Agency
Updated20/05/26
Projectshop-example.com.ua
Analysis periodNov 2025 – Apr 2026 (6 full months)

Technical details

GA4 → Advertising → Conversion performance · Event filter: shop-example purchase · Channels: Cross-network + Paid Shopping + Paid Search · property_id: 412345678

1. Task description

Forecast how much revenue grows for shop-example.com.ua if the monthly Google Ads budget is increased by +10,000 / +25,000 / +50,000 UAH. Method — ROAS variation corridor based on 6 full months of actual GA4 data.

2. What was done

  1. Opened the GA4 property, selected the “Conversion performance” report.
  2. Filtered by the key event shop-example purchase.
  3. Collected monthly Cost and Revenue for Cross-network, Paid Shopping, Paid Search over 6 months.
  4. Calculated ROAS, MIN/AVG/MAX/σ/CV, and built the forecast for 3 scenarios.

3. Monthly Google Ads dynamics

MonthCost, ₴Revenue, ₴PurchasesROAS
11/25128 400812 2002186.32
12/25156 1001 067 3002846.84
01/2698 700512 8001395.20
02/26112 300683 4001816.09
03/26134 600894 1002376.64
04/26142 800958 7002546.71
Total 6 mo772 9004 928 5001 3136.38 (average)

4. ROAS variation corridor

MetricValueWhat it means
MIN ROAS5.20Pessimistic
AVG ROAS6.38Base
MAX ROAS6.84Optimistic
σ0.57Corridor spread
CV8.9%CV <15% — stable corridor, forecast is reliable ✓

5. Revenue growth forecast

Current monthly budget: 128 817 ₴ · current revenue: 821 417 ₴

ScenarioPessimistic (Δ × MIN)Base (Δ × AVG)Optimistic (Δ × MAX)
+10 000 ₴+52 000+63 800+68 400
+25 000 ₴+130 000+159 500+171 000
+50 000 ₴+260 000+319 000+342 000

6. Total monthly revenue forecast

ScenarioBudgetMin revenueAverageMax
Current128 817669 800821 800881 100
+10 000 ₴138 817721 800885 600949 500
+25 000 ₴153 817799 800981 3001 052 100
+50 000 ₴178 817929 8001 140 8001 223 100

7. Key observations

  1. PMax (Cross-network) delivers 62% of all revenue at ROAS 7.1 — consistently above average. The primary scaling driver.
  2. The January dip (ROAS 5.20) is the post-holiday e-commerce seasonal slump. Not an anomaly — normal for the niche.
  3. Corridor is stable (CV 8.9%) — the +25k forecast fits within historical variance. Overestimation risk is minimal.
  4. Paid Search holds only 14% of revenue at ~31 purchases/mo — small sample, do not extrapolate to a large budget.

8. Method limitations

1. Linear extrapolation — diminishing returns can reduce actual lift by 20–40%. 2. Competition not modeled — check Search Lost IS (Rank) in Google Ads. 3. Market saturation not modeled — check Search Lost IS (Budget).

9. Conclusion

Given the section 8 limitations, we recommend starting with +25,000 UAH: the corridor is stable (CV 8.9%), expected uplift 130k–171k UAH of revenue for an extra 25k of spend. After 2 months measure actual marginal ROAS and decide whether to push to +50k.

10. Short conclusion

  1. A budget increase of +10,000 UAH → revenue grows by +52,000 … +68,400 UAH.
  2. A budget increase of +25,000 UAH → revenue grows by +130,000 … +171,000 UAH.
  3. A budget increase of +50,000 UAH → revenue grows by +260,000 … +342,000 UAH.

In the real Google Doc the formatting from the Spilno Agency style guide is applied: Montserrat, numbered sections (no dots in headings), thousands-separated numbers (1 340 400), numbers right-aligned in tables, Pageless mode with collapsible headings. The “Technical details” and “Method limitations” sections are typically collapsed so the client sees the key numbers and conclusion right away. No logo, no colors, no header/footer in the report — we deliberately kept it as plain text formatting in the skill so any agency can fork it and add their own visual identity.

Download the template and fill it manually

If you want to do the analysis without Claude — for those who like it hardcore — grab the blank template below. Fill in 6 months from your own GA4 and get the same report by hand.

Download the template in your preferred format:

Download PDF
Download DOCX
Open Google Doc

How to get a Google Doc: download DOCX → open Google Drive → drag the file in → right-click → “Open with” → “Google Docs”. It converts automatically and saves to your Drive. Enable Pageless mode via File → Page setup → Pageless.

What access you need

The skill works via UI automation of Google Analytics 4 — it doesn’t use the API and doesn’t ask for OAuth tokens. You need:

  1. Claude Code with the Claude for Chrome extension installed and active.
  2. A Google account with access to the GA4 property of the project (Viewer role is enough).
  3. GA4 property with e-commerce tracking and a purchase event configured.
  4. GA4 ↔ Google Ads link set up in Admin → Product Links → Google Ads links. Without it the Cost column will be empty — the skill will warn you and offer to pull Cost from Google Ads UI directly.
  5. Google Drive MCP (optional but recommended) — needed to save the finished Google Doc directly to your Drive. If not connected, the skill automatically falls back to a local DOCX file — see the next section.

OAuth tokens, service accounts, API keys — none of this is required. All data is pulled from the same GA4 you see in your browser — Claude just does it for you.

How to connect Google Drive (and what happens if you don’t)

Google Drive connects to Claude as an MCP server in under a minute. This is an optional step: the skill works fully without Drive — the report just lands as a DOCX file you can open in Word, LibreOffice, or Google Docs itself (via Drive → Open with).

Connect Google Drive in Claude — step by step

  1. Open Claude Code → /mcp menu (or in Claude.ai: Settings → Connectors).
  2. Find the Google Drive connector in the catalog (official Anthropic build). Click Connect.
  3. In the OAuth prompt, choose the Google account where the skill should save the report. This is your working account — not necessarily the one that has access to the client’s GA4.
  4. Approve the requested permission: Drive file (create/read files the app itself created) — the minimum required scope. The skill cannot read your existing files.
  5. You’ll see a new tool in Claude’s tool list: mcp__<id>__create_file — that’s the call the skill uses to save the report.

After the first connection Claude remembers the token — from then on the skill runs without extra prompts. Revoke access any time at myaccount.google.com/permissions.

What happens if Google Drive is NOT connected

At the start of Step 7 the skill checks whether a tool matching mcp__*__create_file is available in Claude. If there isn’t one (or the call returns an auth error) — the skill automatically switches to a fallback flow:

  1. Invokes the built-in Anthropic skill anthropic-skills:docx with the same structure as the Google Doc — Montserrat, numbered sections, bordered tables, thousands-separated numbers.
  2. Saves the file to the current working directory: Google Ads revenue forecast [domain].docx.
  3. The final message gives you the absolute file path plus a short note: “Google Drive isn’t connected, so a local Word file was generated. If you need a Google Doc — upload the file to your Drive and open it with Google Docs.”

If anthropic-skills:docx is also unavailable for some reason (a rare case) — third fallback: the skill returns the full report as formatted Markdown in chat. You can paste it into Word or Google Docs in one move.

Bottom line: the skill always works. The most comfortable path is Drive connected and a Google Doc straight on your disk. Without Drive — same report, just a local DOCX.

How it works — 8 steps

Before launch, Claude asks 4 clarifying questions: project domain and three flags “model +10k / +25k / +50k?” (all “yes” by default). Then the automated pipeline:

  1. Finds the GA4 property. Opens analytics.google.com, clicks the property selector in the top-left, searches the domain. Remembers property_id from the URL.
  2. Navigates to “Conversion performance”. The direct URL in GA4 is unstable, so the skill uses the sidebar: Advertising icon → Conversion performance. This is the only report where Cost and Revenue per channel are available month-by-month.
  3. Filters by the purchase event. Unchecks all key events except [domain] purchase and clicks Apply.
  4. Collects 6 months of data. For each month: opens the date picker, types in two dates, waits for render, extracts the table via a small JavaScript snippet. From each month, only Google Ads channels: Cross-network (Performance Max), Paid Shopping, Paid Search — summing Cost and Revenue.
  5. Calculates the ROAS corridor. For each month, ROAS = Revenue / Cost. Across 6 data points: MIN, AVG, MAX, standard deviation σ, coefficient of variation CV. CV <15% — stable corridor; CV >25% — the skill warns about instability.
  6. Builds the revenue growth forecast. For each scenario (+10k / +25k / +50k): pessimistic = Δ × MIN ROAS, base = Δ × AVG, optimistic = Δ × MAX. Plus a separate table of absolute new monthly revenue.
  7. Creates a Google Doc following the Spilno style guide. Via the Google Drive MCP: uploads HTML to your Drive → opens with Google Docs → enables Pageless mode. Montserrat, numbered sections without dots in headings, numbers grouped with spaces (1 340 400), numbers right-aligned in tables. No logo, no colors — just text formatting.
  8. Presents the result. A clickable Google Doc URL, a short chat summary (average ROAS, recommended scenario), and a list of caveats: low CV, partial year of data, small Paid Search sample.

Method limitations

The “ROAS corridor” method is a fast, honest tool for talking to a client about scaling ads, but it doesn’t replace full media planning. Section 8 of every report contains three limitations — read them alongside the forecast:

  1. Linear extrapolation. The forecast assumes ROAS stays in its historical corridor at any budget. In reality, marginal ROAS is usually below the average — each additional UAH is spent on less targeted traffic (diminishing returns). The actual revenue lift at +25k / +50k can be 20–40% below the optimistic scenario.
  2. Competition not modeled. The method doesn’t account for competitor moves in the Google Ads auction. If competitors raise bids, part of the extra budget will go to more expensive impressions without conversion lift. For an accurate estimate you need Search Lost Impression Share (Rank) and Auction Insights from Google Ads UI.
  3. Market saturation not modeled. GA4 doesn’t show how many impressions are still available in search results. If the campaign already wins >80% Impression Share, extra budget will deliver minimal lift. Check this separately in Google Ads → Search Lost IS (Budget).

The skill also doesn’t analyze seasonality (for highly seasonal projects, expand to 12 months), can’t break ROAS down by product category, and uses the default GA4 attribution model (Data-Driven).

Installation — download from GitHub

The skill is open-source under MIT. Fork it, customize for your brand (swap Montserrat for your house font, add your logo to the Doc header, etc.).

⚡ Download the skill from GitHub

Quick install in Claude Code (under 1 minute):

git clone https://github.com/spilno-agency/spilno-agency-skills.git
cp -r spilno-agency-skills/ga4-roas-corridor-analysis ~/.claude/skills/

Restart Claude Code — the skill is available as /ga4-roas-corridor-analysis. Full specification on GitHub: SKILL.md.

Closing

This is our first public Claude skill but definitely not the last. In the pipeline: skills for technical SEO audits, query cannibalization analysis, GTM config validation, and auto-generating Title/Meta for new categories. Want something added or customized — open an issue or PR on the repo.

Валерій Красько Spilno Agency All articles by author →
← Back to blog