Freeform Templates

View as Markdown
Last updated July 17, 2026

A Freeform template is a template in Studio that isn't connected to any content type. Use it for one-off templates: landing templates, campaign templates, "About us", "Contact us".

You can still drop sections and components, and pull data via Pinned Entries and Pinned Queries. What you can't do is bind to a single entry, because there isn't one.

What Freeform Gives You

  • Speed. Create a template without modeling a content type first.
  • Independence. Useful for templates that don't fit your content model, or where the marketing team needs to move ahead of schema work.
  • Same canvas, same components, same sections. The authoring experience is identical to a Connected template.
  • Pinned data. Pull specific entries or query results onto the template without owning a "the entry for this template" relationship.

When to Choose Freeform vs. Connected

Use Freeform when…Use Connected when…
The template is one-off and won't repeatThe template is one of many entries of the same shape
You don't have a content type modelled yetYou already have a CT for this content
Content is pulled from several placesContent is driven by exactly one entry per URL
Authors want layout control more than data structureAuthors want consistent rendering of structured data

What the Canvas Looks Like

A Freeform template's top bar is subtly different from a Connected template's:

  • A FREEFORM MODE badge replaces the content type chip
  • PREVIEW COMPOSITION: label instead of PREVIEW ENTRY:, because the preview drives off the composition itself, not an entry

Click to enlarge

Otherwise the canvas behaves the same: same palette, same right-panel tabs. When nothing is selected on the canvas, the Data tab shows three template-level sections: Additional Entry Data, Queries, and External Data. (These sections aren't a separate tab; they live inside the Data tab.) See The Data tab.

Terminology note: Studio's "New Template" modal labels the Freeform option as "Static Template" in the create flow. Once created, the same template's canvas header shows the "FREEFORM MODE" badge. Both labels refer to the same thing; this doc set calls it Freeform throughout, matching the canvas badge that's the more visible surface for authors.

Click to enlarge

URL Generation

Studio auto-generates a default URL for every Freeform template:

/<project-composition-ct-uid>/<composition-uid>

Studio substitutes the actual project composition content-type UID and composition UID at creation time; these are concrete values in the stored URL, not {{...}} template variables. The only Freeform-specific template variable available for hand-editing is {{composition_uid}}. This URL identifies the composition itself, not an entry. You can edit it from the canvas navbar's pencil icon.

Click to enlarge

Notice the modal offers only one insert chip: {{composition_uid}}. Studio deliberately does not show {{entry.title}}, {{entry.url}}, or any other entry-related variable here because a Freeform template is not bound to any entry. The URL pattern can include {{environment}}, {{branch}}, {{content_type_uid}} typed by hand, but anything that tries to read an entry field fails to resolve at render time. ({{locale}} is accepted by the pattern engine but avoid using it: carry locale via your routing layer and the SDK's locale query option, see Multi-locale at scale.)

URL Variables Available in Freeform

VariableAvailable?
{{entry.<field>}}❌: there's no entry
{{entry.<reference>.<field>}}
{{taxonomy:<uid>}}
{{environment}}
{{locale}}⚠ accepted by pattern engine, but avoid; use routing-layer + SDK locale query option instead for consistency at scale
{{branch}}
{{content_type_uid}}
{{composition_uid}}✅: the only entry-style variable Freeform supports

The Insert chip row in the Edit URL modal shows only {{composition_uid}} for Freeform. Other context variables can be typed manually.

Where Freeform Templates Render

Same as Connected templates: at the URL the composition's pattern resolves to, on a route in your site that mounts <StudioComponent />.

Click to enlarge

If the template doesn't load, check that the route exists, that it mounts <StudioComponent />, and that the composition's URL pattern matches the route's path shape.

Getting Data onto a Freeform Template

Three sources, all available:

SourceWhen to use
Pinned EntriesPin specific entries, e.g. a hero entry, a featured product, a testimonial. Bindings reference them by their pinned slot.
Pinned QueriesPin a query result for a Repeater to iterate.
Component default dataYour custom components ship with sensible defaults. Useful for purely presentational content.