Set up webhooks and monitoring for your Prequel Import data pipelines
Prequel Import emits webhooks for a number of event types. You can subscribe to specific event types and configure delivery through HTTPS, Slack, PagerDuty, or Datadog using the /webhooks endpoints.
Prequel Import supports HTTPS callbacks to your webhook receiver. When creating a webhook with vendor: generic_post, payloads arrive as JSON. The vendor: generic_get type delivers payloads as URL parameters. Both require a url and accept an optional api_key for authenticated receivers.
You can route events to PagerDuty (vendor: pagerduty), Slack (vendor: slack), and Datadog (vendor: datadog) with vendor-specific payload formatting. Slack expects a https://hooks.slack.com/services/... URL. PagerDuty and Datadog authenticate with their respective integration keys passed as api_key.
Webhooks can include an API key for destinations requiring authentication. Prequel signs every payload and includes the signature in the X-Prequel-Webhook-Signature header for verification purposes.
1. Retrieve Public KeyAccess your webhook public key via the /public/signatures/webhook-public-key API endpoint. Fetch this value rather than hardcoding it, since the key may be rotated.2. Reconstruct Signing DataExtract the timestamp from the X-Prequel-Webhook-Timestamp header (RFC 3339 format). Combine timestamp, a period (.), and the raw JSON body. Hash this concatenated string using SHA-256.
Use the raw request body before JSON deserialization, as parsing may introduce subtle changes.
Validate Body HashThe X-Prequel-Webhook-Digest header contains the SHA-256 hash of the raw body only. Compare this against your computed hash to verify correct body handling. Do not use this for signature confirmation.3. Confirm SignatureVerify the signing data hash against the signature in X-Prequel-Webhook-Signature using your public key with PKCS1 v1.5 scheme. Hex-decode Prequel’s signature before comparison.4. Check TimestampImplement a time window (e.g., 5 minutes) to reject outdated events and prevent replay attacks.
When data is delivered to an object storage datalake (S3, GCS, ABS, S3-compatible), Prequel writes a signed manifest alongside the data so consumers can verify the manifest came from Prequel. Fetch the verification key with GET /public/signatures/object-storage-manifest-public-key and treat it the same way as the webhook public key. Fetch the value dynamically rather than hardcoding it, since the key may rotate.