Overview
Webhooks in Firefly III can notify external services about:- Transaction creation, updates, and deletion
- Budget creation, updates, and deletion
- Budget limit changes
Webhooks are sent as HTTP POST requests with JSON payloads to URLs you configure
Webhook triggers
Firefly III supports the following webhook triggers:Transaction events
STORE_TRANSACTION: New transaction createdUPDATE_TRANSACTION: Transaction updatedDESTROY_TRANSACTION: Transaction deleted
Budget events
STORE_BUDGET: New budget createdUPDATE_BUDGET: Budget updatedDESTROY_BUDGET: Budget deletedSTORE_UPDATE_BUDGET_LIMIT: Budget limit changed
Creating webhooks
Via web interface
Configure webhook
Fill in the webhook details:
- Title: Descriptive name for the webhook
- Trigger: Select which events should trigger this webhook
- URL: The endpoint that will receive the webhook POST requests
- Active: Enable or disable the webhook
- Delivery: Choose delivery method (JSON recommended)
Via API
Webhook payload
When a webhook is triggered, Firefly III sends a POST request with a JSON payload:Payload structure
Unique identifier for this webhook message
ID of the user who triggered the event
The event type that triggered this webhook (e.g., “STORE_TRANSACTION”)
The webhook URL that received this message
Webhook payload version (currently “2.0”)
The actual data object (transaction, budget, etc.) that triggered the webhook
Webhook delivery
Firefly III handles webhook delivery with these features:Delivery options
- JSON
- Response
Recommended: Sends the full object as JSON
- Complete transaction/budget data
- Easy to parse
- Includes all relationships
Retry logic
Firefly III automatically retries failed webhook deliveries:- Immediate attempt: First delivery attempt
- Retry 1: After 1 minute
- Retry 2: After 5 minutes
- Retry 3: After 15 minutes
- Retry 4: After 1 hour
Webhook attempts
Each delivery attempt is logged with:- HTTP status code
- Response body
- Timestamp
- Success/failure status
Security
HTTPS recommended
Webhook verification
To verify webhooks are from your Firefly III instance:- Check source IP: Whitelist your Firefly III server’s IP
- Use unique URLs: Generate random URLs for each webhook
- Verify payload: Check the
uuidanduser_idmatch expectations
Testing webhooks
Before deploying webhooks to production:Test with webhook.site
Generate test URL
Visit webhook.site and copy the unique URL
Manual trigger via API
You can manually trigger a webhook for testing:Managing webhooks
Viewing webhook messages
To see all webhook messages and their delivery status:- Go to Automation > Webhooks
- Click on a webhook to view its details
- Navigate to the Messages tab
- All triggered events
- Delivery status
- Response codes
- Attempt history
Disabling webhooks
To temporarily disable a webhook without deleting it:- Edit the webhook
- Uncheck Active
- Save changes
Disabled webhooks will not send any messages but their configuration is preserved
Deleting webhooks
Use cases
Slack notifications
Slack notifications
Send Slack messages when large transactions are created:
- Create a Slack incoming webhook
- Create a Firefly III webhook with
STORE_TRANSACTIONtrigger - Use a middleware service to format and forward to Slack
Budget alerts
Budget alerts
Get notified when budgets are exceeded:
- Set up webhook for
STORE_UPDATE_BUDGET_LIMIT - Have your service check if spending exceeds limit
- Send alert via email/SMS/push notification
External analytics
External analytics
Send transaction data to analytics platforms:
- Create webhook for all transaction events
- Forward data to your analytics service
- Build custom dashboards and insights
Automated workflows
Automated workflows
Trigger external automations:
- Use webhooks to notify workflow engines (Zapier, n8n, etc.)
- Create complex multi-step automations
- Integrate with other financial services
Troubleshooting
Webhooks not firing
Webhooks not firing
Problem: Webhook events are not being sentSolutions:
- Check webhook is Active
- Verify trigger matches the event type
- Check Firefly III logs for errors
- Ensure URL is accessible from your server
Failed deliveries
Failed deliveries
Problem: Webhooks failing to deliverSolutions:
- Check target URL is correct and accessible
- Verify receiving server is responding with 2xx status codes
- Check for SSL/TLS certificate issues
- Review firewall rules
Missing data in payload
Missing data in payload
Problem: Webhook payload doesn’t include expected dataSolutions:
- Ensure you’re using JSON delivery for full data
- Check API version compatibility
- Verify the object type matches webhook trigger
API reference
For complete webhook API documentation, see:- Webhooks API - Full CRUD operations
- Webhook Messages - View message history
- Manual Triggers - Test webhooks
Related features
Rules
Automate actions within Firefly III
API
Integrate with external services
Recurring transactions
Automate transaction creation
Automation
Overview of all automation features