Help center

Everything we know about how ZenithStack works. If a question isn't answered here, open a ticket and we'll write the answer.

Getting started

What is ZenithStack and what problem does it solve?

ZenithStack measures whether your brand gets cited inside the LLMs your buyers actually use to make purchase decisions — ChatGPT, Claude, Perplexity, Gemini — then auto-publishes the content that closes each gap, and proves the lift in your inbox every Monday. The unifying metric is citation share: out of every brand the model recommends in your category, what percentage are you?

The same job done by a marketing agency would cost $4–6K/mo of human content work plus a separate monitoring tool, plus a third tool for distribution. We collapse that into one credit ledger.

How do I set up my workspace for the first time?

The onboarding wizard at /onboarding.html walks you through it: brand name, primary domain, brand excerpt, and (optionally) author byline. You also seed your first 10–12 tracked prompts (we suggest them automatically), and dispatch your first AEO audit. Total time: about 4 minutes. You can come back to it later from this help center.

What does the "brand excerpt" field do, and why does it matter?

The excerpt is the AI's grounding context for everything we generate. When the gap-fill engine writes a blog targeting "Best CRM for SaaS startups," it uses your excerpt to decide what your unique angle is — vague excerpts produce vague content. Good excerpts include: what you do, who buys, primary use case, the language your buyers use, and one unique edge (technology, pricing model, focus area).

Example (bad): "We do HR software."
Example (good): "Acme HR is a performance-review platform for 50-500-person SaaS companies. Customers love our calibration-meeting workflow — most competitors don't have one. We replace BambooHR and Lattice in the perf-review use case while integrating with Slack for nudges."

How fast will I see results?

Two timelines run in parallel:

  • The tracker populates within 24 hours — the daily sweep at 9:00 UTC fills in your dashboard immediately on the next morning after signup.
  • The citation lift from auto-published blogs shows up in 3–14 days, depending on engine. Perplexity reacts fastest (it grounds every query in live web search), ChatGPT and Gemini take longer because they rely on indexed cache. Claude is in between.

Most customers see their first measurable lift in the second weekly digest.

AI Visibility Tracker

How often does the tracker run?

Automatically every day at 9:00 UTC. Every active tracked prompt is fired against all four engines (ChatGPT, Claude, Perplexity, Gemini), citations are extracted, and your dashboard updates. You can also click "Run now" on the Tracker page to force a fresh sweep on demand.

What does the tracker cost?

1 credit per (prompt × engine). So if you have 10 tracked prompts, one daily sweep costs 10 × 4 = 40 credits. With Growth plan's 7,500 credits/mo, that's headroom for ~5,000 prompt-runs/mo plus daily auto-blogs plus a handful of audits.

How are citations counted?

We use each engine's structured citation output, not regex on the response text:

  • Perplexity — the citations array on the chat-completions response.
  • ChatGPT (gpt-5-search-api)url_citation annotations on the message.
  • GeminigroundingMetadata.groundingChunks.
  • Claudecitations attached to text blocks from the web_search tool.

For each URL the engine returns, we extract the host, infer a brand name, and check whether it matches your domain or brand. The match counts toward "you are cited."

What's the difference between "Cited by us" and "Not cited"?

For each prompt × engine combination, "Cited" means the engine's response contained at least one citation URL on your primary domain (or a brand-name match). "Not cited" means the engine recommended other brands but not you. The list of brands that were cited is shown inline — click any engine cell to see the full list of source URLs.

What are intent types and how do I use them?

Each tracked prompt has one of these labels — purely organizational, doesn't affect how we run it:

  • Branded — your brand name is in the query. "Is Acme HR good for startups?"
  • Informational — top-of-funnel curiosity. "What is performance calibration?"
  • Comparative — vs queries. "Acme vs BambooHR"
  • Transactional — buying intent. "Best HR software for 100-person SaaS"
  • How-to — instructional. "How to run quarterly performance reviews"

Mix them. Most customers shouldn't be 100% branded queries — that hides whether you compete on intent.

Why is one engine showing 0%?

Three possibilities:

  • You're truly not cited there yet. Most common cause. The fix is to publish content targeting the prompts where you're absent.
  • The engine's API key is missing or invalid. The tracker silently marks that engine as skipped for the run. If you're an admin, check the workspace's environment.
  • The engine couldn't reach its web search. Sometimes Gemini's grounding backend returns 503 — we retry up to 3 times with backoff; persistent failures show as an error in the activity log.

