Google Calendar

Connect Gravity Forms to Google Calendar to create events, offer real-time appointment booking, and let visitors register for existing events.

Overview

The Gravity Forms Google Calendar Add-On connects Gravity Forms to Google Calendar, making it easy to create calendar events, accept bookings for available time slots, and manage registrations for existing events.

Create a Google Calendar feed for any form and choose whether to create a new event or register the submitter for an event already on your calendar. Event titles, descriptions, locations, dates, times, guests, reminders, and other details can be populated from form submissions using field mappings and Gravity Forms merge tags.

For appointment scheduling, the Booking Slot field displays times that are genuinely available based on your weekly hours, date exceptions, booking window, minimum notice, buffers, and busy periods across one or more calendars. For classes, workshops, and other scheduled events, the Calendar Event field lets visitors select an existing event while Gravity Forms tracks registrations and remaining capacity.

The result is a flexible way to turn WordPress forms into calendar-connected booking and event registration workflows without manually transferring submission details to Google Calendar.

Key Benefits

  • Create Google Calendar events automatically from Gravity Forms submissions
  • Let visitors book available appointment times with the Booking Slot field
  • Check multiple Google calendars for scheduling conflicts
  • Configure weekly availability, slot duration, buffers, minimum notice, and booking windows
  • Close specific dates or define special hours with date exceptions
  • Re-check availability during submission to help prevent double bookings
  • Let visitors register for events already listed in Google Calendar
  • Filter displayed events using a Google Calendar search query
  • Set registration capacity and display the number of remaining places
  • Hide full events or show them as unavailable
  • Optionally add registrants to Google Calendar events as guests
  • Map event start and end values from Gravity Forms Date and Time fields
  • Create events using a selected Booking Slot as the event time
  • Create timed, all-day, or recurring events
  • Build event titles, descriptions, and locations with Gravity Forms merge tags
  • Add mapped attendees and fixed guest email addresses
  • Let Google send calendar invitations to attendees
  • Add Google Meet conferencing links to created events
  • Use default calendar reminders or configure custom email and notification reminders
  • Mark created events as busy so they block future booking slots
  • Use conditional logic to control which submissions create events or registrations
  • Delay event creation until payment is received
  • Update created events when their Gravity Forms entries are edited
  • Cancel created events when entries are deleted, trashed, or refunded
  • Store calendar IDs, event IDs, event links, times, Meet links, and processing status with each entry
  • Use event, Meet, start-time, and end-time merge tags in confirmations and notifications
  • Reprocess feeds without creating duplicate calendar events
  • Connect directly through your own Google Cloud OAuth credentials

How It Works

Connect the add-on to Google Calendar using OAuth credentials from your own Google Cloud project, then create a Google Calendar feed from the settings area of a Gravity Form.

Each feed can perform one of two actions:

Create a Calendar Event

When a visitor submits the form, the add-on:

  1. Collects the dates, times, booking slot, attendee details, and other values configured in the feed.
  2. Builds the event title, description, and location using submitted values and merge tags.
  3. Creates a timed or all-day event on the selected Google Calendar.
  4. Optionally adds guests, sends invitations, creates a Google Meet link, applies reminders, and sets a recurrence rule.
  5. Stores the event ID, event link, Meet link, start time, end time, and processing status with the Gravity Forms entry.
  6. Makes those details available through merge tags for immediate use in confirmations and notifications.

Created events use deterministic IDs, so reprocessing the same feed and entry does not create duplicate events. If the entry is later edited, the corresponding calendar event is updated. The event can also be cancelled automatically when the entry is deleted, moved to the trash, or associated with a refunded payment.

Book an Available Time

Add the Booking Slot field to a form and configure its calendar, working hours, slot length, buffer, minimum notice, and booking window.

When a visitor chooses a date, the add-on:

  1. Generates potential appointment times from the configured availability rules.
  2. Checks the selected calendar and any additional conflict calendars for busy periods.
  3. Displays only the times that are currently available.
  4. Re-checks the selected time when the form is submitted.
  5. Temporarily holds the slot while the event is created to reduce the risk of simultaneous bookings.
  6. Creates the Google Calendar event using the confirmed booking time.

Register for an Existing Event

Add the Calendar Event field to a form and select the Google Calendar containing the events visitors can join.

When the form is displayed and submitted, the add-on:

  1. Loads upcoming events from the selected calendar.
  2. Optionally filters them using a title and description search.
  3. Counts existing Gravity Forms registrations for each event.
  4. Displays remaining capacity and hides or disables full events.
  5. Re-checks capacity when the form is submitted.
  6. Stores the registration and calendar event details with the Gravity Forms entry.
  7. Optionally adds the registrant to the Google Calendar event as a guest.

Gravity Forms remains the source of record for registrations, allowing entries to work with its notifications, exports, payments, and other add-ons while Google Calendar manages the event schedule. site using a location-level Private Integration Token.

Provide feedback here

Requirements

  • Gravity Forms 2.9 or newer
  • WordPress 6.5 or newer
  • PHP 7.4 or newer

Changelog

0.1.0-alpha.1

  • First alpha release of the Gravity Forms Google Calendar Add-On.
  • Added a feed action that creates a Google Calendar event from a submission, taking its time from mapped Date and Time fields with either a fixed duration or mapped end fields, plus support for all-day events and iCalendar recurrence rules.
  • View more

View full changelog

Changelog — gravityforms/gravityformsgooglecalendar

