Skip to main content

GoHighLevel

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

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

GoHighLevel (HighLevel) is the CRM many agencies and lead-gen teams run on. Connecting it lets bubbl3:

  • import contacts from a sub-account (everything, a tag, a pipeline or stage, or the last few days) and keep new and changed contacts coming;
  • become the sub-account's texting provider, so texts your team sends from GoHighLevel Conversations go out as iMessage through bubbl3, and contacts' replies show up in the same conversation;
  • log every text bubbl3 sends on the contact as a note;
  • keep opt-outs in step: Do Not Disturb in GoHighLevel opts the contact out in bubbl3, and a STOP in bubbl3 turns on SMS Do Not Disturb in GoHighLevel;
  • update fields, tags and pipeline stages when a workflow or conversion event asks.

It's for agencies (connect once at agency level, then pick sub-accounts) and for single businesses (connect one sub-account).

Setup​

You need full access to integrations in bubbl3, and to be an admin of the GoHighLevel agency or sub-account.

  1. In bubbl3, open Settings, Integrations and choose GoHighLevel, then Connect.
  2. On GoHighLevel's page, choose the agency or the sub-account and approve bubbl3.
  3. Agency connection: back in bubbl3, pick the sub-accounts to connect. Each becomes its own connection.
  4. Choose what to import. bubbl3 shows how many contacts that is before anything is imported.
  5. Check the field mapping. Name, mobile, email, owner, tags and source are mapped for you; unmapped custom fields go into the contact's custom fields.
  6. 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.
  7. Optional: under Texting provider, choose the line or pool and turn on Make bubbl3 your texting provider. Texts sent from GoHighLevel Conversations then go through bubbl3.

You can also install bubbl3 from the GoHighLevel Marketplace; you land in bubbl3 with the connection made and carry on from step 4.

Disconnect​

Disconnect from the connection page in Settings, Integrations, or uninstall bubbl3 in GoHighLevel. Uninstalling an agency disconnects every sub-account connected through it.

  • Stops at once: imports, new and changed contacts, the texting provider, text logs and writebacks. Texts your team sends from GoHighLevel stop reaching bubbl3.
  • Deleted at once: bubbl3's access tokens and the links between bubbl3 contacts and GoHighLevel contacts. Opt-outs still waiting to reach GoHighLevel are dropped.
  • Kept: contacts imported from GoHighLevel, with their messages, labels and consent, unless you tick Also delete the contacts imported from it (needs full access to contacts). Notes, tags and fields bubbl3 already wrote stay in GoHighLevel.
  • Deleted later: the updates GoHighLevel sent bubbl3 are deleted 30 days after they arrived.

Data shared​

From GoHighLevel to bubbl3: contacts' names, phones, email, owner, tags, source, custom fields, time zone and Do Not Disturb settings; opportunities' pipeline and stage (for import filters and stage changes); the sub-account's name; texts your team sends from Conversations while bubbl3 is the texting provider. For other messages GoHighLevel sends only that a message happened, never its text.

From bubbl3 to GoHighLevel: a note on the contact for each text bubbl3 sends (and each reply, when bubbl3 isn't the texting provider); contacts' replies into the conversation, with how many photos or files they sent (the files stay in bubbl3); delivered, read and failed statuses with the reason; SMS Do Not Disturb on STOP; fields, tags and stages when you ask.

Scopes and permissions​

ScopeWhy bubbl3 needs it
contacts.readonlySearch and read contacts to import them, and read one contact when it changes
contacts.writeTurn on Do Not Disturb when someone opts out, update fields and tags, and add notes
opportunities.readonlyImport by pipeline or stage, and find a contact's opportunity
opportunities.writeMove an opportunity's stage when a workflow asks
locations.readonlyName the sub-account on the connection, and test the connection
oauth.readonlyList the sub-accounts an agency installed bubbl3 on
oauth.writeLet an agency connection connect each sub-account
conversations/message.writePost contacts' replies into the conversation and update message statuses

Events​

What bubbl3 receives​

Event in GoHighLevelIn bubbl3
ContactCreateNew contact. Imported and matched on phone and email; starts "Lead imported from CRM" workflows.
ContactUpdate, ContactDndUpdate, ContactTagUpdateContact updated. Changes are applied; starts "CRM contact updated" workflows. Do Not Disturb on opts the contact out.
InboundMessageIncoming message seen. Recorded without its text; nothing is sent or logged.
OutboundMessageOutgoing message seen. Recorded without its text; nothing is sent or logged.
ProviderOutboundMessageText to send. A text your team sent from GoHighLevel while bubbl3 is the texting provider. bubbl3 sends it, or tells GoHighLevel why not.
INSTALLApp installed. Recorded only.
UNINSTALLApp uninstalled. Disconnects the sub-account, or the agency and its sub-accounts.

What bubbl3 writes back​

WhatWhere it shows in GoHighLevel
Text logA note on the contact for each text bubbl3 sends
RepliesThe contact's reply in the conversation
Message statusDelivered, read or failed (with the reason) on a text sent from GoHighLevel
Opt-outsSMS Do Not Disturb turned on
Field updatesThe contact field you chose
TagsTags added or removed
Stage changesThe contact's opportunity moved to the stage
NotesA note on the contact from a conversion event

Sending rules that still apply​

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

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

The message in the GoHighLevel conversation is marked failed with the reason. A held text stays pending, and a note on the contact says 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​

  • GoHighLevel allows 100 requests every 10 seconds and 200,000 a day per sub-account; bubbl3 stays inside that and waits when it's reached.
  • GoHighLevel has no contact lists in its API, so you can't import a list: use a tag.
  • A pipeline or stage count counts opportunities, so a contact with two opportunities there counts twice in the preview. They're imported once.
  • A stage change for a contact with no opportunity in that pipeline does nothing.
  • Texts from GoHighLevel's own workflows may still use GoHighLevel's phone system rather than bubbl3, depending on how GoHighLevel routes workflow texts for your account. Send a test from a workflow before you rely on it.
  • A workflow can't write Do Not Disturb or opt-out tags, so nothing can opt a contact back in.

Troubleshooting​

  • The connection needs attention. GoHighLevel stopped accepting bubbl3's access, or bubbl3 couldn't renew it. Reconnect from the connection page; nothing is lost while you do.
  • A text sent from GoHighLevel shows failed. The status carries bubbl3's reason, such as a link in a first message or a contact who opted out. See the sending rules below.
  • Texts from GoHighLevel don't reach bubbl3. Check Texting provider is on for the sub-account and a line or pool is chosen, and that the contact's phone in GoHighLevel matches the number bubbl3 has.
  • A contact won't import. bubbl3 needs a phone number it can text. Contacts with Do Not Disturb on import as opted out.