Webhook events. Full list
Every event SellStein can send to your endpoint, with payload shape and the recommended way to handle each.
Last updated 2026-05-10
Webhooks let your code react to things that happen in SellStein without polling. Here are the events you can subscribe to.
Order events
- order.created. New order placed (any source: storefront, pay link, manual, API)
- order.paid. Payment confirmed and captured
- order.fulfilled. Items marked shipped
- order.delivered. Carrier confirmed delivery
- order.cancelled. Order cancelled, refund pending or complete
- order.refunded. Refund completed (full or partial)
Customer events
- customer.created. New customer account
- customer.updated. Fields changed (email, address, marketing consent)
- customer.deleted. Anonymised per GDPR
- customer.segment_added. Added to a segment
- customer.segment_removed. Removed from a segment
Subscription events
- subscription.created. New subscriber
- subscription.renewed. Successful recurring charge
- subscription.payment_failed. Renewal failed; retries pending
- subscription.past_due. All retries exhausted; subscription on hold
- subscription.cancelled. Explicitly cancelled by customer or merchant
- subscription.upgraded / downgraded. Plan change
Payment events
- charge.succeeded. Card auth + capture cleared
- charge.failed. Card declined
- charge.disputed. Chargeback opened
- charge.dispute_won / dispute_lost. Outcome determined
- payout.paid. Funds landed in your bank
- payout.failed. Bank rejected the payout
Inventory events
- product.low_stock. Stock dropped below the reorder threshold
- product.out_of_stock. Stock hit 0
- product.back_in_stock. Stock went from 0 to >0
Configuring
Settings → Developers → Webhooks → New endpoint. Select the events you care about. Don't subscribe to everything; you'll get noise. The signing secret is per-endpoint, so multiple endpoints can listen to the same events with different secrets.
Payload shape
All payloads follow: ```json { "id": "evt_123", "type": "order.created", "created": 1715299200, "data": { ... event-specific object ... } } ```
Use evt_xxx as your idempotency key when persisting.
Testing
Settings → Developers → Webhooks → endpoint → Send test event. Picks a recent real event of any type and re-sends it to your URL. Useful for confirming your handler works end-to-end without waiting for a real customer to act.