Skip to main content
A webhook_record destination delivers one HTTP request per record. For the API call to register a destination with Prequel, including a complete example, see Create Destination. For higher-volume workloads, consider the Batch API, which delivers multiple records per request.

Authentication

Prequel signs every delivery request with the X-Prequel-Webhook-Signature header so your endpoint can validate the request originated from Prequel. Fetch the public key for verification from GET /public/signatures/webhook-public-key. See Webhook headers for the full header list and verification steps.

Creating your destination spec

The destination object allows you to customize the contract between data shared by your customers and the shape Prequel provides to your receiving endpoint. Example: Suppose you are importing a users table with string fields id, email, and subscription. Below are four possible shapes for a webhook_record destination. These are not exhaustive and features can be combined to conform to your endpoint’s requirements:
  1. Schema as body: Each request body is the record in the shape declared by record_schema, with no additional shaping.
  2. Custom body: Use a body template to customize each record.
  3. Routed by provider: uri and/or headers vary at delivery time using the ProviderID delivery-level identifier.
  4. Destination per provider: A separate destination is registered for each provider, with a record_schema that includes provider-specific custom fields.
POST destination payload
1

Name your destination

Set name (string, required) to a unique identifier for this destination within your account.
2

Set the destination type

Set type (string, required) to webhook_record for per-record deliveries.
3

Declare your record schema

Set record_schema (object, required) to a JSON Schema (draft-07) document that declares the fields each record contains. Prequel validates records against this schema before delivery.
4

Configure the request template

Set webhook_record.request_template (object, required) with the HTTP method (string, defaults to POST), uri (string, required), and optional headers (object). The uri and headers templates support the .Prequel.* namespace, .Record.* fields, and .IsDeleted. With no body template, Prequel sends each record as a JSON object.
5

Tune optional throughput limits

Optionally set webhook_record.max_records_per_minute (integer, default 3000) and webhook_record.max_concurrency (integer, default 1) to control delivery throughput.

Template variables

The body, uri, and headers templates all have access to every variable below.

Webhook headers

Prequel includes the following headers on every delivery request.

Response codes

Your endpoint should respond with an appropriate HTTP status code. Prequel uses the response to determine whether to retry delivery.