WPSignal
Free during beta

Realtime WordPress events.
Zero polling.

Push WordPress events — post updates, comment counts, order status changes — to browsers instantly via WebSocket. One PHP call. No infrastructure to manage.

How it works

Three steps from installation to live events in the browser.

1

Install the plugin

Upload the WPSignal WordPress plugin. Click "Connect to WPSignal" in the settings page — your site registers automatically and credentials are saved.

2

Events fire automatically

The plugin publishes post.updated events on every save. Register custom triggers with one line of PHP for any WordPress action.

3

Browser receives events

Logged-in users get a WebSocket connection (SSE fallback). Every event fires a native CustomEvent on document — no framework required.

Built for WordPress developers

WebSocket-first

Persistent WebSocket connections with Server-Sent Events as automatic fallback. Keepalive pings every 20 seconds.

🔐

HMAC-signed publishes

Every event is signed with SHA-256 HMAC. Timestamp replay protection and per-site rate limiting built in.

🪝

Fluent trigger API

Attach events to any WordPress action hook with a builder — channel, payload, condition — all in one call.

🌐

Cross-origin ready

CORS-enabled for SSE connections. Works from any domain without proxy configuration.

🗄️

Multi-site support

Each WordPress site gets its own site_key and publish secret. Tenant isolation is enforced at the channel level.

🛠️

Kitchen Sink demo

Built-in admin page showing connection status, live event log, publish form, and token inspector for instant debugging.

One line of PHP.
Live in the browser.

Register custom triggers on any WordPress action hook using the fluent builder API. Add a condition, custom channel, or transform the payload — all optional.

The browser client auto-connects and dispatches native CustomEvents — listen with plain JavaScript or integrate with any frontend framework.

See the full guide →
functions.php

add_action('wpsignal_loaded', function () {
    // Publish when a WooCommerce order status changes
    WPSignal::trigger('order.status_changed')
        ->on('woocommerce_order_status_changed', 10, 3)
        ->channel('events')
        ->data(function ($order_id, $old_status, $new_status) {
            return [
                'order_id'   => $order_id,
                'old_status' => $old_status,
                'new_status' => $new_status,
            ];
        })
        ->register();
});
your-theme.js

document.addEventListener('wpsignal:order.status_changed', (e) => {
    const { order_id, new_status } = e.detail.data;
    updateOrderUI(order_id, new_status);
});

Ready to go realtime?

Free during beta. No credit card required. Sign up, connect your site, and push your first event in minutes.