textbee Logotextbee.dev
Save 44% with yearly billing.View Plans

Automation

n8n SMS integration: send and receive texts with the HTTP Request and Webhook nodes

Published and updated

n8n needs no community node for textbee. An HTTP Request node posts to the textbee send endpoint with your API key in a Header Auth credential, and a Webhook node receives every incoming text. Both nodes are built in, so the whole flow runs on n8n Cloud or on a self-hosted instance next to your other tools.

Send
HTTP POST
to the textbee send endpoint
Receive
Webhook
MESSAGE_RECEIVED, flat JSON
Pace
10 to 15 / min
per Android phone
textbee code
None
uses what the tool ships today

What you need

  • An n8n instance: n8n Cloud, or a self-hosted install. Receiving texts needs a public HTTPS address for the Webhook node.
  • A textbee account with the Android app installed on the phone that holds the SIM, and an API key from the dashboard.
  • A trigger for the send workflow: a form, a schedule, a database row, a chat message, or any other n8n trigger.
  • The textbee app on the phone. Download the app, then create an API key in the dashboard.

Send SMS from n8n

Keep the API key in a credential. The node then references the credential, and an exported workflow never contains the key.

  1. Create a Header Auth credential

    Open Credentials, add Header Auth, set Name to x-api-key and Value to your textbee API key.

  2. Add an HTTP Request node

    Switch the JSON field to expression mode so the {{ }} values resolve from the previous node.

    FieldValue
    MethodPOST
    URLhttps://api.textbee.dev/api/v1/gateway/send-sms
    AuthenticationGeneric Credential Type, Header Auth, your credential
    Send Bodyon
    Body Content TypeJSON
    Specify BodyUsing JSON
    JSON
    {
      "recipients": ["{{ $json.phone }}"],
      "message": "Hi {{ $json.name }}, your table is ready."
    }
  3. Execute the node

    Click Execute step with a test item. The output has data.success true and data.smsBatchId. The text arrives within a minute.

  4. Activate the workflow

    Save and activate. Every run of the trigger now sends a text through the phone.

Receive SMS in n8n

The Webhook node gives you a test URL while you listen and a production URL once the workflow is active. Register the production URL in textbee.

  1. Add a Webhook node

    Start a workflow with the Webhook node, HTTP Method POST, Path textbee. Copy the Production URL.

  2. Register it in textbee

    In the textbee dashboard open Webhooks, create one with that URL, select MESSAGE_RECEIVED and set a signing secret.

  3. Listen for a test event

    Click Listen for test event and text the phone from another number. The item shows body.sender, body.message and body.receivedAt.

  4. Verify the signature

    Add a Crypto node with Action Hmac, Type SHA256, Value {{ JSON.stringify($json.body) }} and your signing secret, then an If node that compares the result with {{ $json.headers["x-signature"] }}. textbee signs the compact JSON, so the re-serialized body matches.

Ask your AI agent to set it up

The prompt below carries the endpoints, the payloads and the n8n details from this page. Change the line that starts with What I want, paste the prompt into your agent, and it walks you through the setup with your own field names and numbers.

Prompt for your AI agent

Paste it into Claude, ChatGPT, Cursor or any coding agent. It carries the textbee API facts and the n8n details the agent needs, so it does not guess.

I want to connect textbee to n8n. textbee is an SMS gateway that sends and receives SMS through my own Android phone. Help me set it up step by step.

Facts about the textbee API. Use only these. Do not invent endpoints or fields.
- Send an SMS: POST https://api.textbee.dev/api/v1/gateway/send-sms with the header x-api-key: <TEXTBEE_API_KEY> and a JSON body like {"recipients": ["+12015550123"], "message": "Hello"}. recipients must be a JSON array of E.164 numbers, even for one number. Optional fields: deviceId, simSubscriptionId, scheduledAt (ISO 8601, in the future). The response is {"data": {"success": true, "smsBatchId": "..."}}.
- Check delivery or read replies: GET https://api.textbee.dev/api/v1/gateway/messages with the same header. Filters: direction=received, smsBatchId=<id from the send>, from and to as ISO timestamps. Each row has a status such as sent, delivered, failed or received.
- Receive an SMS: textbee posts JSON to a webhook URL I register in the dashboard. A MESSAGE_RECEIVED delivery has these top-level fields: smsId, message, deviceId, webhookSubscriptionId, webhookEvent, idempotencyKey, sender, receivedAt. The header X-Signature holds an HMAC-SHA256 hex digest of the raw body, keyed with the signing secret I set on the webhook. Retries reuse the same idempotencyKey.
- Limits: One Android phone sends roughly 10 to 15 messages a minute. Text only, no MMS. Messages over 160 characters are split into segments.

