Step 1: Get a public URL
Option A — Local machine (via ngrok)
If your agent is running on your local machine, use ngrok to create a public tunnel.- Create an account at ngrok.com.
-
After logging in, follow the installation instructions for your operating system. On macOS you can install via Homebrew:
-
Grab your authtoken from the ngrok dashboard and authenticate:
-
Start a tunnel pointed at the port your agent is listening on:
ngrok will output a forwarding URL:Copy this URL — you’ll need it in Step 3.
Option B — VPS (no ngrok needed)
If your agent is hosted on a VPS, it’s already on the public internet — no tunnel required. Recommended: Set up HTTPS using a reverse proxy such as nginx or Caddy with a free Let’s Encrypt certificate. This gives you a clean, secure URL:Step 2: Configure your agent
Set up your agent to accept incomingPOST requests at your chosen path. Poku sends a JSON body for each event. All events share the same wrapper:
message.received
Fired when an inbound SMS, WhatsApp, or Slack message is received on your number or workspace.
form.received
Fired when a recipient submits a form sent via SMS or WhatsApp.
call.conversation.ended
Fired when an outbound call completes.
Using OpenClaw? See the OpenClaw installation guide for the
openclaw.json webhook config.
Step 3: Register your webhook with Poku
Register your public URL from Step 1 with Poku so events get forwarded to your agent. Specify which event types you want to receive:headers field: