TutorialGravity Forms Google Calendar Integration: Create Events From Form Submissions

You can connect Gravity Forms to Google Calendar and automatically create a calendar event after a form submission using GravityWP API Connector and the Google Calendar API.

In our tested workflow, Gravity Forms sent the event title, date, start and end times, location, organizer details, and event notes to Google Calendar.

Google Calendar then created the event and returned its Event ID and direct Event URL. GravityWP API Connector saved both values, plus the full API response, back into the original Gravity Forms entry.

The completed workflow is:

Gravity Forms submission → GravityWP API Connector → Google Calendar API → Google Calendar event → returned event data saved to Gravity Forms

This tutorial follows the exact setup we tested in August 2026.

What Does This Gravity Forms Google Calendar Integration Do?

This Gravity Forms integration turns a form submission into a new Google Calendar event.

The user enters the event details in WordPress. When the form is submitted, GravityWP API Connector sends a POST request directly to the Google Calendar API.

Our workflow maps the data like this:

Gravity Forms dataGoogle Calendar destination
Event TitleEvent summary
Organizer NameEvent description
Organizer EmailEvent description
Event NotesEvent description
Event Date + Start TimeEvent start
Event Date + End TimeEvent end
LocationEvent location
Google Event IDSaved back to Gravity Forms
Google Event URLSaved back to Gravity Forms
Full Google responseSaved back to Gravity Forms

This is an automated one-way event creation workflow.

It is not a continuous two-way sync. If someone later edits the event inside Google Calendar, this setup does not automatically update the original Gravity Forms entry.

GravityWP API Connector can send GET and POST requests using form values and map values from API responses back into Gravity Forms fields.

For more information about the add-on, see the GravityWP API Connector product page.

What Do You Need to Connect Gravity Forms to Google Calendar?

Before you start, you need:

  • A WordPress website
  • Gravity Forms
  • GravityWP API Connector
  • A Google account
  • Access to Google Calendar
  • Access to Google Cloud Console
  • A calendar where you want the events to be created

You do not need Zapier or custom PHP for the workflow we tested.

We use Google Cloud because Google Calendar API requests need a Google Cloud project, an enabled Calendar API, and OAuth credentials. Google lists creating a Cloud project, enabling the required API, configuring OAuth consent, and creating credentials as part of its standard Workspace API setup.

If you want to compare API-based integrations with native add-ons and webhooks, see our .

Step 1: How Do You Create the Gravity Forms Event Request Form?

Create a new Gravity Form.

We named our test form:

Google Calendar Event Request Form

Add these user-facing fields:

FieldGravity Forms field type
Event TitleSingle Line Text
Organizer NameName
Organizer EmailEmail
Event DateDate
Start TimeTime
End TimeTime
LocationSingle Line Text
Event NotesParagraph Text

Which fields should store the Google Calendar response?

Add three more fields:

FieldPurpose
Google Calendar Event IDStores Google’s returned event ID
Google Calendar Event URLStores the direct link to the created event
Google Calendar API ResponseStores the full JSON response

These are storage fields. Visitors do not need to enter them.

Set them to Administrative visibility if you do not want them displayed on the public form.

Use a Paragraph Text field for Google Calendar API Response because the JSON response can be long.

Which date and time formats should you use?

For our tested setup, Event Date used:

yyyy-mm-dd

The Time fields used the 24-hour format.

Gravity Forms supports both 12-hour and 24-hour formats for Time fields.

Our test submission later used:

Date: 2026-09-18
Start Time: 14:00
End Time: 15:00

That makes it easy to construct the date-time values required by Google Calendar.

Step 2: How Do You Create a Google Calendar for the Form Events?

You can use an existing calendar, but we created a separate calendar for testing.

In Google Calendar, go to:

Settings → Add calendar → Create new calendar

We named ours:

Gravity Forms Event Test

A separate calendar is useful during testing because the events created by Gravity Forms stay separate from your normal calendar.

We also selected:

(GMT+08:00) Philippine Standard Time

