You can add custom event types to DMSI Webhooks using the dmsi_register_webhook_event WordPress filter. Custom events appear in the admin Events list, are available for endpoint subscriptions, and can be triggered manually using dmsi_trigger_webhook().
Registration #
Add a filter in your plugin or theme’s functions.php:
add_filter('dmsi_register_webhook_event', function(array $events): array {
$events[] = [
'name' => 'order.shipped',
'category' => 'custom',
'description' => 'Fires when an order has been shipped',
'sample_payload' => [
'order_id' => 1001,
'tracking_number' => 'ABC123456',
'carrier' => 'FedEx',
'shipped_at' => '2026-03-23T12:00:00Z',
],
];
return $events;
});
Event Definition Fields #
| Field | Required | Description |
|---|---|---|
name | Yes | Unique event identifier (dot-notation recommended, e.g., resource.action) |
category | Yes | Category name for grouping in admin UI |
description | Yes | Human-readable description shown in Events page |
sample_payload | No | Array used to generate sample payload preview in admin |
Triggering a Custom Event #
Once registered, trigger deliveries from anywhere in PHP:
// Trigger to all subscribed endpoints
$count = dmsi_trigger_webhook('order.shipped', [
'order_id' => 1001,
'tracking_number' => 'ABC123456',
'carrier' => 'FedEx',
'shipped_at' => date('c'),
], [
'source' => 'woocommerce', // optional context, not included in payload
]);
// $count is the number of endpoint deliveries scheduled
Naming Convention #
Use dot-notation with resource.action format:
order.shipped,order.refundeduser.deactivated,user.suspendedintegration.synced
Avoid using names already registered by DDLS core: license., subscription., payment.*.
Cache Invalidation #
The event registry is cached in a transient for 24 hours. After adding a custom event filter, the cache may need to be invalidated:
// Programmatic invalidation
DMSI\Webhooks\Core\EventRegistry::get_instance()->invalidate_cache();
Or click Refresh Events in the admin Events page.
Related Topics #
- Event Types Overview
- Trigger Webhook Manually (Developer Reference)
- Payload Customization
