Setu Recipes: reusable workflows across every app.Browse templates

Integrations / Google Forms

Google Forms

Create Google Forms and read their responses.

4 actions OAuth 2 3 read1 write Calls forms.googleapis.com

Connect

TypeScript
const conn = await setu.connections.initiate({ userId: "user_1", toolkit: "googleforms" });
console.log(conn.connectUrl); // show this to your user
await conn.waitUntilActive();

Permissions requested

ScopeWhy it is requested
https://www.googleapis.com/auth/userinfo.emailSee which Google account you connected
https://www.googleapis.com/auth/forms.bodySee, create and edit your Google Forms
https://www.googleapis.com/auth/forms.responses.readonlySee responses to your Google Forms

Actions

Create formwritegoogleforms.create_formCreate a new, empty Google Form with a title (questions must be added afterwards in Google Forms).

Needs scope: https://www.googleapis.com/auth/forms.body

InputTypeDescription
titlestringRequiredTitle shown to respondents
document_titlestringOptionalFile name in Drive (defaults to the title)
TypeScript
await setu.execute({
  userId: "user_1",
  action: "googleforms.create_form",
  input: {
    "title": "<title>"
  },
});
Get formreadgoogleforms.get_formGet a form's title, public responder link and its questions.

Needs scope: https://www.googleapis.com/auth/forms.body

InputTypeDescription
form_idstringRequiredThe form ID from the form's edit address
TypeScript
await setu.execute({
  userId: "user_1",
  action: "googleforms.get_form",
  input: {
    "form_id": "<form_id>"
  },
});
Get form responsereadgoogleforms.get_responseGet one response to a form by its response ID, with every answer.

Needs scope: https://www.googleapis.com/auth/forms.responses.readonly

InputTypeDescription
form_idstringRequiredForm ID
response_idstringRequiredResponse ID from list_responses
TypeScript
await setu.execute({
  userId: "user_1",
  action: "googleforms.get_response",
  input: {
    "form_id": "<form_id>",
    "response_id": "<response_id>"
  },
});
List form responsesreadgoogleforms.list_responsesList the responses submitted to a form, optionally only those after a timestamp.

Needs scope: https://www.googleapis.com/auth/forms.responses.readonly

InputTypeDescription
form_idstringRequiredForm ID
afterstringOptionalOnly responses submitted after this RFC 3339 UTC time, e.g. 2026-10-01T00:00:00Z
page_sizeintegerOptionalResponses per page (default up to 5000)
page_tokenstringOptionalnextPageToken from an earlier call
TypeScript
await setu.execute({
  userId: "user_1",
  action: "googleforms.list_responses",
  input: {
    "form_id": "<form_id>"
  },
});