# Googleforms

Create, manage, and analyze forms and surveys with Google Forms

- **Category:** productivity
- **Auth:** OAUTH2
- **Composio Managed App Available?** No
- **Tools:** 7
- **Triggers:** 0
- **Slug:** `GOOGLEFORMS`
- **Version:** 20260403_00

## Tools

### Batch Update Form

**Slug:** `GOOGLEFORMS_BATCH_UPDATE_FORM`

Applies a batch of update operations to a Google Form in a single atomic transaction. Use when you need to modify form content after creation, including: - Adding, updating, or deleting questions and other items - Modifying form metadata (title, description) - Updating form settings (quiz mode, email collection) - Reorganizing item order within the form All updates in the batch are applied together atomically. If any update fails, the entire batch is rolled back. Use writeControl for optimistic concurrency to ensure updates are applied to the expected form version. Note: The form must have the appropriate sharing settings for the authenticated user to modify it.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `formId` | string | Yes | Required. The ID of the form to update. |
| `requests` | array | Yes | Required. The update requests to apply to the form. Each request is a dictionary containing exactly one request type:  **Available request types:** - `createItem` - Add a new item (question) to the form. Requires `item` (the item definition) and `location` (where to place it). - `updateFormInfo` - Update form metadata. Requires `info` (title, description) and `updateMask` (fields to update). - `updateSettings` - Update form settings. Requires `settings` and `updateMask`. - `updateItem` - Update an existing item. Requires `item`, `location`, and `updateMask`. - `moveItem` - Move an item to a new location. Requires `originalLocation` and `newLocation`. - `deleteItem` - Delete an item. Requires `location` with the index of the item to delete.  All updates are applied atomically - if any update fails, the entire batch is rolled back. |
| `writeControl` | object | No | Provides control over how write requests are executed. |
| `includeFormInResponse` | boolean | No | Whether to return the updated form in the response. Set to true to get the complete form with all applied mutations. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create a Google Form

**Slug:** `GOOGLEFORMS_CREATE_FORM`

Creates a new Google Form with the specified title. This action initializes an empty form that can be later populated with items (questions, sections, images, videos) using the batchUpdate endpoint. When a form is created, it is assigned a unique formId that is required for all subsequent operations on that form. As of June 30, 2026, forms created via API will default to an unpublished state, giving creators control over responder access before making the form publicly available. Use this action when you need to create a new form for collecting information, surveys, quizzes, or feedback. After creation, use the batchUpdate action to add questions and other items to the form.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `info` | object | Yes | Required. Form info object containing the title and optional document title. |
| `unpublished` | boolean | No | Optional. Whether the form is unpublished. If set to true, the form doesn't accept responses. If set to false or unset, the form is published and accepts responses. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Form Watch

**Slug:** `GOOGLEFORMS_CREATE_WATCH`

Creates a watch on a Google Form to receive push notifications via Cloud Pub/Sub when specified events occur. Watches notify via Cloud Pub/Sub when the form or its responses are changed. Each watch has a one-week duration after which it automatically expires and must be renewed. The calling project can have a maximum of 2 watches per form (one for SCHEMA and one for RESPONSES). Use this action when you need to set up real-time notifications for form changes or new submissions. The Pub/Sub topic must be in the same project where the form is located, and the topic must have permissions configured to allow the Forms API to publish messages.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `formId` | string | Yes | Required. ID of the Form to watch. The form ID can be found in the form URL: https://docs.google.com/forms/d/{formId}/edit |
| `target` | object | Yes | Required. The Pub/Sub topic configuration for delivering notifications. |
| `watchId` | string | No | Optional. A unique ID to assign to this watch. If not specified, an ID is auto-generated. Must be 4-63 characters; valid characters are [a-z][0-9]-. |
| `eventType` | string ("EVENT_TYPE_UNSPECIFIED" | "SCHEMA" | "RESPONSES") | Yes | Required. Type of event to watch for: SCHEMA monitors form structure or settings changes; RESPONSES monitors new form submissions. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Form Watch

**Slug:** `GOOGLEFORMS_DELETE_WATCH`

Deletes a watch from a Google Form, stopping push notifications for that watch. Use when you no longer want to receive notifications for a specific watch on a form. This action is irreversible — once deleted, the watch cannot be recovered and notifications will stop immediately. If you need to resume notifications, you must create a new watch using the CreateWatch action.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `form_id` | string | Yes | Required. ID of the Form that contains the watch. The form ID can be found in the form URL: https://docs.google.com/forms/d/{formId}/edit |
| `watch_id` | string | Yes | Required. The ID of the Watch to delete. Use the ListWatches action to find existing watch IDs. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Google Form

