Quickstart

Sell reserved seats in four steps. You need a MapMyVenue workspace and a web page to put the map on.

1. Map your venue

In the dashboard, create a chart to open the builder. Use Import from image in the builder to turn a photo or scan of a seating plan into a draft, or draw sections, rows and tables yourself. Click Publish.

2. Create an event

On the Events page click New event, pick the published chart and press Create event. When you publish the chart again, its events update too, unless the change would remove seats that are held or sold. Those events keep their current map, and the builder tells you which ones.

3. Embed the map

Copy the snippet from the event page. It contains your public key, which is safe to put in a web page. Give the div a height; the map is at least 400px tall.

<div id="seatmap" style="height: 600px"></div>
<script src="https://map-my-venue.vercel.app/embed.js"></script>
<script>
  const chart = new MapMyVenue.SeatingChart({
    divId: 'seatmap',
    publicKey: 'YOUR_PUBLIC_KEY',
    event: 'YOUR_EVENT_KEY',
    onSelectionChange: (seats) => console.log('selected', seats),
  });
  chart.render();
  // Checkout: send chart.getHoldToken() and the seat ids to your server,
  // which books them with your secret key (POST /v1/events/YOUR_EVENT_KEY/book).
</script>

When a buyer clicks a seat it is held for them for 10 minutes, and nobody else can take it in that time.

4. Book from your server

At checkout, send the hold token and seat ids to your server and book them with your secret key (Settings):

curl -X POST https://p01--mapmyvenue--xpfbl4sjg8sg.code.run/v1/events/ev_.../book \
  -H "Authorization: Bearer sk_..." \
  -H "Content-Type: application/json" \
  -d '{ "seatIds": ["row-1-seat-4"], "holdToken": "<chart.getHoldToken()>", "orderId": "order-1042" }'

The seats turn sold on every open map immediately. Next: how holds and booking work.