Docs /Webhooks API Dashboard →

Webhooks API

Webhook endpoints for receiving order notifications from external platforms to trigger download fulfilment. Continuata does not currently send outbound webhooks to your servers.

Incoming Webhooks

These endpoints receive webhooks from external platforms to trigger download token generation:

Shopify Orders

POST /webhooks/{orgId}/shopify

Receives order completion notifications from Shopify stores.

WooCommerce Orders

POST /webhooks/{orgId}/woocommerce

Handles order completions from WooCommerce WordPress sites.

Stripe Payments

POST /webhooks/stripe

Processes successful payments from Stripe checkout sessions.

FastSpring Orders

POST /webhooks/{orgId}/fastspring

Processes order completions from FastSpring (Contextual).

FastSpring Classic Orders

POST /webhooks/{orgId}/fastspring-classic

Processes custom notifications from FastSpring Classic (Springboard) stores.

VibraCart Pro Orders

POST /webhooks/{orgId}/vibracartpro

Receives order notifications from VibraCart Pro stores.

Download Completion (internal)

POST /webhooks/{orgId}/download-complete

Called by the Continuata downloader (browser or Bridge) at the end of a session to mark the token as used and write an activity log entry. You don't normally call this yourself — it's documented for completeness.

Webhook Security

Signature Verification

Each incoming webhook is verified using the sending platform's own mechanism. Configure the matching secret under Settings → Integrations:

PlatformVerification
ShopifyX-Shopify-Hmac-Sha256 header — base64 HMAC-SHA256 of the raw body, using your store's signing secret
WooCommerceX-WC-Webhook-Signature header — base64 HMAC-SHA256 of the raw body, using your shared secret
StripeStripe-Signature header — platform-managed by Continuata
FastSpringX-FS-Signature header — HMAC-SHA256 with your per-org secret
FastSpring ClassicX-Security-Data + X-Security-Hash headers — MD5(data + private key)
VibraCart ProShared secret in the webhook URL's secret query parameter (timing-safe compare)
Download CompletionThe download token in the request body acts as the capability

All signature comparisons are constant-time, and duplicate deliveries are de-duplicated per order and product.

Fulfilment Rules

  • Undeliverable products hold the order. If an order's SKU maps to a draft product or one with no live version, no purchase, customer, download token, or email is created. The webhook is still acknowledged with a 200 (so the store doesn't retry forever) and the delivery is recorded as held in Logs → Webhooks with the SKU and reason. Publish the product, then re-deliver or record the sale manually.
  • Fulfilment runs off the response path for FastSpring (Classic) and VibraCart Pro: orders are acknowledged immediately, the webhook log shows Pending until fulfilment completes, then Success or Error based on whether the customer actually got their files. A redelivery of an order whose receipt never went out re-sends the missing receipt instead of being skipped as a duplicate.
  • Unmatched SKUs are surfaced, not alerted. A delivery containing an unknown SKU is flagged on the webhook log and counted in the Purchases page's unmatched-SKU chip; an alert email is only sent when an entire order fails to fulfil.

Webhook Examples: See platform-specific webhook implementations in our Shopify and Stripe integration guides.