Custom platform setup

Connect BigCommerce, Wix, Squarespace, a headless shop or another order system through Preset Bridge’s signed JSON contract.

How compatibility works

Use the generic provider when there is no dedicated connector. The platform must send a signed paid-order payload directly, or call an adapter that converts its order webhook into the Preset Bridge format.

To update the originating order after delivery, the platform also needs a callback receiver. That receiver verifies Preset Bridge’s signature and calls the platform’s order or fulfilment API.

This is an integration contract, not a native plugin. Platform-specific authentication, field collection and order updates remain in the adapter.

1. Create a generic integration

  1. Open Integrations → Store integrations and select Add integration.
  2. Choose generic and select the store’s API token.
  3. Keep the username field key as ndsp_username.
  4. Set accepted order statuses to paid, or the exact status your platform uses for a captured payment.
  5. Add one mapping for every store product that delivers a preset or capture.
  6. Create the integration, then copy its webhook URL and signing secret. The full secret is shown once.

2. Send a paid order

Generic order payload
{
  "orderId": "order-1234",
  "status": "paid",
  "customerEmail": "fan@example.com",
  "targetUsername": "cortex_user_42",
  "items": [
    {
      "sku": "STORM-LEAD-V2",
      "productId": "prod_123",
      "variantId": "variant_456",
      "title": "Storm Drive Lead Preset",
      "quantity": 1
    }
  ]
}

Send the exact JSON bytes used to calculate the signature. Supply a unique, stable event ID in X-Event-Id so retries cannot create a second delivery.

Node.js signature
import crypto from 'node:crypto';

const signature = 'sha256=' + crypto
  .createHmac('sha256', presetBridgeSecret)
  .update(rawBody)
  .digest('hex');

await fetch(presetBridgeWebhookUrl, {
  method: 'POST',
  headers: {
    'content-type': 'application/json',
    'x-event-id': platformEventId,
    'x-webhook-signature': signature
  },
  body: rawBody
});

An HTTP 202 response means Preset Bridge accepted the event and queued the delivery. It does not mean the asset has already been shared.

3. Receive delivery results

  1. Create an HTTPS endpoint in the adapter that preserves the raw request body.
  2. In Preset Bridge, create an outbound webhook subscription pointing to that endpoint.
  3. Enable delivery.completed, delivery.action_required, delivery.retry_scheduled, delivery.failed, delivery.ignored, delivery.invalidated and delivery.reopened.
  4. Limit the subscription to the store’s integration ID.
  5. Copy the outbound subscription secret and store it in the adapter.
  6. Verify X-NDSP-Signature before changing an order.
  7. Use the event ID for idempotency and return a 2xx response only after the result is safely recorded.

A completed delivery can then trigger the platform’s fulfilment or completion API. Retry, action-required, invalidated and reopened events should leave the order open and add a useful note for store staff.

See Webhooks for the result payload, retry schedule and signature format.

Adapter checklist

  • Send only paid orders that contain at least one eligible product.
  • Require the Cortex Cloud username before payment.
  • Keep order IDs and event IDs stable across retries.
  • Verify signatures over raw request bytes in both directions.
  • Keep inbound and outbound secrets separate.
  • Store callback event IDs so duplicate callbacks do not repeat an update.
  • Never mark an unpaid, cancelled, failed or refunded order complete.
  • Record enough context for staff to trace a failed delivery in Preset Bridge.

Email contact@presetbridge.com with the platform name and its webhook documentation if you want help planning an adapter.