Filling in a ticket on your order no longer means retyping what you just gave us at checkout. Every unassigned ticket now has a "Copy purchaser details" button that fills the form with your name, email, phone and the answers you already gave, ready to save or change — and your ticket email arrives when you save. Tickets are no longer assumed to be for the buyer: a single-ticket order is still filled in for you, except on events that lock ticket details, where it's left open so you can assign it to whoever it's actually for.
You can now drag and drop custom fields on an invitation-only widget to change the order they appear in on the registration form, just as you can on a landing page.
Invitation confirmation emails now show an Add to Wallet button for each ticket, so attendees with a +1 can save both passes instead of downloading them as a single zip file.
Filling in a ticket on an order awaiting a bank transfer no longer emails a working QR code before the money arrives — the ticket is sent when the transfer settles, along with every other ticket on the order that's ready.
Registration pages and widgets no longer total up a ticket type the visitor can't see or change — a sold-out one, a deleted one, one the page excludes, or one outside the chosen time slot.
A promotion code arriving in the page address — from a shared link, or on a registration page with no code field — is no longer dropped when the buyer changes a ticket quantity, and the buyer's name, email address and other form fields are no longer written into the address.
Deleted ticket types no longer count towards whether an event sells paid tickets, so an event that has gone free reads as one on its dashboard.
A widget button can now open with tickets already chosen: add data-tito-q-student="3" for each ticket type you want preselected. Point several buttons at the same widget to offer ready-made packages side by side — a school bundle, a couples ticket, a plain "Register" — all from one page. Discount codes and a narrowed ticket list work the same way, with data-tito-promotion_codes and data-tito-ticket_type_slugs. Learn more →
A new "Attendee editing" section in Settings lets you stop attendees — and buyers holding the order link — from changing a ticket once it has a name, an email address and all its required answers. They see their details laid out instead of a form, with a message telling them how to reach you; you can write that message yourself or use the default. Tickets that still need assigning stay editable so the usual "fill in your details" flow keeps working, though the email address on them is locked too. It's off by default.
Event organizers can now show an "Edit details" button on the ticket confirmation page for standalone tickets, giving attendees an easy way to get back and update their name, email, or custom field responses. Turn it on from the "Confirmation" template under Customization — it's off by default so nothing changes unless you enable it.
Invitation lists that require admin approval now have an option to issue the ticket the moment you hit Approve. Attendees are marked as attending and get their confirmation email right away, so there's no separate step left for them to complete. It only applies to free ticket types, since paid registrations still need to go through checkout.
A phone number that fails validation now keeps its country and drops stray formatting characters, so correcting it doesn't mean retyping the whole number.
Attendees editing their ticket details after purchase now see an explanation when a phone number can't be saved, instead of the form silently refusing to submit — and a phone number stored before it would have been checked no longer blocks unrelated edits to the same ticket.
The first ticket of an order is now filled in and complete as soon as the buyer has paid, instead of showing as "incomplete" despite everything already being answered at checkout — and it stays editable.
Errors when saving ticket details now appear on invoice orders as well, and unanswered-question errors show in the event's own language rather than English on both ticket and registration forms.
Customisable templates that include an order can now show {{ order.currency }} and loop over {{ order.promotion_codes }} to list the codes used and how much each one took off.
"Send a message" is no longer greyed out when the invitations you've filtered to have all been sent already — for example when you filter to people who have accepted.
{{rsvp.url}} now works in messages to invitations, and links to someone who has already accepted go straight to their RSVP without asking them to confirm their email address first.
If you cancelled and later resubscribed, "Open billing portal" could show your old subscription. It now opens the most recent one, and resubscribing keeps your billing history together.
Tapping the ticket count in the widget to expand the order summary showed a blank panel. It now stays visible.
Creating a new invitation-only landing page for an event with custom fields no longer raises an error.
You can now drag and drop custom fields on an invitation-only landing page to change the order they appear in on the registration form.
Reporting is out of beta and available on every account. Open Reporting in the event sidebar for sales, income, coupon usage, and invitation response reports — each with date filtering and PDF, CSV, or Excel downloads. Learn more →
Attendees no longer have to scroll a long alphabetical list to find their country at checkout. Set a default country (for example, where your event is held) and priority countries in Settings → Localization, and they'll be preselected and pinned to the top of the country list.
When you add an attendee from the admin dashboard, you can now check a box to send them their ticket confirmation email right away, instead of sending it separately afterward.
Ask attendees for their phone number with the new phone number question type. The input pairs a searchable country selector with a number field, recognizes pasted international numbers, and stores every answer in a consistent international format that's ready for SMS delivery. Phone number fields across the dashboard and profile gain the same country selector, and phone answers now display in a readable international format on ticket, order, and check-in views.
Applying a promotion code in the embedded widget no longer leads to a missing page — the discount is applied and the code is shown in the widget.
Manually added attendees no longer show a "Custom field responses missing" warning when the only unanswered questions are optional.
The docs now cover event reports — what each report shows, filtering by date, and downloading as PDF, CSV, or Excel. Learn more →
Pick a date range once — a custom range or a rolling one like month, quarter or year to date — and every report remembers it, so you don't have to reapply the filter each time you switch report.
Add your own CSS to the default web, email, widget, and PDF layouts by creating a stylesheet component — no need to override the whole template to tweak a few styles. Learn more →
Theme changes made in the advanced editor now surface the discard and publish buttons, so you can save them like anywhere else.
Continuing from a widget embedded on your own website reliably hands over to checkout again, and choosing no tickets shows the error inside the widget.
Choosing "Start over" on the cart after starting a widget checkout now takes you back to the widget cleanly, rather than to an almost-blank page that needed a reload.
Fixed free orders showing an "unpaid" badge and linking to an invoice on the order detail screen in admin — they're now labeled "free" with no invoice link.
Improve the instructions for setting up your own custom domain with more detail and with better feedback on which elements have been done. It now shows your progress and checks your DNS settings.
Continuing through a widget without choosing a ticket now shows the "please choose at least one item" message instead of a blank page.
Fixed custom field descriptions garbling the form markup around them on registration, checkout, and confirmation pages.
Single checkbox questions now show the question first with the description beneath, and attendees can click anywhere on either to toggle the checkbox.
Tickets that are still missing a name, email, or a required question answer now show an "Incomplete" badge in the attendees list, and you can filter the list by status to find them.
The "Send invitations" button on an invitation list's overview now honors your account's messaging permissions, matching the gating already applied on the invitations list.
Events without public registration now show invitation previews in Customize, and Invitations appears in the main sidebar instead of hiding under More.
Order and ticket references that happen to spell real words (e.g. #BEEF) now display in a monospaced font on attendee-facing pages and emails, so they read as codes rather than words.