👥 Chase missing onboarding documents daily with Google Drive, Gmail, Slack, and Data Tables

⚡ 1 views · 👥 HR & Recruitment

Description

Quick overview

This workflow runs daily at 08:00 to check each new hire’s Google Drive intake folder against a role-based requirements matrix stored in n8n Data Tables, emails missing onboarding documents via Gmail with blank form templates attached, and posts a daily overdue rollup to Slack.

How it works

  1. Runs every day at 08:00 on a schedule.
  2. Loads configuration values (Google Drive templates folder ID, Slack escalation channel ID, and Gmail reply-to address) and lists all blank form templates in the configured Google Drive folder.
  3. Reads the paperwork requirement matrix and the onboarding roster of people whose documents are not marked complete from n8n Data Tables.
  4. For each person, lists files in their Google Drive intake folder and compares filenames to required document slugs to determine what is missing and when each item is due.
  5. Calculates a chase stage (gentle, firm, overdue, complete) and suppresses repeat chases based on the person’s last chased date.
  6. When a chase is due, downloads matching blank form templates from Google Drive, bundles them into one email, and sends a tailored reminder via Gmail.
  7. Updates the person’s roster record with the current chase stage, last chased date, missing list, and completion flag, then posts a single Slack message summarizing only the people who are overdue.

Setup

  1. Add credentials for Google Drive OAuth2, Gmail OAuth2, and Slack.
  2. Replace the placeholders in the configuration step with your Google Drive templates folder ID, Slack channel ID for escalations, and the reply-to email address.
  3. Create and populate the n8n Data Tables named “Paperwork Requirement Matrix” (role, doc_slug, doc_label, due_offset_days) and “Paperwork Chase Roster” (name, email, role, start_date, drive_folder_id, plus tracking fields like last_chased and docs_complete).
  4. Ensure each required doc_slug appears in a blank form template filename in the templates folder and that uploaded intake files include the same slug in their filename.
  5. Keep each person’s intake folder flat (no subfolders) and allow Drive listings to return all files to avoid missing documents due to truncated results.

Requirements

Customization

Additional info

Nothing inspects file contents: a document counts as received the moment a file name in the intake folder contains its slug, so an empty, unsigned or wrong version upload passes, and a short slug can match an unrelated file. Both Drive listings continue on error, so a folder ID that is wrong or not shared with the credential reads as an empty folder and that person gets chased for documents they may have already uploaded. The Gmail send also continues on error and the roster row is written either way, so a failed send still advances last_chased and nothing retries until that tier’s cooldown expires. Completion is one way: once docs_complete is true the roster read skips the row, so a file deleted later never resurfaces. A roster role with no matching matrix rows produces zero requirements, which parks that person in the waiting stage permanently, never chased and never marked complete, while a blank or unparseable start_date makes every document due today and lands the person in the firm tier. The reconcile code reads one roster row per loop pass, so raising the batch size on Loop People One by One would skip everyone after the first person in each batch. There is no throttling beyond the sequential loop, so Gmail’s own daily send quota is the practical ceiling on roster size.

đź”— Nodes Used

Slack, Google Drive, Gmail, Schedule Trigger, Data table

📥 Import

Download workflow.json and import into n8n: Workflow menu → Import from File

📖 Importing guide · 🔑 Credential setup