An AEO dashboard can show a rising visibility score without earning your client a single new citation. I have seen the ad-copy version of this trick: CTR moves, sales do not, and the chart gets called momentum. AI search gives it a new label. The dashboard reports citations. It does not create them.

Before you put an AEO tool on five or ten client retainers, run a holdout. Pick three client domains. Split each client’s buyer prompts into a worked set you act on and a control set you leave alone. After 30 days, ask whether citations improved more for the worked prompts than for the controls, and count the team hours it took. Work shipped, fixes applied, citations earned. If the worked set does not pull away from the control set, the tool has not proved its worth as an execution service.

Setup: three domains with different starting points

Pick one strong domain that already gets cited sometimes, one average domain that ranks in Google but rarely appears in AI answers, and one domain with almost no presence. I used to test ad copy against different starting points for the same reason. Test only a winner and you cannot tell whether the tool helped. Test only a loser and you can blame the account. Three starting points ask the tool to hold a lead, move the middle, and build from nearly zero.

Keep other activity as still as you can for 30 days. No other content vendor should touch these domains; no site migration or review blitz should run through the test. Tell each client what you are doing and why some prompts will stay untouched. The control set is what stops you from crediting the tool for an engine reshuffle. If you cannot keep major changes out of the test, choose different domains or postpone it.

Write buyer prompts before the vendor sees the list

Do not let the tool choose its own exam questions. For each client, write 30 to 50 prompts in the words buyers use when they are close to a decision: best, cost, compare, near me, who should I hire, what should I buy. For a garage-door client, that might mean best emergency garage door repair in Dallas, how much does a garage door spring replacement cost, and Chamberlain vs Amarr reliability.

Ten brand prompts do not count. You are not testing whether ChatGPT can spell the client’s name. You are testing whether an answer points to the client when money is on the table.

If your team is small, cap the list at 40 per client. That gives you 120 prompts across three domains: enough to look for a pattern, small enough that someone will run the checks every Monday without faking them. Record every prompt word for word. Change the wording mid-test and that prompt needs a new baseline. I learned that lesson when someone tweaked an ad headline on day 12 and wanted to call it the same test. It was not.

Divide each list into worked and untouched prompts

Before the split, group obviously similar prompts so one half does not get all the easy brand-adjacent questions or all the near-duplicates. Then randomly divide each client’s list as evenly as possible. Half become worked prompts: the tool and your team can act on those topics. The other half become control prompts: no new page, schema tweak, or rewrite should target them for 30 days.

Keep a record of which prompt belongs to which set, and do not swap prompts later because a result looks inconvenient. No holdout is a perfect wall: a sitewide change may affect both halves. That is why you log what changed rather than pretending the control exists in another universe. But an untouched set in the same account, month, and engines is still a better check than a before-and-after screenshot. Identical prompts can return different brands and URLs on repeat runs. Without a control, engine churn can look an awful lot like earned lift.

Take the day-0 baseline under repeatable conditions

On day 0, run the full prompt list through ChatGPT, Perplexity, Gemini, and Google AI Overviews. For each run, record whether the client was cited and which URL the answer cited. Use clean sessions and the same location and language each time. Test each engine separately.

For high-priority buyer prompts, run the check on two days and keep the appearance frequency, not just a single yes-or-no snapshot. Appearance rate across repeats helps separate signal from noise. Use one sheet for the fixed buyer-prompt panel: client, prompt, set, engine, date, cited yes/no, cited URL, and brand mentioned without a link. Keep the raw answers available for manual checks. That sheet is your control chart for the next four Mondays.

During the trial: record what the tool actually ships

A monitoring subscription tracks mentions, share of voice, and citations. Your team still writes every page and ships every fix. That is the distinction HubSpot’s 2026 AEO cost guide draws between $29-to-$489-per-month trackers and $9,000-to-$15,000-per-month programs that bundle content, schema, and off-site work. If a vendor sells you monitoring, grade it as monitoring. If it sells you execution, make it prove execution on the worked prompts.

Log these each week, by domain:

  • Pages shipped to the CMS for worked topics without your writers rewriting them.
  • Technical and structured-data fixes closed without a developer ticket.
  • Prompt checks completed, including any caps or extra charges.
  • Agency hours spent checking, editing, publishing, chasing tickets, and cleaning up reports.

If the tool flags missing schema in week one and it is still flagged in week four, do not count the alert as a fix. What the deck calls insights, I call homework. By day 14, if nothing has shipped to the worked prompts and the tool has not closed at least one technical gap per domain, stop grading it as an execution service. It may still be useful monitoring. That is a different thing to resell.

Demand raw proof while the work happens. For every citation the dashboard claims, ask for the query, the engine, and the source URL the answer cited. No rolled-up visibility score in place of those fields. HubSpot warns against vendor-defined scores: answers change, and a score can rise without a new client URL appearing. Check whether the page earned the citation yourself. Open the answer, find the link, confirm the client page, and log any mismatch. A screenshot is not a substitute for that row in the sheet.

