You are running campaigns across Meta Ads, Google Ads, TikTok, LinkedIn, and more. The data is fragmented across platform dashboards that each tell a different story. Getting a unified view — ROAS by channel, spend vs. revenue trend, cross-platform CAC — takes hours of exporting, cleaning, and copy-pasting into spreadsheets.
What if you could consolidate all of that marketing data into a single BigQuery table automatically, and then open Claude, ask a question in plain English, and say “now build me an interactive dashboard from this” — and it just did?
That is exactly what this guide covers. A complete pipeline: Porter Metrics pushes your marketing data into BigQuery on autopilot, and Claude queries that data and generates the dashboard — all in one conversation.
The Architecture: Five Nodes, One Conversation
Before touching any configuration, it helps to understand what we are building. The full pipeline has five components that work together as a seamless chain:
Porter Metrics
Connects 20+ marketing platforms — Meta Ads, Google Ads, TikTok, LinkedIn, GA4, and more — and pushes normalized marketing data into BigQuery automatically on a schedule you define.
Google BigQuery
Your marketing data warehouse. Stores months of cross-platform campaign data — spend, impressions, clicks, conversions, ROAS — in a single structured table that Claude can query in real time.
MCP Server
A Model Context Protocol server that acts as a secure bridge between Claude and your BigQuery project. It exposes three core tools: list tables, describe schema, run query.
Claude Desktop
The AI interface that connects to the MCP server, reads your marketing data schema, translates natural language into SQL, runs the queries, and generates the dashboard — all in one conversation.
Published Dashboard
One click on the Publish button gives you a shareable URL — an interactive, filter-ready marketing dashboard you can drop in Slack, present to a client, or share with your team.
That is the entire chain. Let us build it — starting with the most important step: getting your marketing data into BigQuery.
Step Zero: Load Your Marketing Data into BigQuery with Porter Metrics
Before Claude can query anything, your marketing data needs to be in BigQuery — structured, normalized, and automatically refreshed. This is the step most tutorials skip, and it is the reason most AI-generated dashboards end up being demos rather than production tools.
Manually exporting CSVs from Meta Ads, Google Ads, and TikTok and uploading them to BigQuery is not sustainable. You need a pipeline. Porter Metrics is that pipeline — a no-code connector that pulls data from 20+ marketing platforms and writes it directly into your BigQuery tables on a schedule.
Why Porter Metrics for BigQuery?
Porter Metrics normalizes field names, date formats, and metric definitions across platforms — so a “click” from Meta Ads and a “click” from Google Ads are the same column in your BigQuery table. That consistency is what makes Claude’s cross-channel analysis accurate rather than misleading.
Step-by-Step: Send Marketing Data to BigQuery with Porter Metrics
Porter Metrics BigQuery Setup
-
1
Log in to Porter Metrics at app.portermetrics.com. If you are new, you can start for free.
-
2
Click Create and select BigQuery as the destination. Porter Metrics supports multiple destinations — select Google BigQuery for this workflow.
-
3
Select your marketing data sources. Porter Metrics connects to 20+ platforms: Meta Ads, Google Ads, TikTok Ads, LinkedIn Ads, Google Search Console, Google Analytics 4, Google Business Profile, Instagram Ads, Pinterest Ads, Snapchat Ads, Shopify, and more. You can combine multiple sources into a single BigQuery table.
-
4
Select the accounts from each data source. Choose the ad accounts, properties, or profiles you want to pull data from. If an account is not yet connected, Porter Metrics will prompt you to authenticate it via OAuth — no API keys or developer setup needed.
-
5
Connect your Google Cloud account. Authorize Porter Metrics to write to your Google Cloud project. You will grant it the BigQuery Data Editor role on the specific dataset you choose.
-
6
Select your Project ID. Choose the GCP project where the marketing data table will be created. This should be the same project where you will later create the Claude MCP service account.
-
7
Select the Dataset Location. Choose the BigQuery region closest to your team — US, EU, or a specific region like us-central1 or europe-west1. This affects query performance and data residency.
-
8
Select (or create) the Dataset and Table Name. Choose an existing dataset or create a new one (e.g.,
marketing_data). Name the table descriptively — for example,paid_media_performanceorcross_channel_daily. You can create a new dataset and table directly from the Porter Metrics interface. -
9
Select metrics and dimensions. Choose exactly which columns go into your table — campaign name, platform, impressions, clicks, spend, conversions, revenue, ROAS, date, and any other fields relevant to your analysis. If you need a custom metric (e.g., blended ROAS across platforms), Porter Metrics supports custom metric formulas.
-
10
Set the date range. Define how much historical data to load on the first sync — last 7 days, last 30 days, last 90 days, this month to date, this year to date, or a custom range. This becomes the initial dataset Claude will query.
-
11
Apply filters and sorting (optional). Filter by campaign status, objective, ad set, or any dimension to keep the table focused. Sort by date or metric. This step keeps your BigQuery table clean and cost-efficient.
-
12
Set the refresh frequency. Describe the update schedule in natural language — “every day at 7am” or “every hour” — and Porter Metrics handles the scheduling automatically. Daily refreshes are sufficient for most marketing dashboards.
-
13
Select the Write Mode. Choose how Porter Metrics writes data on each refresh: Overwrite replaces the full table (best for rolling windows like “last 30 days”), Append adds new rows without touching existing data (best for building a growing historical log), or Update modifies existing rows based on a key column.
-
14
Save and send. Click Save and trigger the first sync. Within minutes, Porter Metrics creates your BigQuery table and loads your marketing data — normalized, structured, and ready for Claude to query. This is the foundation of the entire pipeline.
date, platform, campaign_name, impressions, clicks, spend, conversions, revenue, and roas — with rows for each day and each platform you selected. This single, unified table is what Claude will query to generate your cross-channel marketing dashboard.
Prerequisites for the Claude MCP Connection
With your marketing data now in BigQuery, here is what you need to connect Claude to it.
| Requirement | Details | Free? |
|---|---|---|
| BigQuery Table via Porter Metrics | Your marketing data warehouse — set up in the previous step. | ✓ Porter Metrics free plan available |
| Claude Desktop | The macOS or Windows desktop app from Anthropic. Not the web interface. | ✓ Free to download. Requires a Claude account. |
| Node.js 18+ | Required to run the MCP server. Check with node --version. |
✓ Free at nodejs.org |
| GCP Service Account | A read-only identity for Claude to query your BigQuery tables. Created in Step 1 below. | ✓ Free |
Step 1: Create a Read-Only Service Account for Claude
We need a dedicated Google Cloud identity for Claude — a service account with read-only access to your marketing data tables. This keeps Claude’s access scoped and auditable.
Create the Service Account
-
1
Go to Google Cloud Console → IAM & Admin → Service Accounts
-
2
Click “Create Service Account”
-
3
Name it:
claude-bigquery-readonly -
4
Add a description: “Read-only access for Claude MCP — marketing data”
-
5
Click Continue
Assign the Minimum Required Roles
| IAM Role | What It Allows | Why It Is Needed |
|---|---|---|
| BigQuery Data Viewer | Read data from tables and views | Required to fetch query results from your marketing tables |
| BigQuery Job User | Run query jobs | Required to execute SQL against your project |
| BigQuery Metadata Viewer | List datasets, tables, and schemas | Lets Claude understand your marketing data structure |
Download the JSON Key File
-
1
Click on your new service account to open it
-
2
Go to the Keys tab
-
3
Click Add Key → Create new key
-
4
Select JSON format and click Create
-
5
A file downloads to your machine — store it securely
# Move to a secure directory
mkdir -p ~/.credentials
mv ~/Downloads/your-key-file.json ~/.credentials/claude-bigquery.json
# Restrict file permissions (macOS / Linux)
chmod 600 ~/.credentials/claude-bigquery.json
Step 2: Configure the BigQuery MCP Server
The Model Context Protocol (MCP) is an open standard that lets Claude talk to external systems through a defined set of tools. The BigQuery MCP server exposes three core tools to Claude: list_tables, describe_table, and execute_query.
Edit the Claude Desktop Configuration File
# macOS
open ~/Library/Application\ Support/Claude/claude_desktop_config.json
# Windows
notepad %APPDATA%\Claude\claude_desktop_config.json
Add the following block inside mcpServers:
{
"mcpServers": {
"bigquery": {
"command": "uvx",
"args": ["mcp-server-bigquery"],
"env": {
"BIGQUERY_PROJECT": "your-gcp-project-id",
"BIGQUERY_LOCATION": "US",
"BIGQUERY_KEY_FILE": "/Users/yourname/.credentials/claude-bigquery.json"
}
}
}
}
your-gcp-project-id → your actual GCP Project ID (the same project where Porter Metrics created your marketing data table). BIGQUERY_LOCATION → the region you selected in Porter Metrics (US, EU, us-central1, etc.).
Restart Claude Desktop
Close Claude Desktop completely and reopen it. On the new conversation screen, you should see a small tools icon in the input area — this confirms that Claude has detected and loaded the MCP server.
Step 3: Verify the Connection with 3 Marketing Test Queries
With the MCP server running, open a new chat in Claude Desktop and run these three verification queries. They confirm the pipeline is working end-to-end with your actual marketing data.
3 Verification Tests
-
1
List your marketing tables — Type: “List all the datasets and tables available in my BigQuery project.” Claude will call the
list_tablestool and return your Porter Metrics table (e.g.,marketing_data.paid_media_performance). If it appears, your credentials and project ID are correctly configured. -
2
Inspect the marketing table schema — Type: “What columns are in my paid media table? Describe the data types and what each column represents.” Claude will read the schema and explain that
spendis numeric,platformis a string,dateis a date field, etc. This confirms Claude understands your data structure. -
3
Run a real marketing query — Type: “Show me total spend, total revenue, and ROAS by platform for the last 30 days, sorted by ROAS highest to lowest.” If Claude returns a formatted table with accurate numbers from your BigQuery table, the entire pipeline is operational and ready for dashboard generation.
Step 4: The Master Prompt for Marketing Dashboard Generation
This is the step that changes everything for marketers. Most guides stop at “Claude can answer questions about your data.” What this pipeline does is go further: Claude queries your BigQuery marketing data live and then generates a complete interactive dashboard — all in the same conversation.
Use this prompt structure as your starting template:
You have access to my BigQuery marketing data through the MCP connection.
STEP 1 — Data retrieval:
Query the [project.dataset.table] table and pull [metric_1], [metric_2], [metric_3]
for the last [time period], grouped by [platform / campaign / date].
Also calculate [derived_metric] if relevant (e.g., ROAS = revenue / spend).
STEP 2 — Dashboard generation:
Using the data you just retrieved, build a complete interactive dashboard as a React Artifact with:
- A header with the dashboard title, date range, and last-updated date
- KPI cards at the top: [Total Spend], [Total Revenue], [Overall ROAS], [Total Conversions]
- A line chart showing [spend / revenue] trend over time, broken down by [platform]
- A horizontal bar chart ranking [platforms / campaigns] by [ROAS / revenue]
- A comparison table with all platforms: Spend, Revenue, ROAS, CAC, Conversions
- A filter to switch between platforms or date ranges
- Clean, professional design — [light / dark] color scheme
AUDIENCE: [CMO / agency client / performance marketing team]
PURPOSE: [weekly review / client report / budget allocation meeting]
marketing_data.paid_media_performance table. Pull total spend, revenue, ROAS, and conversions for the last 90 days grouped by platform and by week. Then build an interactive React dashboard with 4 KPI cards (total spend, total revenue, blended ROAS, total conversions), a line chart of weekly spend by platform, a bar chart of ROAS by platform ranked highest to lowest, and a filterable campaign table. Dark theme. Audience: weekly performance review with CMO.”
Step 5: Publish and Share Your Marketing Dashboard
Once the dashboard renders in the Artifact panel, publishing it takes a single click. In the top-right corner of the Artifact panel, click the Publish button. Claude generates a public URL that opens your fully interactive marketing dashboard — no login required for viewers.
Share the link in:
- Slack — Drop it in the channel for async team review
- Client reports — A live, interactive dashboard is far more impressive than a static PDF or screenshot
- Agency presentations — Open it full-screen during the monthly performance call
- Notion or Confluence — Embed the URL as an iframe in your campaign documentation
Marketing Use Cases: Real Workflows Teams Are Running Today
The setup is the same for every team. The use cases are where the real value emerges. Here is how marketing teams and agencies are using this BigQuery + Claude pipeline in practice.
Cross-Channel Paid Media Dashboard
Instead of logging into Meta Ads, Google Ads, and TikTok separately every Monday morning, performance marketers use Porter Metrics to consolidate all platform data into one BigQuery table and then ask Claude for a unified view. What used to take 2 hours of manual reporting takes 3 minutes.
Client Reporting at Scale
Agencies managing 10+ clients can set up one Porter Metrics connection per client, each writing to its own BigQuery dataset. Claude can then generate a client-ready dashboard per account — branded, professional, and shareable — in minutes instead of hours per client per month.
ROAS & Revenue Attribution
E-commerce marketers combine Shopify revenue data and paid media spend (Meta, Google, TikTok) in a single BigQuery table via Porter Metrics. Claude then runs full-funnel attribution analysis — no analyst, no SQL, no data team ticket required.
Blended Search Performance
Marketing teams with both SEO and PPC investment use Porter Metrics to combine Google Search Console data with Google Ads performance in a single BigQuery table. Claude generates a blended search view that shows where organic and paid overlap — and where to shift budget.
BigQuery + Claude vs Traditional Marketing BI Tools
The question marketers ask most often: why use this pipeline when Data Studio is free and Looker (formerly Looker Enterprise) already exists? Here is an honest comparison focused on marketing team realities.
| Dimension | Data Studio | Looker | BigQuery + Claude |
|---|---|---|---|
| Time to first dashboard | Hours (connector setup, chart building) | Days to weeks (LookML modeling, deployment) | Under 30 minutes (including full setup) |
| Cost (monthly) | Free (but connectors cost $29–$129/month each) | $3,000–$5,000+ (Looker Standard) | ~$0 additional beyond BigQuery query costs |
| Marketing connector quality | Variable — community connectors break frequently | Requires custom LookML blocks per platform | Via Porter Metrics — 20+ native connectors, always up to date |
| SQL / technical skill required | Low (but complex custom metrics need SQL) | High (LookML is its own language) | None — plain English prompts |
| Ad-hoc question answering | No — requires building a new chart | Partial — requires LookML Explore | Yes — ask any question in natural language |
| Cross-channel blended view | Difficult — data blending is limited and slow | Possible with significant setup | Native — single BigQuery table via Porter Metrics |
| Best for | Simple always-on reports for small teams | Enterprise BI with a dedicated data team | Marketing teams wanting fast, flexible, AI-driven reporting |
The honest take: Data Studio is fine for simple, single-platform reports. Looker is powerful but requires a data engineering team and a five-figure annual contract to justify. BigQuery + Claude via Porter Metrics is the gap in between — powerful enough for serious marketing analysis, fast enough for weekly reporting, and cheap enough for teams of any size.
The “Live Dashboard” vs the “Dead Dashboard”
Traditional marketing dashboards in Data Studio are dead by design — they answer the questions the builder anticipated when they built them, and nothing more. Want to slice campaign performance by a new dimension? That is a ticket to the data team or 30 minutes rebuilding a chart.
The BigQuery + Claude pipeline produces something qualitatively different: a live conversation around your marketing data. After Claude generates your initial dashboard, you can immediately continue:
- “Break the ROAS chart down by campaign objective instead of platform.”
- “Add a column showing spend as a percentage of total budget.”
- “Which campaigns should I pause based on this data? Give me a recommendation.”
- “What is driving the drop in conversion rate in week 8? What could explain it?”
Each instruction updates the Artifact in real time and Claude can also provide written analysis — not just charts. That combination of visual dashboard plus AI narrative is something no static BI tool can replicate.
Security: What You Must Get Right
Connecting an AI tool to your marketing data warehouse requires basic security discipline. Here are the non-negotiable practices for this setup:
- Keep the service account strictly read-only: The Claude service account should only have the three IAM roles listed in Step 1 — and access only to the datasets created by Porter Metrics. Never grant project-level admin permissions.
-
Never commit the JSON key file to version control: Add
.credentials/to your.gitignoreimmediately. If you use a shared team environment, consider GCP Workload Identity Federation instead of key files. -
Restrict to SELECT only: If your MCP server implementation supports it, explicitly block
INSERT,UPDATE,DELETE,DROP, andALTER. Claude should read your marketing data — never modify it. -
Audit Claude’s query activity: Every query Claude runs is logged in BigQuery’s
INFORMATION_SCHEMA. ReviewJOBS_BY_PROJECTperiodically to audit what has been queried and confirm Claude is only accessing the marketing tables you intend.
-- Audit recent queries run by Claude's service account
SELECT
job_id,
creation_time,
user_email,
query,
total_bytes_processed,
state
FROM `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE user_email = 'claude-bigquery-readonly@your-project.iam.gserviceaccount.com'
AND creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
ORDER BY creation_time DESC
LIMIT 50;
Next Steps: Where to Take This Further
One BigQuery Dataset Per Client
Agencies can scale this pipeline across their entire client roster. Set up one Porter Metrics connection per client, each writing to a separate BigQuery dataset. Claude can then switch between client datasets in the same session — generating a bespoke performance dashboard per client in minutes rather than hours per account.
Automated Weekly Marketing Reports
Claude Code (the terminal-based CLI from Anthropic) also supports MCP and can run as an automated agent. You can script it to query your BigQuery marketing table every Monday morning, generate an updated dashboard, publish the Artifact, and post the link to your team Slack channel — fully autonomous, zero manual effort.
Blended Cross-Channel Attribution
Porter Metrics can write multiple data sources — Meta Ads, Google Ads, TikTok, Shopify — into a single BigQuery table with a unified schema. This enables Claude to run true cross-channel attribution analysis: comparing blended ROAS, identifying spend overlap, and recommending budget shifts across platforms in a single prompt.
Remote MCP Server (Google’s Managed Option)
Google launched a fully managed remote BigQuery MCP Server in preview in January 2026. Once it reaches general availability, it eliminates the need for a local MCP server — the endpoint is hosted by Google, authenticated via OAuth, and works from any Claude client. Marketing teams will be able to connect BigQuery to Claude with zero local configuration.
Conclusion: Marketing Intelligence That Moves at the Speed of Your Questions
For years, the bottleneck in marketing reporting has not been the data. It has been the translation layer — the data team ticket, the dashboard developer, the LookML model, the Data Studio chart rebuild. By the time the report lands in front of you, the campaign decision has already been made.
The Porter Metrics + BigQuery + Claude pipeline collapses that translation layer. Your marketing data flows automatically from 20+ platforms into BigQuery. Claude reads it, analyzes it in plain English, and generates an interactive dashboard you can publish and share in minutes. The marketer with the question is now the marketer who gets the answer — on demand, without a data team in the loop.
Start with one channel. Connect Meta Ads or Google Ads to BigQuery via Porter Metrics, run the three verification queries in Step 3, and use the master prompt in Step 4 to generate your first dashboard. The first time it works, you will immediately understand why this approach is replacing traditional BI for marketing teams.