UltimateTheme Park
All guides▾

Webhooks

Have a Discord channel, your bot or your website told the moment a lap ends, a photo is taken, a ride stops, a show is coming up or your server goes away.

Updated 20 October 2026

A webhook is the API the other way round: rather than a program asking your park how it's doing, your park tells it, the moment something happens. It's what you want for a Discord channel that shows every new on-ride photo, or one that warns your staff when a ride stops.

A webhook goes to one of two places:

What it can be told#

EventWhen
A lap is overThe train has stopped back in the station, or at the ride's unload platform — with everybody aboard
An on-ride photo is takenA few seconds after the shutter, with the pictures and the page their QR code opens
A ride is stopped by an emergency stopWith the operator who pressed it — or the ride itself, when a transfer manoeuvre failed
A stopped ride runs againThe emergency stop was released
A ride opens or closesIt was opened or closed, or the reason it is closed changed — in the administration, in the game or through the API — with how it stood before, and the player who changed it, if a player did
A show is thirty minutes away, on its scheduleHalf an hour before a scheduled show starts — or as soon as your server is back, if it was away then
A show startsStarted on its schedule, with the Start button, or through the API — not by a command in the game
A show does not start on its scheduleNobody was online, it was still running, or your server was away
The Minecraft server connectsIt came back, or UTP Connect itself restarted
The Minecraft server goes awayIt stopped, or nothing was heard from it for twenty seconds

Post in a Discord channel#

Each event becomes a short message in the channel, under your park's name and logo: who rode a lap, the on-ride photo itself, who pressed an emergency stop, the show starting in half an hour — and where, when the show has a location. A show's time appears on each reader's own clock: a player in another time zone reads it right.

First, get the channel's webhook link from Discord. You need the Manage Webhooks permission on the Discord server.

  1. In Discord, hover over the channel and click the gear (Edit Channel).
  2. Open Integrations, then click Create Webhook — or View Webhooks, then New Webhook, if the channel already has one.
  3. Click the new webhook, then Copy Webhook URL. Its name and picture don't matter: your messages carry your park's.

Then add it to your park:

  1. In the administration, open Settings, and scroll down to API.
  2. Under Webhooks, paste the link as the Address. It starts with https://discord.com/api/webhooks/.
  3. Under Tell it when, tick the events the channel should hear about, and click Add the webhook.
  4. Click Send a test. A Webhook connected message appears in the channel, listing what it will hear about.

Send it to a program#

You need the address of the program that will receive the messages: whoever builds it gives it to you, something like https://bot.your-park.com/utp.

  1. In the administration, open Settings, and scroll down to API.
  2. Under Webhooks, paste the Address.
  3. Under Tell it when, tick the events it should hear about.
  4. Click Add the webhook, and copy the signing secret it shows: it is shown only once, and the program needs it to check that the messages really come from your park.
  5. Click Send a test. The line under the webhook says what the address answered.

When something goes wrong#

Under each webhook, a line tells how the last delivery went: when, and what the address answered. When a delivery fails, UTP Connect tries again four more times over the next hour.

  • "That is a Discord address, but not a webhook's": you pasted the channel's link, or an invitation. Copy the webhook's link, as in Post in a Discord channel.
  • "Discord no longer knows this webhook": it was deleted in Discord, or the link was not copied whole. Copy it again, then remove the webhook here and add it back.
  • "Discord answered 400: Webhooks posted to forum channels…": the webhook belongs to a forum channel, where every message must open a post. Make the webhook in an ordinary text channel instead.
  • "Discord asked to slow down": the channel is getting more messages than Discord allows. Untick A lap is over, or give laps a channel of their own.
  • "points inside the instance's own machine": the address leads to the VPS UTP Connect runs on, through localhost or 127.0.0.1, which is refused. Use the machine's network address, or a domain.
  • "no answer within 10 seconds", "could not be reached": the program is down, or not reachable from the internet.

To change a webhook's events, or its secret, remove it and add it again.

For developers#

The format of each message, its signature and a few lines to check it are in the API reference. A Discord webhook link gets Discord's own message format instead, unsigned.

Get Ultimate Theme Park

Secure payment by Stripe. You will receive an invoice by e-mail.