Custom fields
The campaign custom fields are exposed in campaign.customfields.
{{ campaign.customfields['field-key'] }}
A missing key returns an empty string: the template does not error.
Presence and iteration:
{% if 'field-key' in campaign.customfields %}
{{ campaign.customfields['field-key'] }}
{% endif %}
{% for key, value in campaign.customfields %}
<li>{{ key }}: {{ value }}</li>
{% endfor %}
Methods: campaign.customfields.get('key'), .keys(), .values(),
.items().
Values by field type
| Type | Value |
|---|---|
| Text | string |
| Flag | "true" / "false" |
| Menu | selected option (string) |
| Date | ISO date YYYY-MM-DD (string) |
Dates are ISO strings: use format_date for DD/MM/YYYY output:
{{ campaign.customfields['event-date'] | format_date }} {# 28/07/2026 #}
note
All non-archived campaign custom fields are available in the theme and may appear on the public site. Do not put in a campaign field any data that must not be public.