---
title: "Google Forms Integrations API Reference"
description: "Connect your Google account to automatically sync form responses from links that redirect to Google Forms."
canonical: "https://linkbreakers.com/help/api/google-forms-integrations"
---

# Google Forms Integrations

Connect your Google account to automatically sync form responses from links that redirect to Google Forms.

## Google Forms Integrations

## [#](#google-forms-integrations-object)The Integration Delivery object

IntegrationDelivery is the same three settings on every integration that sends data out: where (which links), when (which moments or steps) and what (how much visitor data). Everything has a default, so an integration works the moment it is connected and this is only for refining it.

directoryIds

array<string>

Where: directories it applies to, with every directory below them.

linkIds

array<string>

Where: links it applies to. All three lists empty means every link.

moments

array<string (enum)>

When: the moments of a visit it sends at. Ignored when step\_ids is set.

stepIds

array<string>

When: send only when a visit reaches one of these workflow steps.

tagIds

array<string>

Where: tags it applies to.

targetsGone

boolean

Every link, directory and tag chosen has since been deleted, so this covers nothing. The lists above are then empty without meaning every link.

visitorAttributeKeys

array<string>

What: with SELECTED, the attribute keys sent, such as "$email" or "rating".

visitorData

string (enum)

IntegrationVisitorData is how much of what is known about the visitor an integration sends.

##### Allowed values

`INTEGRATION_VISITOR_DATA_UNSPECIFIED`

`INTEGRATION_VISITOR_DATA_NONE`

Only the visit: the link, the step, the device and the place.

`INTEGRATION_VISITOR_DATA_ALL`

The visit, and every attribute known about the visitor.

`INTEGRATION_VISITOR_DATA_SELECTED`

The visit, and only the attributes named in visitor\_attribute\_keys.

Example object

```json
{
  "directoryIds": [
    "string"
  ],
  "linkIds": [
    "string"
  ],
  "moments": [
    "KIND_UNSPECIFIED"
  ],
  "stepIds": [
    "string"
  ],
  "tagIds": [
    "string"
  ],
  "targetsGone": false,
  "visitorAttributeKeys": [
    "string"
  ],
  "visitorData": "INTEGRATION_VISITOR_DATA_UNSPECIFIED"
}
```

GET

`/v1/google-forms-integrations`

Requires auth

## [#](#get-google-forms-integration)Get Google Forms integration

Retrieve the Google Forms integration for the workspace. Requires the \`integrations:read\` scope.

### [#](#get-google-forms-integration-parameters)Parameters

This endpoint does not accept any parameters.

### [#](#get-google-forms-integration-response)Response

200

Everything worked as expected.

integration

object

GoogleFormsIntegration represents a connected Google account. Forms are auto-detected from workflow steps — no manual configuration needed.

### [#](#get-google-forms-integration-error)Error response

400-599

All endpoints may return an unexpected error payload when a request cannot be processed.

error

object

Required

Wrapped error response.

Example request (cURL)

```bash
curl -X GET "https://api.linkbreakers.com/v1/google-forms-integrations" \
  -H "Authorization: Bearer YOUR_TOKEN"
```

Typical response

```json
{
  "integration": {
    "createdAt": "2026-11-10T13:16:43.480Z",
    "createdBy": "string",
    "delivery": {
      "directoryIds": [
        "string"
      ],
      "linkIds": [
        "string"
      ],
      "moments": [
        "KIND_UNSPECIFIED"
      ],
      "stepIds": [
        "string"
      ],
      "tagIds": [
        "string"
      ],
      "targetsGone": false,
      "visitorAttributeKeys": [
        "string"
      ],
      "visitorData": "INTEGRATION_VISITOR_DATA_UNSPECIFIED"
    },
    "googleEmail": "string",
    "id": "d22f7bf1-83a9-4f3a-9b37-9a3a21b6ac11",
    "lastSyncedAt": "2026-11-10T13:16:43.480Z",
    "responsesSynced": 0,
    "status": "GOOGLE_FORMS_INTEGRATION_STATUS_UNSPECIFIED",
    "updatedAt": "2026-11-10T13:16:43.480Z",
    "visitorsEnriched": 0,
    "workspaceId": "string"
  }
}
```

Base URL: `https://api.linkbreakers.com`

