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
- A customer makes a purchase in your store.
- Terminal3 sends an HTTP POST request to your webhook URL.
- Your server verifies the signature and processes the event.
- 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
- Go to Settings > Webhooks.
- Click + Add endpoint.
- Enter your Webhook URL (must be HTTPS).
- 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
- Click Save Changes.
- 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.