What you can customise
- Logo — PNG, JPEG, or SVG. Renders large and centred on the title page (page 1 of every PDF), and as the wordmark on the client portal page.
- Company name — fallback wordmark when no logo is set; also the "author" metadata field in the PDF (so the document properties say "Acme Audits" not "Seoxpert").
- Accent colour — drives the cover dot, eyebrow text, score number, executive next-action card border, working-well bullets, category bars, and mobile-readiness bucket scores. Severity colours (critical / high / medium / low) stay semantic — don't override those, the report stops being readable.
- Report footer — short text shown on every PDF page (your agency name, contact email, "Confidential" disclaimer, etc.). 200 chars max.
How to set it up
- Open Settings → Branding. (Agency-only — Pro / Free see an upgrade card.)
- Upload a logo. Use the file picker — we encode it as a base64 data URL on the client and store it inline on your workspace row. The server rejects raw
https://logo URLs because@react-pdf/renderercan't reliably fetch external images at render time (the result is "logo shows in preview, missing from PDF" — exactly the bug we fixed in April 2026). - Pick an accent colour. Any 3- or 6-char hex —
#0d9488,#abc, etc. The PDF cover preview to the right re-renders as you type so you can iterate. - Set company name + footer text if you want the inline wordmark / per-page footer to read your agency, not Seoxpert.
- Each field saves on blur — no Save button, no "unsaved changes" warning. Reload the page; the values persist.
What the title page looks like
As of April 2026, the first page of every PDF is intentionally minimal:
- Centred logo (or wordmark fallback if no logo is set)
- Domain hostname
- "SCAN REPORT" eyebrow
- Generation date
Score, stats, severity legend, and metadata move to page 2 (the Summary page). This gives reports the "cover sheet" convention every consulting deck uses, and gives your logo the visual weight it deserves.
Where branding applies
| Surface | Branded? |
|---|---|
| PDF report (download or share-link) | Yes — every section |
Client portal page (/portal/<token>) | Yes — header logo + accent colour throughout |
| Web /scans/[id] dashboard view | No — Seoxpert chrome (it's your internal tool) |
| CSV exports | No — data only, no chrome to brand |
| Notification emails | No (planned, not yet shipped) |
Plan-gate enforcement
The white-label gate is checked at two points:
- At edit time: PATCH
/api/account/workspace-brandrejects with 403 if the workspace owner isn't on Agency. - At PDF render time: the report route looks up the scan owner's plan AT REQUEST TIME and only passes branding through if Agency. So a customer who downgrades Agency → Pro instantly reverts to Seoxpert defaults on their next PDF, and re-upgrading restores branding without losing the saved values.
Plan availability
Agency only.White-label is the headline differentiator that justifies Agency pricing — Pro deliberately doesn't get it. Pro users see an upgrade card in the Branding panel.