AutomationFlowsEmail & Gmail › Typeform to Google Calendar & Sheets Automation

Typeform to Google Calendar & Sheets Automation

Original n8n title: Googlecalendar Googlesheets

Googlecalendar Googlesheets. Uses typeformTrigger, googleSheets, mattermost, googleCalendar. Event-driven trigger; 10 nodes.

Event trigger★★★★☆ complexity10 nodesTypeform TriggerGoogle SheetsMattermostGoogle CalendarGmail
Email & Gmail Trigger: Event Nodes: 10 Complexity: ★★★★☆ Added:

This workflow follows the Gmail → Google Calendar recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "nodes": [
    {
      "name": "Attendee Registrations",
      "type": "n8n-nodes-base.typeformTrigger",
      "position": [
        400,
        300
      ],
      "parameters": {
        "formId": "RknoIFsl"
      },
      "credentials": {
        "typeformApi": "<your credential>"
      },
      "typeVersion": 1
    },
    {
      "name": "Add to Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        600,
        300
      ],
      "parameters": {
        "range": "Attendees!A:F",
        "options": {},
        "sheetId": "1nlnsTQKGgQZN-Rtd07K9bn0ROm0aFBC2O4kzM2YaTBI",
        "operation": "append",
        "authentication": "oAuth2"
      },
      "credentials": {
        "googleSheetsOAuth2Api": "<your credential>"
      },
      "typeVersion": 1
    },
    {
      "name": "Create Account",
      "type": "n8n-nodes-base.mattermost",
      "position": [
        800,
        300
      ],
      "parameters": {
        "email": "={{$json[\"And what's your email address?\"]}}",
        "password": "=P!_{{$json[\"And what's your email address?\"].split(\" \").join(\"\")}}-{{new Date().getHours()}}{{new Date().getDate()}}",
        "resource": "user",
        "username": "={{$json[\"Great, can we get your full name?\"].split(\" \").join(\"\")}}-{{new Date().getHours()}}",
        "operation": "create",
        "authService": "email",
        "additionalFields": {
          "first_name": "={{$json[\"Great, can we get your full name?\"]}}"
        }
      },
      "credentials": {
        "mattermostApi": "<your credential>"
      },
      "typeVersion": 1
    },
    {
      "name": "Add to team",
      "type": "n8n-nodes-base.mattermost",
      "position": [
        1000,
        300
      ],
      "parameters": {
        "emails": "={{$node[\"Attendee Registrations\"].json[\"And what's your email address?\"]}}",
        "teamId": "ee3ddsn98i8d3xizkcttras5nw",
        "resource": "user",
        "operation": "invite"
      },
      "credentials": {
        "mattermostApi": "<your credential>"
      },
      "typeVersion": 1
    },
    {
      "name": "Array to Rows",
      "type": "n8n-nodes-base.function",
      "position": [
        1200,
        300
      ],
      "parameters": {
        "functionCode": "const newItems = [];\nfor (let i=0;i<$node[\"Attendee Registrations\"].json[\"Which sessions would you like to attend?\"].length;i++) {\n\tnewItems.push({\n    \tjson: {\n        \tSession: $node[\"Attendee Registrations\"].json[\"Which sessions would you like to attend?\"][i]\n        }\n     });\n}\n\nreturn newItems;"
      },
      "typeVersion": 1
    },
    {
      "name": "Get Session Details",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1200,
        500
      ],
      "parameters": {
        "range": "Sessions!A:F",
        "options": {},
        "sheetId": "1nlnsTQKGgQZN-Rtd07K9bn0ROm0aFBC2O4kzM2YaTBI",
        "authentication": "oAuth2"
      },
      "credentials": {
        "googleSheetsOAuth2Api": "<your credential>"
      },
      "typeVersion": 1
    },
    {
      "name": "Merge Data",
      "type": "n8n-nodes-base.merge",
      "position": [
        1376,
        422
      ],
      "parameters": {
        "mode": "mergeByKey",
        "propertyName1": "Session",
        "propertyName2": "Session"
      },
      "typeVersion": 1
    },
    {
      "name": "Add to channels",
      "type": "n8n-nodes-base.mattermost",
      "position": [
        1576,
        422
      ],
      "parameters": {
        "userId": "={{$node[\"Create Account\"].json[\"id\"]}}",
        "resource": "channel",
        "channelId": "={{$json[\"Mattermost Channel ID\"]}}",
        "operation": "addUser"
      },
      "credentials": {
        "mattermostApi": "<your credential>"
      },
      "typeVersion": 1
    },
    {
      "name": "Add to Event",
      "type": "n8n-nodes-base.googleCalendar",
      "position": [
        1776,
        422
      ],
      "parameters": {
        "eventId": "={{$node[\"Merge Data\"].json[\"Google Calendar Event ID\"]}}",
        "calendar": "3ne32v2nlrrd2l3624v5qpg6qk@group.calendar.google.com",
        "operation": "update",
        "updateFields": {
          "attendees": [
            "={{$node[\"Attendee Registrations\"].json[\"And what's your email address?\"]}}"
          ]
        }
      },
      "credentials": {
        "googleCalendarOAuth2Api": "<your credential>"
      },
      "typeVersion": 1
    },
    {
      "name": "Welcome Email",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1976,
        422
      ],
      "parameters": {
        "toList": [
          "={{$node[\"Attendee Registrations\"].json[\"And what's your email address?\"]}}"
        ],
        "message": "=Dear {{$node[\"Attendee Registrations\"].json[\"Great, can we get your full name?\"]}},\n\nWelcome to n8nConf, the world's largest no-code automation conference!\n\nThis email is to confirm your registration to the following sessions:\n- {{$node[\"Attendee Registrations\"].json[\"Which sessions would you like to attend?\"].join('\\n- ')}}\n\nYou should receive Google Calendar invites to these events on your email. Please consult those for the Google Meet joining information.\n\nYou can also interact with the rest of the community via our Mattermost chat. We created an account just for you!\nLook for the channel corresponding to your session to join the discussion!\n\nLogin URL: https://mm.failedmachine.com/\nUsername: {{$node[\"Create Account\"].json[\"username\"]}}\nPassword: {{$node[\"Create Account\"].parameter[\"password\"]}}\n\nRemember to change your password immediately after your first login!\n\nIf you have any troubles with joining the event, or using the chat rooms; please feel free to let us know on support@n8nconf.com\n\nWe look forward to your participation!\n\nBest,\nTeam n8n",
        "subject": "Welcome to n8nConf",
        "resource": "message",
        "additionalFields": {}
      },
      "credentials": {
        "gmailOAuth2": "<your credential>"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Merge Data": {
      "main": [
        [
          {
            "node": "Add to channels",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add to team": {
      "main": [
        [
          {
            "node": "Array to Rows",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add to Event": {
      "main": [
        [
          {
            "node": "Welcome Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add to Sheets": {
      "main": [
        [
          {
            "node": "Create Account",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Array to Rows": {
      "main": [
        [
          {
            "node": "Merge Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Account": {
      "main": [
        [
          {
            "node": "Add to team",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add to channels": {
      "main": [
        [
          {
            "node": "Add to Event",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Session Details": {
      "main": [
        [
          {
            "node": "Merge Data",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Attendee Registrations": {
      "main": [
        [
          {
            "node": "Add to Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

How this works

This workflow streamlines event attendee management by automatically capturing registrations from Typeform, logging them into Google Sheets for easy tracking, and provisioning access in Mattermost while scheduling reminders in Google Calendar. It's ideal for event organisers or team leads handling webinars, workshops, or conferences who need to onboard participants efficiently without manual data entry. The key step involves merging registration details with session information from Google Sheets to personalise Mattermost channel invites and calendar events, saving hours on administrative tasks.

Use this workflow for recurring events with 50+ attendees where quick integration of forms, spreadsheets, and team tools is essential, such as virtual meetups requiring instant channel access. Avoid it for one-off small gatherings under 10 people, as the setup overhead outweighs the benefits, or when privacy regulations prohibit automated data sharing. Common variations include adding Gmail notifications for confirmations or swapping Mattermost for Slack if your team uses that platform instead.

About this workflow

Googlecalendar Googlesheets. Uses typeformTrigger, googleSheets, mattermost, googleCalendar. Event-driven trigger; 10 nodes.

Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →

More Email & Gmail workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Email & Gmail

n8nConf Companion workflow for blog post

Typeform Trigger, Google Sheets, Mattermost +2
Email & Gmail

Manage attendee registrations and send emails. Uses typeformTrigger, googleSheets, mattermost, googleCalendar. Event-driven trigger; 10 nodes.

Typeform Trigger, Google Sheets, Mattermost +2
Email & Gmail

Recruiting agency. Uses typeformTrigger, airtable, httpRequest, googleDrive. Event-driven trigger; 36 nodes.

Typeform Trigger, Airtable, HTTP Request +4
Email & Gmail

Sync your Google Calendar events with Google Sheets and get daily Slack summaries with meeting statistics. FEATURES:

Google Calendar Trigger, Google Sheets, Slack +3
Email & Gmail

Fluxo de Entrevistas. Uses formTrigger, gmail, googleSheets, googleCalendar. Event-driven trigger; 28 nodes.

Form Trigger, Gmail, Google Sheets +1