PipelimePipelime Docs
Guides

Webhooks

Receive real-time event notifications via webhooks.

Webhooks

Webhooks let you receive real-time HTTP POST notifications when events occur in your Pipelime account.

Setup

  1. Go to Settings -> Webhooks
  2. Click Create Webhook
  3. Enter your endpoint URL and select events
  4. Save — your webhook secret is shown once

Events

EventDescription
email.sentEmail successfully sent
email.openedOpen tracking pixel triggered
email.clickedTracked link clicked
email.repliedReply detected via inbox sync
email.bouncedHard bounce detected
email.unsubscribedContact clicked unsubscribe
contact.createdNew contact added
contact.updatedContact data changed
contact.blocklistedContact added to blocklist
campaign.startedCampaign activated
campaign.pausedCampaign paused
campaign.completedAll contacts processed
campaign.contact_completedAll steps done for a contact

Payload Format

{
  "event": "email.sent",
  "timestamp": "2026-03-29T14:30:00Z",
  "data": {
    "executionId": "exec_123",
    "campaignId": "camp_456",
    "contactId": "cont_789",
    "stepId": "step_012",
    "emailAccountId": "ea_345"
  }
}

Verifying Signatures

Every delivery includes an HMAC-SHA256 signature in the X-Webhook-Signature header:

import crypto from "crypto";

function verifyWebhookSignature(
  payload: string,
  signature: string,
  secret: string,
): boolean {
  const expected = crypto
    .createHmac("sha256", secret)
    .update(payload)
    .digest("hex");
  return signature === `sha256=${expected}`;
}

// In your webhook handler:
const signature = req.headers["x-webhook-signature"];
const isValid = verifyWebhookSignature(
  JSON.stringify(req.body),
  signature,
  "whsec_your_secret",
);

Retry Policy

Failed deliveries are retried with exponential backoff:

AttemptDelay
1Immediate
21 minute
35 minutes
430 minutes
52 hours

After 5 consecutive failures, the endpoint status changes to failing. After 20, it's automatically disabled.

Secret Rotation

Rotate your webhook secret without downtime:

curl -X POST https://app.Pipelime.io/api/webhooks/{id}/rotate-secret \
  -H "Authorization: Bearer ki_your_key"

Both old and new secrets are valid during a 7-day grace period.

On this page