because our test workflow used the Google Calendar timezone:

Asia/Manila

You do not have to use Asia/Manila. Use the timezone that matches the events you are creating.

We will add the timezone directly to the API request later.

Google Calendar create new calendar screen with Philippine Standard Time for a Gravity Forms integration.
A separate Google Calendar was created for the Gravity Forms event test with Philippine Standard Time selected.

Step 3: How Do You Create the Google Cloud Project?

Open Google Cloud Console and create a new project.

We used:

Gravity Forms Google Calendar

The generated Project ID will be different for every Google Cloud project, so you do not need to copy ours.

Once the project is created, make sure it is selected at the top of Google Cloud Console.

Google Cloud project dashboard for the Gravity Forms Google Calendar integration.
Google Cloud project used to configure the Google Calendar API and OAuth access for the Gravity Forms integration.

Step 4: How Do You Enable the Google Calendar API?

With your project selected, open:

APIs & Services → Library

Search for:

Google Calendar API

Open it and click:

Enable

Google requires the relevant product API to be enabled before its OAuth scopes and API methods can be used by the project. 

The API is now available to the project, but we still need authorization.

Step 5: How Do You Configure Google OAuth for the Integration?

Open the Google Auth Platform for your project.

We need to configure the consent screen, audience, scope, and OAuth client.

How do you configure the OAuth branding?

Open:

Google Auth Platform → Branding

For our test, we used:

App name:
GravityWP Google Calendar

User support email:
The Google account used for the integration.

For the authorized domain, enter your own WordPress site’s root domain.

For example:

example.com

Do not enter the full callback URL into the Authorized domains field.

Google’s current OAuth configuration uses the Branding, Audience, Data Access, and Clients areas to configure the app and permissions. 

Google Auth Platform branding settings for the Gravity Forms Google Calendar integration.
OAuth branding settings for the Google Calendar connection used by GravityWP API Connector.

Which OAuth audience should you use?

For our development test, we used:

User type: External
Publishing status: Testing

Then we added the Google account we planned to authorize under:

Audience → Test users

Google OAuth test user added for the Gravity Forms Google Calendar integration.
The Google account used to authorize the integration was added as an OAuth test user.

Google states that External apps in Testing are available to the users added to the test-user list.

There is an important limitation.

For an External app in Testing, Google says authorizations that use scopes beyond basic identity permissions can expire after seven days. An offline refresh token issued to a test user can also expire.

That is fine for this development tutorial.

For a long-term production integration, review Google’s current publishing and verification requirements before relying on Testing mode.

Which Google Calendar OAuth scope do you need?

Open:

Data Access → Add or remove scopes

We added:

https://www.googleapis.com/auth/calendar.events
Google Calendar events OAuth scope selected in Google Auth Platform Data Access.
The calendar.events OAuth scope gives the integration the event access required by the tested workflow.

Google’s events.insert endpoint accepts calendar.events as one of its authorization scopes.

In our Google Cloud interface, this appeared under Sensitive scopes.

This gives the integration the Calendar event access needed for the workflow without requesting broader permissions than we need.

Step 6: How Do You Create the Google OAuth Client?

Open:

Google Auth Platform → Clients → Create client

Select:

Application type: Web application

We named the client:

GravityWP Google Calendar

Leave Authorized JavaScript origins blank for this server-side OAuth setup.

Under Authorized redirect URIs, add the Redirect URL shown by GravityWP API Connector.

It follows this structure:

https://yourdomain.com/wp-json/gwpapiconnector/v1/oauth/callback
Google OAuth web application client with the GravityWP API Connector redirect URI.
The Google OAuth web application client uses the exact GravityWP API Connector callback URL as its authorized redirect URI.

Use the exact URL displayed by your own API Connector installation.

Google requires the redirect URI supplied during authorization to exactly match one of the authorized redirect URIs configured for the OAuth client. A mismatch causes a redirect_uri_mismatch error. 

Create the client.

Google will provide:

  • Client ID
  • Client Secret

Keep the Client Secret private.

