Skip to main content

Webhook Events

This page documents all webhook event types available in CronDB, their trigger conditions, and payload schemas.

Webhooks

Event Naming Convention

Events follow the pattern resource.action:

alert.domain_matched
watchlist.domain_changed
sequence.email_replied

Alert Events

alert.domain_matched

Triggered when a new domain matches an intent alert rule.

{
"event": "alert.domain_matched",
"timestamp": "2026-03-18T14:30:00Z",
"data": {
"alert_id": "alt_abc123",
"alert_name": "US SaaS Leads",
"domain": "newstartup.com",
"industry": "Technology",
"business_type": "B2B SaaS",
"country": "US",
"confidence": 0.91,
"website_summary": "Cloud-based analytics platform for SaaS companies.",
"tech_stack": {
"cms": "Next.js",
"analytics": ["Google Analytics", "Mixpanel"],
"chat": "Intercom"
},
"contact": {
"emails": ["hello@newstartup.com"],
"phone": null
}
}
}

alert.rule_created

Triggered when a new alert rule is created.

{
"event": "alert.rule_created",
"timestamp": "2026-03-18T10:00:00Z",
"data": {
"alert_id": "alt_abc123",
"alert_name": "US SaaS Leads",
"created_by": "user@example.com"
}
}

alert.rule_deleted

Triggered when an alert rule is deleted.

{
"event": "alert.rule_deleted",
"timestamp": "2026-03-18T10:00:00Z",
"data": {
"alert_id": "alt_abc123",
"alert_name": "US SaaS Leads",
"deleted_by": "user@example.com"
}
}

Watchlist Events

watchlist.domain_changed

Triggered when a watched domain's data changes.

{
"event": "watchlist.domain_changed",
"timestamp": "2026-03-18T14:30:00Z",
"data": {
"domain": "competitor.com",
"changes": [
{
"field": "tech_stack.payment",
"action": "added",
"value": "Stripe",
"previous_value": null,
"detected_at": "2026-03-18T14:30:00Z"
},
{
"field": "contact.email",
"action": "added",
"value": "sales@competitor.com",
"previous_value": null,
"detected_at": "2026-03-18T14:30:00Z"
}
]
}
}

watchlist.domain_added

{
"event": "watchlist.domain_added",
"timestamp": "2026-03-18T10:00:00Z",
"data": {
"domain": "prospect.com",
"added_by": "user@example.com"
}
}

watchlist.domain_removed

{
"event": "watchlist.domain_removed",
"timestamp": "2026-03-18T10:00:00Z",
"data": {
"domain": "prospect.com",
"removed_by": "user@example.com"
}
}

Sequence Events

sequence.email_sent

Triggered when a sequence email is sent.

{
"event": "sequence.email_sent",
"timestamp": "2026-03-18T09:00:00Z",
"data": {
"sequence_id": "seq_abc123",
"sequence_name": "SaaS Outreach",
"domain": "prospect.com",
"step_number": 1,
"subject": "Quick question about prospect.com",
"to_email": "hello@prospect.com"
}
}

sequence.email_opened

{
"event": "sequence.email_opened",
"timestamp": "2026-03-18T10:15:00Z",
"data": {
"sequence_id": "seq_abc123",
"sequence_name": "SaaS Outreach",
"domain": "prospect.com",
"step_number": 1,
"open_count": 2,
"engagement_score": 10
}
}

sequence.email_clicked

{
"event": "sequence.email_clicked",
"timestamp": "2026-03-18T10:20:00Z",
"data": {
"sequence_id": "seq_abc123",
"sequence_name": "SaaS Outreach",
"domain": "prospect.com",
"step_number": 1,
"clicked_url": "https://yoursite.com/pricing",
"engagement_score": 25
}
}

sequence.email_replied

{
"event": "sequence.email_replied",
"timestamp": "2026-03-18T14:30:00Z",
"data": {
"sequence_id": "seq_abc123",
"sequence_name": "SaaS Outreach",
"domain": "prospect.com",
"step_number": 2,
"engagement_score": 65,
"temperature": "hot"
}
}

sequence.email_bounced

{
"event": "sequence.email_bounced",
"timestamp": "2026-03-18T09:01:00Z",
"data": {
"sequence_id": "seq_abc123",
"sequence_name": "SaaS Outreach",
"domain": "prospect.com",
"step_number": 1,
"bounce_type": "hard",
"reason": "User unknown"
}
}

sequence.contact_enrolled

{
"event": "sequence.contact_enrolled",
"timestamp": "2026-03-18T08:00:00Z",
"data": {
"sequence_id": "seq_abc123",
"sequence_name": "SaaS Outreach",
"domain": "newlead.com",
"enrollment_source": "audience_trigger"
}
}

sequence.contact_completed

{
"event": "sequence.contact_completed",
"timestamp": "2026-03-25T09:00:00Z",
"data": {
"sequence_id": "seq_abc123",
"sequence_name": "SaaS Outreach",
"domain": "prospect.com",
"total_steps": 5,
"engagement_score": 30,
"temperature": "warm",
"goal_achieved": false
}
}

sequence.goal_achieved

{
"event": "sequence.goal_achieved",
"timestamp": "2026-03-20T14:30:00Z",
"data": {
"sequence_id": "seq_abc123",
"sequence_name": "SaaS Outreach",
"domain": "prospect.com",
"goal_type": "reply",
"step_number": 2,
"engagement_score": 65
}
}

Enrichment Events

enrichment.completed

Triggered when a bulk enrichment job finishes.

{
"event": "enrichment.completed",
"timestamp": "2026-03-18T15:00:00Z",
"data": {
"job_id": "job_abc123",
"total_domains": 100,
"total_found": 87,
"total_not_found": 13,
"duration_seconds": 45
}
}

enrichment.failed

{
"event": "enrichment.failed",
"timestamp": "2026-03-18T15:00:00Z",
"data": {
"job_id": "job_abc123",
"error": "Internal processing error",
"total_domains": 100,
"processed": 42
}
}

Subscribing to Events

When creating or updating a webhook, specify which events to receive:

curl -X POST \
-H "Authorization: Bearer cdb_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "All Alerts",
"url": "https://yourapp.com/webhooks/crondb",
"events": [
"alert.domain_matched",
"watchlist.domain_changed",
"sequence.email_replied",
"sequence.goal_achieved"
]
}' \
"https://api.crondb.com/v1/webhooks"

Use "events": ["*"] to subscribe to all event types.

Next Steps