Skip to main content
POST
Create a webhook

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Headers

Idempotency-Key
string

Replay-safe request key. Repeated requests with the same value within 24h return the original response unchanged.

Maximum string length: 255

Body

application/json
url
string<uri>
required
events
enum<string>[]

Empty means subscribe to every event.

Stable dotted wire-format name for an outbound event.

Available options:
customer.enrolled,
customer.unenrolled,
customer.anonymized,
customer.group_changed,
wallet.installed,
card.scanned,
card.expired,
referral.created,
transaction.created,
coupon.redeemed,
reward.redeemed,
tier.changed,
ticket.purchased,
ticket.cancelled,
ticket.refunded,
gift.purchased,
gift.redeemed,
multipass.purchased,
membership.purchased,
membership.renewed,
membership.cancelled,
feedback.submitted,
automation.fired,
broadcast.sent,
booking.created,
booking.confirmed,
booking.attended,
booking.no_show,
booking.cancelled,
webhook.test
card_id
string | null

Optional card in the same business. Events without this card ID are not delivered.

mode
enum<string>
default:all

Filter delivery by live/test activity before creating an outbound attempt. all preserves the default generic-webhook behaviour.

Available options:
all,
live,
test
verification_mode
enum<string>
default:client_hmac

server_attested is OAuth-only and never releases the signing secret. The mode is immutable after creation.

Available options:
client_hmac,
server_attested
description
string | null
is_active
boolean
default:true

Create the webhook paused when false; activate it later with PATCH.

Response

OAuth idempotent replay of the same live subscription. secret is present only for client_hmac.

id
string
url
string
description
string | null
events
enum<string>[]

Empty means subscribe to every event.

Stable dotted wire-format name for an outbound event.

Available options:
customer.enrolled,
customer.unenrolled,
customer.anonymized,
customer.group_changed,
wallet.installed,
card.scanned,
card.expired,
referral.created,
transaction.created,
coupon.redeemed,
reward.redeemed,
tier.changed,
ticket.purchased,
ticket.cancelled,
ticket.refunded,
gift.purchased,
gift.redeemed,
multipass.purchased,
membership.purchased,
membership.renewed,
membership.cancelled,
feedback.submitted,
automation.fired,
broadcast.sent,
booking.created,
booking.confirmed,
booking.attended,
booking.no_show,
booking.cancelled,
webhook.test
card_id
string | null

Optional card filter applied before a delivery is created. Null receives matching events from every card.

mode
enum<string>

Filter delivery by live/test activity before creating an outbound attempt. all preserves the default generic-webhook behaviour.

Available options:
all,
live,
test
verification_mode
enum<string>

Immutable authenticity contract. client_hmac exposes the signing secret once so the receiver verifies the exact raw body. OAuth-only server_attested keeps that secret inside Perkstar and verifies the parsed event through the delivery-verification endpoint.

Available options:
client_hmac,
server_attested
is_active
boolean
created_at
string<date-time>
updated_at
string<date-time>
secret
string

Present only for client_hmac; never returned for server_attested.