Developer Docs
51 reference pages — filters, action hooks, and features.
/ Features
Async Delivery Queue
Webhook events are written to a persistent queue and delivered outside the request cycle.
Smart Retry with Exponential Backoff
Failed deliveries retry automatically with exponential backoff; 4xx failures are classified as permanent.
Event Identity & Deduplication Headers
Every dispatched event gets a UUID and ISO 8601 timestamp embedded in the payload and request headers.
Delivery Logs
Every delivery attempt is stored with HTTP status, response body, headers sent, and full attempt history.
Payload Mapping
Rename, restructure, or exclude fields in the outgoing JSON before dispatch using dot-notation paths.
Conditional Dispatch
Events are only delivered when payload field values match configured rules; non-matching events are logged as skipped.
Configurable HTTP Methods
Each webhook can send requests as GET, POST, PUT, PATCH, or DELETE.
Custom Request Headers
Add static or payload-resolved key/value headers sent with every delivery.
URL Query Parameters
Append static or payload-resolved query parameters to the endpoint URL at dispatch time.
Test Delivery
Fire a test webhook instantly or via the queue without triggering real WordPress events.
Webhook Replay
Re-send any logged event — successful, failed, or condition-skipped — using its original payload.
REST API
Full operational REST API at `/wp-json/fswa/v1/` for managing webhooks, logs, queue, and tokens.
API Tokens
Scoped API tokens for REST API access — create tokens with read, operational, or full scope.
Synchronous Execution
Optionally fire a webhook inline during the WordPress request, bypassing the queue for the first attempt.
Webhook Chains
A webhook completing with a 2xx response can automatically trigger one or more downstream webhooks.
Contact Form 7 Integration
Built-in normalization of CF7 submission objects into clean JSON payloads.
IvyForms Integration
Built-in normalization of IvyForms field objects and enrichment of submission payloads.
Action Scheduler Support
Automatically uses Action Scheduler (when available) instead of WP-Cron for queue processing.
Dynamic URLs via Filter
Rewrite the webhook endpoint URL per-event from PHP using the `fswa_webhook_url` filter.
Developer Extensibility
16 filters and 6 action hooks let you customize every aspect of dispatch, payload, headers, and retry behavior.
Code Glue
Attach short PHP snippets per webhook+trigger to enrich payloads before dispatch.
Post-Dispatch Scripting
Run PHP code after a successful delivery to process the response and write data back to WordPress.
Dynamic URL Templates
Use `{{ field.path }}` placeholders in endpoint URLs — resolved per-event against the live payload.
Per-Webhook Retry Settings
Override the global maximum retry attempt count for individual webhooks.
Per-Webhook Backoff Strategy
Choose exponential, linear, or fixed backoff strategy and delay parameters per webhook.
Unlimited Conditions
Define unlimited condition rules and groups with AND/OR logic between groups.
External Cron
Replace visitor-triggered WP-Cron with a real system cron for predictable, near-real-time queue processing.
Activity History
Persistent audit log of every admin and API-token action with actor identity, structured diffs, and AI prompt capture.
/ Filters
fswa_should_dispatch
Controls whether a webhook should be dispatched for the current trigger event.
fswa_payload
Filters the base webhook payload after it is built from the WordPress hook arguments, before it is queued.
fswa_webhook_payload
Filters the per-webhook outgoing payload after field mapping, immediately before HTTP dispatch.
fswa_webhook_url
Rewrites the webhook endpoint URL per-event before dispatch.
fswa_headers
Filters the HTTP headers sent with each webhook request.
fswa_backoff_delay
Controls the retry delay in seconds between failed delivery attempts.
fswa_max_attempts
Sets the maximum number of delivery attempts before a webhook is marked permanently failed.
fswa_http_timeout
Sets the total HTTP request timeout in seconds.
fswa_http_connect_timeout
Sets the TCP connection timeout in seconds (separate from the read timeout).
fswa_http_args
Filters the full `wp_remote_request()` arguments array before the HTTP call.
fswa_require_https
Controls whether webhook endpoint URLs must use HTTPS.
fswa_capture_payload
Filters the payload stored as the example capture — does not affect what is dispatched.
fswa_normalize_object
Converts custom PHP objects in hook arguments into plain arrays for JSON serialization.
fswa_queue_batch_size
Sets the number of queue jobs processed per batch run.
fswa_available_triggers
Filters the grouped list of available triggers returned by the triggers REST endpoint.
fswa_webhook_data
Filters webhook data before it is returned in REST API responses.
/ Actions
fswa_success
Fires after a webhook is delivered successfully (2xx response received).
fswa_error
Fires after a webhook delivery fails — covers both HTTP error responses and transport errors.
fswa_skipped
Fires when a webhook is skipped because its conditions did not pass.
fswa_webhook_response
Fires after every HTTP response is received — success or error — with full response context.
fswa_glue_post_dispatch
Fires after a successful (2xx) delivery with the full response and both pre/post-mapping payloads.
fswa_webhook_saved
Fires after a webhook is created or updated via the REST API.
fswa_cron_token_regenerated
Fires immediately after the external cron secret is regenerated.