Skip to main content

HubSpot

StatusKindHow you connect
Coming soonCRMOne click: approve bubbl3 on HubSpot's own page

HubSpot 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​

Connecting HubSpot lets bubbl3:

  • import contacts (everything, a list, a lifecycle stage, an owner, or those changed since a date) and keep new and changed contacts coming;
  • log every text bubbl3 sends or receives on the contact as an SMS communication;
  • keep opt-outs in step through bubbl3's own contact property, Opted out of texts (bubbl3): ticking it in HubSpot opts the contact out in bubbl3, and a STOP in bubbl3 ticks it;
  • update properties and lifecycle stages when a workflow or conversion event asks;
  • on portals that include custom channels, add bubbl3 to a HubSpot inbox, so your team can read and answer iMessage threads in HubSpot.

Setup​

You need full access to integrations in bubbl3, and to be a HubSpot super admin (or have permission to install apps).

  1. In bubbl3, open Settings, Integrations, choose HubSpot, then Connect.
  2. On HubSpot's page, choose the portal and approve bubbl3.
  3. Choose what to import, check the count, and check the field mapping. Mobile phone is the number texts go to, then phone.
  4. Answer How did these leads agree to hear from you? It records each contact's consent; "Not sure" records it as unknown. Either way the contacts can be texted, because you confirmed when connecting that everyone you send has agreed to receive texts from you, unless your workspace only texts opted-in contacts.
  5. Optional: under Inbox channel, choose a HubSpot inbox and the bubbl3 line or pool. If your portal's plan doesn't include custom channels, bubbl3 says so and keeps logging texts on the timeline instead.

bubbl3 adds the Opted out of texts (bubbl3) property when you connect, so you can filter on it straight away.

Disconnect​

Disconnect from the connection page in Settings, Integrations.

  • Stops at once: imports, new and changed contacts, text logs, writebacks and the inbox channel. bubbl3 turns its channel account off in HubSpot.
  • Deleted at once: bubbl3's access tokens (HubSpot is asked to revoke them unless another bubbl3 workspace uses the same portal and login) and the links between bubbl3 contacts and HubSpot contacts. Opt-outs still waiting to reach HubSpot are dropped.
  • Kept: contacts imported from HubSpot, with their messages, labels and consent, unless you tick Also delete the contacts imported from it (needs full access to contacts). Communications, notes and property values bubbl3 wrote stay in HubSpot, and so does the opt-out property.
  • Deleted later: the updates HubSpot sent bubbl3 are deleted 30 days after they arrived.

To remove the app from HubSpot too, uninstall it under Connected apps in HubSpot.

Data shared​

From HubSpot to bubbl3: contacts' first and last names, email, mobile and phone, company, owner, lifecycle stage, original source, time zone, custom properties (up to 100) and the opt-out property; list memberships when you import a list; the portal's domain; messages your team writes in bubbl3's inbox channel.

From bubbl3 to HubSpot: an SMS communication on the contact for each text bubbl3 sends or receives; texts and replies published in the inbox thread, with their statuses; the opt-out property on STOP; property values, lifecycle stages, notes and custom events when you ask.

Scopes and permissions​

ScopeWhy bubbl3 needs it
oauthAdded to every HubSpot app; listed so the install page asks for exactly bubbl3's set
crm.objects.contacts.readSearch and read contacts to import them, and receive contact updates
crm.objects.contacts.writeWrite properties, lifecycle stages and the opt-out, and log texts
crm.lists.readImport the members of a list
crm.schemas.contacts.readRead your custom contact properties, so they reach bubbl3
crm.schemas.contacts.writeCreate bubbl3's opt-out property when you connect
conversations.read (optional)List your inboxes for the inbox channel
conversations.custom_channels.read (optional)Read bubbl3's inbox channel and its accounts
conversations.custom_channels.write (optional)Connect the channel to an inbox, publish messages and report their status

The optional scopes are asked for only when bubbl3's inbox channel is available. A portal that doesn't grant them still connects and gets timeline logging.

Events​

What bubbl3 receives​

Event in HubSpotIn bubbl3
contact.creationNew contact. bubbl3 reads the contact, imports it and starts "Lead imported from CRM" workflows.
contact.propertyChangeContact updated. bubbl3 reads the contact again; starts "CRM contact updated" workflows.
contact.propertyChange on the opt-out propertyOpt-out. Ticked opts the contact out, whatever else the record says. Unticking it never opts anyone back in.
OUTGOING_CHANNEL_MESSAGE_CREATEDText to send. A message someone on your team wrote in bubbl3's inbox channel. bubbl3 sends it, or marks it failed with the reason.
CHANNEL_ACCOUNT_PURGEDChannel removed. The channel account was deleted in HubSpot, so bubbl3 turns the inbox channel off.

