How to Manage Multiple Clients with CiteTrack AI
Quick answer: A practical agency guide to running CiteTrack across many client sites. Installing per site, who gets which API keys, keeping costs in check, and pulling every client into one report with the MCP.
⚡ Key takeaways
- → CiteTrack is a per-site plugin. You install it on each client's WordPress site, and one license covers multiple sites ($129/yr for 5, $249/yr for more).
- → Citation tracking uses your own API keys, set per site. The cleanest model is usually client-owned keys, so each client pays for their own usage.
- → There's no single "all clients" dashboard inside the plugin. The way you get one view is the MCP and REST API, which every site exposes.
- → You can connect Claude, ChatGPT, n8n, or a 20-line script to all your client sites and pull one combined visibility report. API cost, though, is tracked per site and at each provider, not in the MCP.
What's in this guide
So you run an agency, and you want CiteTrack on every client's site. Good instinct. But it raises a few real questions. How do you install it across a portfolio? Who pays for the API calls, you or the client? And once it's on twenty sites, how do you actually see all of them without logging into twenty dashboards?
Let's walk through it end to end. The honest version, including where the plugin stops and where you'll wire up your own thing.
Plan the wiring. CiteTrack installs per site with data on each client's own WordPress, so there is no built-in single pane across a whole roster out of the box. Use the MCP to pull every client into one report yourself, and decide upfront who supplies the API keys so per-client costs stay predictable as the portfolio grows.
First, how CiteTrack is licensed across sites

