Ticket email

Customize the email that delivers a scannable ticket to your guest, including the subject, the body, and the Liquid template variables you can insert.

Jeff Blake
Written by Jeff Blake Updated May 28, 2026

The ticket email delivers a guest their scannable ticket — either as a PDF and Apple Wallet attachment, or as download links. To send a working ticket, set up a PDF design or an Apple Wallet design first.

When the email is sent

The ticket email fires when:

  • You select a ticket and choose Email.
  • An import row sets the Send Email column to Yes.
  • A guest completes a public RSVP on the event page.
  • A guest accepts a private invitation.
  • A guest transfers a ticket to someone else, if transfers are enabled.

Who receives it

  • If the ticket is linked to a contact, it goes to that contact’s email address.
  • If a specific email is set on the ticket, it goes to that address instead — whether or not the ticket also has a contact.

Customizing the email

You can keep the default template or build your own. Open the event, then open the Emails section and expand the ticket email to edit it.

The default template sends the event banner (if present), the ticket type content (if any), and either download links or attachments for the PDF and Apple Wallet ticket. No setup is needed to use it.

To build your own, set the sender name and email, the subject, and the body. The sender can also be set globally in your company settings. The subject and body both accept the Liquid variables listed below. You have three body options:

  • Standard editor — edit content in the rich editor.
  • Custom HTML — paste your own HTML.
  • Editor with a layout template — reuse a shared header and footer across emails and insert the per-email content into a placeholder.

When you build a custom body, include the ticket download link yourself using the variables below. Save when finished.

To preview, create a ticket for yourself, select it, and choose Email.

Tip: to see every variable available for a ticket, add {{ ticket }} to the body and send yourself a test email. The output lists each field.

Template variables

The ticket email is rendered per ticket, so its variables hang off the ticket root. Insert a variable and it is replaced with that ticket’s value — for example, {{ ticket.name }} becomes the guest’s name.


{{ ticket.name }}            -> "Jeff Blake"
{{ ticket.email }}           -> "jeff@guestmanager.com"
{{ ticket.status }}          -> "Valid"
{{ ticket.barcode }}         -> the ticket's barcode value
{{ ticket.links.pdf }}       -> URL to download the ticket PDF *
{{ ticket.links.wallet }}    -> URL to download the Apple Wallet ticket *

{{ ticket.ticket_type.name }}      -> "General Admission"
{{ ticket.ticket_type.starts_at }} -> raw date
{{ ticket.ticket_type.ends_at }}   -> raw date
{{ ticket.ticket_type.content }}

{{ ticket.event.name }}            -> "Holiday Party"
{{ ticket.event.date }}            -> "12-25-2026"
{{ ticket.event.time }}            -> "7:00am-10:00am"
{{ ticket.event.images.banner }}

{{ ticket.event.venue.name }}
{{ ticket.event.venue.address.address1 }} -> "123 Main St."
{{ ticket.event.venue.address.city }}     -> "Seattle"
{{ ticket.event.venue.address.state }}    -> "WA"
{{ ticket.event.venue.address.country }}  -> "US"
{{ ticket.event.venue.images.map_icon }}  -> URL

{{ ticket.custom_fields['Your field name'] }} -> field value

* Blank if the matching design is not set up.

A basic body

Hi {{ ticket.name }}!
Here is your ticket for {{ ticket.event.name }}.
Download it here: {{ ticket.links.pdf }}

Formatting dates

Any attribute ending in _at (such as ticket.event.starts_at) is a raw date and should be formatted with a Liquid date filter. For example, {{ ticket.event.starts_at | date: "%a, %b %d, %Y" }} renders as Fri, Jul 17, 2026. See the Liquid date filter reference.

Custom fields

A ticket’s custom fields are available as a hash on ticket.custom_fields. To insert a field named “Company”, use {{ ticket.custom_fields['Company'] }}.

Conditional content per event

To show event-specific content, match on the event name:

{% if ticket.event.name == 'My Event Name' %}
  Info for this event
{% else %}
  Info for other events
{% endif %}

Match on name rather than event.id for multi-date events: a child date’s ticket.event.id differs from the parent event ID shown in the URL (ticket.event.parent.id).

For conditionals, filters, and loops, see the Liquid reference.

The Shopify ticket attachment email

The Shopify app has a separate email that attaches the PDF ticket to the order confirmation. It is configured in the app’s settings, not in the event’s Emails section, and it is rendered per order rather than per ticket — so its variables hang off order and iterate over order.tickets. The per-ticket form is {{ order.tickets[0].name }}, not a bare ticket[0].

A custom HTML body written for the ticket email above will not render in the attachment email, because the two use different variable roots.

Localization

The email’s language follows your account locale, set in Settings → Locale. To use a language that isn’t built in, prepare a spreadsheet of the original English strings, your translations, and screenshots showing where each string appears, then contact support to have it uploaded.

What can’t be changed

  • Voided and transfer-forwarding emails are not editable.
  • Button colors use the default palette; only the body content is editable.
  • The footer (company name and address) cannot be removed without a full custom HTML body, and the address may re-sync even after manual removal.
  • The sender icon reflects the sending domain and is not separately configurable.

FAQ

{{ ticket.links.pdf }} and {{ ticket.links.wallet }} are empty until the matching design exists. Set up a PDF design or Apple Wallet design.

My custom HTML works in the ticket email but breaks in the attachment email. Why?

They are two separate emails with different variable roots — ticket for the ticket email, order.tickets for the Shopify attachment email. A template built for one will not render in the other.

How do I remove the transfer button from the email?

Open the ticket type, edit it, and turn off the transferable option. Tickets of that type then send without the transfer link.

That link appears only when the ticket type has registration questions attached. Add registration questions to the ticket type if you want guests to update their details from the email.

Buttons overlap or the layout breaks in Outlook.

Outlook has limited CSS support. Use a custom HTML body for full control over how the layout renders there.