Google Sheets and Google Calendar Integrations
Krom Automation Pro connects to both Google Sheets and Google Calendar using a single Google service account.
Once the service account is configured, both integrations are available — Google Sheets gives you four actions for reading and writing spreadsheet data, and Google Calendar gives you one action for creating calendar events.
Requirements #
- Krom Automation Pro installed and activated
- A Google Cloud project with the Google Sheets API and Google Calendar API enabled
- A service account JSON key file
Both integrations share the same credentials. You only need to set this up once.
Configuration #
Setting up a Google service account takes around 10 minutes. You only do this once.
Step 1: Create a Google Cloud project
- Go to console.cloud.google.com.
- Click the project dropdown at the top and select New Project.
- Give it a name like
Krom Automation Integrationand click Create.
Screenshot: Google Cloud Console new project creation screen.
Step 2: Enable the APIs
- With your project selected, go to APIs and Services > Library.
- Search for Google Sheets API and click Enable.
- Search for Google Calendar API and click Enable.
Screenshot: Google Cloud API Library with Google Sheets API selected and the Enable button highlighted.
Step 3: Create a service account
- Go to APIs and Services > Credentials.
- Click Create Credentials > Service Account.
- Give it a name like
krom-automation-service-accountand click Create and Continue. - Skip the optional role and user access steps and click Done.
Screenshot: Service account creation form with name filled in.
Step 4: Generate a JSON key
- On the Credentials page, click on your newly created service account.
- Go to the Keys tab.
- Click Add Key > Create New Key.
- Select JSON and click Create. A JSON file downloads automatically.
Screenshot: Service account Keys tab showing the Add Key button.
Step 5: Add the key to Krom Automation
- Open the downloaded JSON file in a text editor and copy the entire contents.
- In your WordPress admin, go to Krom Automation > Settings.
- Find the Google settings section and paste the full JSON content into the Service Account JSON field.
- Click Save.
Screenshot: Krom Automation Settings page with the Service Account JSON field filled in.
Step 6: Share your Google Sheet or Calendar with the service account
The service account has its own email address (visible in the JSON file as client_email). You need to give it access to any Sheet or Calendar you want Krom Automation to interact with.
For Google Sheets: Open your Google Sheet, click Share, and add the service account email with Editor access.
For Google Calendar: Open Google Calendar, click the three dots next to your calendar, go to Settings and sharing, and add the service account email under Share with specific people with Make changes to events permission.
Screenshot: Google Sheets Share dialog with the service account email added as an Editor.
Google Sheets #
Available actions
Append Row Adds a new row at the bottom of a specified sheet with the values you provide.
| Field | Required | Description |
|---|---|---|
spreadsheet_id | Yes | The Google Sheet ID. Find this in the spreadsheet URL between /d/ and /edit. |
sheet_name | Yes | The name of the tab within the spreadsheet (e.g. Sheet1 or Orders). |
row_values | Yes | Comma-separated values to write as a new row. Merge tags are supported. Each comma-separated value becomes a separate column. |
Find Row Searches a column for a specific value and returns the data from the matched row.
| Field | Required | Description |
|---|---|---|
spreadsheet_id | Yes | The Google Sheet ID. |
sheet_name | Yes | The sheet tab name. |
search_column | Yes | The column letter to search in (e.g. A, B, C). |
search_value | Yes | The value to search for. Merge tags are supported. |
The found row’s data is stored as a step output and available in subsequent actions using the configured output key.
Update Cell Updates the value of a specific cell or range in a Google Sheet.
| Field | Required | Description |
|---|---|---|
spreadsheet_id | Yes | The Google Sheet ID. |
sheet_name | Yes | The sheet tab name. |
cell_range | Yes | The cell reference to update (e.g. A1, B5, or a range like A1:C1). |
value | Yes | The value to write. Merge tags are supported. |
Clear Range Deletes all values from a specified cell range without deleting the cells themselves.
| Field | Required | Description |
|---|---|---|
spreadsheet_id | Yes | The Google Sheet ID. |
sheet_name | Yes | The sheet tab name. |
range | Yes | The range to clear (e.g. A2:Z100). |
Finding your spreadsheet ID
The spreadsheet ID is in the URL of your Google Sheet. Open the sheet in your browser and look at the URL:
https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms/
The bold section is your spreadsheet ID.
Google Sheets automation examples
Log every WooCommerce order Trigger: WooCommerce Order Completed Action: Google Sheets Append Row to your orders sheet with {{order_id}}, {{customer.email}}, {{customer.first_name}}, {{order.total}}, {{order.currency}}, {{order.date_created}} as comma-separated values.
Log form submissions for the sales team Trigger: Gravity Forms Form Submitted (filtered by form_id) Action: Google Sheets Append Row with the submitter’s name, email, message, and {{source_url}}.
Track new user registrations Trigger: User Registered Action: Google Sheets Append Row with {{user_id}}, {{user_email}}, {{first_name}}, {{last_name}}, {{user_registered}}.
Clear a reporting range on a schedule Trigger: Schedule (weekly, Monday 6:00 AM) Action: Google Sheets Clear Range to reset a weekly data range before new data is appended.
Pre-built Google Sheets templates
| Template | What it does |
|---|---|
sheets-log-new-order | Logs new WooCommerce orders to a Google Sheet |
sheets-log-form-submission | Logs form submissions to a Google Sheet |
sheets-new-user-signup | Logs new user registrations to a Google Sheet |
Google Calendar #
Available action
Create Event Creates a new event on a specified Google Calendar.
| Field | Required | Description |
|---|---|---|
calendar_id | Yes | The Google Calendar ID. For your primary calendar, this is your Gmail address. For other calendars, find the ID in Calendar Settings > Integrate calendar > Calendar ID. |
title | Yes | Event title. Merge tags are supported. |
description | No | Event description. Merge tags are supported. |
start_datetime | Yes | Event start date and time in ISO 8601 format (e.g. 2025-06-15T14:00:00). |
end_datetime | Yes | Event end date and time in ISO 8601 format. |
location | No | Event location text. |
attendees | No | Comma-separated email addresses of attendees to invite. |
Formatting datetimes: Use the {{current_date}} merge tag as a base and add time offsets in your action field, or pass a formatted datetime from a previous HTTP Request step that fetches a specific date.
Google Calendar automation examples
Create a calendar event for every new WooCommerce order Trigger: WooCommerce Order Created Action: Google Calendar Create Event with title Order #{{order_id}} — {{customer.first_name}} {{customer.last_name}}, the order date as start time, and a 1-hour duration.
Schedule a consultation from a form submission Trigger: Gravity Forms Form Submitted (filtered to your consultation booking form) Action: Google Calendar Create Event using the form’s date and time fields as start and end times, with the submitter’s email as an attendee.
Log course enrollment as a calendar event Trigger: LearnDash User Enrolled Action: Google Calendar Create Event with title {{user_display_name}} enrolled in {{course_title}} on the enrollment date.
Pre-built Google Calendar templates
| Template | What it does |
|---|---|
gc-woo-order-event | Creates a Google Calendar event for each new WooCommerce order |
gc-form-submission-event | Creates a calendar event on form submission |
Troubleshooting on Google Sheets integration #
Google Sheets Append Row is failing
The most common cause is that the service account hasn’t been given Editor access to the spreadsheet. Open the sheet, click Share, and confirm the service account email (from the JSON file’s client_email field) is listed with Editor permission.
The spreadsheet ID looks wrong
Copy only the ID portion from the URL — the long alphanumeric string between /d/ and /edit. Don’t include any slashes, the d, or anything after /edit.
Google Calendar Create Event is failing
Confirm the service account has been shared with the calendar and has Make Changes to Events permission. Also confirm the start_datetime and end_datetime values are correctly formatted in ISO 8601 format — a common issue is passing a human-readable date string instead of an ISO-formatted one.
I get a permission error even though I shared the sheet
Confirm the APIs are enabled in your Google Cloud project. Both the Sheets API and Calendar API must be explicitly enabled — creating a service account alone doesn’t enable API access.