Day 0 — Stripe checkout
You complete checkout via the Stripe-hosted page
From the GEO lane page you click "Start with GEO Pro — $1,999/mo" (or Scale / Enterprise). Stripe's hosted checkout collects payment method + billing email. You don't enter any GEO-specific config here — that comes later via the intake form.
On successful payment, Stripe fires a checkout.session.completed
webhook. The garnetgrid-fulfillment Cloudflare Worker receives it,
creates a customer envelope in R2 at garnet-tokens/geo/<slug>.json,
and sends a welcome email via Postal (sovereign mail with DKIM).
Total elapsed time: ~5 seconds from "Pay" click to welcome email in your inbox.
You receive a welcome email with your dashboard link
Day 1 — Intake form
You complete the GEO intake form
The intake form lives at /account/geo/<slug>/onboard and takes
3–5 minutes. Five sections:
- Priority queries (required) — 5 to 100 buyer-intent queries to track across the four-model panel. The citation operator authors these with you on the intake call if you'd rather, or you can submit them yourself.
- Domain + brand — primary hostname to track citations for (auto-derived from billing email if blank), plus optional competitor domains (up to 20) for the competitive matrix.
- GitHub repo — repo URL + deploy key for the schema PR pipeline. Optional: if you don't grant repo access, schema lands as markdown patches instead of merged PRs.
- Drift alert routing — Discord channel ID for citation-drift alerts (numeric, copy-from-channel). Defaults to your billing email.
- Notes for the operator — free text up to 2000 chars: embargoed product launches, brand-voice constraints, regions to weight, etc.
After submit you land back on the dashboard with a green "Onboarding submitted ✓" banner. The citation operator gets a Discord ping and reviews intake within 4 business hours.
Garnet provisions your tenant resources
On the operator side: a 30-minute setup brings up your tenant infrastructure in your Cloudflare account.
- R2 bucket pair (
garnet-snapshots,garnet-reports) is confirmed bound to the geo-monthly Worker. - The
geo-monthly-deliveryWorkflow is registered with your envelope's slug. - Daily snapshot writer Worker is configured with your tracked-query set.
- Discord channel pair (
#geo-drift+#geo-monthly) is bootstrapped if you provided a workspace; otherwise email-only routing.
Day 2 — First polling run
Citation polling starts
The daily snapshot writer fires at 03:00 UTC. For each (model × query) pair in your
tracked set, it captures the model's response, parses citation events, and writes a
structured JSON snapshot to your R2 at
garnet-snapshots/geo/<slug>/<YYYY-MM-DD>/<model>.json.
The dashboard's "Latest citation snapshot" card updates by Day 3 with the first diff against your baseline.
Day 7 — First weekly drop
First schema PR pack ships
The citation operator reviews the first 7 days of citation data, identifies the
gaps (which queries the model couldn't find authoritative signals for), and ships
the first schema PR pack. If you granted GitHub repo access, this is a literal
pull request labeled garnet-geo.
Subsequent weekly drops (PR pack #2, #3, #4) target the next-tier gaps and ship every Friday. By week 4 the schema-PR pattern is established and your repo's JSON-LD coverage typically expands 40–80% over the baseline.
Day 14 — Drift alert (sample)
Discord alert fires when citation share drops
Sentinel-aaS routes citation-drift alerts within 15 minutes of detection. A drift event = your citation share drops below the configured threshold for a tracked query family between two consecutive daily snapshots.
Day 30 — First executive PDF
Cloudflare Workflow renders + emails the first executive PDF
On the 1st of the next month, the geo-monthly-delivery Workflow fires
for your slug. It runs the 14-step durable pipeline (load envelope → verify Stripe
active → load query set → poll engines → diff vs baseline → schema audit →
citation ops log → competitor summary → generate PDF → store to R2 → build email →
send → notify Discord → update envelope), and the resulting PDF lands at
garnet-reports/geo/<slug>/<YYYY-MM>.pdf.
You get the email with the PDF attached + the dashboard URL. The PDF covers:
- Citation-share trend (your share of voice across the 4-model panel, 30/60/90-day windows)
- Position distribution (% of citations in top-1, top-3, top-5, mentioned)
- Competitive matrix (which brands gained/lost share against you)
- Top 10 query gaps with cause-analysis (missing signal type vs. authority deficit)
- Schema PRs shipped (repo, PR number, 1-line summary, merged Y/N)
- Quarter-trend forecast based on signal velocity
- 3–5 prioritized next-cycle recommendations
From here, the cadence is steady-state: daily polling, weekly schema PR drops, monthly executive PDF. The same engineer ships every cycle. Tier escalation decisions typically come at the 90-day quarter-end review.
What you DON'T see in this walkthrough
The omissions are intentional:
- No "implementation lead" assignment ceremony — same engineer ships intake, the snapshot writer, the schema PRs, the monthly PDF. No handoff.
- No support-ticket portal — replies to the welcome email reach the same engineer directly. No tier-1 routing.
- No SaaS dashboard you'd never open — the customer dashboard shows envelope state, schedule, and the latest report. Discord is where the operational signal lives.
See GEO pricing → Read the methodology → Compare vs alternatives →