Put our forms and checkout on your site¶
You can add Speakeasy pages to your own website with no API key and no server work. We take the payment and
store the data. We first have to approve each website: tell your Speakeasy contact the exact address, such as
https://www.example.com.
The checkout widget¶
A guest clicks a link on your page, and our event checkout opens in a window on the same page. Tickets, tables, table requests, the waitlist, the phone sign-in, the payment and the confirmation all happen inside it. On a phone it fills the screen.
<script src="https://speakeasygo.com/event-widget.js" async></script>
<a href="https://speakeasygo.com/event/EVE-XXXXXX" data-speakeasy-event="EVE-XXXXXX">Buy tickets</a>
data-speakeasy-eventnames the event, by itsuniqueId.data-speakeasy-tab="tables"opens the tables step.data-speakeasy-linksends one of the venue's tracking link codes with the booking.- From your own code:
window.SpeakeasyCheckout.open({ eventId, tab }),.close()and.on(function (message) { ... }). - Your page must be on https. If the widget cannot open, the link goes to the event on our site, like a normal link.
- A reload of the window starts over: the guest signs in again and the cart is gone.
Messages to your page¶
.on() gives you these messages, so you can count steps in your own analytics. Each has source: "speakeasy" and a
type.
type |
When | Other fields |
|---|---|---|
speakeasy:checkout:ready |
The window has loaded | eventId, view, available |
speakeasy:checkout:step |
The checkout step changes | step |
speakeasy:checkout:purchase |
A paid ticket order or a table booking is done | kind (tickets or table), eventId |
speakeasy:checkout:waitlist |
The guest joined the waitlist | waitlistId |
speakeasy:checkout:close |
The guest closed the checkout | reason (user or expired) |
speakeasy:checkout:closed |
The window closed |
A purchase also goes to window.dataLayer as { event: "speakeasy_purchase", speakeasy_kind, speakeasy_event_id }, for your
own Google Tag Manager.
No message carries a booking id, a name, a phone number, an email or a login token. A free RSVP, a table request and a payment that comes back from a bank's page send no purchase message.
Apple Pay¶
Apple Pay shows in the widget only when your website is registered for it. You host a file from our payment processor at
/.well-known/apple-developer-merchantid-domain-association, and we register your website. Ask your Speakeasy contact.
The embedded forms¶
Two forms go on your site in an iframe.
| Form | Address |
|---|---|
| Guest list | https://speakeasygo.com/guest-list?venueId=VENUE_ID |
| Table request | https://speakeasygo.com/reservation-form?venueId=VENUE_ID |
<iframe src="https://speakeasygo.com/reservation-form?venueId=VENUE_ID" title="Request a table" width="100%" height="800"></iframe>
The guest checks their phone number with a texted code, fills in the form and sends it.
When a form is sent, the page sends one message to your page:
| Form | Message |
|---|---|
| Guest list | { source: "speakeasy", event: "guest_list_submit", venueId, form: "guest_list" } |
| Table request | { source: "speakeasy", event: "table_reservation_request", venueId, form: "reservation" } |
Check that the message comes from https://speakeasygo.com before you use it. A table request message means a request was
created, not that the venue accepted it. The messages hold no personal data.