Shopify app updates

Jeff Blake
Jeff Blake

A roundup of the biggest changes shipped to the Event Ticketing app over the last few weeks.

Built for Shopify renewal granted

This week we received renewed Built for Shopify status, recertifying against the latest 4.2.3 standards. The Event Ticketing app has been part of the program since Shopify first launched it in 2022 — renewal recurs as the standards refresh. Most of the modernization work behind this round of renewal landed across April and early May, from the rebuilt POS app and checkout extension through to the app home redesign mentioned below.

Apple Wallet now works out of the box

Customizing the Apple Wallet template no longer requires uploading an icon. If you don’t supply one, your tickets fall back to the Event Ticketing app icon as a sensible default. The customize page also auto-creates a default template on first visit, so you land on a working preview straight away instead of a sequence of greyed-out buttons.

A pile of front-of-pass layout improvements shipped alongside:

  • All four enabled fields now stay on the front of the pass instead of overflowing to the back
  • Long values (event names, full venue addresses) auto-wrap at word boundaries
  • New per-template venue format option to pair the venue name with its address on a single field
  • Date fields render compactly and pair sensibly with adjacent fields

Held fulfillments recover automatically

When a Shopify order goes on-hold (fraud review, manual hold, payment delay), tickets previously stalled there. We now listen for fulfillment_holds/released and re-issue tickets automatically, while respecting your fulfillment preference setting (so an order that’s still awaiting payment won’t be force-fulfilled prematurely). Existing stuck orders are picked up too.

Multi-currency refunds

If your store sells in a presentment currency different from your shop currency, refunds now use the correct presentment amount. Previously the shop-currency amount could be passed to Shopify and rejected as a mismatch.

POS scanner can travel between stores

The Event Ticketing POS scanner can now scan tickets and orders issued outside the installed shop — useful when checking in attendees with passes issued by a separate Guest Manager account or an enterprise partner.

Faster PDF tickets, opening inline in the browser

Bulk PDF downloads (the “Download all tickets” link customers see on their order page) are noticeably faster — tickets now render into a single document instead of being assembled from per-ticket files, and we preload the data each ticket needs in one pass. Larger orders see the biggest speedup.

PDFs from customer-facing emails and viewer pages now also open inline in a new browser tab instead of silently downloading to disk. Several merchants flagged that on Chrome desktop, customers were clicking the “Print” link, watching the new tab close, and never realizing the PDF had been saved to their downloads folder.

Check In app: safer sync

The iOS Check In app’s offline-sync flow now rolls back partial saves cleanly if a record counter runs out mid-sync, rather than leaving a few records committed and the rest dropped. Combined with a new observability layer, this should put a stop to the rare “some attendees missing after sync” reports.

Product sync stops stepping on merchant data

A few places where the app was unintentionally overwriting merchant edits:

  • Variant metafields are preserved on every productSet — previously a sync could clobber metafields added in the admin
  • Ticket form values are preserved when a customer changes quantity in the checkout extension
  • Ticket names are no longer overwritten from stale default_address data after subsequent edits

App home redesigned

The merchant home screen got a refresh:

  • Install hub groups remaining setup work (POS, Checkout, Theme) into clearer sections
  • A new extension status card surfaces which extensions are deployed and which need attention
  • Setup guide is back above the fold

Behind the scenes

  • App Bridge v4 web component migration is complete — fixes a pile of modal regressions from older App Bridge releases
  • Bugsnag swapped for Sentry across JS and Ruby
  • Bumped to Ruby 4.0.3 and Puma 8 for a small reliability + performance bump

Minor fixes and improvements

  • Calendar block CTA and CarrierService now gate cleanly on plan features, instead of failing on non-eligible plans
  • Cursor pagination for tickets / orders / events on API v2 (offset pagination is deprecated)
  • Usage-charge money flow hardened — fewer false retries, clearer reasons when a charge can’t be created (cap-increase, write-offs)
  • Apple Wallet passes are now revoked when a ticket is transferred or voided, so the stale pass disappears from the customer’s wallet
  • Contact records no longer have their first/last names wiped by an incoming order with a blank name field
  • Several embedded-app modal regressions and tooltip fixes