[New Plugin] Calendar booking - Get rid of calendly

What’s up everyone,

Just reaching out to share that we just launched our Calendar Booking plugin for Bubble. It’s been a massive help for all of us at the Studio as we’re building scheduling features for our clients. It allows you to design your own interface, so you have complete freedom on how to use it, and there’s a Google Cal integration coming very soon.

We’d love to hear your thoughts! :wave:


Youssef from Minimum Studio


Hey Youssef. Cannot believe there’re no replies here yet because your Calendar Booking plugin is amazing. I was able to set everything up really quick with the help of your docs and example. Big thank you.

However, it seems I need a bit your help to make my booking app perfect. I’m struggling with timezones - available timeslots always show the same range. I mean whatever timezone I use I see just the same ranges and slots which obviously incorrect. Please see screenshots below

I also use your Current timezone plugin (and I used it to show timezones on screenshots) and I must say in my database when an appointment is created its timeslot is different from the shown above, which means when an appointment is created it considers timezones. But what about available timeslots shown before an appointment is created? Hope this makes sense and hope you can help me

This looks great, is there a way for the client to search availability of all service providers at once?

@nymichael can you send a screenshot of the plugin setup (just a screenshot in the editor)? it might be correct just confusing, the timeslots are always displayed in the that is looking at the timeslots

the timezone field is for making sure you book the right time for the calendar of the person / resource you are booking (so my 9pm is could be their morning)

if you want to see a different set of timeslots there is a way to test it with chrome, if you reply with the screenshot i can make a loom for you

the timezone is for

yeah you can build that kind of stuf, here’s how we use it in an app that’s live (only 1 person is in range for this address, normally there’s more ppl but you get the point)

Great plugin, can create recurring events?

Sure, here it is

And I can give can you the bigger picture, the flow, probably it’ll be also helpful for other users, and probably you’ll be able to point me where is the mistake

1. So, I have a coach in my app who lives in New York and who creates in his account a service with its availability. Of course this coach minds his timezone when creating this availability

2. When SAVE button is clicked service and availability are created. Availability is a number range. Here

3. If clients are from New York they can see correct timeslot to book

4. If clients, for example, are from Paris, they still see the same timeslot (screenshot is below), which is incorrect, because a coach is available at 5pm NY time, which is 10pm in Paris. So I expect clients from Paris to see the slot as 10pm-11pm

5. Timeslots’ Appearance is made this way, just as your example from notion docs

Thank you in advance

hey @nycmichael can you try putting the timezone field on America/New_York and not use the current timezone plugin? Have a bit more time to dig deeper but it could just be that i used the current timezone plugin for the demo but you should set the timezone that you store for the coach. (so you would take it from Coach's Saved Timezone or something)

we built a complementary plugin that does exactly this → https://forum.bubble.io/t/new-plugin-recurring-date-scheduler

1 Like

Why other plugin?

1 Like

because it’s a different thing :smile:

@nymichael pretty sure we fixed your bug in the latest version 1.0.2 can you give it a try?

@Kayami Hi, great thanks you keep working with this request. And I’m sorry for not updating here for some time - this is my side project and I was busy last couple of weeks

However last week I tried several things and couldn’t resolve my problem

Today, quick checking of your updated plugin unfortunately didn’t bring results. But I must say I wasn’t attentive today, I’m going to dive deep this weekend and try again and I will update you and this thread

Maybe before the weekend you can share some details please? Maybe screenshots? How it’s better to configure Available slots element? Should I still use your Timezone plugin or it’s better to use Current date/time or UTC (I feel you tried something with offsets)?

And btw - do I need to drag and drop Available slots element and configure it from scratch after plugin update? Or my current configured element was updated with the plugin?

Thank you!

I have been running into the same problem mentioned by @nymichael above. I’ve tried storing and fetching the coach’s timezone instead of using the current timezone plugin, but the available slots are still incorrect. Any ideas?

@Kayami @dondre Two news. Not good one - I’m afraid I cannot confirm recent plugin fixes worked. The good one - I don’t need those fixes, I figured out what to do to solve my problem and happy to share below. I must say the below can look somehow overloaded but it worked for me and at the end of the day it’s just plain maths in time manipulation and it has no affect to the app speed

1. Forget about timezones, the actual thing you need is time offsets, which are the difference in hours from Coordinated Universal Time (UTC). So, I decided to store users’ offsets in my database. I store not just offset but also offset*-1, I’ll explain further why


2. Users in their accounts see their time zones in GMT +7, GMT -4, etc. format (GMT is the same as UTC), where +7 or -4 is exactly offsets, and they can change their time zone btw. I know there is a way to make something more friendly, like show to users Europe/Paris time zone format and count offsets in the background but for now I have GMTs

Here’s how it looks in editor. Initial content is what user entered and saved

But also there is a conditional to auto define user offset at the very beginning. In this conditional you can see how to fetch current user offset from his/her device - use custom format “o”, this will bring you something like +0600, then you need to use find and replace: - find 0 and replace with nothing, and then converted to number

Then workflow by button, remember to store not just offset but also offset*-1


3. For Available Slots use Timezone UTC

4. Then when showing slots in your repeating group use a dynamic expression somelike mine

Basically you need to first subtract from date range:start(:end) your coach’s offset (because when they create availabilities they have their local time in mind) and then add current user’s offset (who wants to make an appointment with a coach)

For that use +(hours): function. BTW there is no -(hours): function, and that’s why you need to store offsets*-1

Also, important - last step with :formatted as, it should refer to UTC as well

5. And one last important thing. For Available Slots’ Busy field modifications needed. To search for appointments you need appointments dates to match, that’s why use expression somelike mine - first round picked date down to day, then change hours to zero and then add the offset of a client who wants to make an appointment, which for me is current user

And that is it!

1 Like

Firstly, thanks so much for building this plugin! It is a life saver! I’m running into the following error and not sure what is causing it. I’ve tried to debug it but with no luck. It kicks out the following error message.

Any idea as to what is causing this?

Note: I’m running the latest version of the plugin