What I want: Send SMS from an n8n workflow, and start a workflow from every text my phone receives, with the signature verified.

n8n specifics you should know:
- HTTP Request node: Authentication Generic Credential Type with Header Auth; Send Body with Body Content Type JSON; expressions use {{ $json.field }} in expression mode.
- Webhook node: the Production URL only answers when the workflow is active; the Test URL works while listening.
- The Crypto node computes HMAC SHA256 to verify the X-Signature header; textbee signs JSON.stringify of the payload with no extra whitespace.
- Self-hosted n8n needs a public HTTPS address for the Webhook node; without one, poll the messages endpoint with a Schedule Trigger instead.

Give me:
1. The exact clicks and field values in n8n, using its real field labels.
2. The request body or field mapping, with placeholders for my API key and phone numbers. Never ask me to paste the real key into this chat.
3. A test with one number and what a correct result looks like.
4. The three most likely failure causes and how to check each one.

Automations that work well

Form to text
n8n Form Trigger, then an HTTP Request that texts the submitter. Add a Set node to build the message from the form fields.
Reminders on a schedule
Schedule Trigger, a database or Google Sheets node that reads tomorrow, a Loop Over Items node, then one HTTP Request per row.
AI autoresponder
Webhook trigger, an LLM node that drafts a reply from message, then an HTTP Request that sends it to sender. The blog has the full build.
Alerts from anything
An Error Trigger workflow that texts the on-call phone when any other workflow fails. SMS gets through when email and chat do not.

What works and what does not

Works today

  • Sending from any n8n trigger, self-hosted or on n8n Cloud
  • Incoming texts as a trigger, with the signature verified in a Crypto node
  • Loops and batches for many recipients, at the pace of the phone
  • Delivery checks with an HTTP Request that GETs the messages endpoint by smsBatchId

Not with this route

  • Receiving on a self-hosted instance without a public HTTPS address; poll the messages endpoint instead
  • MMS

What n8n charges

The Community Edition is free to self-host. n8n Cloud plans are priced per workflow execution, and one execution can send many texts. n8n.io, checked on September 25, 2026. textbee itself charges a flat monthly plan with messages included; see pricing.

Frequently asked questions

Is there a textbee node for n8n?

No, and none is needed. The HTTP Request and Webhook nodes are built in and cover both directions. A Header Auth credential keeps the key out of the workflow JSON.

My n8n runs at home without a public address. Can I still receive texts?

Not through the Webhook node. Use a Schedule Trigger that GETs the messages endpoint with direction=received and order=asc, and follow the cursor so no text is read twice. The agent quickstart doc describes the cursor.

How do I send to a list?

Read the list with a Google Sheets, Postgres or Airtable node, then use Loop Over Items with a batch size of 1 and the HTTP Request inside the loop. The phone sends roughly 10 to 15 messages a minute, so add a Wait node of 4 seconds between items for long lists.

Can I build a two-way conversation?

Yes. The webhook workflow receives the text, a Switch node branches on the message, and an HTTP Request replies to sender. For free-form replies, put an LLM node in the middle; the blog tutorial builds that autoresponder step by step.

Where do I see whether a text was delivered?

In the textbee dashboard, or with an HTTP Request that GETs the messages endpoint with the smsBatchId from the send. Each row carries a status; delivered, failed and unknown are final.

Sources

  1. n8n.io, checked on September 25, 2026
  2. docs.n8n.io: HTTP Request node, checked on September 25, 2026
  3. docs.n8n.io: Webhook node, checked on September 25, 2026

Read next