Skip to main content
POST
/
webhooks
Create Webhook
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: JSON.stringify({
    url: 'https://example.com/webhooks/thanksio',
    type: 'order.status_update',
    description: 'Order status updates',
    verb: 'post',
    mailing_list_id: null
  })
};

fetch('https://api.thanks.io/api/v2/webhooks', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
{
  "type": "order.status_update",
  "url": "https://example.com/webhooks/thanksio",
  "description": "Order status updates",
  "verb": "post",
  "mailing_list_id": null,
  "user_id": 2,
  "invoke_count": 0,
  "updated_at": "2026-03-10T18:59:24.000000Z",
  "created_at": "2026-03-10T18:59:24.000000Z",
  "id": 13
}
Webhooks are available on paid subscriptions only.

Authorizations

Authorization
string
header
required

Bearer token authentication using your thanks.io API key

Body

application/json
url
string<uri>
required
Example:

"https://example.com/webhooks/thanksio"

type
enum<string>
required
Available options:
order_item.status_update,
order.status_update,
order_item.delivered,
scans.scan_update
Example:

"order_item.status_update"

verb
string
required
Example:

"post"

description
string | null
Example:

"Order status updates"

mailing_list_id
integer | null
Example:

null

Response

Created

type
enum<string>
Available options:
order_item.status_update,
order.status_update,
order_item.delivered,
scans.scan_update
Example:

"order_item.status_update"

url
string<uri>
Example:

"https://example.com/webhooks/thanksio"

description
string | null
Example:

"Order status updates"

verb
string
Example:

"post"

mailing_list_id
integer | null
Example:

null

user_id
integer
Example:

2

invoke_count
integer
Example:

0

updated_at
string<date-time>
Example:

"2026-03-10T18:59:24.000000Z"

created_at
string<date-time>
Example:

"2026-03-10T18:59:24.000000Z"

id
integer
Example:

13