Skip to main content

Available Events

Subscribe to any combination of these event types when creating or updating a webhook.

Email Events

email.sent
event
Fired when an email is successfully sent from a campaign sequence.
{
  "event": "email.sent",
  "timestamp": "2025-01-15T10:30:00Z",
  "data": {
    "emailLogId": "cel_123",
    "campaignId": "cmp_456",
    "leadId": "cld_789",
    "toEmail": "[email protected]",
    "fromEmail": "[email protected]",
    "subject": "Quick question",
    "sequenceStep": 1
  }
}
email.failed
event
Fired when an email fails to send (SMTP error, authentication issue, etc.).
{
  "event": "email.failed",
  "timestamp": "2025-01-15T10:30:00Z",
  "data": {
    "emailLogId": "cel_123",
    "campaignId": "cmp_456",
    "leadId": "cld_789",
    "toEmail": "[email protected]",
    "error": "SMTP connection timeout"
  }
}
email.bounced
event
Fired when a sent email bounces back.
{
  "event": "email.bounced",
  "timestamp": "2025-01-15T10:30:00Z",
  "data": {
    "emailLogId": "cel_123",
    "campaignId": "cmp_456",
    "leadId": "cld_789",
    "toEmail": "[email protected]",
    "bounceType": "hard"
  }
}
email.opened
event
Fired when a recipient opens a tracked email.
{
  "event": "email.opened",
  "timestamp": "2025-01-15T14:22:00Z",
  "data": {
    "emailLogId": "cel_123",
    "campaignId": "cmp_456",
    "leadId": "cld_789",
    "toEmail": "[email protected]"
  }
}

Reply Events

reply.received
event
Fired when a reply is received and matched to a lead/campaign.
{
  "event": "reply.received",
  "timestamp": "2025-01-15T15:00:00Z",
  "data": {
    "replyId": "crp_123",
    "campaignId": "cmp_456",
    "leadId": "cld_789",
    "fromEmail": "[email protected]",
    "subject": "Re: Quick question",
    "bodyPreview": "Thanks for reaching out..."
  }
}
reply.categorized
event
Fired when a reply is categorized (by AI or manually).
{
  "event": "reply.categorized",
  "timestamp": "2025-01-15T15:01:00Z",
  "data": {
    "replyId": "crp_123",
    "category": "interested",
    "previousCategory": "uncategorized"
  }
}

Campaign Events

campaign.started
event
Fired when a campaign transitions to active status.
{
  "event": "campaign.started",
  "timestamp": "2025-01-15T09:00:00Z",
  "data": {
    "campaignId": "cmp_456",
    "name": "Q1 Outreach",
    "totalLeads": 500
  }
}
campaign.paused
event
Fired when a campaign is paused.
{
  "event": "campaign.paused",
  "timestamp": "2025-01-15T16:00:00Z",
  "data": {
    "campaignId": "cmp_456",
    "name": "Q1 Outreach"
  }
}
campaign.completed
event
Fired when all leads in a campaign have been processed.
{
  "event": "campaign.completed",
  "timestamp": "2025-02-01T12:00:00Z",
  "data": {
    "campaignId": "cmp_456",
    "name": "Q1 Outreach",
    "totalSent": 1500,
    "totalReplied": 45,
    "totalBounced": 12
  }
}

Lead Events

lead.created
event
Fired when a new lead is created (via API, CSV import, or manually).
{
  "event": "lead.created",
  "timestamp": "2025-01-15T10:00:00Z",
  "data": {
    "leadId": "cld_789",
    "email": "[email protected]",
    "firstName": "John",
    "lastName": "Doe",
    "source": "api"
  }
}
lead.updated
event
Fired when a lead’s information is updated.
{
  "event": "lead.updated",
  "timestamp": "2025-01-15T10:05:00Z",
  "data": {
    "leadId": "cld_789",
    "updatedFields": ["company", "title"]
  }
}

Listing Available Events

You can also retrieve the list of supported event types programmatically:
curl https://api.foxreach.io/api/v1/webhooks/events \
  -H "X-API-Key: otr_your_key"