Skip to content

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-event names the event, by its uniqueId.
  • data-speakeasy-tab="tables" opens the tables step.
  • data-speakeasy-link sends 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.