Keeping initSeatPreevue (the shim)
For sites that already call initSeatPreevue(…) (or the SeatPreevue class) and would rather not change that code. You change one script URL; your calling code stays as it is.
1. Swap the script URL
Replace the Seat Preevue script your page loads today (usually https://cdn.seatpreevue.com/prod/seatpreevue.js, or a production/seatpreevue.js from our older address) with:
<script src="https://assets.seatpreevue.com/sdk/v1/seatpreevue-legacy-shim.js"></script>
Keep it where the old one was, so it still loads before your code calls it. Leave your calls to initSeatPreevue(container, venueKey, seatId) (or with a fourth baseUrl argument), and any SeatPreevue.baseUrlCache you fill in, exactly as they are. A separate Pannellum tag, or your own loadStyles / loadPannellumScript overrides, can stay.
Load one or the other, never both. If the old script is still on the page, the shim does nothing and says so in the console.
2. Register your domain (no key needed)
Send us the address of a page that shows a seat view, on each site. To use a key instead: …/seatpreevue-legacy-shim.js?key=pk_live_….
3. It never makes things worse
For each call, the shim finds your venue and seat on Seat Preevue v1 and shows the view from there. If it can't (the venue isn't on v1 yet, your domain isn't registered, or our service doesn't answer), it shows the view the way your old script did, from the same images as before. So you can switch before every venue has moved.
4. Check it worked
In the browser console, on a page with a seat view:
await initSeatPreevue('panorama', '<your venue key>', '<a seat id>');
// 'signed' → shown from Seat Preevue v1
// 'legacy' → shown the old way (not on v1 yet: tell us the venue key and seat)
// 'failed' → no view could be shown (the console says why)
// 'aborted' → a later call for the same container replaced this one
5. CSP, rolling back and events
- CSP: Mode A, and keep the old host allowed while views can fall back.
- Rolling back: put the old script URL back.
- Optional:
SeatPreevue.on('load' | 'unavailable' | 'error' | 'close', handler).