AutomationFlowsData & Sheets › Automate HR Interview Workflow with Google Calendar

Automate HR Interview Workflow with Google Calendar

Original n8n title: Stage D

Stage D. Uses executeWorkflowTrigger, googleCalendar, googleDocs, postgres. Event-driven trigger; 8 nodes.

Event trigger★★★★☆ complexity8 nodesExecute Workflow TriggerGoogle CalendarGoogle DocsPostgres
Data & Sheets Trigger: Event Nodes: 8 Complexity: ★★★★☆ Added:

This workflow follows the Execute Workflow Trigger → Postgres 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
{
  "name": "Stage D",
  "nodes": [
    {
      "parameters": {
        "workflowInputs": {
          "values": [
            {
              "name": "applicantId"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "typeVersion": 1.1,
      "position": [
        0,
        0
      ],
      "id": "abba6f64-c955-409c-875e-4dcde511eab1",
      "name": "When Executed by Another Workflow"
    },
    {
      "parameters": {
        "calendar": {
          "__rl": true,
          "value": "applyhkn@hknpolito.org",
          "mode": "list",
          "cachedResultName": "applyhkn@hknpolito.org"
        },
        "start": "={{ new Date($('Find Applicant').last().json.starting_from).toDateTime().plus(5, 'hour') }}",
        "end": "={{ new Date($('Find Applicant').last().json.starting_from).toDateTime().plus(6, 'hour') }}",
        "useDefaultReminders": false,
        "additionalFields": {
          "attendees": [
            "={{ $('Find Applicant').last().json.email }}",
            "={{ $('Find Interview').all().map(i => i.json.email).join(',') }}"
          ],
          "conferenceDataUi": {
            "conferenceDataValues": {
              "conferenceSolution": "hangoutsMeet"
            }
          },
          "description": "Prepare appropriately for the interview.",
          "guestsCanInviteOthers": false,
          "guestsCanModify": false,
          "guestsCanSeeOtherGuests": true,
          "summary": "[IEEE-HKN]\u00a0Application Interview "
        },
        "remindersUi": {
          "remindersValues": [
            {
              "method": "email",
              "minutes": 1440
            },
            {
              "method": "popup",
              "minutes": 60
            }
          ]
        }
      },
      "type": "n8n-nodes-base.googleCalendar",
      "typeVersion": 1.3,
      "position": [
        1120,
        0
      ],
      "id": "36d6dd3d-7883-43d2-9a94-7180bca8430d",
      "name": "Create an event",
      "credentials": {
        "googleCalendarOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "fieldsToAggregate": {
          "fieldToAggregate": [
            {}
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.aggregate",
      "typeVersion": 1,
      "position": [
        688,
        0
      ],
      "id": "75231b51-87d5-48ff-94c0-b3ec3abf2ba6",
      "name": "Aggregate"
    },
    {
      "parameters": {
        "folderId": "={{ '1hw4BD32vcMsseb3zZ93j2GfHcfaBOqj1' }}",
        "title": "={{ $('Find Applicant').item.json.name }} {{ $('Find Applicant').item.json.surname }} ({{ $('Find Applicant').item.json.interview_id }})"
      },
      "type": "n8n-nodes-base.googleDocs",
      "typeVersion": 2,
      "position": [
        896,
        0
      ],
      "id": "a9a3a3b5-bfcd-4226-9ac7-44bb52e2e16e",
      "name": "Create a document",
      "credentials": {
        "googleDocsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "workflowId": {
          "__rl": true,
          "value": "p84C6yGnVEkphVcC",
          "mode": "list",
          "cachedResultUrl": "/workflow/p84C6yGnVEkphVcC",
          "cachedResultName": "Notify"
        },
        "workflowInputs": {
          "mappingMode": "defineBelow",
          "value": {
            "type": "hr",
            "contents": "=Evento e Meeting creato per {{ $('Find Applicant').item.json.name }} {{ $('Find Applicant').item.json.surname }}: https://meet.google.com/{{ $('Create an event').item.json.conferenceData.conferenceId }}"
          },
          "matchingColumns": [],
          "schema": [
            {
              "id": "type",
              "displayName": "type",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "canBeUsedToMatch": true,
              "type": "string",
              "removed": false
            },
            {
              "id": "contents",
              "displayName": "contents",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "canBeUsedToMatch": true,
              "type": "string",
              "removed": false
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": true
        },
        "options": {}
      },
      "type": "n8n-nodes-base.executeWorkflow",
      "typeVersion": 1.3,
      "position": [
        1536,
        0
      ],
      "id": "9b130d1b-f354-4fb7-b0c5-82871ef7001b",
      "name": "Notify HR"
    },
    {
      "parameters": {
        "operation": "executeQuery",
        "query": "SELECT tsl.starting_from, a.name, a.surname, a.email, a.interview_id FROM applicant a, interview i, timeslot tsl WHERE \n  a.interview_id = i.id AND\n  i.timeslot_id = tsl.id AND\n  a.id = '{{ $json.applicantId }}';",
        "options": {}
      },
      "type": "n8n-nodes-base.postgres",
      "typeVersion": 2.6,
      "position": [
        240,
        0
      ],
      "id": "16298703-97e7-437e-bed0-56a9c89958d7",
      "name": "Find Applicant",
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "executeQuery",
        "query": "SELECT * FROM public.user usr, users_to_interviews ui, interview i WHERE\n  ui.interview_id = i.id AND\n  ui.user_id = usr.id AND\n  i.id = '{{ $json.interview_id }}';",
        "options": {}
      },
      "type": "n8n-nodes-base.postgres",
      "typeVersion": 2.6,
      "position": [
        464,
        0
      ],
      "id": "4d98b613-53ae-4b81-b056-375aebd71a80",
      "name": "Find Interview",
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "executeQuery",
        "query": "UPDATE interview \n  SET meeting_id = '{{ $json.conferenceData.conferenceId }}',\n      report_doc_id = '{{ $('Create a document').item.json.id }}'\n  WHERE id = '{{ $('Execute a SQL query').item.json.interview_id }}';",
        "options": {}
      },
      "type": "n8n-nodes-base.postgres",
      "typeVersion": 2.6,
      "position": [
        1328,
        0
      ],
      "id": "41b959a3-599b-4767-bb90-0db26346d2fa",
      "name": "Update Interview Data",
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "Aggregate": {
      "main": [
        [
          {
            "node": "Create a document",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create a document": {
      "main": [
        [
          {
            "node": "Create an event",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When Executed by Another Workflow": {
      "main": [
        [
          {
            "node": "Find Applicant",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create an event": {
      "main": [
        [
          {
            "node": "Update Interview Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Find Applicant": {
      "main": [
        [
          {
            "node": "Find Interview",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Find Interview": {
      "main": [
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Interview Data": {
      "main": [
        [
          {
            "node": "Notify HR",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": true,
  "settings": {
    "executionOrder": "v1",
    "availableInMCP": false
  },
  "versionId": "8ac8c11a-4ce9-4e93-9c86-63b53247234b",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "id": "ZlduEt4x0sSKkKah",
  "tags": []
}

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

About this workflow

Stage D. Uses executeWorkflowTrigger, googleCalendar, googleDocs, postgres. Event-driven trigger; 8 nodes.

Source: https://github.com/MuNuChapterHKN/HKrecruitment/blob/2f27f97cc2146df53de7962e71504db1c9d1ed68/n8n/workflows/d.json — original creator credit. Request a take-down →

More Data & Sheets workflows → · Browse all categories →

Related workflows

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

Data & Sheets

Agendamiento_v2. Uses n8n-nodes-evolution-api, redis, httpRequest, executeWorkflowTrigger. Event-driven trigger; 59 nodes.

N8N Nodes Evolution Api, Redis, HTTP Request +3
Data & Sheets

Cancelacion_v2. Uses executeWorkflowTrigger, redis, httpRequest, n8n-nodes-evolution-api. Event-driven trigger; 46 nodes.

Execute Workflow Trigger, Redis, HTTP Request +3
Data & Sheets

Template was created in n8n v1.90.2 Execute Sub-workflow Trigger node Chat Trigger node Redis node Postgres node Google Calendar node Execute Sub-workflow If node, Switch node, Code node, Edit Fields

Execute Workflow Trigger, Chat Trigger, Redis +2
Data & Sheets

This workflow acts as a junior finance research analyst for a UK boutique M&A or corporate finance team. It listens for Slack messages, classifies the request, gathers company or market data, and prod

HTTP Request, Google Drive, Google Docs +5
Data & Sheets

Youtube Searcher. Uses splitInBatches, httpRequest, manualTrigger, executeWorkflowTrigger. Event-driven trigger; 21 nodes.

HTTP Request, Execute Workflow Trigger, Postgres +1