The e-commerce analytics stack: Shopify + Klaviyo + GA + Stripe
Hi, this is Vivek, building Contextflo. I share practical notes on getting answers from your data, a couple of times a month.

Your e-commerce data lives in four places: Shopify for orders, Klaviyo for email, Google Analytics for traffic, and Stripe for payments. Answering "which email campaign drove the most revenue last month" needs all four. Here is how to set that up in an afternoon.

The stack
- Shopify + Klaviyo → Airbyte → your warehouse (BigQuery or Snowflake)
- Stripe + Google Analytics → Contextflo, direct API connection
- Warehouse + APIs → all queryable from Claude in one conversation
The thing worth noticing is step 2. You do not have to ETL everything into the warehouse before you can ask a question about it. Sources that have a decent API can be queried directly, which means less pipeline to build and less pipeline to maintain later.
What you can ask once it is connected
Which Klaviyo campaign drove the most Stripe revenue last month?
What's our blended CAC when I combine Google Analytics acquisition data with Stripe revenue?
Show me the customer journey: GA source → Shopify first order → Klaviyo email engagement → repeat purchase rate.
Which products have the highest refund rate in Stripe but the best reviews in Shopify?
Each of these used to need someone who knew all four schemas and had an afternoon free. That is the actual bottleneck in most e-commerce teams, and it is not analysis, it is joining.
The joins that will bite you
Cross-source questions are only as good as the key you join on, and in this stack the key is almost always email or customer ID, both of which are messier than they look.
Shopify and Stripe will disagree on order count, because Shopify records an order at checkout and Stripe records a charge, and those diverge on failed payments, retries, and partial refunds. Klaviyo identifies people by email, while Shopify has both guest checkouts and accounts, so the same human shows up twice. Google Analytics does not know who anyone is at all, so anything joining GA to revenue is attribution, not fact.
None of this makes the questions unanswerable. It means the first time you ask one, check the answer against a number you already trust. Once you have settled how orders map to charges and how guest checkouts are resolved, save that as a definition so every later answer uses the same logic instead of re-deriving it.
Why this stack works
Most e-commerce teams do one of two things. They build a dashboard inside each tool, which gives four fragmented views and no way to ask across them. Or they hire someone to build a unified data model, which is correct and takes a quarter.
This is the middle path: a unified view without the unified model. You ask a question that spans sources, and the model works out where to pull from and how to combine it, using definitions you have written down once.
It is not free of tradeoffs. A real dimensional model is still better if you have the team to build and maintain one. Most stores under a certain size never will, and the choice is not between this and a warehouse model, it is between this and a spreadsheet.
Here is a more in-depth look at Contextflo and how it works.
What is Contextflo?
Contextflo is a governed context layer between your data and the AI your team already uses. Connect your warehouse once, and your team asks questions in their own Claude or ChatGPT. The model writes and runs the SQL; Contextflo supplies the definitions, the per-user access control, and the audit that make the answers trustworthy. Your data never moves, and you do not need a data team.
How it works
Your team queries in their own Claude or ChatGPT over MCP, so you bring any agent rather than a locked-in bot, and every answer comes back with the SQL shown and access enforced per user.
Find out if Contextflo is the right fit for you.
See how teams use Contextflo
Related posts
Keep reading

Conversational analytics: 5 ways to set it up, compared
7 min read

How to connect Claude to BigQuery? What works and what doesn't in 2026
8 min read

How to connect Claude to Postgres without giving it write access
7 min read

How to build a BI dashboard with Claude that your team can actually trust
8 min read

How to give Claude read-only access to your database (it isn't always the default)
7 min read

You connected your warehouse to Claude, now what?
5 min read

The official Postgres server for Claude is archived. Here's what to use instead.
7 min read

Why is the team missing sprint goals? How to analyze Jira data with AI
8 min read

Are my ads actually profitable? How to analyze Facebook and TikTok ads together with AI
7 min read




