Skip to main content
Menu
On this page

Branding

Match a Fillo-rendered form to your product, and know where the Powered by Fillo badge stays.

Branding a Fillo form comes down to two things: the form's own title and copy, plus either renderer theme tokens or a layout your application owns.

In the dashboard

Use the editor for the form title, description, field copy, and completion message. These values travel with the published schema and appear on the hosted page and the default SDK renderer.

The dashboard doesn't currently have a per-form logo upload, a custom link-preview image, or a switch to remove the badge.

In code

Pass a theme to the renderer or keep it beside a code-defined form:

tsx
const feedback = defineForm({
  id: "feedback",
  theme: {
    primary: "#2563eb",
    background: "#ffffff",
    text: "#172033",
    radius: "12px",
    fontFamily: "inherit",
  },
  pages: [{
    id: "main",
    blocks: [{ id: "feedback", kind: "long_text", label: "What should we improve?" }],
  }],
});

<FilloForm form={feedback} client={client} />

For closer control, use the appearance prop with Tailwind classes, stable CSS slots, custom field renderers, or a fully headless FilloProvider layout.

Powered by Fillo

The small Powered by Fillo badge stays on the default renderer on every plan, including Everything. Paying doesn't remove it.

Headless composition renders no Fillo layout, so there's no badge to place. It's available on every plan, Free included — and it means your application owns the complete visual and accessibility implementation.

Hosted preview metadata

Hosted pages use Fillo's route and form metadata. Custom per-form Open Graph images and hosted-page logo placement aren't currently configurable. If the surrounding page, header, and share metadata need to come from your product system, embed the form in a route you own.

  • Styling: Use theme tokens, Tailwind appearance slots, or plain CSS.
  • Custom UI: Own the layout while keeping Fillo's form engine.
  • Custom domains: Put the native renderer on a route under your domain.

Updated

Was this page helpful?