Webhooks

Overview

When something happens in your store — like a customer completing a payment — Terminal3 can notify your server automatically. These notifications are called webhooks.

Terminal3 sends an HTTP request to a URL you choose, with details about what happened. Your server receives it, verifies it’s authentic, and takes action (e.g. deliver in-game currency, activate a subscription, or update your database).

How It Works

  1. A customer makes a purchase in your store.
  2. Terminal3 sends an HTTP POST request to your webhook URL.
  3. Your server verifies the signature and processes the event.
  4. Your server responds with HTTP 200 to confirm receipt.

Setting Up a Webhook Endpoint

Webhook endpoints are managed under Settings > Webhooks in the Terminal3 Business dashboard.

Step 1: Add an endpoint

  1. Go to Settings > Webhooks.
  2. Click + Add endpoint.
  3. Enter your Webhook URL (must be HTTPS).
  4. Add an optional Description to help identify the endpoint.

Step 2: Choose events

Select which events this endpoint should receive. For example, check order.status.updated to be notified when an order status changes.

Step 3: Save and copy your secret

  1. Click Save Changes.
  2. Copy the Signing Secret (starts with whsec_). You will need this to verify webhook signatures.

You can create up to 5 endpoints per store. Each endpoint can subscribe to different events, so you can route notifications to different services.

Endpoint Settings

Field Description
Webhook URL The HTTPS URL that receives webhook requests.
Description Optional label to identify the endpoint.
Subscribed Events Which event types this endpoint receives.
Enabled Toggle to activate or pause the endpoint.
Signing Secret The whsec_-prefixed key used to verify signatures.

Request Format

Each webhook is an HTTP POST request with a JSON body.

POST https://your-server.com/webhook HTTP/1.1
Content-Type: application/json
X-Webhook-Signature: t=1688000000,v1=5257a869...
{
  "id": "evt_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "type": "order.status.updated",
  "created_at": 1775124312,
  "data": {
    "object": { ... }
  }
}

Payload Fields

Field Type Description
id string Unique event identifier, prefixed with evt_.
type string The event type that triggered this webhook.
created_at integer Unix timestamp of when the event was created.
data.object object The entity related to the event. The structure varies by event type.

Available Events

Event Description
order.status.updated An order status changed (e.g. payment completed, refund issued).

Responding to Webhooks

Your server must respond with an HTTP 200 status code to confirm receipt. Any other status code (or a timeout) is treated as a failure, and Terminal3 will retry the delivery.

Troubleshooting

Each endpoint has a Delivery Log in the dashboard showing recent delivery attempts. Use the event type and status filters to find failed deliveries and inspect the request details.