How to pull Klaviyo data into Looker Studio (the agency playbook)
Step-by-step guide to connecting Klaviyo to Looker Studio. Build a live agency dashboard, pick the right connector, and share reports clients actually use.

How to pull Klaviyo data into Looker Studio (the agency playbook)
Klaviyo's native analytics work fine for campaign-level checks. You can see who opened, who clicked, which flow is generating revenue. But when you're managing multiple client accounts, the built-in reports start to feel like a straitjacket.
You can't blend Klaviyo data with Google Analytics, Meta Ads, or Shopify revenue in any meaningful way. The date range controls are rigid. There's no way to share a live Klaviyo dashboard with a client who doesn't have a Klaviyo login. And building a custom view inside Klaviyo requires navigating enough menus to make you question your career choices.
Looker Studio (formerly Google Data Studio) solves most of this. It's free, connects to almost anything, and produces shareable reports that update automatically. This guide walks through how to actually do it: connector options, which metrics to prioritize, and the mistakes agencies keep repeating.
Step 1: pick your connection method
Klaviyo doesn't have a native Looker Studio connector, so you need a third-party solution. There are three realistic options.
The first is a direct API connector. Tools like Supermetrics, Porter Metrics, or Funnel.io pull Klaviyo data via the API and surface it in Looker Studio with minimal setup. They handle rate limits, pagination, and data freshness automatically. The downside is cost: Supermetrics especially runs expensive for agencies managing many client accounts.
The second option is Google Sheets middleware. You pull Klaviyo data into a Google Sheet via the API or a no-code tool like Make or n8n, then connect that sheet to Looker Studio. Morefull breakdown of the tradeoffsustomize. If you want a comparison of how Make and n8n handle Klaviyo automations, there's a full breakdown of the tradeoffs at the link below.
The third is a BigQuery pipeline. For agencies handling serious data volume or wanting to blend sources across multiple clients, pushing Klaviyo data to BigQuery and connecting that to Looker Studio is the most robust path. Also the most complex. Only worth it if you're already running BigQuery elsewhere.
For most agencies, the Sheets middleware approach hits the right balance: low cost, easy to customize, and simple enough to maintain without a dedicated data engineer. The right pick depends on your account volume and what you're willing to pay for convenience.
In short: start with Sheets, upgrade to a paid connector when the time cost of maintenance exceeds the subscription cost.
Step 2: set up the Klaviyo API connection
Whether you're using Sheets middleware or a paid connector, you'll be working with the Klaviyo API. Here's what matters before you write a single line of code.
Go to Klaviyo, then Settings, then API Keys, and create a new private key. For read-only reporting, restrict it to the minimum scopes you need: metrics, campaigns, flows, and profiles. Don't hand full-access keys to third-party connectors — a read-only key is enough and limits your exposure if a connector is compromised.
The main endpoint you'll use is /api/metric-aggregates/. This is where aggregated data lives: open rate, click rate, revenue, conversion rate. Everything you'd want in a Klaviyo dashboard passes through here. The endpoint accepts a metric ID, a date range, and an interval (daily, weekly, or monthly).
Each metric in Klaviyo has a unique ID. Pull the full list by calling /api/metrics/ and filtering by name. The ones you'll reference most often: 'Placed Order' for revenue, 'Opened Email', 'Clicked Email', and 'Received Email'. Document these IDs somewhere accessible because you'll reference them constantly across accounts.
Klaviyo's API has rate limits that vary by endpoint. For historical pulls, stay under 100 requests per minute. If you're scheduling a Sheets refresh, add a short sleep between calls to stay clean. The API returns detailed error messages when you hit limits, so test your pull script with a small date range first.
Once your API calls are returning valid data consistently, you're ready to structure the pipeline.
Step 3: structure your Google Sheet properly
If you're going the Sheets route, the structure you choose now determines how painful Looker Studio will be later. Get this wrong and you'll spend hours reshaping data that should have been clean from the start.
Use one row per data point. One row equals one metric, one date, and one campaign or flow if applicable. Don't put different metrics in different columns of the same row if you plan to use Looker Studio's native dimension and metric system. It's designed around tidy data, and it'll fight you if your structure isn't.
A clean layout: date in column A, metric name in column B, value in column C, campaign or flow ID in column D, campaign or flow name in column E. This lets you use metric name as a dimension in Looker Studio and filter your charts to specific metrics without creating separate data sources.
Keep a separate sheet tab for metadata: campaign names, send dates, tags, campaign type. You'll join this with your metrics data later using a data blend in Looker Studio. It's worth spending 20 minutes on this now rather than rebuilding it after your first client review.
What this means: clean Sheet structure is upstream of everything. The Looker Studio experience is only as good as the data feeding it.
Step 4: connect Looker Studio to your data source
Open Looker Studio and create a new report. Click 'Add data' and select your source type.
For Google Sheets: select your sheet and the specific tab with the metrics data. Make sure the header row is included and the first row isn't blank.
For a paid connector: find it in the Looker Studio Connector Marketplace, authenticate with your Klaviyo API key, and choose which metrics to pull. Most connectors guide you through the setup with reasonable defaults.
For BigQuery: use the native BigQuery connector and point it at your Klaviyo dataset. You'll have more control over schema here, which is useful if you're blending multiple data sources.
Once connected, you land in the field editor. Set the date column to type 'Date'. Set metric name to type 'Text' — it's a dimension, not a number. Set value to type 'Number'.
Then create calculated fields for rates. Open rate is the count of 'Opened Email' events divided by the count of 'Received Email' events for the same period. You write this as a CASE-based formula in Looker Studio's calculated field editor. Do the same for click rate and conversion rate. These calculated fields are what turn raw event counts into actionable percentages.
With the data source configured correctly, building charts is the easy part.
Step 5: build a Klaviyo dashboard that actually gets used
This is where most tutorials get it wrong. They show what's technically possible rather than what a client will actually open. A 40-chart dashboard nobody reads is worse than a 6-chart one that gets pulled up on every call.
For agency reporting, start with account health at the top of the page. Total Klaviyo-attributed revenue for the last 30 days versus the prior period, list growth over time, and deliverability health including unsubscribe rate and bounce rate. Big numbers, easy to scan, quick to explain.
Below that, add flow performance. A table with all active flows sorted by revenue, showing open rate and click rate. Revenue per flow is the number clients ask about most in reviews. If a flow is generating 40% of Klaviyo revenue, that's the thing worth optimizing, and this table makes it obvious.
Then a campaign breakdown: the same metrics but for campaigns, filterable by date range. A scorecard showing how the last campaign compares to the account average is a useful addition. It gives clients context without requiring them to interpret raw numbers.
If you're tracking segment sizes over time in your Sheet, a line chart showing key segmentstructuring Klaviyo segments for LTVissues before they become visible in other metrics. There's a guide on structuring Klaviyo segments for LTV that's worth reading before you decide which segments to track.
Add a date range filter at the top and set the default to last 30 days. Keep the whole report to one page if you can manage it. Two pages at most. If you feel like yowhich Klaviyo metrics actually matter too many things. Before finalizing the layout, this article on which Klaviyo metrics actually matter helps cut the noise before it ends up in the dashboard.
A dashboard nobody questions is one that's quietly doing its job.
Step 6: share the report and set up refresh schedules
Looker Studio reports share like Google Docs: a link, no account required for view-only access. For client-facing reports, set the permission to 'Anyone with the link can view'. Most clients don't want to log into another platform just to see their email numbers.
For data refresh, if you're using Sheets middleware, schedule your data pull to run daily. A Google Apps Script time trigger works fine, or you can use a Make or n8n scheduled workflow. If you're using a paid connector, configure the refresh schedule in the connector settings. Daily is enough for email reporting.
One thing worth adding early: a 'last updated' timestamp. Write the timestamp of the last successful sync to a dedicated Sheet cell, then pull it into a text field in Looker Studio. Clients notice when data is stale, and you want to catch sync failures before they do.
Building a monitoring and alerting system for Klaviyosay the open rate drops by half overnight, or a revenue flow goes quiet), that's a separate layer. Building a monitoring and alerting system for Klaviyo covers exactly this without it turning into a maintenance headache.
A shared, auto-refreshing report is the closest thing to a 'set it and forget it' client deliverable you'll find in email marketing.
Step 7: maintain the setup across multiple client accounts
For agencies managing more than a handful of brands, templating this setup early is worth the investment.
Build a master Looker Studio report with all the standard sections, then copy it for each new client and point it at a new data source. The 'copy report' function in Looker Studio handles this in a few clicks. You'll still need to remap some data source fields, but it's much faster than building from scratch.
For the Sheets layer, use a consistent column structure across all accounts so your pull scripts are reusable. Parameterize the API key and account ID at the top of each script. Never hard-code client credentials into shared files or version-controlled code.
Keep an internal tracker for which clients have active dashboards, when each one last synced, and any known data issues. When something breaks, you want to know before the client does. If you're running this across 10 or more Klaviyo accounts, SPARKCRM's account-level monitoring can surface anomalies early enough to fix them before they show up in a client report.
The agencies that maintain reporting infrastructure well aren't doing more work. They've built systems that catch problems automatically and scale without proportional manual effort.
My recommendation: set up the template and the tracker on account one, before you need them. Adding them retroactively across 15 clients is not fun.
Checklist: is your Klaviyo dashboard ready?
Before calling a report done, run through this list:
- API key created with minimum required scopes (metrics, campaigns, flows, profiles)
- Metric IDs documented for each account (Placed Order, Opened Email, Clicked Email, Received Email at minimum)
- Google Sheet structured with one row per metric per date, consistent across accounts
- Data source connected in Looker Studio with correct field types (Date, Text, Number)
- Calculated fields set up for open rate, click rate, and conversion rate
- Dashboard includes account health overview, flow performance table, and campaign breakdown
- Date range filter added with last 30 days as default
- Refresh schedule configured and tested (daily recommended)
- Last-updated timestamp visible in the report
- Report shared with view-only link, no login required
- Looker Studio template saved and ready to copy for the next client
Found this article helpful? Share it with others!