BigQuery BigQuery Claude AI Marketing Dashboard

From Marketing Data in BigQuery to an Interactive Dashboard — In a Single Conversation with Claude

Juan Bello

Juan Bello

Founder, Porter Metrics

April 2026
16 min read
What makes this guide different: Every other tutorial stops at the query. They show you how to ask Claude about your data. This one shows you how to get your marketing data from 20+ platforms into BigQuery automatically, and then turn that data into a published, shareable interactive dashboard — without Data Studio (formerly Looker Studio), without a BI developer, and without writing a single line of SQL.

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. 1

    Log in to Porter Metrics at app.portermetrics.com. If you are new, you can start for free.

  2. 2

    Click Create and select BigQuery as the destination. Porter Metrics supports multiple destinations — select Google BigQuery for this workflow.

  3. 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. 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. 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. 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. 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. 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_performance or cross_channel_daily. You can create a new dataset and table directly from the Porter Metrics interface.

  9. 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. 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. 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. 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. 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. 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.

What your table will look like: After the first sync, you will have a BigQuery table with columns like 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. 1

    Go to Google Cloud Console → IAM & Admin → Service Accounts

  2. 2

    Click “Create Service Account”

  3. 3

    Name it: claude-bigquery-readonly

  4. 4

    Add a description: “Read-only access for Claude MCP — marketing data”

  5. 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
Security tip: Do NOT grant BigQuery Admin, BigQuery Data Editor, or BigQuery Data Owner. Claude only needs to read your marketing data — never write to it. Keep this service account strictly read-only.

Download the JSON Key File

  1. 1

    Click on your new service account to open it

  2. 2

    Go to the Keys tab

  3. 3

    Click Add Key → Create new key

  4. 4

    Select JSON format and click Create

  5. 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"
      }
    }
  }
}
Replace these values: 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. 1

    List your marketing tables — Type: “List all the datasets and tables available in my BigQuery project.” Claude will call the list_tables tool 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. 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 spend is numeric, platform is a string, date is a date field, etc. This confirms Claude understands your data structure.

  3. 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]
Real marketing example: “Query my 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
Keeping it current: When Porter Metrics refreshes your BigQuery table with new marketing data, go back to Claude and say “re-query the BigQuery table and update the dashboard with fresh numbers.” Claude edits the existing Artifact in under a minute — no rebuild required.

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.

Performance Marketing

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.

Query my paid_media_performance table. Show me ROAS, spend, and conversions for the last 30 days broken down by platform. Identify which platform had the best ROAS and which had the worst. Build a comparison dashboard for the weekly performance review.
Marketing Agency

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.

Query the client_acme.paid_media table. Pull all metrics for Q1 2026. Calculate period-over-period change vs. Q1 2025. Build a professional dashboard for a client presentation — include a performance summary section, a spend vs. revenue trend, and a top 5 campaigns table. Light theme, clean design.
E-Commerce Marketing

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.

Join my ad_spend table with my shopify_orders table in BigQuery. Calculate true ROAS per platform (revenue attributed / spend) for the last 60 days. Identify the top 3 campaigns driving the most revenue. Build a revenue attribution dashboard for the CMO.
SEO & Paid Search

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.

Query my search_performance table which contains both Google Ads and Google Search Console data. For each keyword or query, show paid clicks, organic clicks, total visibility, and paid spend. Identify queries where we are paying for traffic we could rank for organically. Build a blended search dashboard.

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 .gitignore immediately. 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, and ALTER. 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. Review JOBS_BY_PROJECT periodically 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

Multi-Client

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.

Automation

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.

Advanced Analytics

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.

Upcoming

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.

Ready to start? Set up your first Porter Metrics → BigQuery connection, then follow the MCP steps above. Your first Claude-generated marketing dashboard can be live in under 30 minutes.

Ready to connect your marketing data to BigQuery and Claude?

Porter Metrics syncs 20+ marketing platforms to BigQuery automatically — so Claude always has fresh, structured data to query and visualize.

Start with Porter Metrics for free →