Do not include it in screenshots, public documentation, Git repositories, or form fields.

Step 7: How Do You Connect Google Calendar to GravityWP API Connector?

In WordPress, go to:

Forms → Settings → API Connector

Click:

Add New API Connection

Use this configuration:

SettingValue
API NameGoogle Calendar API
Sluggoogle-calendar-api
Base URLhttps://www.googleapis.com
Authentication methodOAuth 2.0 (Authorization Code)
Client IDYour Google OAuth Client ID
Client SecretYour Google OAuth Client Secret
Authorization URLhttps://accounts.google.com/o/oauth2/v2/auth
Token URLhttps://oauth2.googleapis.com/token
Scopehttps://www.googleapis.com/auth/calendar.events
Enable PKCEOff

GravityWP API Connector supports OAuth 2.0 Authorization Code connections using a Client ID, Client Secret, Authorization URL, Token URL, scope, and redirect URL.

You can read the full setup guide in the GravityWP OAuth 2.0 Authorization Code documentation.

Which extra Google OAuth parameters should you add?

Under Extra Authorization Parameters, we used:

access_type=offline
prompt=consent

Google recommends access_type=offline for web-server applications that need to refresh an access token when the user is not present. Google also supports prompt=consent to explicitly request consent during authorization. 

Save the API connection.

Step 8: How Do You Authorize the Google Calendar Connection?

After saving the API configuration, click:

Authorize

Sign in using the Google account that you added as a Test user.

Review the access request and approve it.

Our callback page returned:

Authorization Successful!

GravityWP API Connector Google Calendar OAuth authorization successful message.
Successful OAuth authorization confirms that GravityWP API Connector can authenticate with Google Calendar.

Back in API Connector, the Google Calendar connection showed:

Authorized

At this point, OAuth is working.

The next step is identifying which calendar should receive the events.

Step 9: How Do You Find the Google Calendar ID?

Open Google Calendar.

Go to:

Settings → Settings for my calendars → select your calendar → Integrate calendar

Find:

Calendar ID

A secondary calendar ID may look like:

xxxxxxxxxxxxxxxxxxxxxxxx@group.calendar.google.com

Copy your own Calendar ID.

Google Calendar ID shown in the Integrate calendar settings for a Gravity Forms integration.
The Calendar ID identifies which Google Calendar receives events created from Gravity Forms submissions.

Google uses calendarId to identify the calendar where an event should be created. Its API also supports the special value primary when you want to target the signed-in user’s primary calendar.

For this tutorial, we used the specific ID for our Gravity Forms Event Test calendar.

Step 10: How Do You Create the Google Calendar POST Feed?

Now return to WordPress.

Open:

Forms → Google Calendar Event Request Form → Settings → API Connector

Add a new feed.

We named ours:

Create Google Calendar Event

Use:

SettingValue
API ConfigurationGoogle Calendar API
Request MethodPOST
Body formatJSON body
Endpoint URL/calendar/v3/calendars/YOUR_CALENDAR_ID/events
Input typeRegular Field input

Replace YOUR_CALENDAR_ID with the ID copied from Google Calendar.

The request resolves to:

POST https://www.googleapis.com/calendar/v3/calendars/YOUR_CALENDAR_ID/events

Google documents this as the events.insert endpoint for creating an event.

Google requires start and end in the event resource. Other fields such as the summary, description, and location are optional.

Which request header should you add?

Under Headers, add:

Content-Type
application/json

Do not add the OAuth Authorization header manually.

API Connector handles authorization through the Google Calendar API connection we already authorized.

GravityWP API Connector POST feed configured to create Google Calendar events from Gravity Forms.
The API Connector feed sends a JSON POST request to the Google Calendar events endpoint on form submission.

Step 11: How Do You Map Gravity Forms Fields to the Google Calendar Event?

Under:

Query String (GET) / Body Parameters (POST)

add the following mappings.

