Zapier / Make / CRM Integration
Connect Webnav.ai to Zapier, Make, or your own CRM in two directions:
- Pull data with the open REST API (Bearer API key) — leads, tickets, conversations.
- Receive events in real time with outbound Webhooks (HMAC-signed).
1. Create an API key
Dashboard → Developers → API Keys → Create. Copy the key (wn_live_…) — it is shown only once.
2. Pull data (REST API)
Authenticate with Authorization: Bearer wn_live_…. All endpoints return data scoped to the domains you own.
curl -H "Authorization: Bearer wn_live_xxx" \
"https://www.webnav.ai/api/v1/leads?limit=50&since=2026-01-01T00:00:00Z"| Endpoint | Returns |
|---|---|
GET /api/v1/leads | Captured leads (?limit, ?since) |
GET /api/v1/tickets | Support tickets (?status) |
GET /api/v1/conversations | Question logs |
In Zapier, use the "Webhooks by Zapier → GET" or a custom app polling /api/v1/leads with the Bearer header. In Make, use an HTTP module with the same header. Map the returned JSON data[] into your CRM (HubSpot, Salesforce, Notion, Google Sheets, …).
3. Receive events (Webhooks)
Dashboard → Developers → Webhooks → add your endpoint URL (e.g. a Zapier "Catch Hook" URL), pick a domain and events (lead.captured, ticket.created). Copy the signing secret (shown once).
When an event fires, Webnav.ai POSTs JSON to your URL:
{ "event": "lead.captured", "domain": "shop.example.com",
"data": { "lead_id": "…", "email": "a@b.com", "name": "Jane" }, "ts": 1749800000 }Headers: X-Webnav-Event, X-Webnav-Timestamp, X-Webnav-Nonce, X-Webnav-Signature.
Verify the signature (recommended for your own server; Zapier/Make catch hooks can skip it):
signature = base64( HMAC_SHA256(secret, `${timestamp}\n${nonce}\n${base64(sha256(rawBody))}`) )import crypto from 'crypto';
function verify(req, rawBody, secret) {
const ts = req.headers['x-webnav-timestamp'];
const nonce = req.headers['x-webnav-nonce'];
const bodyHash = crypto.createHash('sha256').update(rawBody).digest('base64');
const expected = crypto.createHmac('sha256', secret)
.update(`${ts}\n${nonce}\n${bodyHash}`).digest('base64');
return expected === req.headers['x-webnav-signature'];
}Use the Test button next to a webhook in the dashboard to send a ping event and confirm your endpoint receives it.
Events
| Event | Fires when |
|---|---|
lead.captured | A visitor leaves contact info (form or auto-detected email) |
ticket.created | A support ticket is submitted |
Subscribe to all with *.