Skip to main content
RapidDev - Software Development Agency
bubble-integrationsBubble API Connector

Zocdoc

Connect Bubble to Zocdoc's partner API using the API Connector plugin with a Private Bearer token header — Bubble proxies calls server-side, eliminating CORS. Zocdoc is restricted to enrolled US healthcare providers only (no public API path). Appointment data is HIPAA-regulated PHI, requiring Bubble Privacy rules on every data type storing Zocdoc records. Receiving booking webhooks from Zocdoc requires a Bubble Backend Workflow on a paid plan.

What you'll learn

  • How to configure Bubble's API Connector with a Zocdoc Partner API Bearer token as a Private header
  • How to initialize the Zocdoc availability endpoint and bind slots to a patient-facing Repeating Group
  • How to create HIPAA-compliant Bubble Privacy rules for appointment data types
  • How to set up a Backend Workflow to receive Zocdoc booking confirmation and cancellation webhooks
  • How to handle real-time appointment slot availability (avoid caching stale slots)
  • How to display appointment times in patient local timezones
Book a free consultation
4.9Clutch rating
600+Happy partners
17+Countries served
190+Team members
Intermediate18 min read2–4 hours (after partner enrollment)Health & FitnessLast updated July 2026RapidDev Engineering Team
TL;DR

Connect Bubble to Zocdoc's partner API using the API Connector plugin with a Private Bearer token header — Bubble proxies calls server-side, eliminating CORS. Zocdoc is restricted to enrolled US healthcare providers only (no public API path). Appointment data is HIPAA-regulated PHI, requiring Bubble Privacy rules on every data type storing Zocdoc records. Receiving booking webhooks from Zocdoc requires a Bubble Backend Workflow on a paid plan.

Quick facts about this guide
FactValue
ToolZocdoc
CategoryHealth & Fitness
MethodBubble API Connector
DifficultyIntermediate
Time required2–4 hours (after partner enrollment)
Last updatedJuly 2026

Building a Patient Portal and Scheduling Integration with Zocdoc in Bubble

Zocdoc is the dominant online appointment booking platform for US healthcare — patients use it to find and schedule appointments with doctors, dentists, mental health providers, and specialists. For medical practices building custom patient portals in Bubble, Zocdoc's partner API enables embedding appointment availability and booking directly into the Bubble app, giving patients a seamless scheduling experience without leaving the practice's own patient portal.

Two important prerequisites set the context for this integration. First, access control: Zocdoc's Partner API is restricted to US-licensed healthcare providers enrolled in Zocdoc's developer program. There is no public self-serve API key at a developer portal. The medical practice must apply to Zocdoc's partner program and receive API credentials. Non-US clinics or patient-facing apps without a formal provider relationship cannot obtain API access. The Bolt sibling integration confirms there is no undocumented public API path.

Second, regulatory context: Zocdoc appointment data in the US context constitutes Protected Health Information (PHI) under HIPAA. Any Bubble Data Type that stores Zocdoc-sourced appointment records — patient name, appointment time, provider, reason for visit — must be protected with strict Privacy rules. Never set appointment data to 'Anyone can view' in Bubble. Use Role-based access control: restrict to authenticated practice staff for operational views, and restrict to the specific patient for patient-facing views.

With those prerequisites clear, the Bubble integration is technically straightforward: API Connector plugin with the Bearer token in a Private header for outbound calls, plus a Backend Workflow as the webhook receiver for real-time booking events. Bubble's server-side proxy model means CORS is not an obstacle, making the API Connector the correct tool without any additional proxy layer.

Integration method

Bubble API Connector

Call the Zocdoc Partner API (api.zocdoc.com/v1) from Bubble's API Connector with a Private Bearer token header. Bubble proxies these calls server-side — credentials never reach the browser. A separate Backend Workflow (paid Bubble plan) receives Zocdoc booking webhooks for real-time updates.

