API & MCP
Webhooks
NorthQuest posts events to your URL, for Zapier, Make or your own code.
Add a webhook in Settings › Webhooks, or subscribe through the API.
Events
reply.received, lead.interested, campaign.finished, mailbox.disconnected.
Subscribe through the API
webhooks.subscribe(write key):{"url":"https://…","events":["reply.received"],"description":"…"}. Returnsidandsecret. The secret is shown once.webhooks.unsubscribe(write key):{"id":"…"}webhooks.list(read key): your webhooks, without secrets.
Zapier and Make call subscribe when a Zap or scenario turns on, and unsubscribe when it turns off.
What we send
Each event is a JSON POST:
{"id":"<event id>","type":"reply.received","createdAt":"…","workspaceId":"…",
"data":{"conversationId":"…","leadEmail":"…","leadName":"…","subject":"…","messageId":"…","from":"…","text":"…","receivedAt":"…"}}
lead.interesteddata:conversationId,leadEmail,leadName,subject,label.campaign.finisheddata:campaignId,name.mailbox.disconnecteddata:mailboxId,email.
Check the signature
NorthQuest-Signature is t=<unix seconds>,v1=<hex>. The hex is HMAC-SHA256 of <t>.<raw body> with your secret. Reject a t older than 5 minutes.
NorthQuest-Event-Id stays the same on retries. Skip any id you already handled.
Delivery
- Answer with any 2xx within 10 seconds. Redirects are not followed.
- Failures are retried after 1, 5 and 30 minutes, then 2, 6, 12 and 24 hours. After 8 tries the event is dropped.
- A webhook pauses after 3 days without a success, or after 3 dropped events in a row. Resume it in Settings › Webhooks.
- Only public
https://addresses work, on port 443, 8443 or above 1024. - Events arrive within about 2 minutes. Up to 25 webhooks per workspace.