KeyValue Property
summary{Event title:1}
location{Location:8}
descriptionOrganizer Name + Organizer Email + Event Notes
start.dateTime{Event Date:5}T{Start Time:6}:00
start.timeZoneAsia/Manila
end.dateTime{Event Date:5}T{End Time:7}:00
end.timeZoneAsia/Manila
Gravity Forms fields mapped to Google Calendar event parameters in GravityWP API Connector.
GravityWP API Connector maps the submitted event fields to Google Calendar and stores the returned event ID and URL.

Our exact tested description mapping was:

{Organizer Name (First):3.3} {Organizer Name (Last):3.6} {Organizer Email:4} {Event Notes:9}

Gravity Forms merge tags insert submitted field values dynamically. Field merge tags use the field label and field ID inside curly brackets. 

Why is there a T between the event date and time?

The date and time need to form a valid timed-event value.

For example:

2026-09-18

plus:

14:00

becomes:

2026-09-18T14:00:00

Google’s Calendar documentation uses start.dateTime and end.dateTime for timed events. It also supports a separate timeZone property for the event’s start and end.

Our request therefore used:

start.dateTime
2026-09-18T14:00:00
start.timeZone
Asia/Manila

and:

end.dateTime
2026-09-18T15:00:00
end.timeZone
Asia/Manila

Why don’t we map Organizer Email to Google’s organizer field?

Our Gravity Forms field is named Organizer Email, but it represents the person submitting the event request.

We deliberately placed that information in the event description.

The Google Calendar event itself is created on the calendar authorized through Google OAuth. In our successful response, Google’s organizer information represented the Google Calendar that owned the event.

We did not try to replace that organizer with the submitted email address.

We also did not add the submitted email as an attendee in this test.

This tutorial documents only the workflow we actually tested.

Step 12: How Do You Save the Google Calendar Event ID and URL in Gravity Forms?

Under Target Fields, add:

Gravity Forms fieldResponse key
Google Calendar Event IDid
Google Calendar Event URLhtmlLink

Google returns an Event resource after a successful events.insert request.

Then set:

API request trigger → On form submission

Enable:

Store full response

and select:

Google Calendar API Response

GravityWP API Connector can map values from an API response into Target Fields. Its Store Full Response option can also save the complete response when the request runs on form submission. 

This setup gives us three useful pieces of data:

  • Google Calendar Event ID
    Identifies the event returned by Google.
  • Google Calendar Event URL
    Provides a direct link to the created event.
  • Google Calendar API Response
    Stores the full response for testing and troubleshooting.

Save the feed.

Step 13: How Do You Run the Gravity Forms Google Calendar Integration Test?

We submitted the following real test data:

Event Title:
GravityWP Google Calendar Test

Organizer Name:
Alex Morgan

Organizer Email:
alex.morgan@example.com

Event Date:
September 18, 2026

Start Time:
14:00

End Time:
15:00

Location:
Online Meeting

Event Notes:
Testing Google Calendar event creation from Gravity Forms using GravityWP API Connector.

Submit the form.

Gravity Forms Google Calendar test submission with event title, date, time, location, and event notes.
Test submission used to create a Google Calendar event from Gravity Forms through GravityWP API Connector.

Step 14: How Do You Verify the Returned Google Calendar Data in Gravity Forms?

Open:

Forms → Entries

Then open the test submission.

Our test entry contained:

  • Google Calendar Event ID
    Google returned a unique ID for the event.
  • Google Calendar Event URL
    Google returned a direct htmlLink to the calendar event.
  • Google Calendar API Response
    The stored response included the new event data, including:
    • Event ID
    • Event URL
    • Event title
    • Description
    • Location
    • Start date and time
    • End date and time
    • Timezone
    • Calendar organizer information

This confirms that the API request was not only sent. Google actually created an event and returned an Event resource.

Gravity Forms entry showing the returned Google Calendar Event ID, Event URL, and API response.
The successful Gravity Forms entry stores the Google Calendar Event ID, direct event URL, and full API response.

Step 15: How Do You Verify the Event in Google Calendar?

Open the same Google Calendar that you used in the endpoint.