0.1.0-alpha.1

  • First alpha release of the Gravity Forms Google Calendar Add-On.
  • Added a feed action that creates a Google Calendar event from a submission, taking its time from mapped Date and Time fields with either a fixed duration or mapped end fields, plus support for all-day events and iCalendar recurrence rules.
  • Added a Calendar Event field so visitors can register for events that already exist on a calendar, with capacity counted from Gravity Forms entries, remaining places shown in the choice label, and an optional write-back that adds the registrant to the event as a guest.
  • Added a Booking Slot field that offers only times genuinely free on the target calendar, computed from a weekly schedule, date exceptions, and Google's freebusy data across the target and any conflict calendars.
  • Added Google Meet link creation, calendar invitations for mapped and fixed guests, and the {googlecalendar_event_link}, {googlecalendar_meet_link}, {googlecalendar_start} and {googlecalendar_end} merge tags.
  • Added a filterable Google Calendar column on the entries list, and a Send Test button on the feed.
  • Added cancel and reschedule syncing when an entry is edited, trashed, deleted, or its payment refunded, and support for holding event creation until payment is received.
  • Added bring-your-own OAuth 2.0 authentication, with an explicit reconnect notice when Google rejects the stored refresh token.

Documentation

Google Calendar Add-On Documentation


This section is a short usage guide for connecting Google Calendar, creating events from submissions, booking a free slot, and registering for an existing event. Requirements, limits, and the availability model are covered above.

Connect Google Calendar

Each site uses its own Google Cloud project. Calendar data does not pass through Gravity Forms.

  1. Create a project in the Google Cloud Console and enable the Google Calendar API.
  2. Configure the OAuth consent screen and set its publishing status to In production. If you leave it in Testing, Google expires the connection after seven days.
  3. Create an OAuth client ID of type Web application. Add the Authorized redirect URI shown on the add-on settings page.
  4. In WordPress, open Forms → Settings → Google Calendar.
  5. Paste the client ID and secret, save, then click Connect with Google. A green Connected to Google Calendar notice means it worked.

Google Calendar settings with client ID, secret, and connected status

The Labs notice on this screen is expected. This add-on is not officially supported.

Copy the redirect URI from your own site. It changes with the domain.

Create a feed

Open the form, then Settings → Google Calendar → Add New. Give the feed a name you will recognize later.

Feed settings with name, create-event action, and calendar

Set Action to Create a calendar event. Choose the calendar events should be written to. Use Refresh Calendars if a new calendar does not appear yet.

Leave holiday calendars unselected. Those calendars are read-only.

Add a Booking Slot field

Use this field when visitors should pick from times that are actually free.

Add a Booking Slot field, then choose the calendar whose free/busy time should drive the slots.

Booking Slot field settings with calendar, conflict calendars, slot length, and weekly hours

  • Slot length is the length of each offered time, in minutes.
  • Buffer, Minimum notice, and Bookable how far ahead can stay empty until you need them.
  • Weekly hours are the days and times you accept bookings.
  • Also check these calendars for conflicts is optional. Add another writable calendar here if it should also block slots. Do not rely on a holiday calendar; Google treats all-day holidays as Free, so they do not block times.

On the feed, set Time Source to A Booking Slot field on this form and select this field.

Add a Calendar Event field

Use this field when visitors should register for an event that already exists on the calendar.

Calendar Event field settings with calendar, search, and places per event

  • Choose the calendar that holds the events.
  • List events for the next (days) limits how far ahead the list goes. Leave it empty to use the default window.
  • Only events matching is an optional Google search against the event title and description.
  • Places per event is capacity for this form. Leave empty or 0 for unlimited. Remaining places are counted from this form’s entries.
  • Turn on Hide events that are full if sold-out events should disappear from the list.

On the feed, set Action to Register the submitter for an existing event.

Set the event time

Use Mapped date and time fields when the form has Date and Time fields, such as Preferred Date and Preferred Time.

Event Time settings with mapped date and time fields and a 60-minute duration

Typical booking setup:

  • Leave All Day off.
  • Map Start Date and Start Time.
  • Set Event End to A fixed duration and enter the length in minutes (60 is one hour).

Switch Time Source to a Booking Slot field when the form offers only free times instead of an open date and time.

Event details

Title is required. Merge tags are supported, for example Consultation: {First Name:1} {Last Name:2}.

Event details with title, description merge tag, and busy checkbox

  • Description and Location are optional. Merge tags work in both.
  • Leave Recurrence Rule empty for a single event. The placeholder FREQ=WEEKLY;COUNT=8 is only an example RRULE.
  • Keep Mark the calendar as busy on if this appointment should block later booking slots.

Guests

Map the submitter so Google can invite them.

Guests settings with attendee email, name, and invitation checkbox

  • Attendee Email should be the form Email field.
  • Attendee Name can be a single name field, or the first name if first and last are separate.
  • Additional Guests is a comma-separated list of fixed addresses invited to every event, such as a shared team inbox. Leave it empty if you do not need that.
  • Leave Let Google email a calendar invitation on so guests receive the invite from Google.

Conferencing and reminders

Turn on Add a Google Meet link when the meeting is virtual. The link is available on the entry and with the {googlecalendar_meet_link} merge tag after the event is created.

Conferencing and reminders with Google Meet enabled

Leave Override the calendar’s default reminders off unless you want this feed to replace the calendar’s usual reminder times.

After someone submits

  1. Open Forms → Entries for that form.
  2. Confirm a Google Calendar note or status on the entry, such as an event ID.
  3. Open the same calendar in Google Calendar and find the event at the submitted time.

If the event is missing, confirm Google is still connected, that the feed uses a writable calendar (not a holiday calendar), and that the entry note does not show an API error. Editing, trashing, or deleting the entry updates or removes the event. Existing calendar events are not deleted when you uninstall the plugin.