Data you can trust.
Infrastructure you can keep.
One e-commerce data foundation in BigQuery. Stable definitions, instant dashboards, and an AI Analyst that shows its work.
One Source Of Truth
Meta says one thing, Shopify says another. Get one view you can stand behind.
Trust is engineered
Documented definitions + automated QA (no more "which revenue is right?").
AI answers you can verify
Ask in Slack. Get the answer, visualization, plus the SQL behind it.
No lock-in
Your foundation stays stable in BigQuery. Keep your tables, dashboards, and SQL. Leave without rebuilding.
Trusted by fast-growing e-commerce brands
You know the feeling
“Is that number actually right?”
You’re about to make a call—budget, promo, inventory, forecast—and the room stalls.
SourceMedium was built to end that cycle.
How it works
Three steps. One foundation.
Our data stack is purpose built on GCP for fast growing e-commerce brands.
01 CONNECT
Unify all your first party data
Prebuilt connectors for e-commerce, ads, subscriptions, and ops. We ingest what you already run and avoid per-connector surprise bills.
Show all Show less
Show all Show less
02 STANDARDIZE
Align on one set of definitions
We reconcile source differences across commerce, ads, and analytics. We define the metrics and run daily checks so definitions don’t drift.
SourceMedium
Standardized Metrics Layer
We translate raw platform data into business metrics your team recognizes. Clear definitions and SQL make it easy to understand and verify.
- Governance and QA
- 2,500 data quality tests
- Consistent definitions
- Documented metrics
- Performance
- Fast queries at scale
03 ACTIVATE
Use it everywhere your team works
BigQuery stays the source of truth. Dashboards and the AI Analyst run on the same definitions in your warehouse. Every number stays verifiable and auditable.
Infrastructure
BigQuery Foundation
We set up BigQuery the right way from day one. Datasets, naming, roles, permissions, and baseline compute come preconfigured so it stays fast and manageable as you scale.
Analytics
Dashboards
Curated dashboards that surface what matters. Use our prebuilt Looker Studio template, or bring your own BI.
AI Analyst
Verified Answers
Purpose-built for e-commerce. It answers from your standardized metrics, not a generic analytics chatbot. Ask in Slack and get the answer plus SQL you can run in BigQuery. Easy to verify. Easy to share.
AI Platform
AI Integrations
Use SourceMedium inside the AI tools you already use. Connect via MCP, call a simple REST API, and package repeatable workflows as Agent Skills.
How we operate
Everything without the stack tax.
We own the foundation end to end. We ship changes safely, keep it reliable, and keep pricing simple as you scale.
One accountable partner
One accountable owner for the foundation. No vendor handoffs. No finger pointing.
Predictable monthly pricing
No per-connector surprises. No hidden maintenance fees as you add sources and scale.
Ship changes safely
We document definition changes, test them, and roll them out without breaking trust.
Transparent by design
Access the underlying data and documented metric definitions. We manage the transformation logic. You can verify every number and extend the schema with your own models.
Built in your warehouse
The foundation lives in your BigQuery project. You keep ownership and can leave without rebuilding.
Operational rollout support
We help your team adopt dashboards and AI workflows. Not just ship tables and disappear.
Trust layer
Data you can trust.
A schema you can build on.
Trust comes from definitions you can inspect.
We keep them stable as your business changes.
Every dashboard chart and AI answer stays traceable back to warehouse logic.
AI Analyst
No more black box AI
Finally, AI you can verify. Not a chatbot. Not another web app. An always awake e-commerce analyst that lives in Slack.
Every tool has “AI” now. Most of it is a black box. SourceMedium’s AI Analyst runs on your standardized metrics, speaks operator language, and includes SQL with every answer.
Questions you can ask
- "Which channels are driving LTV at scale?"
- "Which email campaigns brought in the most new customers?"
- "How is my attribution health?"
- "How is LTV defined?"
Show me my campaign and creative performance for last week on Meta
Video creatives continue to outperform static images with an average ROAS of 3.2x vs 1.8x. The Summer Collection campaign is your top performer with spend efficiency improving 18.8% week-over-week.
| Campaign | Ad Spend | ROAS | vs Prev Week |
|---|---|---|---|
| Summer_Collection_Launch | $48,200 | 3.8x | +18.8% |
| Broad_Awareness | $42,300 | 0.9x | -18.2% |
| New_Product_Launch | $38,600 | 1.2x | +9.1% |
| Retargeting_Abandoned_Cart | $32,700 | 3.5x | +6.1% |
| UGC_Testimonials | $27,500 | 2.9x | -9.4% |
This query analyzes Meta ad performance for both campaigns and creatives over the past 14 days, comparing current week ROAS with previous week, ordered by ad spend and showing percentage changes.
WITH campaign_performance AS (
SELECT
campaign_name,
SUM(spend) as total_spend,
SUM(attributed_revenue) as total_revenue,
ROUND(SUM(attributed_revenue) / NULLIF(SUM(spend), 0), 1) as roas,
LAG(ROUND(SUM(attributed_revenue) / NULLIF(SUM(spend), 0), 1)) OVER (PARTITION BY campaign_name ORDER BY date_trunc('week', date)) as last_week_roas
FROM ad_performance
WHERE platform = 'Meta'
AND date >= CURRENT_DATE - INTERVAL '14 days'
GROUP BY campaign_name, date_trunc('week', date)
),
creative_performance AS (
SELECT
creative_name,
creative_type,
SUM(spend) as total_spend,
SUM(attributed_revenue) as total_revenue,
ROUND(SUM(attributed_revenue) / NULLIF(SUM(spend), 0), 1) as roas,
LAG(ROUND(SUM(attributed_revenue) / NULLIF(SUM(spend), 0), 1)) OVER (PARTITION BY creative_name ORDER BY date_trunc('week', date)) as last_week_roas,
ROUND(SUM(spend) / NULLIF(SUM(conversions), 0), 2) as cpa
FROM ad_performance
WHERE platform = 'Meta'
AND date >= CURRENT_DATE - INTERVAL '14 days'
GROUP BY creative_name, creative_type, date_trunc('week', date)
)
SELECT
'Campaign' as entity_type,
campaign_name as entity_name,
total_spend,
total_revenue,
roas,
ROUND(((roas / NULLIF(last_week_roas, 0)) - 1) * 100, 1) as roas_pct_change
FROM campaign_performance
WHERE date_trunc('week', date) = date_trunc('week', CURRENT_DATE)
UNION ALL
SELECT
'Creative' as entity_type,
creative_name as entity_name,
total_spend,
total_revenue,
roas,
ROUND(((roas / NULLIF(last_week_roas, 0)) - 1) * 100, 1) as roas_pct_change
FROM creative_performance
WHERE date_trunc('week', date) = date_trunc('week', CURRENT_DATE)
ORDER BY entity_type, total_spend DESC; Ready to stop debating the numbers?
Get started
Tell us a bit about your brand and stack—we’ll follow up with a quick walkthrough.
You're all set