Milo Webhooks

Send signed webhooks on subscription events. Connect Zapier, Make, n8n, your CRM, or anything with a URL.

Installation

  1. Install and activate the free Milo Subscriptions plugin.
  2. Upload and activate Milo Webhooks (Plugins → Add New → Upload).
  3. Enter your license key under Subscriptions → Licenses to enable updates.

Configuration

POST a signed JSON payload to your endpoint on subscription events. Verify deliveries with the X-Milo-Signature header (HMAC SHA-256 of the body using your secret).

Under Subscriptions → Settings → General → Webhooks:

Setting Description
Send webhooks On/off switch.
Endpoint URL Deliveries are retried with backoff for a day on failure.
Signing secret Leave empty to disable signing.
subscription.created On/off switch.
subscription.status_changed On/off switch.
subscription.renewed On/off switch.
subscription.payment_failed On/off switch.

Receiving events

Payloads are JSON with the full subscription snapshot, POSTed with X-Milo-Event, X-Milo-Delivery (idempotency key), and X-Milo-Attempt headers. Set a secret and every request carries X-Milo-Signature: sha256=... (HMAC of the raw body) so you can authenticate deliveries.

Events

subscription.created, subscription.renewed, subscription.status_changed, and payment.failed, each with its own toggle. In standalone mode the same events fire for Stripe-driven subscriptions with a mode: "standalone" payload.

The delivery log

Subscriptions → Webhooks lists the last 100 deliveries: event, endpoint, HTTP status, attempt number, and result, filterable by outcome. Failed deliveries retry automatically with backoff.

Developer reference

  • milo_webhooks_sslverify — Filter to disable TLS verification for local development endpoints.

Billing modes

Works in both WooCommerce mode and standalone (Stripe-driven) mode.

Did this page miss something?

Tell us and we rewrite it, usually the same day.

Send a note