Every Monday: measure the change in the gap

Rerun the full list under the day-0 conditions: same wording, location, language, and clean sessions, with each engine checked separately. For each set and engine, calculate the share of prompts that earned a citation. Then compare the worked rate with the control rate.

The result is not just the day-30 gap. It is how much that gap changed since day 0. If worked prompts finish at 35% cited and controls finish at 20%, they are 15 percentage points apart. That is not automatically 15 points of lift. If they were already 15 points apart before anyone shipped a page, the test has shown no new separation. Subtract the day-0 gap from the day-30 gap before you call anything earned.

Read the weekly line as well as the final number. Cited pages turn over fast, with median cited-page half-life around 4.5 weeks and ChatGPT churning faster than Perplexity. One good Monday is weather. Several Mondays with a growing worked-over-control gap give you a better reason to take the result seriously. Keep the engine-level results visible; a blended figure should not hide where the change happened.

Lab notebook dividing buyer prompts into worked and untouched control sets

Log hours as carefully as citations, because hours are the margin. I used to tell clients tracking was half the battle. I was wrong. Tracking without shipping is a subscription to bad news. If the worked set needs six hours per domain per week from your team, multiply that by ten clients before you sign anything. A tool can improve a citation chart and still leave you with a service you cannot profitably deliver.

Before renewal: do the ten-client math

Vendors price by domain, prompt bundle, or engine. Your P&L prices by client. A hands-on test of 15 trackers lists Semrush AI Visibility at $99 per month for one domain and 25 daily prompts, plus $99 per extra domain and $60 per extra 50 prompts. At agency scale, a vendor comparison puts 10 clients at 40 prompts each at $399 per month on Geoptie Enterprise, $489 on Otterly Premium, $795 on Peec Scale, $990 on Semrush with a 25-prompt-per-client cap, and $4,089 on Profound Agency Growth. Those are plan figures, not your delivered cost.

Add the hours. A $399 plan that takes five hours per client per week costs you more labor than a $795 plan that takes one. For a ten-client forecast, divide the monthly tool fee by ten, then add each client’s weekly agency hours multiplied by your blended hourly rate and the weeks you expect to work that month. If the fully loaded cost per domain does not fit inside the retainer with margin left over, the trial fails the reseller test, whatever the dashboard says.

Day 30: decide what the result changes

A persuasive win has a mechanism you can point to. Pages or fixes went live for worked topics; the worked citation rate then pulled ahead of the controls relative to baseline; the cited URLs match the work; and the hours fit the retainer. Look for separation on more than one engine rather than staking a renewal on a single screenshot. One hands-on review of trackers cites SparkToro finding less than a 1% chance that ChatGPT and Google AI repeat the same brand list. My ad-testing rule still applies: a 10-point gap that persists for three straight Mondays beats a 25-point spike that vanishes by Friday.

Two diverging trend lines for worked and control prompts pinned to a board

If both sets move together, up or down, do not hand the tool credit for the shared movement. If the worked line rises only inside the vendor dashboard while manual checks keep finding the same old competitors, log a reporting miss. Reviewers have flagged only moderate consistency between platform-reported citations and manual checks. A miss belongs in the result, not in the footnotes.

This protocol will not fit every client. Skip domains mid-migration or those with fewer than 20 buyer prompts worth tracking; a thin prompt set makes each weekly read too jumpy to carry the decision. Otherwise, complete the scorecard before you consider an annual contract. If a vendor will not let you run the holdout, that is also an answer.

  • Worked prompts cited: __% on day 0 to __% on day 30, by engine
  • Control prompts cited: __% on day 0 to __% on day 30, by engine
  • Gap earned: day-30 worked-minus-control gap, minus the day-0 gap: __ percentage points
  • Weekly pattern: gap held or grew for __ consecutive Mondays
  • Pages shipped to the CMS without your writers rewriting them: __
  • Technical and schema fixes closed without a developer ticket: __
  • Tracking caps hit: none, or list the limit and charge
  • Agency hours per domain per week: __; projected hours across ten domains: __
  • Fully loaded monthly cost per domain at ten domains: $__
  • Manual-check match rate: dashboard citations confirmed in __ of __ checks

If the gap grows and holds, the cited URLs check out, and the hours fit your retainer, you have something worth testing across more client domains. Keep the control set running for another 30 days; engines drift, and a renewal should not rest on one month’s luck. If the gap stays flat after supposed execution, do not put a reporting fee on five retainers and call it a service. That is the bar I hold any done-for-you AEO service to: shipped pages, closed fixes, and citations your sheet can prove. Everything else is a prompt meter with better fonts.