https:// URLs, so to receive them on your laptop you expose a local server through a tunnel. You then trigger real events from your own phone and watch each delivery attempt in the dashboard.
There is no “send test event” button or endpoint. The only events are real ones: a message to or from your line. This guide uses your own phone to create them. To test your signature code without any events, use the test vector.
1. Run a receiver on port 8000
Any server that verifies the signature, logs the body and returns200 will do. The receiver in Receive messages listens on port 8000. Start it with an empty IBUBBL_WEBHOOK_SECRET for now; you’ll get the real secret in step 3.
2. Open a tunnel
Pick one. Each prints a public HTTPS URL that forwards tohttp://localhost:8000.
3. Register the tunnel URL
Create a subscription for the tunnel’s URL plus your route’s path. Leave outevent_types to receive every event while you test.
id and its signing secret (whsec_…), shown only this once. Restart your receiver with IBUBBL_WEBHOOK_SECRET set to that secret. A URL that doesn’t start with https:// returns 422 invalid_url.
You can also add the endpoint in the dashboard under Settings → Webhooks → Add endpoint; it’s the same subscription either way.
4. Trigger events from your phone
- Inbound: text your iBubbl line from your own phone. Your receiver gets
message.inbound. - Outbound: send a message to your own phone with
POST /v1/messages. You getmessage.queued, thenmessage.sent, thenmessage.deliveredandmessage.readif your phone reports them. Reply to it to get anothermessage.inbound. - Reactions and edits: tap back on, or edit, a message in that thread for
message.reaction.addedandmessage.edited.
5. Watch the deliveries
In the dashboard, open Settings → Webhooks. Recent deliveries lists every attempt to reach your endpoints, newest first, across all your subscriptions:
What common codes mean while testing:
A failed delivery is retried for about 37 minutes; see Retries and deduplication. Fix your receiver and the next retry gets through. A delivery that went dead isn’t resent.
6. Clean up
When you’re done, revoke the test subscription. Revoking also stops any retries still pending for it. If you don’t have itsid, GET /v1/webhooks lists your subscriptions.
Next
Retries and deduplication
What happens when your endpoint fails.
Webhook events
Every event type and its payload.

