Sendoso Webhooks
Twenty-eight Svix-signed send lifecycle events delivered to an endpoint you control. Subscriptions are configured in a hosted portal; there is no webhook management API.
Twenty-eight Svix-signed send lifecycle events delivered to an endpoint you control. Subscriptions are configured in a hosted portal; there is no webhook management API.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/sendoso-webhooks"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
asyncapi: 3.0.0
info:
title: Sendoso Webhooks
version: '1.0'
description: >-
Sendoso webhooks deliver real-time send status updates. Sendoso does not publish an
AsyncAPI document; this description was generated by API Evangelist from Sendoso's own
webhook documentation at https://developer.sendoso.com/webhooks/introduction — every
event name, payload field, header, retry interval and source IP below is published by
Sendoso.
Delivery is powered by Svix: signatures arrive on `svix-id`, `svix-timestamp` and
`svix-signature`, and the subscription surface is a hosted "webhooks portal" rather than
an API. There is no webhook-management endpoint — endpoints and event subscriptions are
configured in the portal by a human.
contact:
name: Sendoso Developer Support
email: developers@sendoso.com
url: https://developer.sendoso.com/webhooks/introduction
x-generated-from: documentation
x-generated-by: API Evangelist enrichment pipeline (local-v1)
x-generated-on: '2026-08-13'
externalDocs:
description: Sendoso webhooks documentation
url: https://developer.sendoso.com/webhooks/introduction
defaultContentType: application/json
servers:
subscriber:
host: www.example.com
protocol: https
description: >-
Your endpoint. You supply the URL; Sendoso POSTs to it. Sendoso's own example shape is
https://www.example.com/sendoso/webhooks/.
channels:
sendEvents:
address: /
title: Send status events
description: >-
All send lifecycle events are delivered to the subscribing endpoint. If no event types
are selected in the portal, the endpoint receives every event regardless of type.
messages:
sendStatusChanged:
$ref: '#/components/messages/sendStatusChanged'
operations:
receiveSendEvent:
action: receive
channel:
$ref: '#/channels/sendEvents'
summary: Receive a send status change from Sendoso.
messages:
- $ref: '#/channels/sendEvents/messages/sendStatusChanged'
components:
messages:
sendStatusChanged:
name: sendStatusChanged
title: Send status changed
contentType: application/json
description: >-
Every Sendoso event type carries the same two-field payload. The event type itself is
not in the body — it is the subscription's type, so the receiver must distinguish
events by the subscription/delivery metadata, not by the payload.
headers:
type: object
properties:
svix-id:
type: string
description: Unique message id, part of the signed content.
svix-timestamp:
type: string
description: >-
Attempt timestamp. Messages more than five minutes from current time (past or
future) are rejected by the verifier.
svix-signature:
type: string
description: >-
Space-separated list of versioned signatures. Signed content is
`{svix-id}.{svix-timestamp}.{raw body}`, HMAC-SHA256 with the base64-decoded
half of the endpoint secret, base64 encoded.
payload:
type: object
required: [send_gid, status_changed_at]
properties:
send_gid:
type: string
description: The gid of the send.
status_changed_at:
type: string
description: When the send's status changed, in ISO 8601 format.
tags:
- name: send.amazon_fulfilling
description: The Amazon send is being processed.
- name: send.amazon_shipped
description: The send has shipped from Amazon and is in transit to Sendoso.
- name: send.blocked
description: A request to redeem the send has been blocked.
- name: send.bounced
description: The send cannot be redeemed and will be refunded.
- name: send.canceled
description: The send has been canceled by the sender.
- name: send.clicked
description: The eGift send has been viewed by the recipient.
- name: send.confirmation_canceled
description: Address confirmation for a send has been canceled by the sender.
- name: send.confirming_address
description: The send is awaiting address confirmation from the recipient.
- name: send.delivered
description: The send has been delivered to the recipient.
- name: send.email_blacklist
description: A request to redeem the send has been blacklisted.
- name: send.expired
description: The link to redeem the send has expired.
- name: send.failed
description: The send has failed.
- name: send.fulfilling
description: The send is being processed by Sendoso.
- name: send.fulfillment_issue
description: There is an issue on the fulfillment side for the send.
- name: send.initiated
description: The send is in the process of being created.
- name: send.insufficient_funds
description: The send cannot be processed due to insufficient funds.
- name: send.invalid_email_format
description: The recipient email in the send is not a valid email.
- name: send.opened
description: The eGift send has been opened by the recipient.
- name: send.order_received
description: The send order has been received and is being processed.
- name: send.out_of_stock
description: The product for the send is out of stock.
- name: send.pending_approval
description: The send is pending approval by the sender.
- name: send.pending_sendoso_approval
description: The send is pending approval by a Sendoso Admin.
- name: send.redeemed
description: The eGift send has been redeemed by the recipient.
- name: send.refunded
description: The send has been refunded.
- name: send.sent
description: The eGift send has been sent to the recipient.
- name: send.shipped
description: The send is in transit to the recipient.
- name: send.suspicious_email
description: The recipient email for the send is flagged as suspicious.
- name: send.undeliverable
description: The send cannot be delivered to the recipient.
securitySchemes:
svixSignature:
type: httpApiKey
name: svix-signature
in: header
description: >-
HMAC-SHA256 over `{svix-id}.{svix-timestamp}.{raw body}` using a per-endpoint secret
(prefix `whsec_`) retrieved from the webhooks portal. Verify the RAW body byte for
byte — re-serializing the JSON breaks the signature, which Sendoso names as the most
common integration failure.
x-delivery:
enablement: >-
Webhooks must be enabled per organization by Sendoso support; the portal URL is then
retrieved from the integrations page.
management_api: false
retry_schedule:
- immediately
- 5s
- 5m
- 30m
- 2h
- 5h
- 10h
- 10h
retry_note: >-
Exponential backoff. A message that fails three times before succeeding is delivered
roughly 35 minutes and 5 seconds after the first attempt.
response_timeout_seconds: 15
success_criteria: Any 2xx status is treated as success, regardless of the response payload.
endpoint_disable_after: 5 days of total failure
manual_recovery: >-
The portal supports per-message resend, "Recover Failed Messages" over a time window, and
replay-all-since-this-time.
source_ips_us:
- 44.228.126.217
- 50.112.21.217
- 52.24.126.164
- 54.148.139.208
- '2600:1f24:64:8000::/52'
replay_protection: >-
Timestamps more than five minutes from current time are rejected. Sendoso recommends NTP
on the receiving server.
x-gaps:
- >-
The event type is not carried in the payload, so a single endpoint subscribed to all
events cannot tell which event it received from the body alone.
- No AsyncAPI or event schema registry is published by Sendoso.
- No webhook-management API — subscriptions are portal-only.
- Source IPs are published for the US only.