**Slug:** `GOOGLEFORMS_GET_FORM`

Retrieves the complete structure and metadata of a Google Form. Returns the full form definition including its title, description, all items (questions, sections, page breaks, images, videos, and display text), form settings (quiz mode, email collection), publishing state, and output-only fields such as the responder submission URL and revision ID. This action is read-only and does not modify the form. Use this action when you need to read the current configuration of a form, display its structure to users, inspect its settings, or check its publishing state before making updates.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `formId` | string | Yes | Required. The unique ID of the form to retrieve. The form ID can be found in the URL after 'forms/d/' when viewing the form in Google Forms. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get form response

**Slug:** `GOOGLEFORMS_GET_RESPONSE`

Retrieves a single form response by its unique response ID. Returns complete response data including all answers provided by the respondent, their email (if collected), timestamps, and quiz scores (if applicable). Use this action when you need to fetch detailed information about a specific submission, such as viewing individual submissions, verifying response data, or building response detail views.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `form_id` | string | Yes | Required. The form ID of the form to retrieve a response from. |
| `response_id` | string | Yes | Required. The response ID to retrieve. This is the unique identifier for a specific form submission. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Google Form Responses

**Slug:** `GOOGLEFORMS_LIST_RESPONSES`

Lists all responses submitted to a Google Form with optional filtering and pagination. Use this action to retrieve multiple form submissions at once, export response data, or monitor new submissions. Supports filtering by timestamp to fetch only responses submitted after a specific time, which is useful for incremental data synchronization.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `filter` | string | No | A filter expression to return only responses that match the specified condition. Supports timestamp > N or timestamp >= N in RFC3339 UTC 'Zulu' format (e.g., '2024-01-15T00:00:00Z'). Use this for incremental data synchronization to fetch only new responses. |
| `form_id` | string | Yes | Required. The ID of the Form whose responses to list. You can find the form ID in the form URL: https://forms.google.com/forms/d/{formId}/edit |
| `page_size` | integer | No | The maximum number of responses to return. If unspecified, at most 5000 responses are returned. Use pageToken to iterate through pages. |
| `page_token` | string | No | A page token returned by a previous list response. Use this to retrieve the next page of results. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Form Watches

**Slug:** `GOOGLEFORMS_LIST_WATCHES`

Lists all watches owned by the calling project for a specific Google Form. Use this action to discover existing watches, check their status and expiration times, or audit which notifications are configured for a form. Each project can have a maximum of 2 watches per form (one for each event type: SCHEMA and RESPONSES). The SCHEMA event type monitors changes to form content or settings, while RESPONSES monitors new form submissions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `form_id` | string | Yes | Required. ID of the Form whose watches to list. The form ID can be found in the form URL: https://docs.google.com/forms/d/{formId}/edit |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Renew Form Watch

**Slug:** `GOOGLEFORMS_RENEW_WATCH`

Renews a watch on a Google Form, extending its expiration by one week from the time of renewal. Google Forms watches automatically expire after one week. Use this action to extend a watch before it expires, maintaining continuous push notifications. If a watch has already expired, you must create a new one instead. The renewed watch keeps the same ID, event type, and Pub/Sub topic configuration. Only the expiration time is updated.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `form_id` | string | Yes | Required. ID of the Form that contains the watch. The form ID can be found in the form URL: https://docs.google.com/forms/d/{formId}/edit |
| `watch_id` | string | Yes | Required. The ID of the Watch to renew. Use the ListWatches action to find existing watch IDs. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Set Form Publish Settings

**Slug:** `GOOGLEFORMS_SET_PUBLISH_SETTINGS`

Updates the publishing settings of a Google Form, controlling whether the form is published (visible to others) and whether it accepts responses. Use this action to publish a draft form, unpublish a form to prevent access, or toggle response collection on/off without changing the form's visibility. Note that legacy forms created before the publish settings feature was introduced cannot use this endpoint and will return an error.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `form_id` | string | Yes | Required. The ID of the form to update. You can get the form ID from the Form.form_id field. |
| `updateMask` | string | No | Optional. The publishSettings fields to update. Accepts: 'publishState' or '*' for all fields. If not provided, all fields are updated. |
| `publishSettings` | object | Yes | Required. The desired publish settings to apply to the form. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
