Docs/Webhooks & Integrations

Webhooks & Integrations

Connect Porter to Zapier, Make, and any other automation platform using webhooks.

How Webhooks Work

Porter sends an HTTP POST request to your configured URL whenever a watched event occurs. Each request includes:

  • A JSON payload describing the event
  • An X-Porter-Signature header for verifying the payload is genuine (HMAC-SHA256)
  • A X-Porter-Event header with the event name

Configure webhooks in your dashboard under Settings → Webhooks.

POST https://your-endpoint.com/porter-hook
Content-Type: application/json
X-Porter-Event: visitor.checked_in
X-Porter-Signature: sha256=abcdef1234...
Available Events
Verifying Signatures

Each webhook includes an X-Porter-Signature header. Verify it using your webhook secret (found in Settings → Webhooks):

// Node.js example
const crypto = require('crypto');

function verifySignature(payload, signature, secret) {
  const expected = 'sha256=' + crypto
    .createHmac('sha256', secret)
    .update(payload)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(signature)
  );
}

// In your Express handler:
app.post('/porter-hook', (req, res) => {
  const sig = req.headers['x-porter-signature'];
  const raw = JSON.stringify(req.body);
  if (!verifySignature(raw, sig, process.env.PORTER_WEBHOOK_SECRET)) {
    return res.status(401).send('Invalid signature');
  }
  // Process event...
  res.sendStatus(200);
});
Setting Up with Zapier
1

Create a new Zap in Zapier

Click “Create Zap” from your Zapier dashboard.

2

Choose “Webhooks by Zapier” as your trigger

Search for “Webhooks” and select Webhooks by Zapier. Choose Catch Hook as the trigger event.

3

Copy your Zapier webhook URL

Zapier will give you a unique URL like https://hooks.zapier.com/hooks/catch/...

4

Add the webhook in Porter

Go to Settings → Webhooks in Porter, paste the Zapier URL, and select which events you want to send (e.g. visitor.checked_in).

5

Test the trigger

Check in a test visitor in Porter. Return to Zapier and click Test trigger — you should see the visitor data appear.

6

Add your action

Choose what happens next — e.g. Google Sheets → Create Spreadsheet Row to automatically log every check-in.

Example: Log check-ins to Google Sheets

Trigger: Porter → visitor.checked_in (via Webhooks by Zapier)
Action: Google Sheets → Create Spreadsheet Row
Mapping: data.firstName → Column A, data.lastName → Column B, data.company → Column C, data.checkInAt → Column D, data.hostName → Column E

Retry Policy

If your endpoint returns a non-2xx response or times out, Porter will retry the delivery up to 3 times with exponential back-off (1 min, 5 min, 30 min).

Delivery logs (including response codes and bodies) are available in Settings → Webhooks → Delivery Log.

Your endpoint should respond within 10 seconds. For long-running operations, acknowledge the webhook immediately and process asynchronously.