Prerequisites

  • Approved Zocdoc Partner API enrollment as a US-licensed healthcare provider — there is no public API path; contact Zocdoc's developer program to enroll
  • A Bearer token (API credential) issued by Zocdoc upon partner enrollment
  • Your provider NPI (National Provider Identifier) — used as a path parameter in Zocdoc API calls
  • A Bubble account; paid plan (Starter $32/month minimum) required if you want to receive Zocdoc booking webhooks via Backend Workflows
  • Legal authorization from your practice's HIPAA compliance officer before storing any PHI in Bubble's database

Step-by-step guide

1

Enroll in Zocdoc's partner program and understand HIPAA constraints

Zocdoc's API is available exclusively to US healthcare providers and enterprise EHR systems with a formal partner relationship. Navigate to zocdoc.com/about/developer or contact Zocdoc directly to request API access. The enrollment process typically requires demonstrating that you are a licensed US healthcare provider, describing your integration use case, and agreeing to Zocdoc's partner terms including data handling requirements. During enrollment, clarify two things with your HIPAA compliance officer: (1) Can your practice store Zocdoc appointment data (patient names, provider, appointment times, reason for visit) in Bubble's database given Bubble's data hosting infrastructure? Bubble's data is hosted on AWS — confirm this satisfies your Business Associate Agreement (BAA) requirements. Bubble offers Business plans with a BAA for HIPAA-covered entities. (2) What is the minimum PHI necessary for your use case? A scheduling dashboard might only need a patient token (not the patient's full name) to display appointment counts and slot availability — minimizing PHI stored in Bubble reduces compliance burden. Once enrolled, Zocdoc provides a Bearer token for API authentication and documentation for the partner API endpoints (base URL https://api.zocdoc.com/v1). Build a Bubble app with mock appointment data while waiting for credentials so you can refine the UX immediately after credentials arrive.

Pro tip: Request the Zocdoc sandbox/test environment during partner enrollment. A sandbox lets you initialize the Bubble API Connector and test appointment booking flows without touching live patient records or live availability slots.

Expected result: You have Zocdoc partner enrollment confirmed, a Bearer token for API access, your provider NPI, and HIPAA compliance sign-off on your intended data storage approach in Bubble.

2

Install the API Connector and configure the Zocdoc API group

In your Bubble editor, click the Plugins tab → Add plugins → search for 'API Connector' → install the API Connector by Bubble (free). After installation, click on API Connector and click 'Add another API'. Name this group 'Zocdoc'. Under Authentication, select 'None or self-handled'. Set the API base URL to https://api.zocdoc.com/v1. Click 'Add a shared header'. Set the key to Authorization and the value to Bearer YOUR_ZOCDOC_TOKEN (replace with your actual partner token, including the 'Bearer ' prefix with a space). CRITICAL: check the 'Private' checkbox next to this header. This is the core security mechanism — Bubble's server infrastructure holds this header value and never sends it to the browser. Your Bearer token stays private even when the Bubble app is accessed by patients on their own devices. Add a second header: Content-Type with value application/json (no Private flag needed — this is a standard technical header, not a credential). Verify the setup by looking at the API Connector configuration: the Authorization header should show the token value as masked dots when Private is checked. If you can still read the full token value, Private is not enabled — fix this before proceeding.

zocdoc_api_connector_config.json
1{
2 "api_name": "Zocdoc",
3 "base_url": "https://api.zocdoc.com/v1",
4 "authentication": "None or self-handled",
5 "shared_headers": [
6 {
7 "key": "Authorization",
8 "value": "Bearer YOUR_ZOCDOC_PARTNER_TOKEN",
9 "private": true
10 },
11 {
12 "key": "Content-Type",
13 "value": "application/json",
14 "private": false
15 }
16 ]
17}

Pro tip: If Zocdoc's partner documentation specifies a different header name (e.g., X-Zocdoc-Token instead of Authorization: Bearer), use the exact header name from their documentation. The Private flag works regardless of the header name.

Expected result: The Zocdoc API Connector group exists with base URL set, the Private Authorization Bearer token header configured, and the Content-Type header added. The token value is masked in the UI (Private is active).

3

Add and initialize API calls for availability and appointments

Within the Zocdoc API group, add your first call. Click 'Add another call'. Name it 'Get Provider Availability'. Set method to GET. The endpoint path should follow Zocdoc's partner documentation — typically something like /providers/{npi}/availability with date parameters. Check your Zocdoc partner documentation for the exact path. Add URL parameters: start_date (today's date in ISO 8601 format), end_date (date 7 days from now), and any other parameters Zocdoc requires (e.g., location, appointment_type). Set 'Use as' to 'Data'. Click 'Initialize call' and provide real test values for your provider's NPI and a valid date range. Bubble sends the request to Zocdoc using your Private credentials — the initialization response teaches Bubble the shape of the availability response (time slot objects with start_time, end_time, appointment_type, availability status). IMPORTANT: If initialization fails with 'There was an issue setting up your call', the Bearer token is most likely incorrect or the endpoint path differs from what you configured. Temporarily uncheck Private, click Initialize, open browser DevTools → Network tab to see the raw request/response, identify the error, fix it, then immediately re-check Private. Add a second call: 'Create Booking'. Method POST. Path /appointments (or the booking endpoint from Zocdoc's docs). Body: provider_id, patient details (if collected in Bubble), start_time, appointment_type. Set 'Use as' to 'Action'. Initialize with test data using Zocdoc's sandbox credentials if available. Add a third call: 'Get Appointments' (GET /appointments or /providers/{npi}/appointments) for the admin scheduling dashboard use case.

