Platform
Chatbot Builder Bulk Messaging Team Inbox Mini CRM API & Webhooks AI Integration WhatsApp Flows
Industries
E-commerce & D2C Real Estate Education Healthcare Finance & BFSI Logistics Hospitality Retail
Integrations
Learn
Learning Hub Help & Docs Connect Guides Automation Codex Blog Message Templates
Pricing Get Started →
HomeConnect › Connect Bubble to WhatsApp
Bubble.io Integration Guide · No-code App Data

Connect Bubble.io to WhatsApp

Pull live data from your Bubble app's database into a WhatsApp chatbot. Fetch leads, bookings, service requests, or any custom data type you have built in Bubble, and reply to customers in real time using your own app's records.

Published 22 June 2026  ·  8 min read  ·  No-code App Data

Before following this guide, read the External API Request step foundation guide. It covers every field in the step interface so this guide can focus on Bubble-specific values.

What this integration enables

If you have built an app on Bubble, your entire database is reachable via the Bubble Data API. Common WhatsApp use cases:

Use caseBubble data typeWhatsApp flow
Lead status lookupLeadCustomer texts their name or ID; bot fetches their lead record and replies with current status and next step.
Booking confirmationBookingBot fetches a booking by ID and confirms date, time, service, and assigned agent.
Service request updateService RequestCustomer asks 'where is my request?'; bot fetches the record and replies with current stage.
Membership checkUser (or Member)Bot looks up the customer's account and confirms plan, expiry, and remaining credits.
Custom app dataAny type you builtWhatever data your Bubble app stores, you can now surface it in WhatsApp without any extra backend code.

Step 1: Enable the Bubble Data API and generate an admin token

The Bubble Data API is built into every Bubble app but must be explicitly enabled. This takes about two minutes.

1
In your Bubble editor, click the Settings tab (left sidebar) then go to API.
2
Check Enable Data API. A list of your data types appears. Check the box next to each type you want to expose via the API.
3
Scroll down to API tokens and click Generate a new API token. Give it a name like "WA.Expert".
4
Copy the token immediately. It is a long string starting with your app name.
Only expose the data types you need

Bubble lets you select which data types the API can access. Only enable the types needed for your WhatsApp integration. Avoid exposing User records containing passwords or sensitive personal data unless your Privacy Rules in Bubble restrict what the API token can read.

Official docs

Bubble Data API: manual.bubble.io/core-resources/api/the-bubble-api/the-data-api

Step 2: Know your app URL and data type slug

You need two things for the endpoint URL: your Bubble app subdomain and the data type name formatted as a slug.

What you needWhere to find itExample
App subdomainYour Bubble app URL before .bubbleapps.ioyourapp (from yourapp.bubbleapps.io)
Custom domainIf you published on a custom domain, use that insteadyourbusiness.com
Data type slugYour type name in lowercase, spaces removed'Booking Request' becomes 'bookingrequest'
Record IDThe Bubble unique ID for a specific record (shown in URL when you click a record in the Data tab)1672396136196x664154886510492300

Verify your data type slugs: go to Bubble Settings > API. The slug appears in the example URL shown for each data type.

Step 3: Fill in the External API Request step

In your WA.Expert chatbot flow, collect the record ID from the customer and store it as {{record_id}}. Then add an External API Request step:

External API Request Step — WA.Expert
Select Method
GET
Request URL
https://yourapp.bubbleapps.io/api/1.1/obj/booking/{{{{record_id}}}}
Select Auth Type
No Auth (Bearer token in header below)
Header Parameters
AuthorizationBearer YOUR_BUBBLE_API_TOKEN
Content-Typeapplication/json
Select Body Type
None (GET requests carry no body)
Choose Response Type
JSON

Field-by-field breakdown

FieldValueNotes
Select MethodGETReading an existing record.
Request URLhttps://yourapp.bubbleapps.io/api/1.1/obj/booking/{{{record_id}}}Replace yourapp with your Bubble subdomain. Replace 'booking' with your data type slug. {{{record_id}}} is the variable from the previous chatbot step.
Select Auth TypeNo AuthThe Bearer token goes in the Authorization header below.
AuthorizationBearer YOUR_BUBBLE_API_TOKENInclude the word 'Bearer' followed by a space, then the token from Step 1.
Content-Typeapplication/jsonStandard header for Bubble API requests.
Select Body TypeNoneGET requests carry no body.
Choose Response TypeJSONBubble returns structured JSON.
Live vs test URL

During development use the version-test URL: https://yourapp.bubbleapps.io/version-test/api/1.1/obj/... This hits your development database. For your live production bot, use the URL without version-test: https://yourapp.bubbleapps.io/api/1.1/obj/...

Step 4: Map the response to WhatsApp variables

A Bubble Data API response for a single record looks like this (fields vary depending on what you built in Bubble):

Bubble Data API — GET /api/1.1/obj/booking/{id} response (example)
{
  "status": "ok",
  "response": {
    "_id": "1672396136196x664154886510492300",
    "Created Date": "2026-06-20T10:30:00.000Z",
    "Modified Date": "2026-06-22T09:00:00.000Z",
    "name": "Priya Sharma",
    "service": "Deep Cleaning",
    "booking_date": "2026-06-25T09:00:00.000Z",
    "status": "Confirmed",
    "assigned_agent": "Ravi Kumar",
    "phone": "9820000001"
  }
}
All fields are under response, not at the top level

