Platform Surface Map
This page maps the console and sites surfaces that operators, implementers, and support teams use most often. Use it to decide where a workflow belongs, which app owns it, and which route family should be inspected when behavior looks wrong.
Reference Scope
This is not a complete external developer API contract. It is an operator and implementation map for understanding which app owns each workflow surface, which routes are customer-facing, and which routes are internal control planes.
Console Surfaces
Console pages are operator surfaces. They manage configuration, content, customer work, integrations, and launch decisions for the selected workspace.
Workspace setupRoutes
/: Workspace picker
/get-started: Setup guidance
/settings/*: Workspace configuration
/settings/integrations/*: Third-party integrations
Daily operationsRoutes
/insights: Workspace performance summary
/scheduling: Bookings, services, availability, and calendar sync
/customers: Customer records and relationship history
/inbox: Customer events, messages, and form submissions
Commerce and fulfillmentRoutes
/shop: Products and catalog setup
/shop/orders: Sales, orders, transactions, and invoices
/shop/payments: Stripe dashboard and connected account state
/shipping: Fulfillment, labels, packages, zones, and rates
Content and growthRoutes
/website: Site editor handoff
/stories: Editorial content
/discovery: SEO, GEO, redirects, and short links
/communications: Email notifications
/forms: Form builder
Console Route Families
Console route families are internal operator APIs. They should be protected by operator session, selected workspace, membership, role, and tenant checks.
/api/editor/sessionEditor session
Owns: Operator handoff and editor auth state
/api/editor/brandingBranding
Owns: Logo, theme, media, brand migration state
/api/editor/pagesPages
Owns: Page drafts, publishing, site content
/api/editor/shopShop
Owns: Product catalog setup and commerce readiness
/api/editor/bookings/servicesBookings
Owns: Services, availability, booking setup state
/api/editor/discovery/seo*Discovery
Owns: SEO, search posture, redirects, GEO content
/api/domains/verifyDomains
Owns: Domain verification and DNS diagnostics
/api/admin/reviews/{verb}Admin reviews
Owns: Reputation operations and review sync actions
/api/admin/google-business/{verb}Google Business
Owns: Google Business Profile connection actions
/api/internal/*Internal maintenance
Owns: Background repair, drains, sync, reconciliation
Do not expose console route families as public integration points unless the product creates a supported public API wrapper around them.
Sites Public Surfaces
Sites pages are customer-facing surfaces. They render the public site, customer purchase paths, booking paths, forms, help, policies, stories, and portal entry points.
- /{site}
- Homepage
- /{site}/shop
- Product catalog
- /{site}/shop/{productSlug}
- Product detail
- /{site}/cart
- Cart
- /{site}/checkout
- Checkout
- /{site}/bookings
- Service list
- /{site}/bookings/{serviceSlug}
- Service detail and booking steps
- /{site}/forms/{formSlug}
- Public form
- /{site}/help
- Help center
- /{site}/kb
- Knowledge articles
- /{site}/stories
- Editorial content
- /{site}/policies
- Public policies
- /{site}/contact
- Contact page
Sites Technical Surfaces
Technical public routes support crawling, previews, auth handoff, unlock states, and search discovery.
- /{site}/robots.txt
- Search crawler rules for the workspace site
- /{site}/sitemap.xml
- Public URL inventory for search engines
- /{site}/llms.txt
- Workspace content summary for AI crawler consumption where enabled
- /{site}/indexnow
- Search engine update signal
- /{site}/og-image
- Social preview image for the workspace site
- /{site}/login
- Customer login entry
- /{site}/unlock
- Protected site unlock flow
- /auth/callback
- Auth callback
- /portal/callback
- Customer portal callback
- /api/health
- Sites health probe
- /api/routing-test
- Routing diagnostic probe
When previews or crawlers look wrong, verify the technical surface for the final domain, not a preview host.
Sites Customer Portal
Customer portal routes require a customer session or a scoped customer-management token. Use them to verify that public self-service is tenant-scoped, that guest orders or bookings can be claimed only by the right customer, and that sensitive billing, ticket, and profile data never appears on unauthenticated public pages.
- /{site}/account
- Customer account overview
- /{site}/account/my-bookings
- Customer booking history
- /{site}/orders
- Order history
- /{site}/billing
- Billing and subscriptions
- /{site}/tickets
- Support tickets
- /{site}/profile
- Profile and notifications
- /{site}/saved
- Saved items
Customer API Map
The sites app exposes customer API families for public and portal workflows. These routes are tenant-scoped through the site or workspace resolution layer and should validate ownership before returning private customer records.
Bookings and checkoutPublic or scoped
GET /api/v1/bookings/services exposes bookable services and available times.
POST /api/v1/bookings creates and manages customer bookings with customer session or scoped manage-token checks where private.
POST /api/v1/bookings/{id}/checkout handles deposits, final payment, and booking payment continuation.
POST /api/v1/cart/validate validates cart totals, coupons, shipping, and payment continuation.
POST /api/v1/checkout/paypal/status supports PayPal-specific payment and shipping updates.
Customer accountCustomer session
GET /api/v1/orders lists, resumes, cancels, and reorders customer purchases.
GET /api/v1/billing/overview shows invoices and subscription state for the authenticated customer.
GET /api/v1/profile updates account profile and notification settings.
GET /api/v1/tickets powers customer support ticket list, detail, and replies.
Forms and contactPublic or customer session
GET /api/v1/forms/{slug} resolves public forms, intake submission state, and form visibility.
POST /api/v1/contact creates a monitored contact event tied to the workspace and customer context when available.
Discovery and engagementPublic session
GET /api/v1/help/sessions stores guided help session state.
GET /api/v1/kb/categories returns help content and feedback data.
GET /api/v1/search powers public site search.
GET /api/v1/reviews exposes public review display data.
POST /api/v1/stories/subscribe supports editorial engagement and comments.
POST /api/v1/{site}/chat/session creates public-site assistant conversations for public or customer sessions.
Route Ownership Rules
Use these rules when debugging a route:
/api/editor/*Console/editor control plane
First verification: Operator session, selected workspace, membership, role
/api/admin/*Admin operations
First verification: Operator session, workspace role, provider connection
/api/internal/*Internal service route
First verification: Caller authorization, workspace ID, service secret where applicable
/api/cron/*Scheduled maintenance
First verification: Scheduler authorization and idempotency
/api/webhooks/*Provider or console event receiver
First verification: Signature or shared secret, event family, replay safety
/api/v1/*Sites customer/public API
First verification: Site resolution, customer/session ownership, request validation
/{site}/*Public page
First verification: Workspace resolution, publish state, cache/revalidation
Webhook Families
Webhooks keep public surfaces fresh after console changes:
- Branding.
- Settings.
- Domains.
- Products.
- Bookings.
- Pages.
- Forms.
- Help.
- Knowledge content.
- Media.
- Stripe.
- Shipping.
When a public route looks stale, identify the owning console record first, then match that record to the webhook family that should invalidate it. This prevents teams from debugging the wrong layer: a stale product grid, help article, or domain preview is usually a publishing or revalidation problem, not a customer browser problem.
Webhook Route Map
/api/webhooks/brandingBrand or theme save
Public effect: Header, logo, colors, favicon, preview refresh
/api/webhooks/settingsWorkspace settings save
Public effect: Public settings, policies, checkout/site behavior
/api/webhooks/domainsDomain or DNS change
Public effect: Host routing and domain diagnostics
/api/webhooks/productsProduct/catalog change
Public effect: Shop pages, cart validation, checkout product state
/api/webhooks/bookingsService, availability, or booking setup change
Public effect: Booking pages and availability state
/api/webhooks/pagesPage publish or unpublish
Public effect: Public page routes and navigation
/api/webhooks/formsForm publish or schema change
Public effect: Public form load and submissions
/api/webhooks/helpHelp configuration change
Public effect: Help center routes
/api/webhooks/kbKnowledge article change
Public effect: KB article/category pages
/api/webhooks/mediaMedia upload or deletion
Public effect: Public images, icons, and previews
/api/webhooks/stripeStripe account, payment, invoice, checkout, or subscription event
Public effect: Orders, bookings, billing, invoice status, checkout continuation
/api/webhooks/shipping/shippoShipping label or tracking provider event
Public effect: Fulfillment state and tracking updates
Webhook handlers should be idempotent, signature-checked, and scoped to the owning workspace before mutating customer-visible state.
Integration Surfaces
Stripe Connect
Console surface: Payments, Checkout and Tax
Public/customer effect: Checkout, invoices, deposits, refunds, payouts
GA4
Console surface: Settings > Integrations > Google Analytics
Public/customer effect: Public traffic measurement
Google Ads
Console surface: Settings > Integrations > Google Ads
Public/customer effect: Conversion tags and booking conversion events
Google Business Profile
Console surface: Settings > Integrations > Google Business Profile
Public/customer effect: Review/listing sync
Calendar providers
Console surface: Scheduling > Calendar Sync
Public/customer effect: Availability and event sync
Domain/email
Console surface: Settings > Domain and Email
Public/customer effect: Public routing and sender identity
Shipping provider
Console surface: Shipping
Public/customer effect: Rate shopping, labels, tracking
Diagnostics Checklist
When a route fails, collect this packet before changing code:
- Workspace slug and public URL.
- Exact route and method.
- Whether the caller is public, customer, operator, scheduler, provider, or internal service.
- Expected owner: console, sites, shared service, provider, or webhook.
- Current workspace publish state.
- Selected workspace for console requests.
- Customer/session identity for portal requests.
- Provider event ID or request ID for webhook requests.
- Whether the stale result is cache, authorization, validation, provider state, or missing data.
This packet keeps the team from treating a route mismatch as a content bug or treating a cache delay as an auth failure.
Source-Of-Truth Rule
When a workflow crosses console and sites, identify the owner:
- Console owns configuration and operator actions.
- Sites owns customer rendering and customer actions.
- Shared services and database records own cross-app state.
- Webhooks and cache tags keep the customer surface current.
Do not duplicate configuration on the public site when a console setting already owns it.