July 20, 2026 · Updated September 17, 2026 · 6 min read
n8nClaw Messenger
Public npm package · v0.1.0 · Self-hosted n8n

Send iMessage from n8n. Prove the reply separately.

Install the outbound Claw Messenger node, keep a separate reply consumer connected, and finish with one message out plus the matching reply back into your automation.

01Send from n8n

The community node handles the controlled outbound message.

02Keep replies connected

A separate persistent WebSocket consumer stays live.

03Match the reply

The inbound reply, not a delivery status, proves the thread.

Start with one controlled thread

Start the 7-day trial (card required), then copy your API key. Return here to install the node and prove the reply path. Compare plans and limits. AI agent texting costs.

Start your 7-day trial

Know the two-process boundary

n8n node

Outbound only

Version 0.1.0 sends one plain-text message, returns the full send.result status, then closes its connection.

Separate process

Inbound replies

A persistent WebSocket consumer receives self-serve replies using the same account API key. The package does not add an inbound trigger.

Keep that separation in production. The n8n node can report accepted, failed, retryable, or not-confirmed outbound states, but none of those replaces an inbound reply event.

1. Install the community node

Install the public package in a self-hosted n8n instance, then restart n8n so the Claw Messenger node appears in the editor.

npm install @emotion-machine/n8n-nodes-claw-messenger

Current public release: v0.1.0. You can inspect the package and release metadata on npm.

2. Add the Claw Messenger credential

In n8n, create a Claw Messenger API credential with:

  • The API key from your Claw Messenger dashboard
  • wss://claw-messenger.onrender.com/ws as the WebSocket URL

n8n stores the key as a password credential. Keep it out of workflow fields, exports, screenshots, and logs.

3. Build the outbound workflow

  1. Add a Manual Trigger.
  2. Add the Claw Messenger node.
  3. Choose Send Message.
  4. Enter one registered phone in E.164 format that you control.
  5. Write a short plain-text message.
  6. Leave Service on Automatic for this proof.

First-send examples

curl --fail-with-body -X POST https://claw-messenger.onrender.com/api/agent/send-message \
  -H "Authorization: Bearer $CLAW_MESSENGER_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{"phone_number":"YOUR_REGISTERED_PHONE","text":"Claw test. Reply yes."}'

Set CLAW_MESSENGER_API_KEY. Replace YOUR_REGISTERED_PHONE with your registered phone. Keep a persistent WebSocket listener running for replies.

4. Connect replies, then check readiness

Start a separate persistent WebSocket consumer with the same account API key to receive replies. If you need a receiver, use the working-thread quickstart and keep that process running through the next step.

Check readiness before you execute the n8n workflow:

curl https://claw-messenger.onrender.com/api/agent/readiness \
  -H "Authorization: Bearer ${CLAW_API_KEY}"
Ready to send{"ready":true,"action":"send_controlled_test"}

If the action is connect_agent, start or restart the reply consumer and check again. Put the API key in the authorization header, never in this readiness URL.

5. Send once and prove the reply

Run the Manual Trigger. When the controlled phone receives the message, reply in the same thread and keep the separate consumer live until that matching inbound event appears.

Matching reply reached your consumer

One message out and one reply back is the setup finish line.

A node result with ok: true, accepted,delivered, or read is outbound evidence. It is not proof that your automation can receive the next message.

If the proof stops halfway

The node sends, but no reply appears

Recheck readiness and confirm the separate consumer stayed connected. The outbound node closes after it receives its send result; it is not the reply listener.

The credential test fails

Confirm the API key is current and the WebSocket URL begins withwss://. Do not paste the key into the URL field.

The send result is not confirmed

Treat it as not confirmed. Do not label it delivered, and do not rerun blindly. Review the returned status and retryable fields first.

n8n iMessage integration questions

How does n8n receive replies after the node sends?

The Claw Messenger n8n node sends outbound messages. A separate persistent WebSocket consumer receives self-serve replies using the same account API key.

Can I use the package outside a self-hosted n8n instance?

This guide covers the package's documented self-hosted installation path. It does not claim a separate n8n Cloud installation path.

What counts as a working n8n thread?

One controlled message leaves the n8n node, then the matching reply reaches the separate persistent WebSocket consumer. Delivery status alone is not the finish.

Try Claw Messenger free for 7 days — iMessage API for AI agents. No Mac required.