zocdoc_api_calls.json
1// Call 1: Get Provider Availability
2{
3 "name": "Get Provider Availability",
4 "method": "GET",
5 "path": "/providers/<npi>/availability",
6 "use_as": "Data",
7 "parameters": [
8 { "key": "start_date", "value": "2026-07-09", "dynamic": true },
9 { "key": "end_date", "value": "2026-07-16", "dynamic": true },
10 { "key": "appointment_type", "value": "general", "dynamic": true }
11 ]
12}
13
14// Call 2: Create Booking (Action)
15{
16 "name": "Create Booking",
17 "method": "POST",
18 "path": "/appointments",
19 "use_as": "Action",
20 "body": {
21 "provider_npi": "<dynamic>",
22 "start_time": "<dynamic: selected slot time>",
23 "appointment_type": "<dynamic>",
24 "patient_token": "<dynamic: patient identifier>"
25 }
26}
27
28// Call 3: Get Appointments (Data)
29{
30 "name": "Get Appointments",
31 "method": "GET",
32 "path": "/appointments",
33 "use_as": "Data",
34 "parameters": [
35 { "key": "provider_npi", "value": "<dynamic>", "dynamic": true },
36 { "key": "start_date", "value": "<dynamic>", "dynamic": true },
37 { "key": "end_date", "value": "<dynamic>", "dynamic": true },
38 { "key": "limit", "value": "50" },
39 { "key": "offset", "value": "0", "dynamic": true }
40 ]
41}

Pro tip: Availability data should not be cached in Bubble's database for more than a few minutes — appointment slots can be booked by other patients in real time. Fetch availability live on each page load rather than storing it as a Bubble Data Thing. For high-traffic booking pages, add a manual 'Refresh availability' button rather than showing stale cached slots.

Expected result: Three API calls are initialized in Bubble: Get Provider Availability (Data), Create Booking (Action), and Get Appointments (Data). All calls return successful responses during initialization. The response fields are available for use in Bubble's editor.

4

Create Appointment Data Type with HIPAA-compliant Privacy rules

