Make
| Status | Kind | How you connect |
|---|---|---|
| Coming soon | Automation tool | Add the bubbl3 app in Make with a bubbl3 API key |
Make 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 app for Make lets scenarios react to bubbl3 and act in it:
- Watch modules (instant): Watch Inbound Messages, Watch Message Status, Watch Contacts Opting Out, Watch Conversion Events.
- Actions: Send a Message (checked first), Check a Message, Create or Update a Contact, Add a Label to a Contact.
- Search: Find a Contact.
The app runs on Make and talks to bubbl3 only through the public API with an API key you create.
Setup
- In bubbl3, create an API key just for Make under Developers, API keys, with the least your scenarios need (see the scopes below).
- Open the bubbl3 app from Settings, Integrations, Make (the tile links to the app's invite) and add it to your Make organization.
- In a scenario, add a bubbl3 module and create a connection with the key.
- For Send a Message, map Idempotency key to the record's own id from the trigger plus something unique to the module, like
{{1.data.message.id}}-welcome, so a re-run doesn't text twice. Don't use the event id: it changes with each delivery.
Disconnect
Turn off the scenarios, delete the bubbl3 connection in Make, and revoke the key in bubbl3 under Developers, API keys.
- Stops at once: once the key is revoked, every module fails and no text is sent. Detaching a Watch module deletes its webhook endpoint in bubbl3.
- Kept: everything the scenarios created in bubbl3 (contacts, labels, messages) stays.
Data shared
From bubbl3 to Make: each Watch module reads the message, contact or conversion back from bubbl3 and passes bubbl3's copy on; actions and searches return the records the API returns.
From Make to bubbl3: whatever your scenario maps into a module: the recipient, text, line and idempotency key for Send a Message; a contact's phone, name, email and labels for the contact modules.
Scopes and permissions
| API key scope | Why the app needs it |
|---|---|
read | Find contacts, read back what a Watch module received, and fill the dropdowns |
send | Check and send messages |
admin | Only for Watch modules (they create and delete webhook endpoints) and for creating, updating or labelling contacts |
Events
What bubbl3 sends Make
| bubbl3 event | Module in Make |
|---|---|
message.received | Watch Inbound Messages |
message.status | Watch Message Status (filter on delivered or failed) |
contact.opted_out | Watch Contacts Opting Out |
conversion.<key> | Watch Conversion Events, for the event you pick |
Make passes a module the parsed delivery rather than the signed original, so each Watch module reads the record back from bubbl3 with your key before the scenario runs. A delivery naming something bubbl3 doesn't have starts nothing.
Sending rules that still apply
Make 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 Make 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 Make is told when bubbl3 doesn't send
A refused text stops the Send a Message module with bubbl3's reason, 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
- Photos and custom fields aren't in the modules yet.
- If two runs create the same new contact at the same moment, one fails with bubbl3's message.
- A Watch module looks for the message among the contact's 100 newest of that direction; a delivery retried after more than 100 newer messages starts nothing.
- The app has no throttle or retries of its own: bubbl3 paces what it accepts, and Make's own retries are safe with an idempotency key.
Troubleshooting
- A module stops with a reason. bubbl3 refused the text (for example a link before the first reply, or an opt-out) and sent nothing.
- A Watch module never fires. Check the key has
admin, and that the scenario is on: turning it on creates the webhook endpoint in bubbl3. - "Unauthorized". The key was revoked; create a new one and update the connection.