Connect Google Calendar

Link each artist's Google Calendar so appointments are pushed to Google and busy events block booking slots.

Updated

Open this in the app

Google Calendar is connected per artist, with each artist's own Google account. Once connected, appointments made in TattooBooking appear on that Google calendar, and events already on the Google calendar can block booking slots.

Before you start

  • Each artist needs a Google account. A dedicated shop Google account works well — you can give other people access to it without sharing a personal inbox — but a personal Gmail is fine too.
  • A shop owner or manager can start the connection for another artist, but they will need that artist's Google login at the Google sign-in screen. An artist can always connect their own.
  • There is no plan requirement for calendar sync.

Connect

  1. In the app, open Settings and choose the Integrations tab.
  2. Under Artist Calendars, find the artist's row. Your own row is marked You.
  3. Press Connect Your Calendar (or Connect for … on another artist's row — the app asks you to confirm, because you will need to log in with their Google account).
  4. Sign in to Google and press Allow. Keep the Calendar checkbox ticked on Google's consent screen — if it is unticked the app rejects the connection with "Google Calendar access was not granted. Please reconnect and keep the Calendar checkbox ticked on the Google consent screen."
  5. You land back on the Integrations tab with "Google Calendar connected" and the row shows ✓ Connected.

The Artists Connected counter at the top of the tab shows how many of your artists are linked.

You can also connect from Booking → Settings, on the artist's calendar tab, with the Connect Google Calendar button.

Choose what the calendar does

Open Booking → Settings, pick the artist, and open the calendar tab. Under Calendar Role:

  • Primary Calendar — "TattooBooking appointments will be added to this calendar. Only ONE calendar can be primary."
  • Blocking Calendar — "Check this calendar for conflicts when booking new appointments. Multiple calendars can be blocking."

When Blocking is on, a Calendars to Check list appears with every calendar on that Google account. Tick the ones that should block bookings; your Google primary calendar is checked by default.

If a calendar you ticked is later deleted or no longer shared with that Google account, the tab says "A selected calendar is no longer in this Google account." and lists it. Press Remove next to it, then save.

The same tab has:

  • Buffer Times — "Add buffer time before and after existing events to prevent back-to-back bookings." Choose no buffer, 15, 30 or 45 minutes, or 1 hour on either side.
  • Ignore all-day events — so holidays and birthdays do not block a whole day.
  • Ignore tentative events — so "Maybe" events do not block.
  • Ignore Events by Title — add titles such as "Lunch" or "Break" that should never block booking times.

Press Save Calendar Settings.

What syncs, and which way

TattooBooking → Google. New appointments — from your booking links, from the calendar, and from walk-in consent — are created as events on the artist's Primary calendar. Time blocks you add in the app go across too.

Google → TattooBooking. Busy events on a Blocking calendar remove those times from the artist's public booking availability. Events the app pushed itself are recognised and do not block twice. A Google event is a soft conflict for staff: when you create an appointment inside the app on top of one, you are warned and can choose to go ahead; clients booking through your public links never can.

The public booking page checks the artist's Google calendar every time a client looks for a time. If Google can't be reached at that moment, the page shows no times and says "We couldn't check this artist's calendar just now, so no times are showing. Please try again in a few minutes." — it never offers a time it couldn't check. Staff booking inside the app is not affected.

External Google events are also shown on the app's Calendar page alongside your appointments.

Moving an appointment in Google

Dragging an appointment to a new time in Google Calendar moves it in TattooBooking as well. It is treated exactly like a reschedule made in the app: the appointment moves to the new time, the client receives the standard reschedule email with the old and new times and an updated calendar file, and their reminders are re-timed to match.

A few things to know:

  • Only the time moves. The appointment keeps the timezone it was booked in, so the client sees the new time in the same zone as before.
  • Moving onto a time that is already busy — another appointment, a time block, or a Google event — still goes through, the same as when staff drag an appointment onto a busy slot in the app.
  • Changing an appointment's length in Google changes it in the app too. Multi-day appointments keep their booked number of days.
  • Turning an appointment into an all-day event, or removing its time, does not move it; the app leaves the appointment as it was.
  • Deleting the event from Google cancels the appointment.

If a move should not have happened, reschedule the appointment back from the app's Calendar page — the client gets the standard reschedule email again with the corrected time.

Keeping it in sync

Google tells TattooBooking about changes as they happen, so the app does not poll. If something looks stale, press Sync Now on the artist's row under Integrations; it pushes that artist's upcoming appointments to Google again and reports how many were synced.

If a row shows ⚠️ Reconnect Required, ⚠️ Not Syncing or ⚠️ Token Expired, Google has stopped accepting the saved authorisation — usually because access was revoked from the Google side or the password changed. Press Reconnect, sign in again, and keep the Calendar checkbox ticked. Reconnecting repairs the existing connection and keeps the artist's calendar settings — blocking calendars, buffers and ignore rules. (If you sign in with a different Google account, the other settings are kept and Calendars to Check goes back to that account's primary calendar.)

While a connection needs reconnecting:

  • The artist's public booking pages show Online booking is paused with the message "This artist's calendar connection needs attention. Please reach out to the artist to fix their calendar connection on tattoobooking.com." Clients can still leave their name and email, which lands on the artist's waitlist.
  • Private links and booking links for that artist don't let clients book until the calendar is reconnected. When you create or send one, the app shows a warning; the link starts working as soon as the calendar is reconnected.
  • Staff can still book the artist from the dashboard and the mobile app.
  • Appointments still appear on the TattooBooking calendar; they are just not reaching Google.

After reconnecting, press Sync Now to copy any appointments booked in the meantime onto the Google calendar.

Disconnect

On the artist's row under Integrations, press Disconnect and confirm. The app stops listening for changes from that Google calendar, tells Google to revoke its access, and forgets the connection — including its calendar settings (blocking calendars, buffers, ignore rules). To fix a connection that has stopped working, use Reconnect instead; it keeps those settings.

If the same Google account is also connected for another artist or for a shop calendar, Disconnect leaves Google's access in place so those connections keep working.

Nothing is removed from TattooBooking — appointments, clients and history all stay. Events already on the Google calendar are left where they are.

Shop calendar

A shop can have its own Google connection too, separate from any artist. Open the Calendar page, choose the shop calendar, and use Connect Google Calendar in the Shop Calendar settings. Shop events — guest artists, art nights, closures — sync out to that Google calendar, and events created directly in Google appear on the shop calendar in the app as read-only. Only the shop owner or a shop admin can change this connection.