Our event appeared on:

Friday, September 18, 2026

with:

Time: 2:00 PM–3:00 PM
Title: GravityWP Google Calendar Test
Location: Online Meeting

Google Calendar event created from a Gravity Forms submission using GravityWP API Connector.
The completed test event appears in Google Calendar from 2:00 PM to 3:00 PM with the submitted title, location, and details.

Opening the event also displayed the information submitted through the description field.

This confirmed the full workflow:

Gravity Forms → API Connector → Google Calendar API → new event → response saved to Gravity Forms

What Did Our Gravity Forms Google Calendar Integration Actually Prove?

Our test successfully created a real Google Calendar event from a Gravity Forms submission.

The submitted event data was dynamic. The event was not manually created in Google Calendar.

The workflow successfully sent:

  • Event title
  • Organizer contact details
  • Event notes
  • Event date
  • Start time
  • End time
  • Location
  • Timezone

Google Calendar then returned the event information.

GravityWP API Connector saved the returned Event ID, Event URL, and complete response inside the original Gravity Forms entry.

This gives administrators a direct connection between the WordPress submission and the related calendar event.

Why Did Google Calendar Initially Show the Event at the Wrong Time?

During our first test, the Gravity Forms submission used:

14:00

with:

Asia/Manila

However, the Google Calendar interface initially displayed the event at:

6:00 AM

The API request was not wrong.

Google Calendar itself was displaying the calendar using:

GMT+00

Manila is UTC+8, so:

14:00 in Manila
=
06:00 UTC

We opened:

Google Calendar → Settings → General → Time zone

and changed the primary timezone to:

(GMT+08:00) Philippine Standard Time

After that change, the same event displayed correctly as:

2:00 PM–3:00 PM

We did not need to change the API feed.

The tested API mapping remained:

start.timeZone → Asia/Manila
end.timeZone → Asia/Manila

This distinction is important. The event’s timezone and the timezone used by the Google Calendar interface can affect how the same moment appears on screen.

Google Calendar primary time zone set to Philippine Standard Time for the tested event.
Changing Google Calendar to Philippine Standard Time made the 14:00 event display at the expected 2:00 PM.

What Should You Check If the Google Calendar Event Is Not Created?

Is the Google Calendar API enabled?

Open Google Cloud and confirm the Google Calendar API shows as Enabled.

If it is not enabled, the project cannot use the Calendar API.

Is the OAuth connection authorized?

Go to:

Forms → Settings → API Connector

Check your Google Calendar connection.

It should show:

Authorized

If authorization has expired or been revoked, authorize it again.

Remember that Google says External OAuth apps kept in Testing can have test-user authorizations expire after seven days.

Does the OAuth redirect URI match exactly?

The callback URL in Google Cloud must match the Redirect URL displayed by GravityWP API Connector.

Even a different path or trailing character can cause OAuth authorization to fail.

Google explicitly requires an exact redirect URI match.

Did you use the correct Calendar ID?

Open:

Google Calendar → Settings → your calendar → Integrate calendar

Copy the Calendar ID from there.

Do not confuse the calendar’s public URL with its Calendar ID.

Does the endpoint end with /events?

The event creation endpoint must use:

/calendar/v3/calendars/YOUR_CALENDAR_ID/events

not:

/event

Google’s Calendar API reference defines the event creation route as POST /calendar/v3/calendars/calendarId/events.

Are the event date and time values formatted correctly?

Our working request produced values such as:

2026-09-18T14:00:00

Make sure the date, literal T, hour, minute, and seconds are present.

Also make sure Start Time uses the Start Time field and End Time uses the End Time field.

Does the OAuth scope include calendar event access?

Our tested scope was:

https://www.googleapis.com/auth/calendar.events

Google lists that scope as valid for the events.insert request.

Is Google Calendar using a different display timezone?

If the event was successfully created but appears several hours early or late, check:

Google Calendar → Settings → Time zone

The event may be correct while the Calendar interface is displaying it in another timezone.

Does This Integration Sync Google Calendar Back to Gravity Forms?

