Connect Porter to Zapier, Make, and any other automation platform using webhooks.
Porter sends an HTTP POST request to your configured URL whenever a watched event occurs. Each request includes:
X-Porter-Signature header for verifying the payload is genuine (HMAC-SHA256)X-Porter-Event header with the event nameConfigure webhooks in your dashboard under Settings → Webhooks.
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);
});Create a new Zap in Zapier
Click “Create Zap” from your Zapier dashboard.
Choose “Webhooks by Zapier” as your trigger
Search for “Webhooks” and select Webhooks by Zapier. Choose Catch Hook as the trigger event.
Copy your Zapier webhook URL
Zapier will give you a unique URL like https://hooks.zapier.com/hooks/catch/...
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).
Test the trigger
Check in a test visitor in Porter. Return to Zapier and click Test trigger — you should see the visitor data appear.
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
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.