What bubbl3 writes back​

WhatWhere it shows in HubSpot
Text logAn SMS communication on the contact: "Text sent by bubbl3 to …" or "Text received by bubbl3 from …"
RepliesThe contact's reply in the inbox thread
Message statusSent, read or failed (with the reason) on the inbox message
Opt-outsOpted out of texts (bubbl3) ticked
Field updatesThe contact property you chose
Stage changesThe contact's lifecycle stage
NotesA note on the contact from a conversion event
Custom eventsA custom event occurrence from a conversion event, on portals that take them

Sending rules that still apply​

HubSpot never texts anyone itself. Texts your team sends from HubSpot through bubbl3, and workflows that HubSpot's contacts start, go through the same checks as a text you send from bubbl3. Nothing in HubSpot can turn them off.

  • Consent. When you connect HubSpot 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. bubbl3 also records it in HubSpot.
  • Quiet hours. No texts from 8:00 PM to 9:00 AM in the contact's own time zone (HubSpot's time zone for the contact when it has one, else 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 HubSpot is told when bubbl3 doesn't send​

In the HubSpot inbox thread the message is marked failed, with the reason as its error. HubSpot has no pending status, so a held text gets a timeline note saying when it's scheduled.

ReasonCodeWhat you see
A link before the contact repliespre_reply_link_blockedNot sent: "Links can't be sent until the contact replies"
A photo or file before the contact repliespre_reply_media_blockedNot sent: "Photos and files can't be sent until the contact replies"
A phone number before the contact repliespre_reply_phone_blockedNot sent: "Phone numbers can't be sent until the contact replies"
An email address before the contact repliespre_reply_email_blockedNot sent: "Email addresses can't be sent until the contact replies"
A first message that is too longpre_reply_too_longNot sent: "First messages must be 300 characters or fewer"
Too many texts without a replypre_reply_message_limitNot sent: "Already sent 3 texts without a reply. Wait for the contact to reply"
The same text to too many people todayidentical_text_limitNot sent: "This exact text went to 20 people from this line today"
The line is paused after unanswered textsunanswered_streak_limitNot sent: "This line is paused after too many unanswered texts"
The contact opted outcontact_opted_outNot sent: "The contact opted out of texts"
The workspace texts only opted-in contactsconsent_requiredNot sent: "This workspace only texts contacts who opted in"
No line can reach the contactline_unavailableNot sent: "bubbl3's line for this contact isn't available"
Quiet hoursquiet_hoursHeld: "Scheduled for 9:00 AM America/Chicago, quiet hours"
The line's daily limitdaily_new_contact_capHeld: "Scheduled for Oct 15, 9:00 AM America/Chicago: today's limit for this line is reached"
The line's hourly limit of new contactshourly_new_contact_capHeld: "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​

  • HubSpot allows 110 requests every 10 seconds per portal, and 5 searches a second; bubbl3 stays inside that and waits when it's reached.
  • HubSpot contacts have no tags, so tag filters and tag writebacks aren't offered. Deal pipelines aren't the contact's, so a stage change sets the lifecycle stage.
  • A list can't be combined with other import filters.
  • HubSpot has no API for its own SMS subscription status, which is why bubbl3 uses its own opt-out property.
  • HubSpot publishes outgoing inbox messages only on open threads. If it refuses a first text to someone who never wrote, bubbl3 logs it as a communication instead, so each text reaches HubSpot once.
  • Custom channels need a HubSpot plan that includes them; HubSpot decides, and bubbl3 shows its answer.

Troubleshooting​

  • The connection needs attention. HubSpot refused to renew bubbl3's access, which is also how an uninstall shows. Reconnect from the connection page.
  • The inbox channel says your portal isn't eligible. Your HubSpot plan doesn't include custom channels, or the optional scopes weren't granted. Texts keep logging on the timeline.
  • A message in the inbox shows failed. Its error is bubbl3's reason, such as a link in a first message or a contact who opted out.
  • Opting out in HubSpot doesn't seem to work. Use the Opted out of texts (bubbl3) property, not HubSpot's email or SMS subscription settings.