In light of COVID-19, please review the latest announcement regarding the Reserve with Google guidelines for supporting users and merchants during this time. Additionally, since we are operating with a limited support team, it may take longer to connect with us. Thank you for your patience, and we value your partnership.


What booking fields can be requested to be updated on a booking update that comes from Google?
We only expect start_time, duration and appointment state to be subject to update requests. For example, you can reschedule to a different slot or cancel an appointment. For any other changes, the booking must be canceled and rebooked.
If a partner deletes a merchant or service, does that delete all of its associated services and availability slots?
Yes, if a partner deletes a merchant or service, sub-levels are automatically disabled in our system.
Is it required to send real-time booking updates from the system? If so, can this be handled by incremental feed updates, such as updates to the availability field?
Yes, real-time booking updates are required. Updates are made by use of the Booking notification API. This ensures an optimal user experience. If a merchant has to cancel or update an appointment, they can send these updates to notify the user. The main scenarios that we envision for this are for when a booking must be cancelled or rescheduled.
Does the UpdateBookingRequest booking contain the whole booking from CreateBookingResponse or only updated fields?
Both. It contains a mask that contains the updated fields, and the whole booking from CreateBookingResponse. For example, for a booking cancellation, the FieldMask Path="status" booking object only has Booking.status = 'BookingStatus.Canceled'.
What does the UpdateBookingResponse need to include if it's a partial booking from UpdateBookingRequest?
The return value must contain the booking ID, and all updated fields reflect the new value.
What response time limits should our booking server support for the API calls?
The booking server calls are performed while the user is booking. This means that latency time is very important. Aim for sub-second latency. Your server should be able to handle five QPS with sub-second latency at least 95% of the time.
Should a partner generate the booking ID when a new booking in the CreateBooking API is called?
Yes, generate a booking ID on your end. We treat it as an opaque identifier.
What's the format and representation of timestamps within the booking cerver calls?
All timestamps must be in UNIX time format in UTC.
What happens if I get a "quota exceeded" error?
To handle such a message, retry with exponential backoff. If the quotas get reached regularly while you run ReplaceServiceAvailability, it's recommended that you switch to batch replace for availability to reduce the number of API calls.
When I batch update availability, how many slots should be included in a single API call?
We recommend that you aim for 100-1000 availability slots per call. If you spin off many threads, be sure to correctly implement exponential backoff in case you get throttled.
What bookings should be returned in the ListBooking gRPC call?
The ListBooking gRPC call returns all upcoming bookings that the user requests. It doesn't need to return bookings from the past.
Is there a version of the API that accesses the sandbox environment?
Yes, enable the Maps booking API (dev) in your Google Cloud project. It's only accessible to users of the Partner Portal that are automatically allowed access. Once enabled, all you need to do is change the endpoint of your API calls to