Can I run a sweep on demand?

Yes — click "Run now" on the Tracker page. It dispatches a background job to fire every active tracked prompt × all 4 engines. Takes ~3 minutes for an 8-prompt sweep. Uses the same 1cr/(prompt × engine) cost as the scheduled run.

How is "citation share" calculated?

Citation share = total citations on your domain ÷ total citations across all sources, aggregated over all your tracked prompts and engines. A citation share of 12% means out of every 100 source citations the engines made in response to your queries, 12 were yours and 88 were competitors or other sources.

Content Factory

How does the daily auto-blog choose what to write?

Every morning at 11:00 UTC the engine picks the weakest tracked prompt (lowest citation share across the 4 engines) and writes a ~1,500-word AEO-grade blog targeting that exact query. It then publishes under your workspace byline, pings IndexNow so Bing/Yandex re-crawl quickly, and queues the URL for the next tracker sweep so we can measure the before/after lift.

If you don't have enough tracker data yet (first 24 hours), it falls back to writing on whatever tracked prompt looks most promising based on intent.

Can I review blogs before they publish?

Yes — turn auto-publish off in Content Factory. The engine will still generate blogs daily but they'll sit as draft in your blog list. You can review and edit in the blog editor, then hit Publish manually. Auto-publish on is the high-conversion default; off is the cautious mode.

What's the difference between auto and manual generation?

Auto runs once a day at 11:00 UTC, picks the weakest prompt, and writes + publishes under your byline. Manual happens when you click "Generate" on the Content Factory page — you supply a title (or leave as random) and we write + publish immediately. Both cost 25 credits per blog.

How do I host blogs on my own domain?

