Google Sheets + Gmail: user invites sent for you
Adding new hires should be routine. Instead, it turns into a quiet game of “did we actually invite them yet?” because someone copied an email wrong, skipped a row, or assumed IT already handled it.
HR coordinators feel it first, but ops leads and agency owners onboarding contractors run into the same mess. This Sheets Gmail invites automation keeps one Google Sheet as the source of truth and sends the right invite without the chasing.
You’ll see how the workflow checks your n8n user list, compares it to your spreadsheet, then creates missing users and sends invitations automatically.
How This Automation Works
Here’s the complete workflow you’ll be setting up:
n8n Workflow Template: Google Sheets + Gmail: user invites sent for you
flowchart LR
subgraph sg0["When clicking ‘Test workflow’ Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Test workflow’", pos: "b", h: 48 }
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get all Users"]
n2@{ icon: "mdi:database", form: "rounded", label: "Get all rows", pos: "b", h: 48 }
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Get non-users"]
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Invite Users"]
n5@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "Create users list", pos: "b", h: 48 }
n8["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Combine all paginated results"]
n6 --> n2
n6 --> n1
n2 --> n3
n1 --> n8
n3 --> n7
n5 --> n6
n7 --> n4
n8 --> n3
n0 --> n6
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0,n5 trigger
class n2 database
class n1,n4 api
class n8 code
classDef customIcon fill:none,stroke:none
class n1,n3,n4,n8 customIcon
Why This Matters: New hires fall through the cracks
Onboarding looks simple on paper: collect details, create accounts, send invites, done. In reality, it’s scattered across tools and people. Someone adds a row to Google Sheets. Another person exports users from your platform. Then there’s the inevitable “wait, did we already invite this email?” moment. If you’re hiring quickly or managing a rotating bench of contractors, those tiny delays stack up into missed start dates, Slack messages at night, and access requests that bounce between teams. Frankly, the worst part is you can’t see the truth without checking three places.
The friction compounds. Here’s where it breaks down most often.
- Someone forgets to send the invite email after adding a new row, so the hire shows up on day one without access.
- Duplicate entries creep in because different people add the same person with slightly different email formats.
- Manually comparing a sheet to an existing user list is slow, and it’s easy to miss one name when you’re in a hurry.
- When you do catch errors, you end up redoing work and explaining what happened, which is a bad use of anyone’s attention.
What You’ll Build: A Google Sheet that triggers user invites
This workflow turns your onboarding spreadsheet into a reliable trigger for account creation and invitations. It starts by pulling the latest rows from Google Sheets (your list of hires, contractors, or anyone who needs access). In parallel, it retrieves the current users from your n8n instance via an HTTP request, including paging through results so you don’t miss anyone. Then it compares the two lists and filters out people who already exist. What’s left becomes the invite list: only the emails that need action. Finally, the workflow creates or invites those users automatically, then sends the invitation emails so the new user gets access without you babysitting the process.
The workflow begins on a schedule (or manual run when you want to test). It fetches sheet records and platform users, merges them to exclude existing users, then sends invites for the remaining list. You keep the spreadsheet format you’re comfortable with, and the automation handles the repetitive checking.
What You’re Building
| What Gets Automated | What You’ll Achieve |
|---|---|
|
|
Expected Results
Say you onboard 10 people in a week. Manually, you might spend about 10 minutes per person pulling the user list, checking the sheet, creating the user, and sending the invite, which is roughly 100 minutes. With this workflow, you spend maybe 15 minutes up front making sure the sheet columns are right, then the scheduled run handles the checks and sends the invites. For most teams, that’s around 1–2 hours back every week, plus fewer interruptions.
Before You Start
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Sheets for the onboarding source-of-truth sheet.
- Gmail to send invitation emails from your workspace.
- n8n API key (get it from your n8n user settings).
Skill level: Intermediate. You’ll be comfortable connecting credentials and pasting an API key, but you won’t need to write real code.
Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).
Step by Step
A scheduled (or manual) run kicks things off. You can trigger it with the built-in schedule for continuous sync, or use the manual trigger when you’re setting it up and testing.
Your instance URL gets mapped first. The workflow sets the base n8n URL once, then uses it for the later API calls so you don’t hardcode values in multiple places.
Data comes from two places. Google Sheets returns the rows you care about (email, name, requirements, credentials), while an HTTP request pulls your existing n8n users. A small aggregation step collects paged responses so your comparison is complete.
Only missing users get invited. The merge step excludes people already in the platform, then a set step builds a clean invite list before the invite request is sent. The output is simple: new users receive invitation emails automatically, and your sheet stays the system your team updates.
You can easily modify the sheet columns to match your internal onboarding checklist, then keep the rest of the workflow the same. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Trigger Type
Set up both manual and scheduled start points so you can test on demand and run the workflow automatically.
- Open Manual Execution Start and leave defaults to enable manual testing.
- Open Scheduled Automation Trigger and configure the interval in Rule as needed for production runs.
- Confirm both Manual Execution Start and Scheduled Automation Trigger connect to Map Instance URL.
Step 2: Connect Google Sheets
Pull invite candidates from your spreadsheet.
- Open Fetch Sheet Records and set Document ID to
[YOUR_ID]. - Set Sheet Name to
Sheet1(valuegid=0). - Credential Required: Connect your googleSheetsOAuth2Api credentials.
{{$json['Email Address']}}.Step 3: Set Up Data Processing & Parallel User Lookup
Define your n8n instance URL, fetch existing users in parallel with sheet data, and remove duplicates.
- Open Map Instance URL and set the assignment n8n_url to
https://{n8n-url}/api/v1/users. - Confirm Map Instance URL outputs to both Fetch Sheet Records and Retrieve Platform Users in parallel.
- Open Retrieve Platform Users and set URL to
{{$json.n8n_url}}, with Query Parameters limit set to5. - Credential Required: Connect your n8nApi credentials in Retrieve Platform Users (HTTP Header Auth is also configured; keep it aligned with your instance requirements).
- Open Aggregate User Pages and keep the JavaScript code as-is to combine paginated results.
- Open Exclude Existing Users and confirm Join Mode is
keepNonMatcheswith merge fields Email Address (input1) to email (input2).
{{$response.body.nextCursor}} and completes when {{!$response.body.nextCursor}} evaluates true.Step 4: Configure Output/Action Nodes
Build the invite payload and send invitations to your n8n instance.
- Open Build Invite List and set email to
{{$json['Email Address']}}. - Set role to
global:memberin Build Invite List. - Open Send User Invites and set URL to
{{$('Map Instance URL').item.json.n8n_url}}. - Set Method to
POSTand JSON Body to{{$json}}wrapped as{{[$json]}}with Send Body enabled. - Credential Required: Connect your n8nApi credentials in Send User Invites (HTTP Header Auth is also configured; keep it aligned with your instance requirements).
Step 5: Test and Activate Your Workflow
Validate the workflow end-to-end, then enable automated runs.
- Click Execute Workflow using Manual Execution Start to run a test.
- Verify Exclude Existing Users outputs only non-registered emails from Fetch Sheet Records.
- Confirm Send User Invites returns a successful response from your n8n API.
- Activate the workflow and rely on Scheduled Automation Trigger for production invites.
Troubleshooting Tips
- Google Sheets credentials can expire or need specific permissions. If things break, check the connected Google account in n8n Credentials and confirm the sheet is shared correctly.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Your n8n API key can be revoked, and the HTTP Request nodes will start failing with auth errors. Regenerate the key and update it anywhere the “Retrieve Platform Users” or “Send User Invites” calls use it.
Quick Answers
About 30 minutes if your credentials are ready.
No. You’ll connect Google Sheets and your n8n API key, then adjust a couple of fields for your sheet columns.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Google Workspace costs if you’re sending invites from Gmail.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and you probably should. You can change the column mapping in the “Fetch Sheet Records” and “Build Invite List” set steps to match your own headers (for example, “Work Email” instead of “Email Address”). If you’re not inviting users to n8n, you can also swap the “Send User Invites” HTTP Request for another endpoint that creates accounts in a different system. Some teams add extra logic in the If step to only invite rows with “Requirements = complete” so partially filled entries don’t trigger invites.
Usually it’s a permissions issue: the Google account in n8n can’t access the sheet, or the sheet was moved to a different Drive. Reconnect the Google Sheets credential, then confirm the spreadsheet ID and worksheet name still match. If it fails only sometimes, you may be hitting Google API limits during busy periods, so spacing out runs can help.
Plenty for most small teams. On n8n Cloud, your limit depends on plan and execution count, while self-hosting depends on your server. Practically, inviting a few dozen users at a time is fine; if you’re inviting hundreds, use batching (Split in Batches) and make sure your email sending limits in Gmail aren’t being exceeded.
Often, yes. This workflow needs “compare two lists and act only on the difference,” which is where simple Zap-style automations start getting awkward. n8n handles branching and merging cleanly, and you can self-host for unlimited executions if you’re syncing frequently. Also, calling your n8n instance API via HTTP Request is straightforward here, instead of hunting for a prebuilt action. Zapier or Make can still work if you only need a basic “new row → send email” flow. Talk to an automation expert if you want help choosing.
Once this is running, your sheet becomes the trigger and the workflow does the checking, inviting, and sending. It’s a small setup that removes a surprisingly annoying weekly problem.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.