Skip to main content

Endpoint

Your webhook URL is shown in Settings → Integrations → Webhooks → Instantly. It looks like:
POST https://api.yourdomain.com/inbound/instantly/<your-workspace-id>
Copy it directly from the UI — your workspace ID is already embedded.

Auth

Set INSTANTLY_WEBHOOK_SECRET in nous.env. Nous validates the x-nous-signature header on every inbound request.

Setup in Instantly

  1. In Instantly, go to Settings → Integrations → Webhooks.
  2. Click Add Webhook and paste your URL from Nous.
  3. Select the events you want (see table below).

Supported events

Instantly eventActivity loggedCreates contact?
reply_receivedemail_receivedYes
email_repliedemail_receivedYes
email_sentemail_sentNo
email_openedemail_openedNo
email_bouncedemail_bouncedNo
unsubscribedemail_bouncedNo
Replies create a new contact if one doesn’t exist yet — a reply to a cold email is a strong intent signal. All other events are update-only.

Payload

Nous reads these fields from the Instantly payload:
{
  "event_type": "reply_received",
  "lead_email": "prospect@company.com",
  "lead_first_name": "Jane",
  "lead_last_name": "Smith",
  "campaign_id": "camp_123",
  "campaign_name": "Q2 Outreach",
  "preview_text": "Thanks for reaching out...",
  "message_id": "msg_abc123"
}

Deduplication

Events are deduplicated by message_id. If Instantly retries a delivery, the duplicate is silently dropped.