By default we host at zenithstack.ai/content/<your-tenant-id>. To keep the AEO authority on your domain, set up a rewrite from your-domain.com/aiblog/* to our hosted URL. Open the DNS guide on the Distribution page for copy-paste snippets for Netlify and Cloudflare. Three things to double-check:

  • Use a rewrite, not a redirect. Netlify status = 200, Cloudflare "Forwarding URL — Rewrite". A 301/302 breaks branding and AEO.
  • Add force = true on Netlify so the rewrite wins over any existing path.
  • Don't run an HTML transformer on /aiblog/* — edge functions that strip script tags often also drop the article body.

Can I edit blogs after they've been generated?

Yes — every blog has a full editor at /blog-editor.html?id=<blog-id>, reachable from the Browse Your Blogs picker on the Content Factory page. You can edit title, body, header image, OG metadata, and tags. Republish picks up the changes; IndexNow pings the URL again so search engines re-crawl.

Can I schedule blogs to publish later?

Not yet — manual generate publishes immediately. You can simulate scheduling by toggling auto-publish off and queueing drafts, then publishing in bulk on the day you want. Native scheduling is on the roadmap.

AEO Audits

What's in an AEO audit report?

Each audit produces a 10-15 page PDF with:

  • Technical health — does the site ship schema, meta, sitemap; is it crawlable by GPTBot, ClaudeBot, etc.
  • Generative performance — sample query fanouts, key vulnerabilities, citation hooks.
  • Competitive landscape — who's getting cited in your category.
  • Action plan — quick wins (this week), mid-term moves (this quarter), long-term content strategy + a topic cluster table with priority queries.

Audits are cached for 2 days — re-runs within that window are free.

How much does an audit cost?

10 credits per audit. Cached for 48 hours, so if you re-run the same domain within 2 days it's free.

Why does my own-domain audit matter most?

The audit's action plan generates a topic cluster + suggested-topic list specific to your domain. That list feeds the audit-suggested-topics picker on the Content Factory page, which is the highest-converting source of blog titles. Without an own-domain audit, you're picking titles blind.

What are topic clusters, query fanouts, and priority queries?

Three related concepts:

  • Topic cluster — a grouped set of related queries an LLM is likely to recommend together. ("Performance reviews" cluster = perf calibration, 360 reviews, mid-year cycles, etc.)
  • Query fanout — what an LLM expands a head query into when it searches. "Best HR software" fans out into 5-10 sub-queries the model uses to build its answer.
  • Priority queries — the head queries your audit ranks as highest-leverage to win. These should usually become tracked prompts.

How often should I re-run audits?

For your own domain: roughly monthly to track AEO health improvements. For competitors: any time, especially before a major launch or repositioning. The 2-day cache means casual re-runs within that window are free.

Citation Impact

What does "measured" mean on a blog row?

A blog is "measured" when the tracker has run at least once both before and after the blog's publish date — so we have a before/after comparison on at least one engine. "Awaiting next tracker run" means the blog has been published but no after-publish sweep has happened yet (this is normal for the first 24 hours after publish).

Gained, Lost, No change, First measurement — what's the difference?

  • Gained (emerald) — your citation count on this prompt × engine went up after publish.
  • Lost (rose) — your citation count went down (rare but happens — sometimes a competitor publishes too).
  • No change (slate) — same count before vs. after. Either the blog hasn't been re-crawled yet, or this prompt was already saturated.
  • First measurement (blue) — we only have an after-publish reading. The blog was published before tracking started on this prompt, so there's no "before" to compare to.

Why does my impact look small?

Three common reasons:

  • Not enough time. ChatGPT and Gemini index updates can lag 1-3 weeks. Perplexity reacts in days.
  • Not enough volume. One blog moves the needle on one prompt. A flywheel that ships 30 blogs/quarter moves it on 30 prompts.
  • Wrong target prompts. If the prompts you tracked are super-broad ("Best software"), your share will always be diluted. Use the "Suggest" tool on the Tracker page to find higher-intent variants.

Distribution

What is IndexNow and why does it matter?

IndexNow is an open protocol let websites tell search engines about new content immediately — Bing, Yandex, and Naver participate. Instead of waiting for the crawler to find your new blog (hours to days), the URL goes into the crawl queue within seconds. This matters specifically for AEO because Bing's index is what ChatGPT and Perplexity primarily rely on for grounded web search.

We fire an IndexNow ping on every status=published write. No setup required.

How long until LLMs see my new content?

  • Perplexity — 24–72 hours typically. It grounds every query in live web search.
  • ChatGPT — 1–3 weeks. Web search backend leans on indexed cache.
  • Gemini — 1–3 weeks, similar reason.
  • Claude — 3–7 days when the web_search tool is invoked.

The IndexNow ping + Article schema shortens the median by pushing Bing to re-crawl quickly. LLMs heavily rely on Bing's index for grounded search.

Do I need to set up custom-domain hosting?

Not strictly required, but strongly recommended. By default your blogs live at zenithstack.ai/content/<you> — that works (IndexNow + schema + SSR are all the same) but the AEO authority accumulates on our domain, not yours. Set up the your-domain.com/aiblog/* rewrite (see Content Factory help) so the citations the engines extract point at your domain.

What's in the weekly digest email?

Every Monday 13:00 UTC, you and any invited teammates get a one-screen recap email: citation share delta vs. last week, top winning prompts (with the engine attribution), weakest gaps, and a list of blogs published. Designed to be scanned in 30 seconds. No configuration needed — it's on automatically when you have an active tracker.

When will the quarterly impact report arrive?

Every 90 days from your first tracker run. The trigger is Sunday 14:00 UTC — we check each tenant, and any whose last_impact_report_at is null or older than 90 days gets a report dispatched. Single-page HTML email designed to be forwarded to a CMO without editing: 90-day net lift, share delta per engine, top 5 wins, top 5 losses, blogs published.

Free public scorecard

What's the free scorecard at /audit and how is it different from the paid product?

The free scorecard is a 60-second snapshot: we ask ChatGPT (with live web search) what it recommends as alternatives to your domain, parse the citations, and report whether you made the list. One query × one engine. The full product runs your 10 head queries × 4 engines, every day, auto-publishes the gap-fill blogs, and emails the quarterly impact report. The scorecard is the demo; the product is the trend line.

Why does the scorecard result change between runs?

Because LLMs aren't deterministic. The same query can produce different recommendations depending on temperature, time of day, and which model snapshot is serving. That's why the paid tracker runs daily and looks at the trend across many runs — one snapshot is a coin flip, 30 snapshots over a month is signal.

Results are cached per-domain for 12 hours, so if you re-run the same domain within that window you'll get the same cached result.

Are scorecards rate-limited?

Yes — 5 runs per hour per IP address, results cached 12 hours per domain. We do this to keep API costs sane (each scorecard costs ~$0.05 in OpenAI usage on our side). If you need higher volume for an agency use case, an API tier is on the roadmap — open a ticket and we'll prioritize.

Settings

Why does the brand excerpt matter so much?

Because every blog the system writes uses your excerpt as the grounding context — the AI's idea of who you are. A vague excerpt produces vague content; a sharp one produces content that ranks. See "What does the brand excerpt field do?" under Getting Started for examples.

Can I change my primary domain later?

Yes — under Settings. Changing it has these effects:

  • Future tracker runs will check citations against the new domain.
  • Already-published blogs won't move (they live on whatever URL they were published to).
  • Citation Impact rows from before the change will still reflect the old domain's data — you can't retro-rewrite history.

If you're doing a major rebrand, open a ticket — we can help with a clean migration.

What goes in the author byline?

The byline is the name shown on every auto-published blog. Usually it's the founder, head of marketing, or a content lead at your company — someone real, with a LinkedIn presence the AI engines can resolve. The author photo URL is optional but boosts EEAT signals (Google's Experience-Expertise-Authoritativeness-Trustworthiness ranking factor that AI crawlers also weight).

Auto-blogs use the workspace byline (set here), not your personal Profile name. That keeps every post under one consistent byline.

Team & Billing

How many team seats do I get?

5 free seats on every plan. The Agency plan ($1,499/mo and up) gives you up to 20 brand workspaces, each with its own 5-seat team. Need more than 5 in one workspace? Email enterprise@zenithstack.ai.

How do invitations work?

From the Team page, enter a teammate's email and click Send invite. They get a magic-link email — no password to set up. Clicking the link signs them in, auto-accepts the invitation, and drops them into your workspace. They share the same dashboard, tracker prompts, blogs, audits, and credit ledger as you.

What roles are available?

Currently two: Owner (the user who created the workspace — can manage billing and remove members) and Member (everyone else — full read/write on tracker, content, audits, settings; cannot change the plan or remove other members). Expanded roles (Admin, Viewer) are on the roadmap.

What are credits, and what do they cost?

Credits are the unit of consumption — one credit ledger powers everything:

  • Tracker — 1 credit per (prompt × engine). Daily sweep of 10 prompts = 40 credits.
  • AEO audit — 10 credits. Cached 48h, re-runs free.
  • Blog generation — 25 credits per ~1,500-word post.
  • Public scorecard — free (we eat the cost).

Plans come with a monthly allowance (Solo 1,000 / Growth 7,500 / Pro 25,000 / Agency 50,000) and you can top up any time for $50 = 500 credits.

What happens if I run out of credits mid-month?

Background jobs that need credits (tracker sweeps, blog generation, audits) will return HTTP 402 and the dashboard will show "Out of credits" toasts. The system doesn't silently overdraw or stop the entire workspace — read-only access stays intact and your existing data is unaffected. You can top up $50 = 500 credits instantly via Stripe and the jobs will resume.

Can I get a refund?

Cancellations stop your next renewal — you keep using credits already on the ledger through the end of the billing period. Refunds are case-by-case (per the Terms): we will refund if (a) we materially failed to deliver the service for an extended period due to our fault, (b) you were billed in error, or (c) applicable consumer law in your jurisdiction entitles you to one. Email billing@zenithstack.ai.

How does the free trial work?

Every paid plan ships with a 3-day free trial (2 days on Pro). Full access — no feature gating. You can cancel from the dashboard with one click at any time during the trial and you won't be billed. After the trial converts, you're billed monthly in USD via Stripe.

Troubleshooting

My tracker shows nothing — what do I do?

Three likely causes:

  • It hasn't run yet. The first sweep happens at 9:00 UTC after your prompts are seeded. Click "Run now" on the Tracker page to force a sweep.
  • You have no tracked prompts. Use the Suggest button or add manually.
  • The run is in flight. Check Recent Activity — if there's a "Pending" tracker row, give it a few minutes.

My blog didn't publish — why?

Check Recent Activity for a row matching your blog request. If it's Failed, the row will have an error message. Most common failure: insufficient credits (need 25 per blog). Less common: AI provider downtime (we retry once automatically). If you're stuck, open a ticket with the blog title and approximate timestamp.

Auto-blog isn't firing — what's wrong?

Check these in order:

  • Is auto-blog ON? Content Factory → the big toggle should say "ON · daily at 11:00 UTC".
  • Do you have ≥25 credits? Auto-blog skips silently if your balance is under 25.
  • Do you have at least one active tracked prompt? Without prompts the engine has nothing to target.
  • Has 11:00 UTC passed since you turned it on? First fire is the next 11:00 UTC after enable.

Gemini always shows 0% — is this a bug?

If every Gemini cell is empty across every prompt, the most likely cause is an invalid or missing Gemini API key. If it's specific prompts that don't return Gemini citations, that's normal — Gemini's grounding tool returns results sparsely on niche queries. Check Recent Activity for a "Tracker · failed" row with a Gemini-related error message.

The dashboard is stuck on "Loading…" — what do I do?

  • Hard refresh (Cmd+Shift+R on Mac, Ctrl+Shift+R on Windows).
  • Check the browser console for errors (F12 → Console tab).
  • Sign out and back in — sometimes the session cookie expires.
  • Try a different browser to rule out an extension.

Still stuck? Open a ticket with a screenshot of the console errors.

I can't sign in.

We're passwordless — sign-in is via magic link or Google. If your magic-link email isn't arriving, check spam first. If still missing, the most common cause is an outdated email — open a ticket from support@zenithstack.ai and we'll verify identity through a different channel.

My credits aren't refilling — when does that happen?

Credits reset on your billing anniversary (the day of the month you first subscribed). If today is your renewal date and credits haven't refilled, give Stripe an hour to process — webhooks occasionally queue under load. Still missing? Open a billing ticket.

Integrations

What is the Integrations page?

ZenithStack publishes structured events as your tenant runs — new audit leads captured, citation drops detected, blogs published, sales replies received — and the Integrations page lets you pipe those events into the rest of your stack. Today we ship one integration: Zapier (any of 7,000+ apps). Direct webhooks and more native providers are on the roadmap.

Open the page from the dashboard sidebar (Workspace → Integrations) or via /integrations. Zapier is included on every paid plan.

Set up Zapier

The ZenithStack Zapier app is currently invite-only. Email integrations@zenithstack.ai if you don't have the invite link yet — we send it manually during the beta.

  1. Open /integrations and click Generate API key. The key stays visible on the page — copy it whenever you need it; rotate or revoke from the same card.
  2. Click the Zapier invite link from your email and accept. This installs the ZenithStack app onto your Zapier account.
  3. In any Zap, search for ZenithStack as a trigger or action. When Zapier prompts for credentials, paste the API key.
  4. Pick a trigger (audit_leads, citation_drops, or blogs_published) and an action target — Slack, Sheets, Notion, HubSpot, Linear, anything Zapier reaches.

Webhooks-by-Zapier interim: if you'd rather not use the invite link, set Zapier's Webhooks by Zapier · Schedule Poll to GET https://zenithstack.ai/api/integrations/zapier/triggers/citation_drops?since={{zap_meta_human_now}} with header Authorization: Bearer zsk_live_… on a 15-minute interval — same data shape as the native app.

Zapier triggers and actions

Triggers (polling, return arrays):

  • audit_leads — fires when someone runs /audit + drops their email. Fields: id, email, domain, cited, top_competitors, verdict, fix, created_at.
  • citation_drops — fires when a tracked prompt loses ≥30% citation share day-over-day. Fields: id, prompt, engine, delta_pct, yesterday_n, today_n, created_at. Throttled to 3 alerts per tenant per day.
  • blogs_published — fires when the auto-blog ships a post. Fields: id, title, slug, url, published_at.

Actions (create):

  • run_scorecard — runs the AEO scorecard for a domain. Body: {domain}. Returns the same shape as the public /audit endpoint.
  • queue_blog — queues a topic for the auto-blog engine. Body: {topic}. Returns a queued_id.

API key security best practices

Your Zapier API key (zsk_live_…) gives full read+write access to your tenant. Keep it as secret as a password.

  • Rotate every 90 days, or immediately if you suspect compromise. The Integrations page has a one-click Rotate button.
  • Never paste the raw key into Slack, GitHub issues, support tickets, or screenshots. Only paste into Zapier's UI.
  • Revoke the key when an integration is no longer needed. Old keys never expire on their own.
  • We never email your API key. If you receive an email asking you to confirm or paste your key, it's not from us.

What integrations are coming?

Voting via integrations@zenithstack.ai. Current short list: generic outbound webhooks (POST events to any URL — early-access available on request), Slack (native channel posting), Salesforce, Notion (push audit leads to a database), Linear (turn drops into Linear tickets).

API reference

Overview & authentication

Base URL: https://zenithstack.ai/api. All authenticated endpoints accept the API key as a Bearer token or X-API-Key header:

curl https://zenithstack.ai/api/integrations/zapier/auth_test \
  -H "Authorization: Bearer zsk_live_…"

Rate limit: 60 req/min per key, 1000/hour. Bursts above limit return HTTP 429 with Retry-After.

POST /api/public/scorecard

Run an AEO scorecard against a domain. Public (no auth required), rate-limited per IP at 5 requests/hour.

curl -X POST https://zenithstack.ai/api/public/scorecard \
  -H "Content-Type: application/json" \
  -d '{"domain":"example.com"}'

# Response:
{
  "brand": "Example",
  "domain": "example.com",
  "cited": false,
  "verdict": "ChatGPT didn't include your brand…",
  "top": [{"brand":"Competitor A","url":"https://…"}],
  "fix": "Publish a comparison-grade authority page…",
  "cached": false
}

GET /api/integrations/zapier/triggers/<name>

Returns up to 100 records of the named trigger created after ?since=ISO8601. Used by Zapier's polling engine; also accessible to any external tool.

curl https://zenithstack.ai/api/integrations/zapier/triggers/citation_drops?since=2026-05-01T00:00:00Z \
  -H "Authorization: Bearer zsk_live_…"

POST /api/integrations/zapier/actions/<name>

Execute an action. Currently: run_scorecard, queue_blog.

curl -X POST https://zenithstack.ai/api/integrations/zapier/actions/queue_blog \
  -H "Authorization: Bearer zsk_live_…" \
  -H "Content-Type: application/json" \
  -d '{"topic":"Best CRM for 5-person teams in 2026"}'

# Response: 202 Accepted
{"ok": true, "queued_id": 4218}

Error responses

All errors return JSON with an error field.

  • 400 — malformed request (missing fields, bad JSON). Body explains.
  • 401 — invalid or revoked API key.
  • 404 — unknown action / trigger name.
  • 429 — rate-limited. Wait the seconds in Retry-After.
  • 500 — server error. Email support with the trace id.

Glossary

AEO — Answer Engine Optimization

The technical scaffolding that makes a page citation-worthy by AI search engines: JSON-LD schema, semantic HTML, structured FAQ markup, source attribution, clean canonicals, sitemap, robots. AEO is what makes a page eligible to be cited; the content itself is what makes it actually cited.

GEO — Generative Engine Optimization

The discipline of getting cited inside LLM-generated answers (ChatGPT, Claude, Perplexity, Gemini) — the metric we hold ourselves to. GEO targets what the model recommends; SEO targets what shows up on Google's blue links.

SEO — Search Engine Optimization

The classical discipline of ranking in Google's blue-link results — keyword volume, backlinks, on-page tags. AEO and GEO are descendants but the metric is different: SEO measures clicks, GEO measures citations inside AI answers.

Citation share

Out of every citation an LLM makes across your tracked queries, the percentage that point at your domain or brand. The headline metric on the dashboard. 100% would mean you're the only brand cited; 0% means you're never cited.

Tracked prompt

A query string you've added to the tracker. Each tracked prompt is run daily against all 4 engines. Examples: "Best CRM for SaaS startups", "What is performance calibration", "Acme HR vs BambooHR". Add via the Tracker page or the Suggest tool.

Engine

One of the four LLMs we run tracker queries against: ChatGPT (OpenAI gpt-5-search-api), Claude (Anthropic claude with web_search tool), Perplexity (sonar model), Gemini (Google 2.5 flash with grounding). Each costs 1 credit per query.

Credit

The unit of consumption across ZenithStack. Buys you tracker runs (1cr each), audits (10cr), or blogs (25cr). Plans come with a monthly allowance; top-up at $50 = 500 credits.

Tenant / Workspace

The container for your brand's setup — brand name, domain, excerpt, tracked prompts, blogs, audits, credit ledger, and team members all belong to one tenant. Agency plans can have multiple tenants under one account; standard plans get one tenant per signup.

Auto-blog / Gap-fill engine

The daily background job that picks your weakest tracked prompt (lowest citation share), writes a ~1,500-word AEO blog targeting that prompt, and publishes it under your workspace byline. Fires 11:00 UTC daily, 25 credits per fire, opt-out via the toggle on the Content Factory page.