Even if you minimize PHI stored in Bubble, the scheduling dashboard use case requires storing at minimum some appointment metadata. Create an Appointment Data Type in Bubble's Data tab with these fields: zocdoc_appointment_id (text — the Zocdoc identifier, never expose this as a public-facing URL parameter), appointment_time (date), provider_npi (text), appointment_type (text), status (text — confirmed, cancelled, pending), patient_identifier (text — use Zocdoc's patient token, not the patient's real name or DOB), created_via_webhook (yes/no), last_updated (date). Now configure Privacy rules for the Appointment type. Go to Data tab → Privacy tab → Appointment. Delete the default 'Anyone can view' rule if it exists. Add a new rule: 'This Appointment is visible when Current User is logged in AND Current User has a staff_role field of 'practice_admin' or 'scheduler''. For patient-facing portal use, add a second condition: 'OR Current User's patient_token = this Appointment's patient_identifier'. This allows patients to see only their own appointments, not other patients' data. Click 'Find fields exposed to others' in Bubble's Privacy panel. Every field should show 'None' for the 'Everyone else' column. If any field is marked as accessible to everyone, it is a HIPAA-relevant data exposure risk — fix it before going live. RapidDev has built multiple HIPAA-adjacent patient portal apps in Bubble — for complex multi-role access control or BAA questions, reach out for a free scoping call at rapidevelopers.com/contact.

Pro tip: For the strictest HIPAA posture, do not store any PHI (patient name, date of birth, contact info) in Bubble's database at all. Use only Zocdoc's opaque patient token or appointment ID as identifiers. Display PHI by fetching it live from Zocdoc's API in read-only fashion. This minimizes the PHI footprint in Bubble's infrastructure.

Expected result: An Appointment Data Type exists with Privacy rules restricting visibility to authenticated practice staff and to the specific patient matching the appointment's patient_identifier. The 'Find fields exposed to others' check shows no publicly exposed fields.

5

Enable Workflow API and create the Zocdoc webhook receiver

Zocdoc can push booking events (booking_created, booking_cancelled) to a URL you register in the partner portal. In Bubble, this inbound URL is a Backend Workflow endpoint. Enable it: go to Settings (gear icon) → API tab → check 'Enable Workflow API'. This requires a paid Bubble plan — the checkbox does not appear on the free plan. After enabling, the endpoint namespace https://YOUR-APP.bubbleapps.io/api/1.1/wf/ is active. In the Workflow tab, click 'Backend Workflows'. Click 'New API Workflow' and name it 'zocdoc_webhook'. Add the step 'Detect request data'. Now you need to initialize this workflow with a real Zocdoc webhook payload. Go to your Zocdoc partner portal and register your Backend Workflow URL as the webhook endpoint. Then trigger a test webhook event from Zocdoc's partner tools — or manually send a POST to the /initialize URL: https://YOUR-APP.bubbleapps.io/api/1.1/wf/zocdoc_webhook/initialize With a sample payload like: { 'event_type': 'booking_created', 'appointment_id': 'appt_123', 'provider_npi': '1234567890', 'slot_time': '2026-07-10T14:00:00Z', 'patient_token': 'pt_abc456', 'status': 'confirmed' }. After successful initialization, add a workflow step: Branch on request_data's event_type. If 'booking_created': Create a new Appointment with the detected fields. If 'booking_cancelled': Search for Appointment where zocdoc_appointment_id = request_data's appointment_id, then modify it to set status = 'cancelled'. Add a Return data from API step returning { 'status': 'received' } with HTTP status 200. Register the production URL (https://YOUR-APP.bubbleapps.io/api/1.1/wf/zocdoc_webhook — no /initialize suffix) in the Zocdoc partner portal as your booking event webhook.

zocdoc_webhook_payload.json
1// Sample Zocdoc webhook payload for Backend Workflow initialization
2// POST to: https://YOUR-APP.bubbleapps.io/api/1.1/wf/zocdoc_webhook/initialize
3{
4 "event_type": "booking_created",
5 "appointment_id": "appt_test_123",
6 "provider_npi": "1234567890",
7 "slot_time": "2026-07-10T14:00:00Z",
8 "appointment_type": "general_consultation",
9 "patient_token": "pt_abc456",
10 "status": "confirmed",
11 "created_at": "2026-07-09T10:30:00Z"
12}
13
14// Production webhook endpoint (no /initialize suffix):
15// https://YOUR-APP.bubbleapps.io/api/1.1/wf/zocdoc_webhook

