Loading tutorials…
Loading tutorials…
Data blending is the killer Looker Studio feature — combining GA4 + Google Ads in one chart, joining a Sheet to GA4, building cross-source ROAS calculations. It's also where most DIY users hit a wall. Here's the working model.
Who this is forAnyone who needs to combine data from 2-5 sources in a single chart. Most common use case: cost data from Google Ads + revenue data from GA4 to compute true ROAS. About 70% of DIY blends fail silently due to join configuration mistakes.
What you'll need
Step 1
Blending solves cross-source chart problems. If you only need separate charts from different sources, you do NOT need a blend — just add multiple data sources to the report.
Blends are required when ONE chart needs fields from TWO+ sources (e.g., Cost from Google Ads + Sessions from GA4 in the same line chart).
If you want separate charts (one from each source) on the same page, just add both data sources to the report — no blend needed. Insert → Add data → pick second source.
If you want a calculated field that uses fields from two sources (e.g., true ROAS = revenue from GA4 / cost from Google Ads), you need a blend.
If you want to filter Source A by a dimension that exists in Source B (e.g., filter GA4 sessions to only campaigns active in Google Ads), you need a blend.
When in doubt, try the non-blended approach first. Blends add complexity; only adopt when the use case truly needs them.
Step 2
Looker Studio supports Left outer, Right outer, Inner, Cross, and Full outer joins. Pick based on which source is the "primary" record set.
Left outer join: keep all records from the LEFT (first) source; pull in matching records from the right. Use when the left source is your "system of record" and you want enrichment data from the right.
Right outer join: opposite of left. Less common.
Inner join: keep ONLY records that exist in both sources. Use when the question is "what records appear in both?"
Full outer join: keep everything from both, even non-matching. Adds null-filled rows.
Cross join: every combination of left × right. Rarely the right answer — usually a mistake.
For "show me cost (Google Ads) and revenue (GA4) by campaign," use LEFT OUTER with the source that has the more complete campaign list on the left. Usually that's Google Ads (every campaign exists in Ads; only campaigns that drove revenue exist in GA4).
Step 3
Open Resource → Manage blended data → Add a blend. Drag in data sources, configure join keys, set join type.
In the report editor, click Resource → Manage blended data → + Add a blend.
The blend editor opens with one source (Table 1) by default. Click + Join another table → pick Source B.
In the join configuration popup, set Join operator to Left outer (most common). Set Join condition — the field that connects the two sources.
For GA4 + Google Ads, the typical join key is Campaign — but the field name differs between sources. In Google Ads it's "Campaign name." In GA4 it's "Session campaign" or "Manual campaign name." Pick the matching fields.
Add dimensions and metrics you want in the blend output. Click Save. Name the blend clearly — "Google Ads + GA4 by Campaign."
Step 4
Drop the blend into a table chart. Compare against per-source queries with the same dimensions. Numbers must reconcile.
Build a table chart with the blend as data source. Dimension = Campaign. Metrics = Cost (from Google Ads), Sessions (from GA4).
Open Google Ads separately. Filter to same date range. Compare Cost per campaign — should match exactly.
Open GA4 separately. Filter to same date range, same campaign attribution. Compare Sessions per campaign.
If Cost matches but Sessions are off, the join is dropping rows. Common causes: campaign name mismatch (Google Ads has "Brand_NA_2026" but GA4 has "brand_na_2026" — case sensitive), or null-matching rows being filtered out.
Spot-check the lowest-traffic campaign. If a campaign with 5 sessions in GA4 shows as 0 sessions in the blend, the join is excluding it — usually because the campaign name in Google Ads has a different case or trailing space.
Step 5
In the blend, you can create calculated fields using metrics from multiple sources — e.g., true ROAS = GA4 Revenue / Google Ads Cost.
In the blend editor, scroll to the field list. Click + Add field (bottom-left).
Name: 'True ROAS'. Formula: SUM(GA4.Revenue) / SUM(GoogleAds.Cost). Use the table prefix (GA4. or GoogleAds.) to disambiguate fields with the same name.
Type: Number. Set display format in the chart (Format → Number → Percent or Currency depending on intent).
Save. Now charts using this blend can display True ROAS as a metric.
Caveat: blended calculated fields don't work in every chart type. Scorecards work; pivot tables work; some advanced chart types may show errors. Test before relying.
Step 6
Run tests on edge cases: campaigns with cost but no revenue, campaigns with revenue but no cost, paused campaigns. Document the join behavior.
Find a campaign that has Cost but zero GA4 sessions (paused campaign, or a brand campaign you don't track conversions on). The blend should show Cost normally and Sessions = 0 or null.
Find a campaign that has GA4 sessions but no Google Ads cost (organic-only, or a campaign that ran briefly before Looker Studio caught up). Left outer join means this campaign should NOT appear in the blend. If it does, you have an inner join misconfigured.
Find a typo-named campaign (Google Ads: 'Spring_Sale', GA4: 'spring_sale'). It should appear twice or not match — confirming case sensitivity in the join.
Document the blend in a Methodology page on the report: "Blend joins Google Ads + GA4 on Campaign name (case sensitive). Left source is Google Ads. Campaigns with no GA4 sessions show Sessions = 0."
Step 7
Blends slow as sources and fields multiply. Keep blends focused, limit to 2-3 sources, and pre-aggregate when possible.
Limit to 2-3 sources per blend. 5-source blends (the Looker Studio max) often take 15+ seconds to load.
Limit dimensions in the blend output to what charts actually need. Each unused dimension adds query cost.
For high-volume blends (1M+ rows), consider pre-blending upstream in BigQuery and connecting Looker Studio to the BigQuery view instead.
Avoid blending real-time sources (GA4 Realtime, Search Console latest) with batch sources (Sheets, BigQuery). Refresh cadences differ and you'll see flicker as parts of the chart update at different times.
Test load time after every blend change. If a chart goes from 2s to 12s, roll back the change and rethink the approach.
Common mistakes
Using inner join when you meant left outer
What goes wrong: Your blend silently drops campaigns that exist in one source but not the other. The dashboard reports $40K of Google Ads spend when actual is $60K — because $20K of spend was on campaigns with zero GA4 sessions. Bid decisions get made on the wrong number.
How to avoid: Default to LEFT OUTER for marketing blends. Use INNER only when you specifically want to filter to records that exist in both sources.
Joining on Campaign name when names get renamed
What goes wrong: A teammate renames 'Spring_Sale_2025' to 'Spring_Sale_2025_v2' in Google Ads. The blend immediately breaks for that campaign — historical data is now split into two rows, neither showing the full picture.
How to avoid: Join on Campaign ID (stable across renames) instead of Campaign name. Both Google Ads and GA4 expose Campaign ID — use it.
Blending too many sources in one chart
What goes wrong: A 5-source blend takes 14 seconds to render. Viewers stop opening the dashboard. The killer dashboard becomes shelf-ware. The hours invested in the blend become sunk cost.
How to avoid: Keep blends to 2-3 sources. For more complex multi-source needs, pre-blend in BigQuery and connect Looker Studio to the result.
Skipping validation against per-source queries
What goes wrong: The blend shows credible-looking numbers. Leadership acts on them. Six weeks in, someone notices the True ROAS metric is using a Google Ads campaign name that doesn't exist in GA4 — half the cost was never attributed. Budgets get reallocated on bad data.
How to avoid: After every blend change, validate at least 3 metrics against per-source queries with the same dimensions. Document on the dashboard.
Not documenting the blend on the dashboard
What goes wrong: Six months later, you don't remember why one chart shows True ROAS differently than another. You spend 45 minutes reverse-engineering the blend logic.
How to avoid: Add a Methodology section on the dashboard explaining each blend: join type, join key, source order, known edge cases. 10 minutes of docs saves hours of confusion later.
Recap
Done — what's next
How to connect Looker Studio to GA4 without the rookie mistakes
Read the next tutorial
Hand it off
Blends are where Looker Studio gets powerful — and where most DIY users stumble. A specialist who has built dozens of blended dashboards can spec the right joins, validate them, and document them in one afternoon. Initial blend builds run $150-400; ongoing maintenance bundles with monthly reporting work.
See specialist rates
Adding multiple data sources lets you build SEPARATE charts from each source on the same report — no joining. Blending joins data at query time so ONE chart can use fields from multiple sources. Use the simplest approach that solves your problem; blends add complexity.
Up to 5 sources per blend. Performance degrades meaningfully at 3+. For complex multi-source needs, blend upstream in BigQuery and connect Looker Studio to a single BigQuery view.
Three most common causes: (1) inner join is dropping rows that exist in only one source, (2) join key has mismatched values (case, whitespace, naming convention), (3) you're aggregating after the join and seeing duplicated rows from one-to-many relationships. Validate by re-running the same query per-source.
Yes — any data source in Looker Studio can be blended with any other. Common cross-platform blends: GA4 + HubSpot (lead-to-revenue attribution), Meta Ads + GA4 (Meta-attributed sessions). You'll need a partner connector for HubSpot/Meta (paid, typically $20-50/month per connector).
Looker Studio
The native GA4 connector looks like three clicks — but the choices you make in those clicks lock in sampling, scope, and refresh patterns for the life of the report. Here's the right way to wire it up.
Looker Studio
Calculated fields are how Looker Studio goes from 'shows data' to 'answers questions.' The syntax is its own dialect — not SQL, not spreadsheet. This tutorial covers the formula patterns that pay for themselves in week one.
Google Analytics 4
Linking these two correctly is what makes Google's stack actually function as a stack. Done wrong, you'll have two systems that disagree about reality for years. Here's the right setup, in order.
Google Ads
Linking these two correctly is what makes Google's whole stack actually function as a stack. Done wrong, you'll have two systems that disagree about reality for years. Here's the right setup.