Brands and Logos (Brandings)
Visual editor for reusable branding presets — logo, header/footer colors, table accent, and font. A branding is reused across on-demand reports, scheduled reports and PDFs generated by AI agents.
Brands and Logos (Brandings)
Brandings are reusable presets of the corporate look & feel applied to every PDF that leaves the platform. Instead of pasting the logo and colors on every report, you configure a brand once and every report references it by branding_id. Changing the logo is a single click.
Executive summary
The game changer: one central brand preset — a client's report changes its look without touching the structure; the default brand applies automatically to everything the platform generates.
| Before | With brandings |
|---|---|
| Each report had the logo inline | One branding preset, every report references it |
| Rebrand = regenerate 40 templates | Rebrand = edit 1 branding |
| Multi-client with different brands = chaos | One branding per client, reusable |
What is it for?
- Visual consistency — the monthly billing PDF has exactly the same header as the weekly maintenance report.
- Multi-client — a maintenance service provider keeps one branding per client with their own logo and colors.
- Painless rebrand — new corporate identity, one edit, everything inherits.
- Tenant default — if a report doesn't specify branding, the tenant default applies.
How it works
flowchart LR
B[(brandings<br/>per-tenant)] -->|resolve by id| P[PDF generator]
R1[On-demand report] --> P
R2[Scheduled report] --> P
R3[AI agent generates PDF] --> P
P --> F[PDF with header/footer/<br/>logo/colors]Every report has two ways to specify branding:
branding_id— references a saved preset. Takes precedence.- Inline
branding— dict with the same fields, not saved as a preset.
If neither, the branding with is_default=true for the tenant is used (if any).
Branding parameters
| Field | Type | Description |
|---|---|---|
name | string 1-100 | Human name for the preset ("Client Acme", "Corporate 2026"). |
company_name | string | Corporate name next to the logo. |
logo_url | URL | Public PNG/JPG for the header. |
header_lines | string list | Lines next to the logo (division, phone, website). |
header_right_text | string | Right-aligned header text (e.g. "Confidential"). |
header_bg_color | hex #RRGGBB | Header background color. |
header_text_color | hex #RRGGBB | Header text color. |
footer_text | string | Footer text. |
footer_bg_color | hex #RRGGBB | Footer background color. |
footer_text_color | hex #RRGGBB | Footer text color. |
accent_color | hex #RRGGBB | Table header color. |
font_family | Courier / Helvetica / Times | PDF font family. Default Courier. |
is_default | bool | If true, applied automatically when no branding is specified. Only one per tenant. |
How to use it
Create a branding
- Administration → Brands and Logos → New.
- Name it ("North Client").
- Upload the logo (PNG/JPG, max 2 MB — ideal 300×100 px).
- Set the company name that renders next to the logo.
- (Optional) Add header lines — one per line: division, phone, website.
- (Optional) Right text — e.g. "Confidential — do not distribute".
- Pick header and footer colors. The editor shows a live preview.
- (Optional) Accent color for table headers.
- Pick the font (Courier, Helvetica or Times).
- (Optional) Mark it as tenant default.
- Save.
The branding is ready to be referenced by reports.
Use a branding in a report
In an on-demand report:
- Open the report editor.
- In the Branding selector, pick the saved preset.
- Generate. The PDF comes out with that look.
In a scheduled report:
- Edit the scheduled report.
- Select the branding in the Branding field.
- The next execution applies it.
From an AI agent:
- A WhatsApp or email agent that generates reports can receive a
branding_idin its defaults. When generating, the PDF comes out with that brand. Useful if the same agent serves multiple clients with different brands.
Mark as default
The branding with is_default=true is applied automatically to any report that doesn't specify branding_id or inline branding. Only one default per tenant is allowed — marking a new one automatically unmarks the previous one.
REST endpoints
POST /api/v1/brandings # create
GET /api/v1/brandings # list
GET /api/v1/brandings/{id} # detail
PATCH /api/v1/brandings/{id} # update
DELETE /api/v1/brandings/{id} # deleteUse cases
1 · Multi-client service provider.
Company doing maintenance for 12 different plants. Every client has their branding saved: logo, corporate color, footer with contract number. Every client's monthly report references its branding_id. Client C gets their PDF with their brand; client D with theirs. Zero design work.
2 · Corporate rebrand. The company changes visual identity. New logo, new palette. Instead of editing 15 report templates: edit the "Corporate" branding and save. Next week every scheduled report ships with the new brand.
3 · Tenant default + a special case.
The tenant has a "Standard" branding flagged as default: applies to every on-demand and scheduled report. One specific report — the annual audit for the hero client — carries its own branding_id with the co-branded logo. Everything else inherits the default without configuring anything.
Limits and assumptions
- One branding per tenant can be
is_default. Marking a new one automatically unmarks the previous one. - The logo must be public — the PDF generator fetches the
logo_urlover HTTP. If the logo is behind auth or in a private bucket, the report ships without a logo. Upload to public GCS or a CDN. - 6-digit hex colors.
#FFF(3 digits) orred(name) don't validate. Use#FFFFFF. - No gradients or background images. Solid colors only. For a graphical header, the logo is the only visual component.
- Font families limited to 3. Courier / Helvetica / Times. No custom fonts — these are the fpdf2 standards to guarantee compatibility with any PDF reader.
- Logo size: no automatic validation. Very large PNGs bloat the PDF without improving quality. Ideal is 300×100 px optimised.
Key benefits
- One central preset → automatic visual consistency on every PDF.
- Rebrand in seconds — edit the branding, all future reports inherit.
- Multi-client without effort — one branding per client,
branding_idselects. - Tenant default removes trivial decisions when configuring a new report.
- Live preview in the editor — you see header/footer while setting up.
- Compatible with on-demand reports, scheduled reports, and AI-agent-generated reports.
Branding & White Label
Configure your company's visual identity for reports, emails, and the platform interface. Apply your logo, colors, and company name to everything Rela AI generates.
Data Management
Retention policies, complete data export for audits or migration, and data deletion when regulatory compliance requires it.