Webhook Documentation
Secure way to keep orders in sync with our Marketplace
To receive real-time notifications about orders, register your webhook by sending a request to our Webhooks endpoint (see endpoint reference). Once configured, we'll generate a secret token and include it in the response. This token will be used to generate the signature included in each webhook request, allowing you to verify integrity and autenticity of the request.
Registering Your Webhook Endpoint
To register (or update) your webhook endpoint, make a POST request to: https://{environment}.nelo.co/v1/admin/webhooks
Authentication
Your store is associated with your webhook via the API token you received during onboarding. Include it in the Authorization header:
Authorization: Bearer YOUR_API_TOKEN Request Body
Your request body should include the URL for your webhook endpoint. (For the full request schema, please refer to our Webhook API Reference )
Response
On successful registration, the response will include a single field: webhook_secret. A secret token used to sign the webhook payloads.
Example response:
{
"webhook_secret": "token"
}Note: Every time you POST to this endpoint, your previous webhook configuration is replaced with the new one.
Signature Verification
Each webhook event request sent to your registered endpoint includes a signature in the x-signature header and a timestamp in the x-signature-timestamp header. This signature is generated using your webhook_secret with HMAC-SHA256.
Digest Composition
For every webhook event, the signature digest is composed using the following string format:
"id:$orderId;status:$orderStatus;ts:$timestamp"Where:
orderIdis the unique identifier of the order.orderStatusis the current status of the order.timestampis an epoch provided with every webhook event request.
Example Signature Verification Flow
- Receive the webhook event request which includes:
- The payload containing order details (id, status, etc.).
- The
x-signature-timestampheader with an epoch value. - The
x-signatureheader with the HMAC signature.
- Recreate the digest string using the values from the payload
"$orderId;status:$orderStatus;ts:$timestamp" - Generate an HMAC signature using the
webhook_secretandHMAC-SHA256algorithm. - Compare the computed signature with the
x-signatureheader to verify the authenticity of the request. - [Optional]Timestamp validation To further secure your webhook endpoint, enforce validation on the timestamp. Reject any request if the timestamp is in the future or if it is older than 30 seconds compared to your server time. This helps mitigate replay attacks by ensuring that each request is fresh. If we need to resend any event for any reason, we will get a fresh timestamp and signature.
For further endpoint details, please refer to our Webhook API Reference.
Happy integrating!
Updated 3 months ago