How Triggers Work
The Falconyte Trigger node handles the entire webhook lifecycle:- Activation: When you activate the workflow, the trigger automatically creates (or updates) a webhook subscription in Falconyte
- Delivery: Falconyte sends events to n8n as they occur
- Verification: The trigger validates HMAC signatures to ensure authenticity
- Deactivation: When you deactivate the workflow, the webhook remains but can be managed through the action node
Webhooks created by the trigger include
"source": "n8n", which locks them from manual editing in the Falconyte dashboard to prevent accidental changes.Setting Up a Trigger
Basic Configuration
- Add a Falconyte Trigger node to your workflow
- Select your Falconyte API credentials
- Choose the events you want to receive
- Save and activate the workflow
Event Selection
Select one or more events to subscribe to: Email Delivery Events:email.sent- Email successfully sent from your accountemail.delivered- Email delivered to recipient’s mail serveremail.deferred- Delivery temporarily deferred by recipient serveremail.bounced.soft- Temporary bounce (mailbox full, server unavailable)email.bounced.hard- Permanent bounce (invalid address, domain doesn’t exist)
email.opened- Recipient opened the email (human, bot-filtered)email.clicked- Recipient clicked a link (human, bot-filtered)email.replied- Recipient replied to the email
email.bot.opened- Bot or automated system opened the emailemail.bot.clicked- Bot or automated system clicked a link
email.contact.saved- Contact created or updatedemail.contact.unsubscribed- Contact opted outemail.lead.created- Lead conversion trackedemail.sale.created- Sale conversion tracked
Webhook Payload Structure
All webhook deliveries follow this standard format:id- Unique delivery ID (UUID)event- Event nameteam_id- Your team’s UUIDtimestamp- When the event occurred (ISO 8601)payload- Event-specific data
Event-Specific Payloads
email.sent
email.opened
email.clicked
email.bounced.hard
email.bot.opened
email.contact.saved
email.lead.created
email.sale.created
Security & Verification
HMAC Signature Verification
Every webhook delivery includes anX-FY-Signature header:
403 Forbidden and don’t trigger your workflow.
Signature Format:
t- Unix timestamp (seconds since epoch)v1- HMAC-SHA256 hash of${timestamp}.${body}using the webhook secret
Manual Verification (If Needed)
If you’re building custom webhook receivers outside n8n: Node.js:Additional Security Headers
Each webhook delivery also includes:X-FY-Origin: webhook- Identifies the request sourceUser-Agent: Falconyte/1.0- Falconyte’s user agentContent-Type: application/json- Always JSON payloads
Webhook Management
Automatic Lifecycle
The trigger manages webhooks automatically: On Activation:- Checks if a webhook already exists for this workflow
- Creates a new webhook or updates the existing one
- Stores the webhook secret securely
- Begins receiving events
- Updates the event subscription list
- Preserves the existing webhook and secret
- No downtime in event delivery
- The webhook remains in Falconyte (you can reactivate later)
- No events are delivered to the workflow
Integration-Managed Webhooks
Webhooks created by the trigger include:- They appear with a managed badge in the Falconyte dashboard
- They’re read-only in the dashboard (can’t be edited manually)
- Prevents accidental changes that would break your workflows
- Can only be modified by reactivating the trigger with new settings
Manual Management
You can still manage these webhooks programmatically using the action node:- List webhooks - View all active webhooks
- Enable/Disable - Control delivery without deleting
- View deliveries - Check delivery history and failures
- Delete - Remove the webhook entirely
Retry & Delivery
Retry Schedule
If your workflow is unavailable or returns a non-2xx status, Falconyte retries with exponential backoff:| Attempt | Delay |
|---|---|
| 1 | Immediate |
| 2 | 30 seconds |
| 3 | 2 minutes |
| 4 | 10 minutes |
| 5 | 30 minutes |
| 6 | 2 hours |
| 7 | 6 hours |
Delivery Logs
All delivery attempts are logged and accessible via:- Falconyte Dashboard: Developer Tools → Webhooks → Deliveries
- Action Node: Use “List Deliveries” operation
- API:
GET /public/v1/webhooks/{id}/deliveries
- Event name and payload
- HTTP response code
- Response body
- Number of attempts
- Timestamps
Best Practices
1. Handle Duplicate Deliveries
Webhooks may be retried, so make your workflow idempotent:2. Respond Quickly
Your workflow should return a 2xx status within 5 seconds:- Save the payload to a database immediately
- Process heavy operations asynchronously
- Use Respond to Webhook node early in the workflow
3. Store Event IDs
Track processed events by theirid field:
4. Filter Events in the Workflow
Not all events may need the same processing. Use Switch or IF nodes:5. Monitor Delivery Failures
Set up a scheduled workflow to check for failed deliveries:- Cron Trigger: Every hour
- Falconyte Action: List Deliveries (filter for
status: failed) - IF Node: Check if count > threshold
- Send Alert: Notify your team
6. Use Contact IDs
Most events include bothemail and contact_id. Prefer contact_id for lookups:
7. Handle Bot Events Separately
Bot events include analysis data. Process them differently:Rate Limits
Webhook deliveries are not rate-limited by Falconyte, but your n8n instance may have limits:- n8n Cloud: Check your plan’s webhook execution limits
- Self-hosted: Limited by your server capacity
Troubleshooting
Trigger Not Receiving Events
Checklist:- Is the workflow activated? (Green indicator in n8n)
- Are events being generated in Falconyte? (Check dashboard activity)
- Is the webhook enabled? (Use action node to check)
- Check delivery logs for errors (use “List Deliveries” operation)
Signature Verification Failures
Error:403 Forbidden with “Invalid signature”
Causes:
- Webhook secret changed (reactivate the trigger)
- Request not from Falconyte (security threat)
- Request was modified in transit (MITM attack)
- Deactivate and reactivate the workflow to refresh the secret
- Ensure your n8n instance URL is correct and accessible
Duplicate Events
Issue: Receiving the same event multiple times Reasons:- Your workflow returned a non-2xx status (triggering retries)
- Workflow took > 30 seconds (timeout, then retry)
- Network issues (Falconyte didn’t receive your 2xx response)
- Implement idempotency checks (see Best Practices #1)
- Use Respond to Webhook node early
- Process heavy operations asynchronously
Missing Events
Issue: Expected events not arriving Checklist:- Is the event type in your subscription list?
- Is the webhook enabled?
- Check delivery logs for 2xx responses
- Verify the webhook URL matches your n8n webhook URL
Advanced Usage
Conditional Processing
Process events based on contact attributes:Multi-Tenant Workflows
If you manage multiple Falconyte teams:- Create separate credentials for each team
- Create separate trigger workflows for each team
- Use team_id in the payload to route data correctly
Combining Triggers and Actions
Create sophisticated automations:Next Steps
- View workflow examples for complete automation patterns
- Explore action operations to respond to webhook events
- Read webhook API docs for advanced webhook management