Custom client reporting dashboards for agencies, owned by you.
One data model and one set of metric definitions across every client and every tool, with a branded dashboard on top. Your account leads review a report instead of building one. It is for agencies that have outgrown per-client SaaS pricing, report on sources the big tools skip, or want to own the platform their clients see.
Last updated October 2026
Why does agency reporting still take a week?
Because the data lands in five to twelve places and every client defines the numbers differently. Account managers pull each platform into a sheet, then a slide deck, then a Loom. The fix most agencies buy is a connector tool. It moves the data and stops there.
The part that saves the time is the middle layer: one data model and one set of metric definitions across every client and every tool. That layer is custom either way, and you should own it. The rest of this page shows how we build it, what we connect to, and how we handle your clients' data. For the week-to-week view, see client reporting automation for agencies.
How we build it
How is a custom client reporting dashboard built?
In five layers. Raw data at the bottom, a standard model and metric code in the middle, the dashboard and the AI on top. Each layer has one job, and every number can be traced back down the stack to the row it came from.
- 05
AI on top
Claude, through the API, does three jobs. It suggests mappings for unmatched names, flags numbers that break pattern, and drafts the plain-language summary of what changed and why.
A person approves the uncertain mappings. The account lead edits the summary. Every number comes from the code. A person approves before anything reaches a client.
- 04
Dashboards and reports
A branded dashboard on your domain, one login per client, plus a scheduled PDF or link report with the account lead's commentary block.
If your team already lives in Power BI, Looker or Tableau, we feed that tool the clean model and you keep the tool.
- 03
Metric definitions in code
CPL, MQL rate, pipeline sourced, placement tier, engagement rate. Each has one formula and one owner.
Every number traces back to a source row. The same question gives the same answer no matter who asks or which client it is about.
- 02
Standard model
One set of entities, defined once: client, account, campaign, channel, content asset, placement, contact (hashed), funnel stage.
Every source maps into these tables. One vocabulary. A HubSpot "Sales Qualified Lead" and a Salesforce "SQL" both become the stage sql. Campaign names are parsed by a naming convention the agency enforces from now on, with a mapping table for the old names.
- 01
Raw layer
Scheduled pulls from each source, per client, each with its own read-only credential.
Rows land exactly as they came, timestamped and tagged with their source. Nothing is cleaned on the way in. Things that change get a daily snapshot, like CRM stages and 6sense buying stages. Ad platform data is pulled again for the trailing 30 days, because platforms restate numbers for days after the fact.
Aggregation is plumbing. Standardization is the product.
Every number is calculated by code and traces back to its source. AI handles the mapping and the write-up, and a person approves it.
We used this same split on AutoCar Intelligence, where the upstream API was too weak to trust, so every metric was recalculated in code from raw rows.
Why we have a mapping layer
What makes marketing data standardization hard?
Four things, and each one has a rule in the model. A connector tool handles none of them, which is why reports still differ by account lead after an agency buys one.
Definitions
Every client defines an MQL differently. The model holds the client's definition and the agency's definition side by side, so both numbers are right and both are labelled.
Identity
The same company is a domain in 6sense, a company name in LinkedIn and an account record in the CRM. Domain is the join key. A manual match table catches the rest.
Time
Time zones, week boundaries, currency and attribution windows. One rule for each, written down, applied to every source the same way.
Drift
Campaign names mutate, APIs change and new sources arrive. The mapping layer has an owner and a review loop, so the model stays true after launch.
Custom vs. off-the-shelf
When should an agency choose a custom build over AgencyAnalytics?
Past about 40 to 50 client accounts, or when the report needs a source the tool does not connect to. Below that size, off-the-shelf is usually the better call and we say so. The table is the short version.
| Category | Off-the-shelf tools | Custom-built by TechEmulsion | Edge |
|---|---|---|---|
| What you get | A connector tool. It moves data from each platform into a template and stops there. | A data model with one set of metric definitions across every client and every tool, plus the dashboard on top. | Custom-built |
| Ownership | You rent a vendor's platform. Cancel the plan and the reports go with it. | You own the dashboard, the code, the data model and the pipeline. | Custom-built |
| Cost as you scale | Price grows with every client you add. The 50th client costs as much as the 1st. | Flat cost once it is built. The 50th client costs no more than the 5th. | Custom-built |
| Under 40 to 50 clients | Cheaper and faster to set up. The right call at this size. | Hard to justify the build cost. We say so on the call. | Off-the-shelf |
| AI-search visibility | A rankings widget. No view of AI Overview, ChatGPT or Perplexity mentions. | AI-search mentions and citations next to rankings, from captures and the tools you already pay for. | Custom-built |
| Data sources | Only what the vendor has built a connector for. | Any source with an API, export or database, including the client's CRM and the PR tools. | Custom-built |
| Support | A ticket queue with a vendor who does not know your business. | A direct line to the team that built it and knows your setup. | Custom-built |
For the full neutral breakdown, with the math on when off-the-shelf tools are cheaper, see our AgencyAnalytics vs. custom-built reporting comparison, the build vs. buy framework for agency reporting, and our Whatagraph alternatives roundup.
Data sources
What do you connect to?
Anything with an API, an export or a database. API first. Scheduled exports second. Browser capture last, with permission.
- CRM and marketing automation
- HubSpot, Salesforce, Marketo, Pardot, Eloqua
- ABM and intent
- 6sense, Demandbase, RollWorks
- Paid and programmatic
- Google Ads, Microsoft Ads, LinkedIn Ads, Meta, TikTok, Reddit Ads, StackAdapt, DV360, The Trade Desk
- Web and SEO
- GA4, Google Tag Manager, Search Console, Semrush, Ahrefs, Hotjar, Microsoft Clarity
- AI search visibility
- Scheduled AI Overview captures, Profound, Peec, Scrunch, Nightwatch
- Social
- Sprout Social, Hootsuite, Metricool, LinkedIn Page analytics, Meta Graph API
- PR
- Muck Rack, Cision, Meltwater
- Content and CMS
- WordPress, HubSpot CMS, Webflow, Google Docs
- Project management and time
- Asana, Monday, ClickUp, Teamwork, Harvest, Everhour
- Call tracking and email
- CallRail, Klaviyo, Mailchimp
- Data connectors, when the long tail of ad platforms is cheaper to buy than to build
- Supermetrics, Funnel, Improvado, Windsor.ai, Fivetran, Airbyte
MCP servers
As of October 2026, Google Ads, Google Analytics, Meta Ads, HubSpot, Salesforce, Semrush, Ahrefs, Supermetrics, Improvado, Meltwater and 6sense each publish an official MCP server. LinkedIn Ads, Google Search Console, Cision, Muck Rack and Sprout Social do not, as far as we have found, and run on their APIs. None of this changes how the pipeline runs. It changes what our engineers and your team can ask in chat.
For AI search, we keep a fixed list of tracked queries per client and capture the Google AI Overview for each one on a schedule. For ChatGPT and Perplexity we pull from the tracking tools you already pay for. The content side of that work is covered under programmatic SEO for agencies.
What we build with
What is the tech stack behind the dashboard?
Next.js, Supabase and Claude. Here is what each one does. It is the same stack behind our website development and SaaS development work.A note on Data Studio (formerly Looker Studio): many agencies ask because it is where they stitch reports together today. We do not run final client reports through it. A custom build gives you a branded interface that is yours. If your team already lives in Power BI, Looker or Tableau, we feed that tool the clean model and you keep the tool.
Dashboard
Next.js on your domain
The branded dashboard your clients log into is built in Next.js and hosted on your domain. Your logo, your colors, one login per client.
Pipeline and storage
Supabase (Postgres)
The raw layer, the standard model, the metric code and the scheduled reports run on Supabase in your cloud account. It is the same backend we run our own products on.
AI layer
Claude through the API
Suggests field mappings, flags numbers that break pattern, and drafts the commentary. A person approves each one. It never holds write credentials.
Security and data handling
How do you handle our clients' data?
It stays in your cloud, under your logins, and we pull aggregates wherever we can. Five promises, then the detail behind them.
- 01
Your data stays in your cloud, under your logins.
The database, cloud accounts and secrets vault sit in your organization. Our engineers are invited members you can remove in one click.
- 02
We pull aggregates wherever we can and hash anything personal at the door.
A report never needs a person's name. We keep a hashed contact ID, company, stage, dates and source fields, and drop names, emails and phone numbers. We never pull notes, email bodies, call recordings or attachments.
- 03
Two or three named engineers, read-only, every access logged.
One credential per client per source, least scope, revocable on its own. Named accounts with MFA. Production and development are separated, and development runs on masked data. Audit logs are kept 12 months.
- 04
Claude never sees a contact row.
The model gets aggregates and anonymized tables. It drafts commentary and proposes field mappings. A person approves. It holds no write credentials. Anthropic does not train on API inputs and outputs by default.
- 05
We sign your NDA and a data processing agreement.
The agreement names every sub-processor, including any connector vendor in the pipeline. We tell you plainly which certifications we hold and which we do not.
The detail behind the promises
- Four data tiers
- Aggregate metrics. Company-level data. Contact-level personal data, avoided or hashed. Credentials and commercials, held in a secrets manager.
- Where it lives
- US data residency with remote access from our team. No production data on laptops. Encryption in transit and at rest, with column-level encryption for the sensitive tier.
- Retention, written down
- Raw rows for 13 months. Aggregates for as long as you want them. Full deletion within 30 days of a client leaving, with written confirmation.
- Incidents
- An incident runbook with a named contact at your agency, so your own 72-hour notification duties can be met. Standard Contractual Clauses if EU contacts are in scope.
- What we do not do
- We do not enrich or profile individuals. We do not pool data across your clients into benchmarks without written consent.
- Certifications
- We do not hold SOC 2, ISO 27001 or HIPAA certification. We provide written policies for access, retention and incidents, completed security questionnaires, and a pen test on the dashboard before launch on request.
What is included, and how long does it take?
Scope drives time, and we quote a ship date after Discovery. The first step is NDA, access and a written scope with a fixed price. The first working slice runs on real data before the full build. Then a test run on three pilot clients, fixes, handover docs and training. Access is the critical path, so pilot clients and credentials get settled first. Here is what every build includes.
A raw layer with scheduled pulls per client, per source, each on its own read-only credential
A standard data model and metric definitions in code, with a mapping table for old campaign names
A branded dashboard on your domain, one login per client
Monthly PDF or link report from the same data, with your account lead's commentary block
AI-search visibility panel: tracked queries, citation share, week-over-week change
Failed-pull alerts to your team, and a trailing 30-day re-pull for ad platforms that restate numbers
Client-level rules: custom KPIs, targets, and which metrics each client can see
Handover docs, a staging copy, and training for the person who owns the mapping layer
Who this is not for
- Agencies under about 40 to 50 client accounts. AgencyAnalytics or Whatagraph is cheaper at that size. The comparison page shows the math.
- Agencies that only need a weekly Data Studio link. That is a template, and a build would be overkill.
- Agencies that cannot give us read-only API access to their ad, analytics and CRM accounts.
Proof
Which reporting platforms have we already built?
AutoCar Intelligence, where nine-plus auto repair shops were unified into one source of truth, is the best proof for the standardization layer. BillboardIQ cut reporting time 80 percent for a multi-country outdoor media operator. Both write-ups show the stack and the numbers. The Charlotte work is current and not yet written up.
Case study
AutoCar Intelligence: nine shops, one source of truth
Upstream software had a weak, inconsistent API. We recalculated every metric in code, stored raw and derived data separately, and captured the metrics the API did not expose with a Chrome extension.
View case study
Case study
BillboardIQ: reporting time cut 80 percent
Multi-country outdoor media reporting with maps, Supabase and Recharts. Automated exports replaced manual decks.
View case study
Current work
A full-service agency in Charlotte
AI employees that run inside Slack, a scheduled-update layer so the agents post without being asked, and a branded dashboard reporting their clients' social accounts. In progress, so no numbers yet.
Questions agencies ask before building
Let's scope your reporting dashboard.
Other agency services
