Integrations
Brand integrates with multiple One Stack products to provide a unified brand experience across the platform. This page describes each integration, what data flows, and how to configure them.
Hub (Identity)
Type: Always-on (required)
Hub provides authentication for all Brand users via Single Sign-On.
| Data Flow | Direction | Description |
|---|---|---|
| User identity (name, email, role) | Hub → Brand | Used for user records and attribution |
| Organization context (tenant ID, plan) | Hub → Brand | Determines which brands belong to which tenant |
| Session token | Hub → Brand | Authenticates all Brand API requests |
Configuration: No setup required. Brand uses the standard Hub SSO flow. Users reach Brand via the waffle menu in Hub.
PSA
Type: Pull (Brand fetches client list) + Push (Brand propagates brand data)
| Data Flow | Direction | Description |
|---|---|---|
| Client companies list | PSA → Brand | Used to create client brand records (company name, industry) |
| Client brand identity | Brand → PSA | Logo URL, colors, tagline applied to PSA invoice headers and email templates |
Syncing clients from PSA:
- Navigate to Brand Library → Sync Clients → Sync from PSA
- Brand fetches the companies list from the PSA API
- A brand record is created for any company that doesn't have one yet (in Draft state)
Propagating brand to PSA:
- Open a brand → Propagate to Stack
- Check PSA in the product list
- Click Propagate
- PSA updates invoice templates and email footers within 30 seconds
What breaks if misconfigured: If the integration key between Brand and PSA is invalid or expired, propagation to PSA fails silently. The PSA will continue using the previously propagated brand values. Check the propagation status panel for "Failed — PSA" errors.
CRM
Type: Pull (client list sync) + Push (brand propagation)
| Data Flow | Direction | Description |
|---|---|---|
| Contact companies list | CRM → Brand | Used to create client brand records |
| Client brand identity | Brand → CRM | Applied to branded email headers in contact communications |
Setup: Same as PSA sync — use Sync Clients → Sync from CRM to pull contacts with company names.
Books
Type: Push (brand propagation)
| Data Flow | Direction | Description |
|---|---|---|
| Logo, colors, tagline | Brand → Books | Applied to invoice PDF headers/footers and statement documents |
Propagation result: All Books PDFs (invoices, statements, quotes) render with the brand logo, primary color on the header bar, and tagline in the footer.
Configuration: No special setup — propagation reaches Books automatically when the Books integration key is valid.
Portal
Type: Push (brand propagation)
| Data Flow | Direction | Description |
|---|---|---|
| Primary color, secondary color, logo, favicon | Brand → Portal | Portal theme (sidebar color, button color, top-bar logo, browser tab favicon) |
| Client brand (per-client) | Brand → Portal | Clients see their own company brand when they log in to Portal |
Propagation result: After propagating a brand to Portal, the Portal UI switches to the new colors and logo immediately on next page load (5-minute cache).
Client brands: Each client's Portal session applies their client brand automatically — no per-client propagation needed. Portal calls the Brand API's GET /api/brand/client/{clientId} endpoint on session load.
Relay
Type: Push (brand propagation)
| Data Flow | Direction | Description |
|---|---|---|
| Email header HTML | Brand → Relay | Pre-designed HTML header with logo injected into outgoing Relay emails |
| Email footer HTML | Brand → Relay | Footer with logo, address, and unsubscribe link |
Setup: After propagating to Relay, the email header and footer are available in Relay's template settings. Relay templates that include {{brand_header}} and {{brand_footer}} placeholders will automatically use them.
Configuration note: Relay email headers reference logo assets via HTTPS URL. If the logo URL changes (e.g., you upload a new logo), re-propagate to Relay to update the header HTML with the new URL.
The One Bus
Type: Event-driven (emit and receive)
| Event | Direction | When |
|---|---|---|
brand.updated | Brand → Bus | When a brand is updated and propagation is triggered |
brand.created | Brand → Bus | When a new brand is finalized (wizard complete or manual creation) |
org.created | Mission → Brand | Triggers auto-provisioning of website + landing pages for new Mission orgs |
Consumer products: PSA, CRM, Books, Portal, Relay, Defend, RMM, Voice, AI Studio, Projects, Collective, Legal, People, AMS, Mission all subscribe to brand.updated events and refresh their cached brand values.
Cloudflare
Type: Infrastructure (domain management)
| Function | Description |
|---|---|
| DNS CNAME provisioning | When a custom domain is added, Brand creates a CNAME in Cloudflare pointing to the website |
| SSL certificate | Cloudflare Universal SSL is provisioned automatically |
| CDN | Published websites and landing pages are served via Cloudflare's CDN |
| Cache rules | Published content is cached at the edge; publishing triggers a cache purge |
Configuration: No user-facing configuration needed. Cloudflare credentials are configured at the platform level.
Azure Blob Storage
Type: Infrastructure (asset and page hosting)
| Function | Description |
|---|---|
| Logo and media storage | All uploaded brand assets (logos, images, collateral) are stored in Azure Blob Storage |
| Published website hosting | When a website is published, its HTML/CSS/JS is uploaded to a Blob Storage static site container |
| Published landing page hosting | Same as websites |
| Collateral documents | Generated PDFs, presentation HTML, and social kit images are stored in Blob Storage |
Asset URLs follow the pattern: https://{account}.blob.core.windows.net/brand/{tenant_id}/{asset_name}
Anthropic Claude (AI)
Type: Outbound API calls
| Feature | Model Used | Purpose |
|---|---|---|
| Brand Wizard logo generation | Claude Sonnet | Generate 20 SVG logo concepts |
| Logo refinement | Claude Sonnet | Iterative logo refinement from text instructions |
| Landing page AI generation | Claude Sonnet | Generate page copy from topic/audience/offer |
| Landing page AI rewrite | Claude Sonnet | Rewrite specific sections |
| Collateral generation | Claude Sonnet | Proposals, QBR decks, presentations, guidelines |
| Brand import analysis | Claude Vision | Extract colors, shapes, and style from images |
| Media auto-tagging | Claude Sonnet | Generate descriptive tags for uploaded images |
All AI calls route through The One AI Gateway for quota enforcement and model routing.
Mission
Type: Event-triggered (receive Bus event)
| Data Flow | Direction | Description |
|---|---|---|
org.created event | Mission → Brand | Triggers auto-provisioning of 1 website + 10 landing pages for new Mission orgs |
See Mission Entitlements for the full auto-provisioning flow.
Integration Keys
All product-to-product integrations use the X-Integration-Key header for authentication. Integration keys are configured in the platform's Key Vault and do not require end-user setup.
If you are experiencing propagation failures, confirm with your platform administrator that the Brand integration key is valid in the target product's configuration.