GET

`/v1/google-forms-integrations/detected-forms`

Requires auth

## [#](#list-detected-google-forms)List detected Google Forms

Returns Google Forms auto-detected from workspace links that have a Google Form as their redirect destination. Requires the \`integrations:read\` scope.

### [#](#list-detected-google-forms-parameters)Parameters

This endpoint does not accept any parameters.

### [#](#list-detected-google-forms-response)Response

200

Everything worked as expected.

forms

array<object>

### [#](#list-detected-google-forms-error)Error response

400-599

All endpoints may return an unexpected error payload when a request cannot be processed.

error

object

Required

Wrapped error response.

Example request (cURL)

```bash
curl -X GET "https://api.linkbreakers.com/v1/google-forms-integrations/detected-forms" \
  -H "Authorization: Bearer YOUR_TOKEN"
```

Typical response

```json
{
  "forms": [
    {
      "accessible": false,
      "chosen": false,
      "conflict": false,
      "formId": "string",
      "formUrl": "https://example.com",
      "linkId": "string",
      "linkName": "string"
    }
  ]
}
```

Base URL: `https://api.linkbreakers.com`

GET

`/v1/google-forms-integrations/oauth-url`

Requires auth

## [#](#get-google-oauth-url)Get Google OAuth URL

Returns the Google OAuth authorization URL to initiate the connection flow. Requires the \`integrations:write\` scope.

### [#](#get-google-oauth-url-parameters)Parameters

This endpoint does not accept any parameters.

### [#](#get-google-oauth-url-response)Response

200

Everything worked as expected.

oauthUrl

string

### [#](#get-google-oauth-url-error)Error response

400-599

All endpoints may return an unexpected error payload when a request cannot be processed.

error

object

Required

Wrapped error response.

Example request (cURL)

```bash
curl -X GET "https://api.linkbreakers.com/v1/google-forms-integrations/oauth-url" \
  -H "Authorization: Bearer YOUR_TOKEN"
```

Typical response

```json
{
  "oauthUrl": "https://example.com"
}
```

Base URL: `https://api.linkbreakers.com`

POST

`/v1/google-forms-integrations/forms/{formId}/link`

Requires auth

## [#](#choose-a-google-form-s-link)Choose a Google Form's link

When the same Google Form is behind several links, timing cannot tell which link a response came from. This records the link its responses belong to. Requires the \`integrations:write\` scope.

### [#](#choose-a-google-form-s-link-parameters)Parameters

#### path parameters

formId

string

Required

path

The Google Form.

#### header parameters

Idempotency-Key

string

header

Makes retrying this request safe. See components.parameters.IdempotencyKey.

### [#](#choose-a-google-form-s-link-request)Request body

linkId

string

The link its responses belong to; it must open that form.

### [#](#choose-a-google-form-s-link-response)Response

200

Everything worked as expected.

No structured schema available for this section.

### [#](#choose-a-google-form-s-link-error)Error response

400-599

All endpoints may return an unexpected error payload when a request cannot be processed.

error

object

Required

Wrapped error response.

Example request (cURL)

```bash
curl -X POST "https://api.linkbreakers.com/v1/google-forms-integrations/forms/{formId}/link" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Idempotency-Key: string" \
  -H "Content-Type: application/json" \
  --data '{"linkId":"string"}'
```

Sample payload (application/json)

```json
{
  "linkId": "string"
}
```

Typical response

```json
{}
```

Base URL: `https://api.linkbreakers.com`

POST

`/v1/google-forms-integrations/oauth/complete`

Requires auth

## [#](#complete-google-oauth)Complete Google OAuth

