The two-layer model
PPC TNT's agency model has two layers:
- Agency — the parent account. Owns the subscription, invites members, manages the roster of sub-accounts.
- Sub-account (workspace) — one per client. Holds that client's sites, pages, leads, integrations, and dashboard data. Fully isolated from every other sub-account.
Switching between clients
The Account Switcher at the top of the sidebar is how you navigate between sub-accounts. Picking a sub-account scopes every page in the app — Dashboard, Sites, Stats, Leads, AI, Intelligence — to that workspace. Switch back at any time without losing context.
The Agency page (sidebar → 🏢 Agency, only visible when no workspace is active) shows your full roster: every sub-account, every member, and quick links to enter each workspace.
Member roles
| Role | What they can do | What they can't |
|---|---|---|
| Agency Owner | Everything — invite members, create/delete sub-accounts, change billing, edit any workspace. | — |
| Agency Member (write) | Edit any workspace they're assigned to (sites, pages, integrations, leads). | Cannot manage billing or invite agency-level members. |
| Agency Member (read-only) | View dashboards, leads, and stats for assigned workspaces. | Cannot edit sites, change integrations, or export sensitive data. |
| Client User | Sign in to their own workspace only. Sees their leads and dashboard. | Cannot see other workspaces or agency-level data. |
Creating a new sub-account
- From the Agency page, click + New Client.
- Enter business name, type, and integrations intent (which CRMs, ad platforms, and call tracking the client uses).
- The wizard provisions an empty workspace and seeds default sections.
- Invite the client (read-only) and your account-manager teammate (write) as members.
- Hand the client a deeplink to
/bulk-pages/site— sub-accounts that own one site land directly in the editor.
Client onboarding forms
Writing an account brief from scratch for every new client doesn't scale, so you author one onboarding form under Agency → Forms and reuse it. It's plain Markdown — sections as headings, questions as list items — with a live preview showing how it will parse, and you can attach instructions telling the AI how to answer a given question.
When you onboard a client with a form attached, PPC TNT pre-fills what it can from a scrape of their website plus Google Places data. Every AI-filled answer carries a confidence level, so the low-confidence ones get a human look before you publish — an intake form that quietly guesses is worse than a blank one. Publishing generates that client's Business Profile, which is what every AI tool in the platform then reads.
Budgets, target CPA, and portfolio reporting
Agency → Reporting rolls every client up into one view: combined spend month-to-date and projected, how each client is pacing against their own monthly budget, cost per lead measured against that client's target CPA, the gap between tracked leads and platform-reported conversions, Google Ads change counts, and per-client lead trends.
Budgets and target CPA are set per client — from the client row's Budget panel on the Agency page, or on the Reporting page itself. Leaving a field blank means inherit the agency default rather than "zero", so a client you haven't configured yet is treated as unset instead of as having no budget. Editing these is owner-only. Each account gets a plain-language status, so a monthly review starts from the clients that need attention rather than from the top of an alphabetical list.
Connecting Google Ads once for the whole agency
You no longer need a separate Google Ads OAuth per client. Connect Google Ads at the agency (MCC) level under Agency → Integrations, and each client's Google Ads card then offers a dropdown of the accounts under that MCC — pick the right one and you're done. The account list is fetched only when you open the picker, since it costs several round trips to Google.
For a client whose account sits outside your MCC, Connect a different Google account still does a per-workspace connection, so mixed setups work.
Asking your AI about the whole portfolio
The Agency and Reporting pages show you the portfolio one view at a time. For questions that span every account — "which clients aren't fully set up?", "which have gone quiet?", "where are we losing money?" — add PPC TNT to Claude, ChatGPT or any MCP client as a custom connector and ask. It's scoped to exactly the accounts your own login can see, and it reads the same roll-up code the Reporting page uses, so the two can't quote you different numbers. See the AI Connector guide.
Tracking client work
PPC TNT has a work tracker built in. Every client gets a service line per discipline — Google Ads, Meta, SEO, Design, Development, Account Management — and a tool run files a comment on the matching one automatically, so the record of what was done builds itself. Add tasks, assign them, and track them on a list, board or calendar. Migrating from Jira? Export the issue list and bring epics, tasks, statuses, dates and comments across in one step from Tasks → Import, or save it as a template to stamp onto every new client.
Answering "why isn't this client's revenue showing up?"
The Match Debugger is open to agencies, at /agency/debug, across your own sub-accounts. It walks a single call or job through the attribution rules and states, per step, why it did or did not match — the phone number as normalized, whether an earlier call already claimed the identity, whether the job was paid, and which click it landed against.
Every verdict comes from the server running the matcher's own rule, not from a second implementation in the browser, so what the debugger says is what production did. The point is that whoever fields the question can answer it without escalating.
White-label & custom domains
PPC TNT supports per-agency branding: when a client signs in via your agency's domain, they see your logo, colours, and product name rather than the default PPC TNT look. The branding system pulls per-request configuration through getBranding() at the layout level, so every page they see is white-labeled.
For client landing pages, point each site at a custom domain via the editor's Info → Custom Domain field. Add a CNAME at the client's DNS provider pointing to ppctnt.com and SSL is auto-provisioned. The site is then reachable at the client's own domain — no PPC TNT branding visible to end-visitors.
How agency data shows up across the app
| Surface | Scoped to active workspace? |
|---|---|
| Dashboard (calls/jobs/revenue) | Yes — switch workspace to see another client's KPIs. |
| AI Recommendations | Yes — it reports the active workspace's account. |
| Bulk Pages → Sites / Leads / Stats | Yes — every site row, lead, and event filters to the active workspace. |
| Intelligence Suite (all tools) | Yes — watchlists, saved research, and tool results are stored per-workspace. |
| Business Profile | Yes — one profile document per client, read by that client's AI tools. |
| Files library | Yes — each workspace has its own folder tree. |
| Integrations (Vendors) | Mostly — credentials are per-workspace, except Google Ads, which can be connected once at the agency (MCC) level with an account picked per client. |
| Agency page | No — agency-wide roster, only visible to agency owners and members. |
| Agency → Reporting | No — deliberately cross-client: spend, pacing, and cost per lead for every client at once. |
| AI connector | No — deliberately cross-client, scoped to whichever workspaces your own login can see. |
FAQ
How many sub-accounts can I have?
Sub-account count is governed by your plan. Most agency plans include unlimited sub-accounts; site and seat counts are the meaningful caps. See your plan settings for current quota.
Do I have to connect Google Ads separately for every client?
No. Connect it once at the agency (MCC) level under Agency → Integrations, then pick each client's account from a dropdown on their Google Ads card. Clients outside your MCC can still be connected per workspace.
What does leaving a client's budget blank do?
It inherits your agency default, rather than being treated as a budget of zero. That distinction matters — an unconfigured client shouldn't look like one that's spending against nothing.
Can I ask my AI about all my clients at once?
Yes — that's what the AI connector is for. It's scoped to exactly the accounts your login can already see, and only ever writes one thing: a comment on your own task board, and only if you grant that permission. It cannot create, edit or move a task.
Can a single human be a member of multiple agencies?
Yes — invitations are per-email. A freelance PPC manager could be a member of three different agencies, each with different role assignments.
Are leads from a client's site visible to other clients?
Never. Leads are stored against the workspace that owns the site. Sub-accounts cannot read each other's data. Only members explicitly granted access to a workspace see its leads.
Can I migrate an existing client's setup into a sub-account?
Yes. Use the CSV import on the Pages tab to bulk-load existing pages, and re-point any existing custom domain via the Info → Custom Domain field. Lead history typically stays on the source platform.
What happens if I delete a sub-account?
The workspace and its sites are archived. Lead and event data is retained per the platform's retention policy in case of accidental deletion. Custom domains are released, so re-route DNS first if you intend to migrate elsewhere.