Pro tip: Zocdoc expects a 200 HTTP response within a few seconds of delivering a webhook. Make your Backend Workflow lightweight — create the Appointment record and return 200 immediately. For any complex processing (sending confirmation emails, updating other systems), schedule a separate Bubble workflow to run after the response is returned, using 'Schedule API workflow' so the webhook response is not delayed.

Expected result: A Backend Workflow 'zocdoc_webhook' is initialized and registered in the Zocdoc partner portal. Test booking events from Zocdoc's partner tools create Appointment records in Bubble or update existing appointments to 'cancelled' status. The workflow returns 200 within the Zocdoc webhook timeout window.

6

Build the patient portal booking flow and timezone handling

Create a new page for the patient-facing booking experience. Add a Date Picker element for the patient to select their preferred appointment date. Wire the date picker value to a 'Get Provider Availability' API call: configure the call's start_date parameter as 'Date Picker's value' formatted as ISO 8601, and end_date as 'Date Picker's value + 1 day'. Add a Repeating Group below the date picker. Set the data source to 'Get Provider Availability' from the Zocdoc API, filtered by the date picker value and your provider's NPI. Inside each cell, display the slot time formatted in the patient's local timezone — use Bubble's date formatting with the 'User's browser timezone' option. Add a 'Book This Slot' button. The button workflow: (1) Call Zocdoc 'Create Booking' action with the selected slot's start_time, appointment_type, and the patient's identifier from Bubble's Current User record. (2) On success, show a confirmation popup with the appointment details. (3) On error, show an error popup with a message to try another slot. For timezone display: Zocdoc availability times are in the provider's local timezone. Patients in different timezones may see confusing times. Use Bubble's 'Convert date to timezone' expression to display slots in the patient's local time. Add a small text below each slot showing the patient's timezone (e.g., 'Eastern Time') so patients can confirm they selected the right time. Do not cache the availability slots in Bubble's database — they can change between page loads as other patients book the same provider. Fetch live on each page interaction. If a patient selects a slot that was just booked by another patient, the Create Booking call will return an error — handle this gracefully with a message like 'This slot was just taken — please choose another time' and refresh the availability list.

Pro tip: Limit the date range shown in the availability picker to the next 30 days (or whatever range makes sense for your practice). Fetching availability for a wide date range in a single API call may be slow or paginated. A focused 7-day window per page load keeps the UI fast and the API response manageable.

Expected result: A patient-facing booking page shows available appointment slots from Zocdoc for a selected date, displayed in the patient's local timezone. Patients can book a slot, receive a confirmation, and see error handling when a slot is no longer available. The admin dashboard shows all booked appointments updated via webhook in near real-time.

Common use cases

Embed appointment booking in a custom patient portal

Build a Bubble patient portal where registered patients can view their provider's available appointment slots, select a time, and book directly. The portal fetches availability from Zocdoc's API filtered by provider NPI and date range. When a patient books, a Zocdoc API action call creates the appointment. A Zocdoc webhook (Backend Workflow) updates the portal when the booking is confirmed or if the slot becomes unavailable.

Bubble Prompt

Build a Bubble patient portal page with a date picker and a Repeating Group showing available appointment slots from Zocdoc for a specific provider. Each slot shows the time, appointment type, and a 'Book' button. Clicking 'Book' triggers a Zocdoc API action to create the appointment and shows a confirmation screen with appointment details.

Copy this prompt to try it in Bubble

Practice operations scheduling dashboard

Build a Bubble internal tool for medical practice administrators showing all Zocdoc bookings for the week across all providers. Administrators see each booking's patient token (not PHI-heavy identifiers), appointment type, duration, and confirmation status. The dashboard syncs with Zocdoc via Backend Workflow webhooks — new bookings and cancellations appear in near real-time without manual refresh.

Bubble Prompt

