Which BI tool should an agency use to report to its clients?
If you report from client exports (ad platforms, Shopify, CRMs) and want each client's data kept apart, use xmetric: it's free with no per-viewer seats, files stay in your browser, and a saved view goes to the client as a view-only link. Pick Data Studio for live Google Ads and GA4 dashboards, Preset if your clients' data sits in SQL databases, and Tableau Cloud if the client already pays for it.
Updated
Our pick
xmetric
It's free for you and for every client who looks, each client's exports stay separate in your browser, and it opens the .twbx files clients inherit from their last agency. The calculations a client asks about (blended CPA, share of spend) are the same formulas Tableau uses.
Pick something else if
Your reports run on live Google Ads and GA4 data (Data Studio), your clients' data lives in SQL databases you connect to (Preset), or the client already licenses Tableau Cloud (Tableau).
xmetric makes this page. Every vendor fact below links to the vendor’s own page and the date we checked it.
How they compare
xmetric Our pickData Studio (formerly Looker Studio)PresetTableau Cloud
Cost to startxmetricFree in your browser. No account needed to open a file.Saving a workbook online and sharing a link need a free account.Source · checked October 20Data Studio (formerly Looker Studio)Data Studio (formerly Looker Studio) self-service tier, no charge.Web-only. Pro features (team workspaces, Google Cloud support, CMEK) cost extra; some partner connectors are paid.Source · checked October 17PresetStarter: $0, free forever, hosted on Preset CloudUp to 5 users and 1 workspace.Source · checked October 17Tableau CloudTableau Desktop Free Edition, Tableau Public and Tableau Reader are free.Free Edition can't publish, share online, or share packaged workbooks with others. Anything on Tableau Public is public.Source · checked October 17
Where client data goesxmetricIn your browser. Files are not uploaded.Source · checked October 17Data Studio (formerly Looker Studio)Live connections leave data in the source (cached temporarily); extracts and uploaded CSVs are stored by Google (Cloud Storage).Source · checked October 17PresetQueries run against the customer's own database, connected to Preset's hosted cloudSource · checked October 17Tableau CloudTableau Cloud: hosted and managed by Tableau. Tableau Server: managed by the customer. Desktop/Reader: local files.Source · checked October 17
Runs onxmetricAny modern browser on Mac, Windows or Linux. Nothing to install.Source · checked October 17Data Studio (formerly Looker Studio)Browser-based cloud service only (no desktop app).Source · checked October 17PresetPreset Cloud (fully managed SaaS); Enterprise adds Managed Private Cloud; also certified Superset for any infrastructureSource · checked October 17Tableau CloudTableau Desktop on Windows or Mac; Tableau Cloud hosted by Tableau, or Tableau Server managed by the customer.Source · checked October 17
Opens Tableau .twbx filesxmetricOpens .twbx and .twb in the browser app with dashboards, quick filters and filter actions working, plus sheets, data sources, formulas and packaged extracts.Source · checked October 20Data Studio (formerly Looker Studio)Not listed in the vendor's docs. File connectors listed: Google Sheets, Microsoft Excel, Upload CSV files, Extract data.Source · checked October 17PresetNot listed in the vendor's docs; supports SQL databases via SQLAlchemy, Google Sheets and CSV uploadSource · checked October 17Tableau CloudYes, native format. Opens in Tableau Desktop or Tableau Reader.Source · checked October 17
Try it: the CPA question every client asks
Here are eight weeks of one agency's ad spend for six clients, opened in xmetric on this page. Agency-wide cost per conversion fell from $36 in September to $24 in October, yet every single client's CPA rose. The reason is the mix: the coffee roaster's share of spend went from 9.5% to 30%.
Why did agency-wide CPA fall when every client got worse?
Computed by the xmetric engine
The data
Northlight Digital paid media, September and October 2026
SELECT client, month, SUM(spend) /SUM(conversions) AS cpa
FROM input
GROUPBY client, month
ORDERBY client, month
Rows
Client
Month
Conversions
Bayside Dental
2026-09
$53
Bayside Dental
2026-10
$63
Copperleaf Coffee
2026-09
$9.53
Copperleaf Coffee
2026-10
$9.85
Fernhill Fitness
2026-09
$30
Fernhill Fitness
2026-10
$33
Marlow Legal
2026-09
$149
Marlow Legal
2026-10
$168
Pinecrest Realty
2026-09
$80
Pinecrest Realty
2026-10
$95
Tidewater Kayak Tours
2026-09
$26
Tidewater Kayak Tours
2026-10
$30
3
Step 3
Where the spend went
Copperleaf Coffee, whose conversions cost about USD 10, went from a tenth of the spend to almost a third. The blend got cheaper; no client did. Set Compute Using to client: with the default (Table Across) each bar divides by itself.
SELECT client,
month,
SUM(spend)
/SUM(SUM(spend)) OVER (PARTITIONBY month) AS spend_share
FROM input
GROUPBY client, month
ORDERBY client, month
Rows
Client
Month
Spend share
Bayside Dental
2026-09
19.1%
Bayside Dental
2026-10
16.1%
Copperleaf Coffee
2026-09
9.5%
Copperleaf Coffee
2026-10
30%
Fernhill Fitness
2026-09
15.2%
Fernhill Fitness
2026-10
11.6%
Marlow Legal
2026-09
24.6%
Marlow Legal
2026-10
21.1%
Pinecrest Realty
2026-09
18.9%
Pinecrest Realty
2026-10
14.6%
Tidewater Kayak Tours
2026-09
12.7%
Tidewater Kayak Tours
2026-10
6.7%
This is why a client report shows each client's own numbers and never only the agency blend. It's also why the client files shouldn't share one workspace: the comparison above is yours, not something Bayside Dental should see.
Common mistake
Averaging each row's CPA
The average of ratios gives a week of law-firm ads (at most 8 conversions, each over USD 120) the same weight as a week of coffee ads with more than a hundred. October comes out near USD 68 instead of USD 24. Divide the sums.
Wrong
Point at a bar to read it.
Tableau
AVG([spend]/[conversions])
SQL
SELECTAVG(spend / conversions) AS cpa
FROM input
WHERE month ='2026-10'
Right
Point at a bar to read it.
Tableau
SUM([spend]) /SUM([conversions])
SQL
SELECTSUM(spend) /SUM(conversions) AS cpa
FROM input
WHERE month ='2026-10'
Run it on your own file
Drop one client's ad export (one row per campaign and day or week, with spend and conversions) and the same steps run on it, in your browser. Nothing is uploaded.
Drop a CSV anywhere on this page
Up to 10,000 rows. The sample, campaigns.csv, shows the shape.
When another tool is the better choice
If this is you
Monthly reports built from client exports: Meta and Google Ads CSVs, Shopify orders, HubSpot deals
xmetric
Free, no viewer seats, and each client's files stay in your browser. Sign in to save a workbook online and share a view-only link. Co-editing is coming. Files you don't save stay in your browser.
If this is you
Always-on dashboards on live Google Ads, GA4 and Search Console data
Data Studio
Google's own connectors are free and live. Reports can be shared with individuals, teams or the world, edited together in real time, and embedded on any web page.
If this is you
Client data sits in Postgres, Snowflake or BigQuery and a small team builds the dashboards
Preset
Starter is free for up to 5 users; Professional is $20/user/month billed annually; $25/user/month billed monthly.
If this is you
The client already licenses Tableau Cloud and wants reports inside it
Tableau Cloud
Use their seats. Each extra stakeholder who views is a Viewer at $15 per user/month, billed annually; builders need Creator at $75 per user/month, billed annually.
Questions
How does xmetric keep one client's data apart from another's?
Each client's export is read inside your browser tab and isn't uploaded to a shared workspace. Only a workbook you choose to save online leaves your device, and you share it per client with its own view-only link.
Do clients pay for a seat to see the report?
No. xmetric is free, and the account you need to save and share a link is free too. Clients open the view-only link.
Can we open a .twbx a client's previous agency built?
Yes. Open the .twbx or .twb in the xmetric app with its dashboards and filters, or drop it into the workbook inspector to list every sheet, data source and calculated field.
Why did our agency-wide CPA drop when every client got worse?
Because the blend changed. When more of the month's spend goes to a client with cheap conversions, the agency average falls even if every client's own CPA rises. Always report CPA per client next to the total.