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
| Flow | Where | Meet link |
|---|---|---|
| Pana event sync | Events with calendar sync enabled | Added on Google Calendar for virtual / hybrid / webinar formats |
| Demo booking | Demo Bookings → New demo → mode Google Meet | Created 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_SECRETon 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:
| Scope | Purpose |
|---|---|
https://www.googleapis.com/auth/calendar | Create and update calendar events |
https://www.googleapis.com/auth/calendar.readonly | Read calendars |
https://www.googleapis.com/auth/userinfo.email | Identify the connected account |
https://www.googleapis.com/auth/userinfo.profile | Display 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.
OAuth consent screen
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
- Go to Settings → Integrations.
- Find Google Calendar under Calendar.
- Click Connect.
- Choose your Google account and grant calendar access.
- 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:
- Pana uses your connected Google account for that workspace.
- Event title, time, description, location, and attendees are pushed to Google Calendar.
- For virtual, hybrid, or webinar events (or events without a physical venue), Pana also requests a Google Meet link on the calendar entry.
- Updates to the Pana event update the calendar entry (Meet is added on update if missing).
- 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 eventsfalse— 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
- Connect Google Calendar under Settings → Integrations.
- Open Demo Bookings → New demo.
- Choose meeting mode Google Meet.
- 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
| Issue | What to try |
|---|---|
redirect_uri_mismatch | Redirect 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_denied | App may be in Testing mode — add the user as a Test user on the OAuth consent screen. |
| Wrong Google client in OAuth URL | Railway GOOGLE_CLIENT_ID must match the OAuth client where the redirect URI is registered. Remove conflicting GOOGLE_OAUTH_CLIENT_ID. |
| Events not on Google Calendar | Confirm calendar sync is enabled on the Pana event; ensure you connected Google in this workspace. |
| No Meet link on synced event | Event 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 link | Connect Google Calendar; use mode Google Meet in New demo (not Calendly). |
| OAuth popup blocked | Allow pop-ups for events.pana.space during connect. |
| “No connected Google account” on event | A 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-calendarincluded - Same OAuth client as
GOOGLE_CLIENT_IDon Railway - Google Calendar API enabled in Cloud Console
- Test users added while app is in Testing mode