Build a Bubble admin scheduling dashboard showing a calendar view of appointments for the current week, grouped by provider. Each appointment shows time, appointment type, and status (confirmed, cancelled, pending). Receive updates via Zocdoc webhooks processed by a Backend Workflow. Add a filter by provider dropdown and a date range picker.

Copy this prompt to try it in Bubble

No-show and cancellation tracking analytics

Use Zocdoc webhook events (booking_cancelled, booking_no_show if available in the partner tier) to build a Bubble analytics dashboard tracking cancellation rates by provider, day of week, and appointment type. Store each cancellation event as a record in a Bubble CancellationEvent Data Type and display trend charts over 30 and 90 day windows to help practices identify scheduling patterns and reduce no-shows.

Bubble Prompt

Build a Bubble analytics page showing cancellation rate by provider for the past 30 days as a bar chart, cancellation rate by day of week as a heatmap, and a list of the top 10 appointment types with highest cancellation rates. Data from CancellationEvent Data Type populated by Zocdoc webhook Backend Workflow.

Copy this prompt to try it in Bubble

Troubleshooting

'There was an issue setting up your call' when initializing the Get Provider Availability call in API Connector

Cause: The Bearer token is incorrect or expired, the endpoint path does not match Zocdoc's partner API structure, or required parameters (like provider NPI) are missing during initialization.

Solution: Temporarily remove the Private flag from the Authorization header, open browser DevTools → Network tab, click Initialize again, and examine the raw request URL and the response body. The Zocdoc API will return a specific error message (e.g., 'Invalid token', 'Provider not found', 'Missing required parameter: start_date'). Fix the issue, then immediately restore the Private flag. Contact Zocdoc partner support if the token appears correct but continues to return 401.

Backend Workflow receives Zocdoc webhooks but the Appointment record is not created or updated in Bubble

Cause: The Detect request data step was not initialized with a payload that matched the incoming Zocdoc webhook format — field names differ and the Create action references fields that Bubble does not know about.

Solution: Go to Bubble's Logs tab → Workflow logs and find the failed Backend Workflow run. Examine the raw request body to see what Zocdoc actually sent. Compare it to the payload you used for initialization. If the field names differ (e.g., Zocdoc sends 'appointmentId' but you initialized with 'appointment_id'), re-initialize the workflow by POSTing the correct payload to the /initialize URL, then update your workflow action field mappings.

Availability slots show as available in Bubble but booking fails with an error from Zocdoc

Cause: The slot was booked by another patient between when availability was fetched and when the booking was submitted. Availability data is real-time and can become stale in seconds.

Solution: Add explicit error handling on the Create Booking action in the patient portal workflow: 'When Create Booking fails, show error popup with message: This slot was just booked by another patient — please select a different time. Then refresh the availability Repeating Group.' Re-run the Get Provider Availability call after the error to show the patient current availability.

Appointment times display correctly in Bubble's editor but show wrong times to patients in different timezones

Cause: Zocdoc availability times are in the provider's local timezone. Displaying them without timezone conversion shows provider-timezone times to patients in different timezones.

Solution: In Bubble's date formatting expressions for appointment time display, use 'Convert date to User's current timezone' option. Explicitly display the timezone name next to the appointment time (e.g., '3:00 PM Eastern Time') so patients understand what timezone they are booking in. Test with a Bubble account that has a different timezone preference set than the provider's timezone.