Exchanges the Google authorization code for tokens and creates the workspace integration. Requires the \`integrations:write\` scope.

### [#](#complete-google-oauth-parameters)Parameters

#### header parameters

Idempotency-Key

string

header

Makes retrying this request safe. See components.parameters.IdempotencyKey.

### [#](#complete-google-oauth-request)Request body

code

string

Required

state

string

Required

### [#](#complete-google-oauth-response)Response

200

Everything worked as expected.

integration

object

GoogleFormsIntegration represents a connected Google account. Forms are auto-detected from workflow steps — no manual configuration needed.

### [#](#complete-google-oauth-error)Error response

400-599

All endpoints may return an unexpected error payload when a request cannot be processed.

error

object

Required

Wrapped error response.

Example request (cURL)

```bash
curl -X POST "https://api.linkbreakers.com/v1/google-forms-integrations/oauth/complete" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Idempotency-Key: string" \
  -H "Content-Type: application/json" \
  --data '{"code":"string","state":"string"}'
```

Sample payload (application/json)

```json
{
  "code": "string",
  "state": "string"
}
```

Typical response

```json
{
  "integration": {
    "createdAt": "2026-11-10T13:16:43.483Z",
    "createdBy": "string",
    "delivery": {
      "directoryIds": [
        "string"
      ],
      "linkIds": [
        "string"
      ],
      "moments": [
        "KIND_UNSPECIFIED"
      ],
      "stepIds": [
        "string"
      ],
      "tagIds": [
        "string"
      ],
      "targetsGone": false,
      "visitorAttributeKeys": [
        "string"
      ],
      "visitorData": "INTEGRATION_VISITOR_DATA_UNSPECIFIED"
    },
    "googleEmail": "string",
    "id": "d22f7bf1-83a9-4f3a-9b37-9a3a21b6ac11",
    "lastSyncedAt": "2026-11-10T13:16:43.484Z",
    "responsesSynced": 0,
    "status": "GOOGLE_FORMS_INTEGRATION_STATUS_UNSPECIFIED",
    "updatedAt": "2026-11-10T13:16:43.484Z",
    "visitorsEnriched": 0,
    "workspaceId": "string"
  }
}
```

Base URL: `https://api.linkbreakers.com`

POST

`/v1/google-forms-integrations/sync`

Requires auth

## [#](#sync-now)Sync now

Trigger an immediate sync of new Google Forms responses from all detected forms. Requires the \`integrations:write\` scope.

### [#](#sync-now-parameters)Parameters

#### header parameters

Idempotency-Key

string

header

Makes retrying this request safe. See components.parameters.IdempotencyKey.

### [#](#sync-now-request)Request body

No structured schema available for this section.

### [#](#sync-now-response)Response

200

Everything worked as expected.

responsesSynced

integer (int64)

visitorsEnriched

integer (int64)

### [#](#sync-now-error)Error response

400-599

All endpoints may return an unexpected error payload when a request cannot be processed.

error

object

Required

Wrapped error response.

Example request (cURL)

```bash
curl -X POST "https://api.linkbreakers.com/v1/google-forms-integrations/sync" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Idempotency-Key: string" \
  -H "Content-Type: application/json" \
  --data '{}'
```

Sample payload (application/json)

```json
{}
```

Typical response

```json
{
  "responsesSynced": 0,
  "visitorsEnriched": 0
}
```

Base URL: `https://api.linkbreakers.com`

PATCH

`/v1/google-forms-integrations`

Requires auth

## [#](#update-google-forms-integration)Update Google Forms integration