No.

Our tested workflow sends a new form submission to Google Calendar.

It then saves information returned by the event-creation request back into the Gravity Forms entry.

The workflow does not continuously monitor existing Google Calendar events.

For example, if someone manually changes the event from 2:00 PM to 4:00 PM inside Google Calendar later, this setup does not automatically change the original Start Time field in Gravity Forms.

Calling the workflow a two-way sync would therefore be inaccurate.

It is better described as:

Gravity Forms submission → automatically create Google Calendar event

Can You Connect Gravity Forms to Google Calendar Without Zapier?

Yes.

The workflow in this tutorial connects Gravity Forms directly to the Google Calendar API through GravityWP API Connector.

The data flow is:

Gravity Forms → GravityWP API Connector → Google Calendar API

There is no Zap between the form submission and Google Calendar.

API Connector handles the OAuth connection, POST request, JSON field mapping, and returned response values.

This does not mean an API-based integration is always the best choice.

Gravity Connect, Zapier, dedicated plugins, and other automation platforms can also fit different workflows.

The advantage of the setup in this tutorial is direct control over the Google Calendar API request and the ability to save selected response values back into the original Gravity Forms entry.

Can You Expand This Google Calendar and Gravity Forms Workflow?

Yes.

The Google Calendar Events resource supports many properties beyond the ones used in this tutorial.

For example, Google’s API can support attendees, recurrence, reminders, conference data, and other event metadata depending on the request and permissions.

However, those features were not part of our tested workflow.

Our tested setup only covered:

  • Event title
  • Description
  • Location
  • Start date and time
  • End date and time
  • Timezone
  • Returned Event ID
  • Returned Event URL
  • Full API response

If you extend the workflow, test each new field against the current Google Calendar API requirements.

For another tested API workflow, see our Gravity Forms Zoom integration tutorial.

How Does the Finished Gravity Forms to Google Calendar Workflow Work?

The finished Gravity Forms Google Calendar integration automatically creates an event after a new form submission.

The form collects the event information.

GravityWP API Connector turns those submitted values into a Google Calendar API request.

Google Calendar creates the event and returns its event data.

GravityWP then stores selected values from the response back inside the same Gravity Forms entry.

The final workflow is:

Gravity Forms → API Connector → Google Calendar → returned Event ID and URL → Gravity Forms entry

To build other direct API workflows, see the GravityWP API Connector documentation.

Frequently Asked Questions

Can Gravity Forms automatically create a Google Calendar event?

Yes. In our tested setup, submitting Gravity Forms triggered GravityWP API Connector. It sent a POST request to Google’s events.insert endpoint and created a new event on the selected Google Calendar.

Do I need a separate Google Calendar for Gravity Forms?

No.
You can target a calendar that the authorized Google account can write to. We created a separate Gravity Forms Event Test calendar because it kept our API testing separate from personal calendar events.

What Google Calendar OAuth scope did you use?

Our tested integration used:
https://www.googleapis.com/auth/calendar.events
Google lists this as one of the scopes accepted by the events.insert endpoint.

Can I choose which Google Calendar receives the event?

Yes.
The Calendar ID is part of the API endpoint:
/calendar/v3/calendars/YOUR_CALENDAR_ID/events
Using a different calendar ID lets the request target another calendar that the authenticated Google account has permission to write to.

Why is my Google Calendar event showing at the wrong time?

Check both the timezone sent with the event and the timezone configured in the Google Calendar interface.
Our event used Asia/Manila, but Google Calendar initially displayed it using GMT+00. After setting the Calendar interface to Philippine Standard Time, the event displayed at the expected 2:00 PM–3:00 PM.

Can the returned Google Calendar event information be saved in Gravity Forms?

Yes.
GravityWP API Connector can map properties returned by an API to Target Fields.
In our test, we saved:
Event ID → id
and:
Event URL → htmlLink
We also saved the full Google Calendar API response.

Gravity Forms Google Calendar integration featured image
In this article
Proudly powered by WordPress