Shopify
| Status | Kind | How you connect |
|---|---|---|
| Coming soon | Commerce and payments | One click: approve bubbl3 on Shopify's own page |
Shopify 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 your Shopify store sends open checkouts and new orders to bubbl3 as they happen. Each one becomes (or updates) a contact, matched on phone and email, and goes through the connection's lead source, which sets its labels, owner and workflow. One workflow takes both: branch on the contact's shopify_event field (checkout_started or order_placed), and wait before an abandoned-checkout text.
Consent comes from Shopify. bubbl3 records whether each buyer agreed to SMS marketing in Shopify (the box at checkout, with the number given there, or their customer record). A buyer who unsubscribed from SMS marketing in Shopify is opted out in bubbl3 and never texted. Other buyers can be texted, because you confirmed when connecting that everyone you send has agreed to receive texts; a workspace that only texts opted-in contacts texts only buyers who agreed in Shopify.
bubbl3 never creates, changes or messages anything in Shopify.
Setup
- In bubbl3, open Settings, Integrations, choose Shopify, type your store's address (like
acme.myshopify.com), then Connect. - On your store's Shopify page, approve bubbl3.
- Choose the lead source's workflow.
Disconnect
Disconnect from the connection page in Settings, Integrations, or uninstall bubbl3 in your Shopify admin.
- Stops at once: new checkouts and orders for this workspace, and the lead source is paused. bubbl3 removes its subscriptions from the store once no other bubbl3 workspace uses it.
- Deleted at once: bubbl3's store access token.
- Kept: contacts made from Shopify, with their messages, labels and consent. The paused lead source stays.
- Deleted later: stored deliveries are deleted 30 days after they arrived. A Shopify privacy request deletes a buyer's stored deliveries, or the whole store's, sooner.
Data shared
From Shopify to bubbl3: the buyer's name, phone, email, the checkout or order total, and Shopify's SMS marketing consent; your store's name. Addresses, line items, notes, recovery links and payment details are never kept.
From bubbl3 to Shopify: only bubbl3's webhook subscriptions.
When Shopify sends a privacy request (a buyer asks for their data or to be forgotten, or a store is removed), bubbl3 deletes the stored deliveries it covers and records the request in your audit log, so you can export or delete the contact in bubbl3.
Scopes and permissions
| Scope | Why bubbl3 needs it |
|---|---|
read_customers | Read the buyer's name, phone, email and SMS marketing consent |
read_orders | Receive checkouts and orders |
Events
What bubbl3 receives
| Event in Shopify | In bubbl3 |
|---|---|
CHECKOUTS_CREATE, CHECKOUTS_UPDATE | New lead. An open checkout (one lead however often it's updated; a completed one is dropped), with shopify_event set to checkout_started. |
ORDERS_CREATE | New lead. A new order, with shopify_event set to order_placed. |
customers/data_request, customers/redact, shop/redact | Privacy request. Stored deliveries are deleted as asked and the request is recorded in your audit log. |
What bubbl3 writes back
Nothing. A STOP in bubbl3 isn't written back to Shopify.
Sending rules that still apply
Shopify never texts anyone itself. What it sends bubbl3 can start the lead source's workflow, and every workflow text goes through the same checks as a text you send from bubbl3. Nothing in Shopify can turn them off.
- Consent. When you connect Shopify 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 Shopify is told when bubbl3 doesn't send
Shopify has nothing to write a refusal to. You see it in bubbl3: on the message, or on the workflow run's step.
| 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
- A buyer who unsubscribed from SMS marketing in Shopify is never texted. Turning SMS marketing back on in Shopify doesn't opt them back in: only a reply of START, or consent recorded in bubbl3, does.
- A privacy request doesn't delete the bubbl3 contact itself (it's your record, with its texts): use the audit log entry to export or delete it.
- Only
myshopify.comstore addresses can connect.
Troubleshooting
- Checkouts arrive but nobody is texted. The buyer unsubscribed from SMS marketing in Shopify, or the lead source has no workflow. If your workspace only texts opted-in contacts, the buyer didn't agree to SMS marketing in Shopify.
- "Not a Shopify store address". Type the store's
myshopify.comaddress, not your own domain.