Skip to main content

Overview

Dynamic Delivery allows SellAuth to automatically deliver product content by sending a POST request to your server. Your server generates and returns the deliverables in real time (for example: license keys, credentials, or access tokens). Stock for Dynamic Delivery products is managed manually and can be set to infinite.
Reselling another SellAuth shop’s products? That shop generates ready-made delivery URLs for you; no server needed. See Reseller Dynamic Delivery.

How It Works

  1. A customer completes checkout.
  2. SellAuth sends a POST request to your webhook URL for each item in the invoice.
  3. Your server processes the request and returns the deliverables.
  4. SellAuth displays the returned content to the customer.
Each product item is delivered individually, even if multiple items exist in the same cart or invoice.

Webhook Request

HTTP Details

  • Method: POST
  • Content-Type: application/json
  • Connect timeout: 5 seconds
  • Request timeout: 10 seconds
  • Retries: 3 total attempts
  • Retry interval: 5 seconds between each attempt
  • Maximum response size: 1 MB

Example Request Body

Request Headers

Signature Verification

Each request is signed using HMAC-SHA256 and can be verified using the X-Signature header. The webhook secret can be found in your dashboard under Storefront > Configure > Miscellaneous: dash.sellauth.com/shop#miscellaneous If the secret is not visible, click Regenerate to create one.

Signature Generation Logic

The signature is generated from the raw JSON body:

Webhook Response

Success Response

If your server responds with HTTP 200, the item is marked as completed and the returned body is shown to the customer. Each line in the response body is treated as a separate deliverable.

Example Success Response

Retryable Errors

SellAuth will automatically retry the request if a network error occurs (connection timeout, request timeout, etc.) or if your server responds with:
  • 429 (Too Many Requests)
  • 500 (Internal Server Error)
  • 501 (Not Implemented)
  • 502 (Bad Gateway)
  • 503 (Service Unavailable)
  • 504 (Gateway Timeout)

Non-Retryable Errors

If the response status is not 200, not 429, and not any of the 5xx codes listed above:
  • The item is marked as failed.
  • If a response body is provided, it will be displayed on the checkout page so the customer can see your error message.

Example Error Response

Invoice Status Behavior

  • If the webhook fails or times out, the invoice status will be partially_completed
  • If the webhook succeeds and all items are delivered, the invoice status will be completed
  • If the webhook succeeds but not all items are delivered, the invoice status will remain partially_completed