Bubble wraps every record in a 'response' object. Map your variables using response.fieldname notation: response.name, response.status, response.booking_date. The field names match exactly what you named them in your Bubble data types.

Map these response paths to variables in the External API Request step:

Variable nameResponse pathExample value
record_idresponse._id1672396136196x...
customer_nameresponse.namePriya Sharma
service_typeresponse.serviceDeep Cleaning
booking_statusresponse.statusConfirmed
booking_dateresponse.booking_date2026-06-25T09:00:00.000Z
assigned_agentresponse.assigned_agentRavi Kumar

Field names in the response exactly match the names you gave your fields in Bubble's Data tab. If you named a field 'Booking Status', map it as response.booking_status (Bubble lowercases and replaces spaces with underscores in API responses).

Keep the WhatsApp reply in the free service window

If the customer messaged you first within the last 24 hours, your reply is a free service conversation. Use that window to respond. For proactive updates from your Bubble app triggering outbound WhatsApp messages, use an approved Utility template at Rs. 0.115 per message.

If your customer does not know their record ID, you can search by any field value using the list endpoint with constraints:

Bubble Data API — search by phone number
GET https://yourapp.bubbleapps.io/api/1.1/obj/booking
    ?constraints=[{"key":"phone","constraint_type":"equals","value":"9820000001"}]

Authorization: Bearer YOUR_BUBBLE_API_TOKEN

Response:
{
  "status": "ok",
  "response": {
    "count": 1,
    "results": [
      {
        "_id": "1672396136196x664154886510492300",
        "name": "Priya Sharma",
        "status": "Confirmed",
        ...
      }
    ]
  }
}

Map: response.results[0].status, response.results[0].name, etc.

Worked example: booking status chatbot

Chatbot flow — Bubble booking lookup
Customer sends: "Check my booking"

Bot: "Please send your booking ID. You can find it in your confirmation email."

Customer replies: 1672396136196x664154886510492300

Bot stores as {{record_id}}

External API Request step:
GET https://yourapp.bubbleapps.io/api/1.1/obj/booking/1672396136196x664154886510492300
Authorization: Bearer YOUR_BUBBLE_API_TOKEN

Response mapped:
customer_name  = "Priya Sharma"
service_type   = "Deep Cleaning"
booking_status = "Confirmed"
booking_date   = "2026-06-25T09:00:00.000Z"
assigned_agent = "Ravi Kumar"

Bot replies:
"Hi Priya, here is your booking summary:
Service: Deep Cleaning
Date: 25 June 2026 at 9:00 AM
Status: Confirmed
Agent: Ravi Kumar

Reply RESCHEDULE to change your booking date."

Troubleshooting

SymptomLikely causeFix
401 UnauthorizedInvalid token or Bearer prefix missingCheck the Authorization header reads 'Bearer YOUR_TOKEN'. Regenerate the token in Bubble Settings > API if needed.
404 Not FoundData API not enabled or data type not exposedGo to Bubble Settings > API, check 'Enable Data API', and tick the specific data type you are trying to access.
Empty response / null fieldsField name mismatchBubble lowercases field names and replaces spaces with underscores in the API response. A field named 'Booking Status' becomes 'booking_status'. Check the exact keys in the raw API response.
Wrong data returnedUsing version-test URL in productionBubble has separate databases for development and live. Use the URL without 'version-test' for your production bot.
Privacy rule blocking accessBubble Privacy Rules restrict API accessIn Bubble Data > Privacy, check the Privacy Rules for the data type. Rules apply to API token requests as well. Add a rule that allows API tokens to read the relevant fields.
Record ID format unfamiliarBubble IDs are long numeric stringsBubble record IDs look like 1672396136196x664154886510492300. Include this format in your chatbot's prompt to the customer so they know what to look for.

Common questions

What is the Bubble Data API?
+
The Bubble Data API is a built-in REST API that exposes your Bubble app's database to external systems. Once enabled in Settings > API, any external service can read, create, edit, or delete records using Bearer token authentication. Available on all paid Bubble plans.
Where do I generate a Bubble API token?
+
Bubble Settings > API > Generate a new API token. Copy it immediately. You can generate multiple tokens for different integrations.
What is the URL format for the Bubble Data API?
+
Live app: https://appname.bubbleapps.io/api/1.1/obj/{typename}/{id}. Development: https://appname.bubbleapps.io/version-test/api/1.1/obj/{typename}/{id}. Use the live URL for your production WhatsApp bot.
How are Bubble data type names formatted in the API?
+
Bubble lowercases the type name and removes spaces. 'Booking Request' becomes 'bookingrequest'. Check Bubble Settings > API for the exact slug shown next to each data type.
What data is returned in the response?
+
Every record is under a 'response' object. System fields: _id, Created Date, Modified Date. Your custom fields follow, with names lowercased and spaces replaced by underscores.
Does this incur extra WA.Expert charges?
+
The External API Request step counts as one automation action per call. On the Complete plan this is included. On Starter, extra action packs apply from Rs. 49 per 1,000 actions.

Connect your Bubble app to WhatsApp today

Free trial, no credit card required. And if you ever get stuck, we are the only platform in India that answers you live on WhatsApp.

Start Free Trial → Book a Demo
1