Deliver licenses and downloads to your customers
Fulfillment webhooks are typically used to send order-specific data to a customer after a checkout is completed. For example generating a license code to activate a piece of software that is sent to the customer after an order.
The response from the fulfillment webhook is emailed to the customer as part of the order process.
Order emails can be disabled for one-time products when you’re editing it from within the Seller Dashboard.
Setting Up a Fulfillment Webhook
Unlike most webhook Alerts, which are sent to a single endpoint defined in your account settings, Fulfillment webhooks are specific to a product or plan.
For one-time products, simply set the fulfillment method to “Server Notification - send a request to your license server or CRM” or “Webhook” during product creation or while editing respectively.
Fulfillment webhooks can also be enabled as a one-off action for subscription plans if enabled on your account. Contact support if you wish to activate this option.
Once enabled, you can open the Webhook Editor, where you should see a page that looks similar to the one below:
On this page, you can fill out the fields to tell us what data to send to your webhook about the order, and in what format, the fields available are:
- Webhook URL — The URL that we will send the HTTP request to.
- Request Method — The HTTP request method. (Either GET or POST)
- Instructions — Some text that will be sent along with the response from your webhook to the customer. Particularly useful for including something like activation instructions along with a license code, for example. You can customize the instructions using the supported HTML tags listed here.
- Separate Multibuy — For quantity orders, should we send a single webhook request with a quantity attribute. Or a webhook request for each quantity item.
- Custom Fields — In addition to the standard fields below, you may optionally send the checkout hash, transaction ID, customer email, customer name (if collected) or a static value or message. Please note that changes made here (adding or removing fields) will not be reflected in the “Test Webhook” function until you click “Save Changes”.
Responding to Fulfillment Webhooks
To complete the fulfillment process, your server should respond within 30 seconds with an HTTP 200 status code containing a string value in the response body no larger than 600KB in size, to indicate that you have successfully fulfilled the order. Typically, this would be a license code that you wish to distribute to your customer.
If we receive anything other than an HTTP 200, if there is no response within 30 seconds, or if the response body exceeds 600KB, we will retry the call to your fulfillment URL every 10 minutes for a maximum of 4 times.
Responses cannot include HTML, but can use select basic Markdown syntax for simple formatting and links. See below for a list of supported syntaxes.
Supported Markdown Syntaxes
- Headings (Alternate syntax is not supported)
- Links (Only basic links with/without formatting)
If your response contains any character that has a special meaning in Markdown’s formatting syntax (but you would like to display it literally), you will need to add a backslash character (
\) in front of it. Click here to see a list of characters you can escape.