n8n
| Status | Kind | How you connect |
|---|---|---|
| Coming soon | Automation tool | Add the bubbl3 app in n8n with a bubbl3 API key |
n8n isn't offered yet. This page says what it will do and what you can use meanwhile: a Lead URL, or Zapier, Make or n8n.
What it does
The bubbl3 community node package for n8n adds two nodes and a credential:
- bubbl3: Message: Send (checked first) and Check; Contact: Create or Update, Add Label and Find.
- bubbl3 Trigger: New Inbound Message, Message Delivered or Failed, Contact Opted Out, New Conversion Event.
- bubbl3 API credential: an API key you create.
The nodes run in your n8n and talk to bubbl3 only through the public API.
Setup
- In bubbl3, create an API key just for n8n under Developers, API keys, with the least your workflows need.
- In n8n, open Settings, Community nodes and install the bubbl3 package (the n8n tile in bubbl3 links to it).
- Create a bubbl3 API credential with the key. n8n tests it with one read call.
- For Message: Send, set Idempotency Key to the trigger's event id plus something unique to the node, so a re-run doesn't text twice.
Disconnect
Deactivate the workflows, delete the credential in n8n, and revoke the key in bubbl3 under Developers, API keys.
- Stops at once: once the key is revoked, every node fails and no text is sent. Deactivating a workflow with a bubbl3 Trigger deletes its webhook endpoint in bubbl3.
- Kept: everything the workflows created in bubbl3 stays.
Data shared
From bubbl3 to n8n: the message, status, contact or conversion in each signed webhook delivery; the records the API returns to actions.
From n8n to bubbl3: whatever your workflow maps into a node: the recipient, text, line and idempotency key for Send; a contact's phone, name, email and labels for the contact operations.
Scopes and permissions
| API key scope | Why the nodes need it |
|---|---|
read | Test the credential, find contacts and fill the dropdowns |
send | Check and send messages |
admin | Only for the trigger (it creates and deletes webhook endpoints) and for creating, updating or labelling contacts |
Events
What bubbl3 sends n8n
| bubbl3 event | Event in the bubbl3 Trigger |
|---|---|
message.received | New Inbound Message |
message.status | Message Delivered or Failed |
contact.opted_out | Contact Opted Out |
conversion.<key> | New Conversion Event, for the event key you enter |
The trigger checks each delivery's signature against its endpoint's signing secret before the workflow starts.
Sending rules that still apply
n8n reaches bubbl3 only through the public API with your key. Sending checks the text first (POST /v1/messages/check), then sends it through the same checks as any API send. No setting in the app turns a check off.
- Consent. When you connect n8n or create a lead source, you confirm that everyone you send to bubbl3 has agreed to receive texts from you, so its contacts can be texted straight away. bubbl3 never texts a contact who opted out, and a workspace set to text only opted-in contacts texts only them.
- Opt-out. Replying STOP opts a contact out at once.
- Quiet hours. No texts from 8:00 PM to 9:00 AM in the contact's own time zone (from the phone's area code). A text due then waits until the morning.
- Pacing. Each line texts at most 15 new contacts an hour and 50 a day (fewer while a new line warms up), and spaces texts 20 to 90 seconds apart. A big import or batch is queued and sent as the limits allow, never dropped.
- First messages. Until a contact replies, a text can't include links, photos or files, phone numbers or email addresses, must be 300 characters or fewer, and at most 3 texts go out.
What n8n is told when bubbl3 doesn't send
A refused text stops the node with bubbl3's reason (or, with "continue on fail", sets the item's error), and nothing is sent. A held text is queued, and the output says "Scheduled for …" with the reason.
| Reason | Code | What you see |
|---|---|---|
| A link before the contact replies | pre_reply_link_blocked | Not sent: "Links can't be sent until the contact replies" |
| A photo or file before the contact replies | pre_reply_media_blocked | Not sent: "Photos and files can't be sent until the contact replies" |
| A phone number before the contact replies | pre_reply_phone_blocked | Not sent: "Phone numbers can't be sent until the contact replies" |
| An email address before the contact replies | pre_reply_email_blocked | Not sent: "Email addresses can't be sent until the contact replies" |
| A first message that is too long | pre_reply_too_long | Not sent: "First messages must be 300 characters or fewer" |
| Too many texts without a reply | pre_reply_message_limit | Not sent: "Already sent 3 texts without a reply. Wait for the contact to reply" |
| The same text to too many people today | identical_text_limit | Not sent: "This exact text went to 20 people from this line today" |
| The line is paused after unanswered texts | unanswered_streak_limit | Not sent: "This line is paused after too many unanswered texts" |
| The contact opted out | contact_opted_out | Not sent: "The contact opted out of texts" |
| The workspace texts only opted-in contacts | consent_required | Not sent: "This workspace only texts contacts who opted in" |
| No line can reach the contact | line_unavailable | Not sent: "bubbl3's line for this contact isn't available" |
| Quiet hours | quiet_hours | Held: "Scheduled for 9:00 AM America/Chicago, quiet hours" |
| The line's daily limit | daily_new_contact_cap | Held: "Scheduled for Oct 15, 9:00 AM America/Chicago: today's limit for this line is reached" |
| The line's hourly limit of new contacts | hourly_new_contact_cap | Held: "Scheduled for 2:00 PM America/Chicago: this hour's limit of new contacts for this line is reached" |
The numbers are the default limits; a line's own limits change them. bubbl3's other checks (no phone number, a number that doesn't match) have their own plain reasons.
Limits and known gaps
- The nodes have no pacing or retries of their own: bubbl3 paces what it accepts, and n8n's own retries are safe with an idempotency key.
- Self-hosted n8n only installs community nodes when the instance allows them.
Troubleshooting
- The node stops with a reason. bubbl3 refused the text and sent nothing. Fix the text or the audience.
- The trigger never fires. Check the key has
adminand the workflow is active. - "Unauthorized". The key was revoked; create a new one and update the credential.