Milo Webhooks
Send signed webhooks on subscription events. Connect Zapier, Make, n8n, your CRM, or anything with a URL.
Installation
- Install and activate the free Milo Subscriptions plugin.
- Upload and activate Milo Webhooks (Plugins → Add New → Upload).
- 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.