CiteTrack is a per-site plugin, not a central SaaS console. You install and activate it on each client's WordPress site, the same as any plugin. One license key covers a set number of sites: the $129/year plan covers five sites, and $249/year covers more. Crawler logging runs free on every site before you even add a license, so you can stand up the basic tracking immediately and switch on citations later.
That per-site model is the reason the margin works for an agency. A flat yearly license, with no monthly fee and no per-seat billing, is far easier to package into a retainer than a $250-to-$500-a-month dashboard. We get into that math in the best AI visibility tools for agencies roundup.
Here's the onboarding flow per client, start to finish:
- Install and activate the plugin on the client's site.
- Paste your license key (under License) to unlock citation tracking, attribution, and alerts.
- Add the engine API keys you'll use for citation checks (more on whose keys in a second).
- Add the client's real buyer prompts, their domain, and a couple of competitors.
- Run it once, then leave it on its weekly schedule.
Do that on each site. It's a few minutes per client once you've done it twice.
Running CiteTrack across a client roster
Who gets which API keys?
This is the question that trips up most agencies, so let's be clear. Citation tracking works by querying ChatGPT, Perplexity, Gemini, Claude, and Copilot with the client's prompts, and that uses your own API keys. Each site needs at least one engine key. You've got two models, and the right one depends on how you bill.
| Model | Who pays the AI providers | Best for | The watch-out |
|---|---|---|---|
| Client-owned keys | The client, on their own OpenAI / Perplexity accounts | Clean billing, each client owns their spend | Each client has to create keys during onboarding |
| Agency-owned keys | You, with your own keys on each site | Fastest onboarding, you stay in control | You front the cost and have to re-bill it per client |
For most agencies, client-owned keys are the cleaner choice. The client pays the engines directly, at cost, so there's no marked-up usage flowing through your books and nothing to reconcile at month-end. You manage the visibility work; they own the API account. If a client can't or won't set up keys, agency-owned keys are fine, but then the API spend is yours to track and re-invoice.
Either way, the keys are stored AES-256 encrypted in each site's own vault. If you'd rather not keep a key in the database at all, you can set it as a CITETRACK_KEY environment variable on the server. Nothing about the keys leaves the site except the call to the provider it belongs to.
Keep the API cost predictable per client
Here's a point worth being straight about. CiteTrack shows each site's spend on its own Insights → Runs & cost screen, run by run, with the estimated dollars. But that's per site. There's no central screen that totals API spend across your whole portfolio, and the cost figure isn't exposed through the API either. So you manage cost in two places.
- Set a hard budget cap at each provider. Every API console (OpenAI, Perplexity, Google, Anthropic) lets you set a monthly spend limit per key. Do that for every key, on every site. It's the one move that guarantees no surprise bill, ever.
- Keep the volume sane. Cost is mostly driven by how many prompts times how many engines times how often you check. Weekly checks on ten to twenty high-intent prompts across two or three engines keeps most client sites in the low single digits a month. Our API cost guide has the live calculator if you want exact numbers.
With client-owned keys, this gets even simpler. Each client's cap lives on their own account, and you never touch their bill.
Now the real question — seeing all your clients at once
You don't want to log into twenty wp-admins to check who slipped this week. And you don't have to. This is exactly what the developer API and MCP are for.
Every CiteTrack site exposes two things you can connect to from outside:
- An MCP server at
/wp-json/citetrack/v1/mcp, so you can plug the site into Claude, ChatGPT, n8n, Make, or your own code. - A plain REST API at
/wp-json/citetrack/v1/…, with read endpoints like/snapshot,/citations/share-of-voice,/health, and/crawl-log.
You generate a token for each site once, under CiteTrack AI → API & MCP (click Generate access token, copy it, it's shown only once). The MCP exposes a clean set of tools: getsnapshot, listcitations, shareofvoice, indexednotcited, reputationchanges, crawlhealth, recentcrawls, and listprompts. That's your whole visibility layer, ready to pull from one place. Three ways to do it, from no-code to a little code.
Option 1 — Connect your AI assistant and just ask
Add each client site as a connector in Claude Desktop or ChatGPT, then ask in plain English. "Across all my CiteTrack clients, which ones lost a citation this week, and which pages are crawled but never cited?" The assistant calls each site's getsnapshot and reputationchanges and writes you the summary.
One real gotcha to save you an hour: Claude's web "Add custom connector" signs in with OAuth and can't use this static token. Use Claude Desktop's config file instead (Settings → Developer → Edit Config, add an mcpServers block with Authorization: Bearer YOUR_TOKEN), or run the npx mcp-remote bridge. ChatGPT, n8n, and code all take the same Bearer header directly.
Option 2 — Build a portfolio flow in n8n or Make
If you live in automation tools, make a scheduled flow that loops over your client list, calls each site's REST /snapshot endpoint, and drops the results into a Google Sheet or a Slack digest every Monday. No code, just a list of sites and tokens.
Option 3 — Vibe-code your own portfolio dashboard
If you want full control, it's genuinely about twenty lines. The plain REST endpoints work with a WordPress Application Password (Users → Profile → Application Passwords) over HTTPS, so you don't even need the MCP token for read-only pulls. Here's a starter you can paste into Claude or Cursor and extend however you like:
import requests
from requests.auth import HTTPBasicAuth
# one row per client site
CLIENTS = [
{"name": "Acme Co", "url": "https://acme.com", "user": "agency", "app_pw": "xxxx xxxx xxxx xxxx"},
{"name": "Brightly", "url": "https://brightly.io","user": "agency", "app_pw": "yyyy yyyy yyyy yyyy"},
]
for c in CLIENTS:
r = requests.get(
f"{c['url']}/wp-json/citetrack/v1/snapshot",
auth=HTTPBasicAuth(c["user"], c["app_pw"]),
timeout=30,
)
snap = r.json()
health = snap.get("crawl_health", {}).get("score", "n/a")
sov = snap.get("share_of_voice", {})
print(f"{c['name']:12} crawl-health {health} share-of-voice {sov}")Run it on a cron, write the rows to a CSV or a database, and you've got your own portfolio view in an afternoon. Want it richer? Swap /snapshot for /citations/share-of-voice and /citations/indexed-not-cited, or point an AI assistant at the MCP and let it assemble the report for you. The data's all there; the dashboard is whatever you want to build.
Hand each client a report in your brand
The pull-everything-into-one-view part is for you. The deliverable for the client is the white-labelled report. CiteTrack white-labels reports per client, in your brand, scheduled by email or exported as CSV, at a flat per-site cost. So the client sees a clean, branded "here's how AI sees you this month," and you keep the portfolio dashboard to yourself.
A simple weekly agency routine
Once it's all set up, the week looks like this:
- Monday. Your portfolio pull (assistant, n8n, or script) flags any client that dropped a citation, lost share of voice, or has a new crawl-health issue.
- Tuesday to Thursday. Work the flagged clients. Use the indexed-but-not-cited list to fix the highest-value pages, and push them for re-crawl.
- End of month. White-label reports go out automatically. The client sees the trend; you bill for the fixes, not the screenshots.
Where the plugin stops, honestly
So you can run CiteTrack across a whole portfolio today, but know the edges:
- There's no built-in central dashboard across sites. You build the one view via the MCP or REST, as above.
- API cost isn't in the API. Track spend with per-provider budget caps and each site's Insights screen, not a combined feed.
- Claude web connectors can't use the static token yet (OAuth only). Use Desktop, the bridge, or plain REST.
None of those are dealbreakers for an agency, but they're the difference between a smooth rollout and an afternoon of head-scratching. If you're still choosing tools for client work, the top AI visibility tools for agencies guide compares the options, and CiteTrack for agencies covers the white-label side in more depth.
Frequently asked questions
Can I manage all my CiteTrack clients from one dashboard?
Not from a built-in screen, since each site is independent. But every site exposes an MCP server and REST API, so you can connect Claude, ChatGPT, n8n, or a small script to all of them and pull one combined visibility report. It takes a token per site and a little setup.
Whose API keys should I use for client sites?
Usually the client's own keys, so they pay the AI providers directly and your books stay clean. Agency-owned keys work too if a client can't set them up, but then you front the cost and re-bill it. Keys are stored encrypted per site.
Can the MCP generate a report across all my clients?
Yes, for visibility data. Point an AI assistant or a script at each client's MCP and it can assemble citations, share of voice, crawl health, and reputation changes into one report. API cost and usage aren't in the MCP, though, so track those at each provider and on each site's Insights screen.
How do I track API usage and cost across many clients?
Set a monthly budget cap on each API key in the provider console (OpenAI, Perplexity, Google, Anthropic), and check each site's Insights → Runs & cost screen. With client-owned keys, each client's spend sits on their own account, so there's nothing for you to reconcile.
How many client sites does one license cover?
The $129/year plan covers five sites and $249/year covers more, with every feature on every site. Crawler logging is free on each site even before you add a license.
Why won't my token work in Claude's web connector?
Claude's web "Add custom connector" uses OAuth and can't use CiteTrack's static token. Use Claude Desktop's config file with a Bearer header, the npx mcp-remote bridge, or the plain REST API with a WordPress Application Password.
Related reading
- Best AI Visibility Tools for Agencies
- Track Whether AI Is Citing Your Site
- Top Profound Alternatives
- Our Citation-Tracker Roundup
- Free tool: AI Visibility Cost Calculator
- Free tool: AI Prompt-Pack Generator
See it in your own WordPress dashboard
Find out if AI recommends you — or a competitor
Install CiteTrack AI and see exactly who crawls you, who cites you, and what it earns. Flat pricing from $59/year, 14-day money-back guarantee.
Want to see if AI cites pages like this?
CiteTrack AI tracks your AI crawlers, citations, and the revenue they drive, inside WordPress.
Explore: Features · Crawl Academy · Glossary · Compare · Pricing
