How it works

One warehouse behind every report

ReportFlat turns four scattered ad and analytics cabinets into a single, reconciled source of truth — then serves fast, branded client reports that never hit a platform quota. Here is the whole pipeline, step by step.

GA4 · Google Ads · Microsoft/Bing Ads · Search Console · Shopify

The four-step pipeline

Replicate, reconcile, serve, deliver. Each step exists so the numbers your clients see are fast, consistent and defensible.

01

Replicate the cabinets

Every ad and analytics account is mirrored into one Postgres warehouse, directly from the source.

02

Reconcile the truth

Shopify is the source of truth for sales; ad platforms supply spend and clicks, tied out to the cent.

03

Serve, don’t re-query

Widgets read from the warehouse — never a live platform call — so reports render instantly and quota-free.

04

Deliver, branded

PDF, live portal, emailed HTML, scheduled sends and client logins — all under your logo and domain.

Step 01

Replicate the cabinets into one warehouse

Instead of live-calling five platforms every time a report loads, ReportFlat mirrors each account into one Postgres warehouse — directly, with no BigQuery hop in between.

Five sources, one schema

GA4, Google Ads, Microsoft/Bing Ads, Google Search Console and Shopify land in a single fact table, normalized to a common shape of connector, account, date, channel, campaign and metric.

Direct, not via BigQuery

Data is pulled straight from each cabinet, so freshness is measured in the last sync — not a downstream export lag. You always know exactly how current every number is.

Idempotent daily sync

A scheduled ingest refreshes a rolling window each day and re-inserts cleanly, so re-runs never double-count. Every widget can stamp a “data as of…” timestamp.

Spend, clicks, impressions, CTR
Pulled from Google Ads and Microsoft/Bing Ads by campaign.
Sessions & organic visibility
GA4 traffic and Search Console impressions, clicks and position.
Orders, revenue & journeys
Shopify sales with the full customer-journey history for attribution.
Step 02

Reconcile the truth

Ad platforms each claim the same sale. ReportFlat settles the disagreement with one rule: Shopify owns revenue, ad platforms own cost — and then it shows you the story from five attribution angles.

Shopify is the source of truth

Sales and orders are reconstructed from Shopify’s own order records and customer-journey history, so the revenue in your report matches the revenue in the Shopify admin — to the cent. Ad platforms are never allowed to report revenue; they supply spend and clicks only, which ends the double-counting where three platforms each take credit for one order.

Five attribution models

The same orders are rebuilt across last-non-direct (the default), last-touch, first-touch, linear and any-touch. A paid-media client sees how much credit paid channels earn on a last-touch basis; a full-service client sees the blended picture — all from one reconciled dataset, no re-import.

Cost & ROAS by campaign
Spend is assigned once per campaign to avoid syndication double-count.
Sessions joined to sales
ShopifyQL sessions matched with orders and ad cost by campaign name.
Ties out to the admin
Report revenue reconciles with what the client sees in Shopify.
Step 03

Serve, don’t re-query

Because every number already lives in the warehouse, rendering a report is a database query — not a round trip to five external APIs. This is the anti-quota thesis, and it changes what reporting feels like.

Quota-free by design

Widgets never live-call a platform at render time, so a busy reporting day can’t exhaust an API rate limit or get you throttled mid-month. Refresh a 40-client dashboard as often as you like.

Instant renders

Reports and live portals load at database speed, not at the mercy of the slowest external API. Clients open a dashboard and it is simply there.

Consistent every time

Every widget compiles to SQL over the same fact table, so a KPI, a chart and an export always agree. Period comparison — month-over-month and year-over-year — comes from the same source.

Server-side scope
Paid, organic or all — enforced on the query, never trusted from the client.
Ratio & blended metrics
ROAS, CPA and CTR computed across any connector or a blended source.
Public read-API
Export any metric as JSON or CSV for spreadsheets and BI.
Step 04

Deliver it branded

A report only counts if the client actually reads it. ReportFlat puts your work in front of them four ways — every one under your logo, your domain and your email-from address.

PDF

Pixel-clean, print-ready PDFs generated from the same warehouse data — perfect for the monthly deck and the record.

Live portal

A shareable, white-labeled link to a live dashboard that stays current — no attachment to lose in an inbox.

Emailed HTML

The report renders in the body of the email, not as an ignored attachment, so the headline numbers are visible on open.

Client logins

Clients sign in to their own scoped, read-only dashboard — a paid client never sees organic data, and vice versa.

Scheduled sends
Automatic delivery on your cadence — weekly, monthly or custom.
Master templates
Design one layout, propagate to many clients, edit once to update all.
Freshness & alerts
Every widget shows when it was last synced, with threshold alerts.

See the pipeline on your own accounts

7-day free trial · no credit card · full Agency features.

Start free