Storefront webhooks deliver real-time HTTP notifications to your server whenever events occur in your store — orders, customer activity, and domain changes. Configure an endpoint URL and Storefront pushes a signed JSON payload to it the moment an event fires, without you having to poll for updates.
Webhooks, email notifications, and the API
Storefront offers three ways to connect with event data, serving different audiences and use cases.
Webhooks deliver events to your systems automatically. Use them when you need to trigger an automated workflow in response to Storefront activity — for example, creating a matching record in your CRM when a new customer registers, or triggering provisioning when a domain order completes. Webhooks are for your code, not your inbox.
Email notifications deliver event summaries to your team's inbox. Use them when you and your colleagues need to stay informed about store activity. See Storefront Email Notifications.
The Storefront API lets you manage data in Storefront programmatically, querying domains, managing DNS records, and more. Use it when you need to read from or write to Storefront on demand, rather than reacting to events. See Storefront API DNS Management Guide.
Every event that triggers a webhook also appears in the Storefront Manager event log, giving you a complete audit trail alongside your automated integrations.
Event categories
Storefront groups webhook events into four categories. You subscribe per category, your endpoint receives all events within a subscribed category.
Order events
| Event | Description |
|---|---|
| Authorize payment | A payment authorization was attempted |
| Capture payment | An authorized payment was captured |
| Cancel payment | A payment was cancelled before capture |
| Charge payment | A payment was charged directly |
| Refund payment | A payment was refunded |
| Completed order | An order reached completed status |
Customer events
| Event | Description |
|---|---|
| Create customer | A new customer account was created |
| Sent email to customer | An automated email was sent to a customer |
| Verify email | A customer completed email verification |
| Update account info | A customer updated their account details |
| Update email | A customer changed their email address |
| Add payment method | A customer added a payment method |
| Delete payment method | A customer removed a payment method |
| Log in | A customer logged in to your store |
| Forgot password | A customer requested a password reset |
| Reset password | A customer completed a password reset |
| Update customer status | A customer account status changed |
| Log in as customer | A reseller logged in as a customer |
| Change currency | A customer changed their preferred currency |
Domain events
| Event | Description |
|---|---|
| Domain registration | A domain was registered |
| Domain renewal | A domain was renewed |
| Domain update | A domain record was updated |
| Add contact privacy | Contact privacy was added to a domain |
| Renew contact privacy | Contact privacy was renewed |
| Enable domain auto-renew | Auto-renew was turned on |
| Disable domain auto-renew | Auto-renew was turned off |
| Enable domain lock | Transfer lock was enabled |
| Disable domain lock | Transfer lock was disabled |
| Update contact | A domain contact was updated |
| Enable contact privacy auto-renew | Contact privacy auto-renew was enabled |
| Disable contact privacy auto-renew | Contact privacy auto-renew was disabled |
| Enable contact privacy | Contact privacy was enabled |
| Disable contact privacy | Contact privacy was disabled |
| Update nameservers | Nameservers were changed |
| Add domain forwarding | Domain forwarding was configured |
| Update domain forwarding | Domain forwarding settings were updated |
| Delete domain forwarding | Domain forwarding was removed |
| Add DNS record | A DNS record was added |
| Update DNS record | A DNS record was updated |
| Delete DNS record | A DNS record was deleted |
| Reset DNS records | DNS records were reset to default |
| Update DNS template | A DNS template was applied or changed |
| Transfer domain | A domain transfer was initiated or completed |
| Import domain | A domain was imported into Storefront |
| Delete domain | A domain was removed from Storefront |
| Revoke domain | A domain was revoked |
| Revoke contact privacy | Contact privacy was revoked |
Account events
Account events cover reseller-level activity — billing account changes, balance events, and similar. Check Storefront Manager for the current list of specific events in this category when configuring a subscription.
Set up a webhook
Before configuring a webhook, you need a publicly accessible HTTPS endpoint on your server that accepts POST requests and returns a 2xx HTTP status code to acknowledge receipt.
- Log in to Storefront Manager.
- Navigate to Settings → Advanced Settings and select the Webhooks tab.
- Click Add Webhook.
- Select the event category you want to subscribe to: Order, Customer, Domain, or Account.
- Enter your endpoint URL.
- Click Save.
- Storefront generates a webhook key, copy and store it securely immediately. It is shown once and cannot be retrieved from Storefront Manager again.
If you lose the key, delete the subscription and create a new one to generate a replacement.
Manage webhooks
Each webhook subscription appears as a row in the Webhooks list, showing the endpoint URL and subscribed category. From the three-dot menu on any subscription you can edit the endpoint URL or category, view your saved webhook key, or delete the subscription.
Multiple endpoints and categories
Storefront supports flexible many-to-many configurations:
- A single endpoint URL can subscribe to multiple event categories and receives all events from each, with each subscription carrying its own key.
- Multiple endpoint URLs can subscribe to the same category, all configured endpoints receive the event.
Verify webhook payloads
Each delivery includes a signature you can use to confirm the request came from Storefront and was not tampered with in transit. Compute the signature using the webhook key you received at setup and compare it against the signature header in the incoming request.
Reject any incoming requests that fail signature verification.
Receive and acknowledge webhooks
- Respond quickly — return a 2xx status code as soon as you receive the request. Do not wait for downstream processing to complete before responding.
- Process asynchronously — if your handler needs to do significant work in response to an event, queue it and process in the background.
- Be idempotent — webhook deliveries may occasionally be retried. Design your handler so that processing the same event twice has no adverse effect.
Delivery failures
If your endpoint returns a non-2xx status or does not respond, Storefront treats the delivery as failed and retries.
KB team note: Retry count and backoff interval to be confirmed with engineering and added here before publishing.
If your endpoint is unreachable for an extended period, older undelivered events may be dropped. For high-reliability integrations, log incoming events to a durable store before acknowledging so you can replay if needed.
Troubleshooting
My endpoint is not receiving events.
Confirm the endpoint URL is publicly accessible over HTTPS — Storefront cannot reach endpoints on private networks or localhost. Check that your server returns a 2xx response. Redirects (3xx) and error responses (4xx, 5xx) cause Storefront to treat the delivery as failed. Verify the subscription is active in Settings → Advanced Settings → Webhooks.
I lost my webhook key.
The key cannot be recovered from Storefront Manager. Delete the subscription and create a new one to generate a new key. Update your signature verification logic with the replacement key.
I'm receiving events I didn't expect.
Subscriptions are per category, not per individual event. If you subscribed to Domain Events, you receive every event in that category. Filter by event type in your handler code if you only need to act on specific events.
I need to test my endpoint before going live.
Use a tool such as webhook.site to capture and inspect test payloads during development before pointing Storefront at your production endpoint.
Related articles
Questions? Contact OpenSRS Support.
Was this article helpful? If not please submit a request here
How helpful was this article?
Thanks for your feedback!