Update the integration status (pause or resume syncing). Requires the \`integrations:write\` scope.

### [#](#update-google-forms-integration-parameters)Parameters

#### header parameters

Idempotency-Key

string

header

Makes retrying this request safe. See components.parameters.IdempotencyKey.

### [#](#update-google-forms-integration-request)Request body

delivery

object

IntegrationDelivery is the same three settings on every integration that sends data out: where (which links), when (which moments or steps) and what (how much visitor data). Everything has a default, so an integration works the moment it is connected and this is only for refining it.

status

string (enum)

##### Allowed values

`GOOGLE_FORMS_INTEGRATION_STATUS_UNSPECIFIED`

`GOOGLE_FORMS_INTEGRATION_STATUS_ACTIVE`

`GOOGLE_FORMS_INTEGRATION_STATUS_PAUSED`

`GOOGLE_FORMS_INTEGRATION_STATUS_DISCONNECTED`

### [#](#update-google-forms-integration-response)Response

200

Everything worked as expected.

integration

object

GoogleFormsIntegration represents a connected Google account. Forms are auto-detected from workflow steps — no manual configuration needed.

### [#](#update-google-forms-integration-error)Error response

400-599

All endpoints may return an unexpected error payload when a request cannot be processed.

error

object

Required

Wrapped error response.

Example request (cURL)

```bash
curl -X PATCH "https://api.linkbreakers.com/v1/google-forms-integrations" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Idempotency-Key: string" \
  -H "Content-Type: application/json" \
  --data '{"delivery":{"directoryIds":["string"],"linkIds":["string"],"moments":["KIND_UNSPECIFIED"],"stepIds":["string"],"tagIds":["string"],"targetsGone":false,"visitorAttributeKeys":["string"],"visitorData":"INTEGRATION_VISITOR_DATA_UNSPECIFIED"},"status":"GOOGLE_FORMS_INTEGRATION_STATUS_UNSPECIFIED"}'
```

Sample payload (application/json)

```json
{
  "delivery": {
    "directoryIds": [
      "string"
    ],
    "linkIds": [
      "string"
    ],
    "moments": [
      "KIND_UNSPECIFIED"
    ],
    "stepIds": [
      "string"
    ],
    "tagIds": [
      "string"
    ],
    "targetsGone": false,
    "visitorAttributeKeys": [
      "string"
    ],
    "visitorData": "INTEGRATION_VISITOR_DATA_UNSPECIFIED"
  },
  "status": "GOOGLE_FORMS_INTEGRATION_STATUS_UNSPECIFIED"
}
```

Typical response

```json
{
  "integration": {
    "createdAt": "2026-11-10T13:16:43.483Z",
    "createdBy": "string",
    "delivery": {
      "directoryIds": [
        "string"
      ],
      "linkIds": [
        "string"
      ],
      "moments": [
        "KIND_UNSPECIFIED"
      ],
      "stepIds": [
        "string"
      ],
      "tagIds": [
        "string"
      ],
      "targetsGone": false,
      "visitorAttributeKeys": [
        "string"
      ],
      "visitorData": "INTEGRATION_VISITOR_DATA_UNSPECIFIED"
    },
    "googleEmail": "string",
    "id": "d22f7bf1-83a9-4f3a-9b37-9a3a21b6ac11",
    "lastSyncedAt": "2026-11-10T13:16:43.483Z",
    "responsesSynced": 0,
    "status": "GOOGLE_FORMS_INTEGRATION_STATUS_UNSPECIFIED",
    "updatedAt": "2026-11-10T13:16:43.483Z",
    "visitorsEnriched": 0,
    "workspaceId": "string"
  }
}
```

Base URL: `https://api.linkbreakers.com`

DELETE

`/v1/google-forms-integrations`

Requires auth

## [#](#disconnect-google-forms-integration)Disconnect Google Forms integration

Disconnect and remove the Google Forms integration from the workspace. Requires the \`integrations:write\` scope.

### [#](#disconnect-google-forms-integration-parameters)Parameters

This endpoint does not accept any parameters.

### [#](#disconnect-google-forms-integration-response)Response

200

Everything worked as expected.

No structured schema available for this section.

### [#](#disconnect-google-forms-integration-error)Error response

400-599

All endpoints may return an unexpected error payload when a request cannot be processed.

error

object

Required

Wrapped error response.

Example request (cURL)

```bash
curl -X DELETE "https://api.linkbreakers.com/v1/google-forms-integrations" \
  -H "Authorization: Bearer YOUR_TOKEN"
```

Typical response

```json
{}
```

Base URL: `https://api.linkbreakers.com`

---

Source: https://linkbreakers.com/help/api/google-forms-integrations
