store.store_webhooks with its own URL, subscribed event list, and test/prod environment binding.
Channels
URL host
Any HTTPS URL is accepted regardless of channel. The merchant is responsible for matching the URL to the channel’s expected platform — if a Discord URL is configured underchannel: "slack", the dispatcher will encode the payload in Slack’s attachments format and send it to the Discord endpoint, which will respond with an error and the failure is recorded in webhook_deliveries.
Multiple webhooks per URL
The same URL can be configured under multiple webhooks within a store — webhooks fan out, so different event subscriptions, channels, ortestMode flags can share a URL. Each webhook delivers independently, which means consumers receiving identical payloads on a shared URL must dedupe by (eventType, eventId).
Limits
Each store may have at most 20 webhooks across all channels. Exceeding the limit returns 400.Listing webhooks
There is nolist-webhooks endpoint — querying the configured webhook list goes through GraphQL Store.storeWebhooks (filtered automatically by environment via test_mode):
Endpoints
Add Webhook
Configure a new webhook endpoint for a store.
Update Webhook
Change a webhook’s URL, events, or secret.
Remove Webhook
Hard-delete a webhook (history retained).