Skip to main content

Google Calendar

Sync Pana events to Google Calendar automatically, including Google Meet links for demos and team meetings.

What you get​

  • Pana workspace events sync to Google Calendar when Calendar sync is enabled on the event.
  • Google Meet links are added automatically for virtual, hybrid, and webinar events (and other events with no physical venue).
  • Demo bookings can use Google Meet mode to create a Calendar event + Meet link when scheduling a demo.
  • Existing workspace events can be synced when you first connect.

Google Calendar is connected per user — each person connects their own Google account in each workspace they use.


Google Meet: two paths​

FlowWhereMeet link
Pana event syncEvents with calendar sync enabledAdded on Google Calendar for virtual / hybrid / webinar formats
Demo bookingDemo Bookings → New demo → mode Google MeetCreated via Calendar API when Google Calendar is connected

Both use the same Google Calendar connection under Settings → Integrations.

Before you start​

  • A Google account with Google Calendar.
  • Workspace membership in Pana.
  • Platform operator: a Google Cloud OAuth Web client with the correct redirect URL and GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET on the backend (Railway).

Step 1 — Google Cloud OAuth client (platform operator)​

Create or use an OAuth 2.0 Web application client in Google Cloud Console → APIs & Services → Credentials.

Authorized redirect URI​

Register this exact callback URL on the OAuth client:

Production:

https://events.pana.space/auth/oauth/callback/?provider=google-calendar

Staging (use the staging frontend origin):

https://<staging-host>/auth/oauth/callback/?provider=google-calendar

Local development:

http://localhost:3000/auth/oauth/callback/?provider=google-calendar

:::caution Exact match required Include the trailing slash and the query string ?provider=google-calendar. This is not the same as Microsoft Calendar’s URI (/auth/oauth/callback with no query). Do not use legacy paths such as /connect-calendar unless your deployment explicitly uses them. :::

OAuth scopes​

Pana requests these scopes when users connect:

ScopePurpose
https://www.googleapis.com/auth/calendarCreate and update calendar events
https://www.googleapis.com/auth/calendar.readonlyRead calendars
https://www.googleapis.com/auth/userinfo.emailIdentify the connected account
https://www.googleapis.com/auth/userinfo.profileDisplay name on the integration card

Enable the Google Calendar API for the same Google Cloud project.

Backend environment (Railway)​

GOOGLE_CLIENT_ID=<OAuth Web client ID>
GOOGLE_CLIENT_SECRET=<OAuth Web client secret>

Use GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET — not duplicate GOOGLE_OAUTH_CLIENT_ID / GOOGLE_OAUTH_CLIENT_SECRET pointing at a different app. If both pairs exist, Pana prefers GOOGLE_CLIENT_* when set.

Redeploy the backend after changing credentials.

While the app is in Testing mode, add each user who will connect as a Test user on the consent screen. Otherwise Google returns access_denied even when the redirect URI is correct.


Step 2 — Connect in Pana​

  1. Go to Settings → Integrations.
  2. Find Google Calendar under Calendar.
  3. Click Connect.
  4. Choose your Google account and grant calendar access.
  5. Return to Pana; the card shows as connected.

You can also connect during onboarding or from Connect Calendar in the app.

No Client ID paste is required in the UI — credentials come from the platform backend.


How sync works​

When an event in Pana has calendar sync enabled:

  1. Pana uses your connected Google account for that workspace.
  2. Event title, time, description, location, and attendees are pushed to Google Calendar.
  3. For virtual, hybrid, or webinar events (or events without a physical venue), Pana also requests a Google Meet link on the calendar entry.
  4. Updates to the Pana event update the calendar entry (Meet is added on update if missing).
  5. If sync fails (for example no connected account), errors are stored on the event for admins to review.

The Meet link is stored on the Pana event as google_calendar_meet_link in custom fields after a successful sync.

Override Meet on sync​

Advanced: set google_meet_on_calendar_sync in the event’s custom fields:

  • true — force Meet even for in-person events
  • false — skip Meet even for virtual events

On first connect, Pana may sync existing events in the workspace to your calendar.


Demo bookings with Google Meet​

  1. Connect Google Calendar under Settings → Integrations.
  2. Open Demo Bookings → New demo.
  3. Choose meeting mode Google Meet.
  4. Enter date, time, and lead details — Pana creates the Calendar event and Meet link automatically.

If Google Calendar is not connected, you can still schedule a demo manually and paste a Meet link.


Disconnect​

Turn off the toggle on the Google Calendar card. Previously synced calendar entries are not automatically removed from Google.


Troubleshooting​

IssueWhat to try
redirect_uri_mismatchRedirect URI in Google Cloud must be https://events.pana.space/auth/oauth/callback/?provider=google-calendar exactly (trailing slash + query string). Do not use Microsoft’s URI (/auth/oauth/callback).
access_deniedApp may be in Testing mode — add the user as a Test user on the OAuth consent screen.
Wrong Google client in OAuth URLRailway GOOGLE_CLIENT_ID must match the OAuth client where the redirect URI is registered. Remove conflicting GOOGLE_OAUTH_CLIENT_ID.
Events not on Google CalendarConfirm calendar sync is enabled on the Pana event; ensure you connected Google in this workspace.
No Meet link on synced eventEvent may be in-person only; use virtual/hybrid/webinar type, or set custom field google_meet_on_calendar_sync: true. Re-save the event after connecting Google Calendar.
Demo has no Meet linkConnect Google Calendar; use mode Google Meet in New demo (not Calendly).
OAuth popup blockedAllow pop-ups for events.pana.space during connect.
“No connected Google account” on eventA workspace member with calendar access needs to connect Google Calendar under Settings → Integrations.

Callback URL checklist​

  • https://events.pana.space/auth/oauth/callback/?provider=google-calendar
  • Staging: https://<staging-host>/auth/oauth/callback/?provider=google-calendar
  • Trailing slash and ?provider=google-calendar included
  • Same OAuth client as GOOGLE_CLIENT_ID on Railway
  • Google Calendar API enabled in Cloud Console
  • Test users added while app is in Testing mode

API reference​

Integrations API — Google Calendar