Best practices

  • Always use the Private checkbox on the Zocdoc Bearer token header in the API Connector. Zocdoc partner credentials exposed in browser network requests could allow unauthorized access to patient appointment data — a HIPAA breach risk.
  • Configure Bubble Privacy rules on the Appointment Data Type before storing any Zocdoc-sourced records. Set visibility to authenticated practice staff only (for admin views) and to the specific patient for patient-facing views. Run 'Find fields exposed to others' to verify no PHI is publicly accessible.
  • Do not cache Zocdoc availability slots in Bubble's database. Appointment slots change in real time — a cached slot could be shown as available after it was booked by another patient. Always fetch availability live from Zocdoc's API.
  • Handle the 'slot already booked' race condition explicitly in the patient portal UI. The error from Zocdoc's Create Booking call should trigger an immediate availability refresh and a clear explanation to the patient, not just a generic error popup.
  • Display all appointment times in the patient's local timezone with the timezone name labeled. Zocdoc availability is in provider-local time — a timezone mismatch causes patients to miss appointments.
  • Use Bubble Backend Workflows (paid plan required) to receive Zocdoc booking events rather than polling. Polling Zocdoc's appointments endpoint on a schedule consumes Workload Units per check and is less timely than webhook-delivered events.
  • Minimize PHI stored in Bubble. Use Zocdoc's patient token as the patient identifier in Bubble rather than storing patient names, dates of birth, or contact information. Fetch PHI live from Zocdoc's API when needed for display — do not persist it.
  • Enroll in the Zocdoc partner program before writing any code. The API is partner-gated — there is no undocumented public path. All development time before having valid credentials can only use mock data.

Alternatives

Frequently asked questions

Is Zocdoc's API available to any developer or only healthcare providers?

Zocdoc's Partner API is restricted to US-licensed healthcare providers enrolled in Zocdoc's developer program. Non-US clinics, non-medical businesses, and individual developers without a formal provider relationship cannot obtain API access. The Bolt sibling source confirms there is no undocumented public API path. Contact Zocdoc's partner team at zocdoc.com/about/developer to start the enrollment process.

Is appointment data from Zocdoc considered PHI under HIPAA?

Yes. Appointment data that links a patient to a healthcare provider, appointment time, and reason for visit is Protected Health Information (PHI) under HIPAA. If you store any Zocdoc-sourced appointment records in Bubble's database, your practice must have a HIPAA Business Associate Agreement (BAA) in place with Bubble. Bubble's Business plan includes BAA support for HIPAA-covered entities. Consult your compliance officer before storing PHI.

Can I receive Zocdoc booking updates in real time without polling?

Yes, if Zocdoc's partner API supports webhooks (confirm with your Zocdoc partner documentation). Zocdoc can POST booking_created and booking_cancelled events to a URL you register in the partner portal. In Bubble, this URL is a Backend Workflow endpoint — available on paid Bubble plans (Starter $32/month+). The Backend Workflow receives the event and updates your Appointment Data Type in near real-time, without polling.

What happens if a patient books a slot that another patient just booked at the same moment?

Zocdoc handles the conflict on their side — the booking call will return an error (likely a 409 Conflict or similar) indicating the slot is no longer available. In Bubble, add an error handler on the Create Booking action that shows the patient a clear message ('This slot was just taken — please choose another time') and re-fetches the availability list so they see current open slots.

Does the Zocdoc integration require a paid Bubble plan?

For read-only features (showing availability, allowing bookings), the free Bubble plan is sufficient — API Connector calls work on all plans. However, if you want to receive Zocdoc booking confirmation and cancellation webhooks in real time, you need a Backend Workflow, which requires a paid plan (Starter $32/month). Without webhooks, you can only sync appointment data by polling Zocdoc's API on a schedule.

Can I show Zocdoc availability for multiple providers on the same page?

Yes. Add a provider selector dropdown to the page (populated from your own Bubble Providers Data Type or a static list of provider NPIs). Wire the dropdown's selected value to the Get Provider Availability call's provider_npi parameter. When the user changes the selected provider, re-run the availability call with the new NPI. Each availability load triggers one API Connector call per provider — for practices with many providers, load one provider at a time rather than simultaneously fetching all.

RapidDev

Talk to an Expert

Our team has built 600+ apps. Get personalized help with your project.

Book a free consultation

Integrations are where projects stall

We wire Bubble integrations like this one every week — auth, webhooks, edge cases included. Fixed-price builds from $13K, delivered in 6–10 weeks.

Talk to an integration engineer

We put the rapid in RapidDev

Need a dedicated strategic tech and growth partner? Discover what RapidDev can do for your business! Book a call with our team to schedule a free, no-obligation consultation. We'll discuss your project and provide a custom quote at no cost.