Skip to content

BlueBubbles webhook route returns 405 Method Not Allowed on POST #32030

@k1ev

Description

@k1ev

Description

POST requests to the BlueBubbles webhook endpoint (/bluebubbles-webhook) return 405 Method Not Allowed. The route does not appear to be registered for POST, despite the config being correct and the provider starting up successfully.

GET to the same path returns the dashboard HTML, suggesting the webhook handler is not intercepting the route at all.

Environment

  • OpenClaw version: 2026.3.1 (also tested on 2026.2.26)
  • BlueBubbles version: 1.9.9
  • OS: macOS 26.3.0 (Apple Silicon arm64)
  • Node: v22.22.0

Config

{
  channels: {
    bluebubbles: {
      enabled: true,
      serverUrl: "http://localhost:1234",
      password: "<redacted>",
      webhookPath: "/bluebubbles-webhook",
      dmPolicy: "allowlist",
      allowFrom: ["user@example.com"]
    }
  }
}

Steps to Reproduce

  1. Configure BlueBubbles channel as above
  2. Start the gateway — logs show:
    [bluebubbles] [default] starting provider (webhook=/bluebubbles-webhook)
    [bluebubbles] [default] BlueBubbles server macOS 26.3.0
    [bluebubbles] [default] BlueBubbles webhook listening on /bluebubbles-webhook
    
  3. BlueBubbles webhook is configured to POST to http://localhost:18789/bluebubbles-webhook?password=<pw>
  4. When a new iMessage arrives, BlueBubbles sends a POST to the webhook URL

Expected Behavior

The gateway should accept the POST and process the incoming message.

Actual Behavior

$ curl -X POST http://localhost:18789/bluebubbles-webhook?password=test -H "Content-Type: application/json" -d '{"type":"new-message"}'
Method Not Allowed   # HTTP 405

$ curl -X GET http://localhost:18789/bluebubbles-webhook
<!doctype html>...   # Returns dashboard HTML (HTTP 200)

The POST handler is not registered. GET falls through to the dashboard catch-all.

Additional Context

  • The health monitor repeatedly marks the BlueBubbles provider as "stuck" and restarts it every 30 minutes:
    [health-monitor] [bluebubbles:default] health-monitor: restarting (reason: stuck)
    
  • Sending messages via the REST API (outbound) works fine
  • The openclaw status --deep shows BlueBubbles as ON | OK | configured
  • Tested with both localhost and 127.0.0.1 — same result
  • Upgraded from 2026.2.26 to 2026.3.1 — same behavior on both versions

Workaround

Using a custom polling script that queries the BlueBubbles API every 30s and forwards messages to OpenClaw.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions