Important update 1: Email Support is being transitioned to Webforms. Click here for more information.

Webhook Notifications

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

EventDescription
Authorize paymentA payment authorization was attempted
Capture paymentAn authorized payment was captured
Cancel paymentA payment was cancelled before capture
Charge paymentA payment was charged directly
Refund paymentA payment was refunded
Completed orderAn order reached completed status

Customer events

EventDescription
Create customerA new customer account was created
Sent email to customerAn automated email was sent to a customer
Verify emailA customer completed email verification
Update account infoA customer updated their account details
Update emailA customer changed their email address
Add payment methodA customer added a payment method
Delete payment methodA customer removed a payment method
Log inA customer logged in to your store
Forgot passwordA customer requested a password reset
Reset passwordA customer completed a password reset
Update customer statusA customer account status changed
Log in as customerA reseller logged in as a customer
Change currencyA customer changed their preferred currency

Domain events

EventDescription
Domain registrationA domain was registered
Domain renewalA domain was renewed
Domain updateA domain record was updated
Add contact privacyContact privacy was added to a domain
Renew contact privacyContact privacy was renewed
Enable domain auto-renewAuto-renew was turned on
Disable domain auto-renewAuto-renew was turned off
Enable domain lockTransfer lock was enabled
Disable domain lockTransfer lock was disabled
Update contactA domain contact was updated
Enable contact privacy auto-renewContact privacy auto-renew was enabled
Disable contact privacy auto-renewContact privacy auto-renew was disabled
Enable contact privacyContact privacy was enabled
Disable contact privacyContact privacy was disabled
Update nameserversNameservers were changed
Add domain forwardingDomain forwarding was configured
Update domain forwardingDomain forwarding settings were updated
Delete domain forwardingDomain forwarding was removed
Add DNS recordA DNS record was added
Update DNS recordA DNS record was updated
Delete DNS recordA DNS record was deleted
Reset DNS recordsDNS records were reset to default
Update DNS templateA DNS template was applied or changed
Transfer domainA domain transfer was initiated or completed
Import domainA domain was imported into Storefront
Delete domainA domain was removed from Storefront
Revoke domainA domain was revoked
Revoke contact privacyContact 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.

  1. Log in to Storefront Manager.
  2. Navigate to Settings → Advanced Settings and select the Webhooks tab.
  3. Click Add Webhook.
  4. Select the event category you want to subscribe to: Order, Customer, Domain, or Account.
  5. Enter your endpoint URL.
  6. Click Save.
  7. 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!

Do you still need help? If so please submit a request here.