This workflow follows the Gmail → Google Sheets 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 →
{
"name": "Compare DB and Email - Sanitized",
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": "={{ 6 }}"
}
]
}
},
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.3,
"position": [
-4752,
-1952
],
"id": "schedule-trigger-id",
"name": "Schedule Trigger1"
},
{
"parameters": {
"documentId": {
"__rl": true,
"value": "YOUR_GOOGLE_SHEET_ID_HERE",
"mode": "list"
},
"sheetName": {
"__rl": true,
"value": "YOUR_SHEET_NAME_OR_ID",
"mode": "list"
},
"options": {}
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [
-4496,
-1856
],
"id": "get-rows-node",
"name": "Get row(s) in sheet1",
"alwaysOutputData": false,
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"rules": {
"values": [
{
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 3
},
"conditions": [
{
"leftValue": "={{ $('Get row(s) in sheet1').item.json.Type }}",
"rightValue": "greenhouse",
"operator": {
"type": "string",
"operation": "contains"
},
"id": "cond-1"
}
],
"combinator": "and"
},
"renameOutput": true,
"outputKey": "Greenhouse"
},
{
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 3
},
"conditions": [
{
"id": "cond-2",
"leftValue": "={{ $('Get row(s) in sheet1').item.json.Type }}",
"rightValue": "ashby",
"operator": {
"type": "string",
"operation": "contains"
}
}
],
"combinator": "and"
},
"renameOutput": true,
"outputKey": "Ashby"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.switch",
"typeVersion": 3.4,
"position": [
-3824,
-1888
],
"id": "switch-node",
"name": "Switch1",
"alwaysOutputData": false,
"onError": "continueErrorOutput"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "loose",
"version": 3
},
"conditions": [
{
"id": "if-cond-1",
"leftValue": "={{ $json.jobs.title }}",
"rightValue": "Manager",
"operator": {
"type": "string",
"operation": "contains"
}
},
{
"id": "if-cond-2",
"leftValue": "={{ $json.jobs.location.name }}",
"rightValue": "Remote",
"operator": {
"type": "string",
"operation": "contains"
}
}
],
"combinator": "and"
},
"looseTypeValidation": true,
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.3,
"position": [
-3168,
-1952
],
"id": "if-node-2",
"name": "If2",
"alwaysOutputData": false
},
{
"parameters": {
"fieldToSplitOut": "jobs",
"include": "allOtherFields",
"options": {}
},
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
-3376,
-1952
],
"id": "split-out-2",
"name": "Split Out2",
"alwaysOutputData": true
},
{
"parameters": {
"options": {
"reset": false
}
},
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 3,
"position": [
-4256,
-1856
],
"id": "loop-node",
"name": "Loop Over Items1"
},
{
"parameters": {
"url": "=https://api.ashbyhq.com/posting-api/job-board/{{ $json.Token }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "application/json"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.4,
"position": [
-3600,
-1712
],
"id": "http-ashby",
"name": "HTTP Request3",
"alwaysOutputData": true
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 3
},
"conditions": [
{
"id": "if-cond-3",
"leftValue": "={{ $json.jobs.workplaceType }}",
"rightValue": "Remote",
"operator": {
"type": "string",
"operation": "equals"
}
},
{
"id": "if-cond-4",
"leftValue": "={{ $json.jobs.title }}",
"rightValue": "Manager",
"operator": {
"type": "string",
"operation": "contains"
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.3,
"position": [
-3152,
-1712
],
"id": "if-node-3",
"name": "If3",
"alwaysOutputData": false
},
{
"parameters": {
"fieldToSplitOut": "jobs",
"include": "allOtherFields",
"options": {}
},
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
-3280,
-1712
],
"id": "split-out-3",
"name": "Split Out3",
"alwaysOutputData": true
},
{
"parameters": {
"numberInputs": 3
},
"type": "n8n-nodes-base.merge",
"typeVersion": 3.2,
"position": [
-2544,
-1728
],
"id": "merge-node",
"name": "Merge1",
"alwaysOutputData": false
},
{
"parameters": {
"mergeByFields": {
"values": [
{
"field1": "absolute_url",
"field2": "absolute_url"
}
]
},
"resolve": "preferInput2",
"options": {}
},
"type": "n8n-nodes-base.compareDatasets",
"typeVersion": 2.3,
"position": [
-2592,
-2352
],
"id": "compare-datasets",
"name": "Compare Datasets1"
},
{
"parameters": {
"sendTo": "YOUR_EMAIL@example.com",
"subject": "NEW JOBS!",
"message": "=Here are some new jobs to consider:\n\n<br>\n{{ $json.data.map(item => item.absolute_url).join('<br>') }}",
"options": {}
},
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.2,
"position": [
-2192,
-1824
],
"id": "send-email-node",
"name": "Send a message",
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "append",
"documentId": {
"__rl": true,
"value": "YOUR_JOBS_DB_SHEET_ID",
"mode": "list"
},
"sheetName": {
"__rl": true,
"value": "Sheet1",
"mode": "list"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"absolute_url": "={{ $json.absolute_url }}"
},
"matchingColumns": [],
"schema": [
{
"id": "absolute_url",
"displayName": "absolute_url",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {}
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [
-1968,
-2000
],
"id": "append-row-node",
"name": "Append row in sheet1",
"alwaysOutputData": true,
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "clear",
"documentId": {
"__rl": true,
"value": "YOUR_UNIQUE_DB_SHEET_ID",
"mode": "list"
},
"sheetName": {
"__rl": true,
"value": "Sheet1",
"mode": "list"
},
"keepFirstRow": true
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [
-2192,
-1632
],
"id": "clear-sheet-node",
"name": "Clear sheet",
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"aggregate": "aggregateAllItemData",
"include": "specifiedFields",
"fieldsToInclude": "=absolute_url",
"options": {}
},
"type": "n8n-nodes-base.aggregate",
"typeVersion": 1,
"position": [
-2400,
-2000
],
"id": "aggregate-node",
"name": "Aggregate"
},
{
"parameters": {
"documentId": {
"__rl": true,
"value": "YOUR_JOBS_DB_SHEET_ID",
"mode": "list"
},
"sheetName": {
"__rl": true,
"value": "Sheet1",
"mode": "list"
},
"options": {}
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [
-3488,
-2368
],
"id": "orig-db-node",
"name": "OrigDB",
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"documentId": {
"__rl": true,
"value": "YOUR_UNIQUE_DB_SHEET_ID",
"mode": "list"
},
"sheetName": {
"__rl": true,
"value": "Sheet1",
"mode": "list"
},
"options": {}
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [
-3024,
-2208
],
"id": "temp-db-after-loop",
"name": "TempDB_AfterLoop",
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "append",
"documentId": {
"__rl": true,
"value": "YOUR_UNIQUE_DB_SHEET_ID",
"mode": "list"
},
"sheetName": {
"__rl": true,
"value": "Sheet1",
"mode": "list"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"title": "={{ $json.jobs.title }}",
"updated_at": "={{ $json.jobs.updated_at }}",
"absolute_url": "={{ $json.jobs.absolute_url || $json.jobs.jobUrl }}",
"first_published": "={{ $json.jobs.first_published }}"
},
"matchingColumns": [],
"schema": [
{
"id": "absolute_url",
"displayName": "absolute_url",
"type": "string"
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {}
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [
-2864,
-2048
],
"id": "temp-db-populate",
"name": "Temp DB Populate",
"alwaysOutputData": true,
"retryOnFail": true,
"waitBetweenTries": 5000,
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"url": "=https://boards-api.greenhouse.io/v1/boards/{{$json[\"Token\"]}}/jobs",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "application/json"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.4,
"position": [
-3600,
-1936
],
"id": "http-greenhouse",
"name": "HTTP Request",
"alwaysOutputData": true
},
{
"parameters": {},
"type": "n8n-nodes-base.limit",
"typeVersion": 1,
"position": [
-3632,
-2144
],
"id": "limit-node",
"name": "Limit"
},
{
"parameters": {
"fieldToSplitOut": "=data",
"options": {}
},
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
-2192,
-2000
],
"id": "split-out-final",
"name": "Split Out"
},
{
"parameters": {
"operation": "clear",
"documentId": {
"__rl": true,
"value": "YOUR_UNIQUE_DB_SHEET_ID",
"mode": "list"
},
"sheetName": {
"__rl": true,
"value": "Sheet1",
"mode": "list"
},
"keepFirstRow": true
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [
-2080,
-2256
],
"id": "clear-sheet-1-node",
"name": "Clear sheet1",
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"amount": 2
},
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
-2704,
-1920
],
"id": "wait-node",
"name": "Wait1"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 3
},
"conditions": [
{
"id": "if-cond-final",
"leftValue": "",
"rightValue": "",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.3,
"position": [
-2352,
-2272
],
"id": "if-final-node",
"name": "If"
}
],
"connections": {
"Schedule Trigger1": {
"main": [
[
{
"node": "Get row(s) in sheet1",
"type": "main",
"index": 0
},
{
"node": "OrigDB",
"type": "main",
"index": 0
}
]
]
},
"Get row(s) in sheet1": {
"main": [
[
{
"node": "Loop Over Items1",
"type": "main",
"index": 0
}
]
]
},
"Switch1": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
],
[
{
"node": "HTTP Request3",
"type": "main",
"index": 0
}
]
]
},
"If2": {
"main": [
[
{
"node": "Temp DB Populate",
"type": "main",
"index": 0
}
],
[
{
"node": "Merge1",
"type": "main",
"index": 0
}
]
]
},
"Split Out2": {
"main": [
[
{
"node": "If2",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items1": {
"main": [
[
{
"node": "Limit",
"type": "main",
"index": 0
}
],
[
{
"node": "Switch1",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request3": {
"main": [
[
{
"node": "Split Out3",
"type": "main",
"index": 0
}
]
]
},
"If3": {
"main": [
[
{
"node": "Temp DB Populate",
"type": "main",
"index": 0
}
],
[
{
"node": "Merge1",
"type": "main",
"index": 1
}
]
]
},
"Split Out3": {
"main": [
[
{
"node": "If3",
"type": "main",
"index": 0
}
]
]
},
"Merge1": {
"main": [
[
{
"node": "Loop Over Items1",
"type": "main",
"index": 0
}
]
]
},
"Compare Datasets1": {
"main": [
[],
[],
[],
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"Aggregate": {
"main": [
[
{
"node": "Split Out",
"type": "main",
"index": 0
},
{
"node": "Send a message",
"type": "main",
"index": 0
},
{
"node": "Clear sheet",
"type": "main",
"index": 0
}
]
]
},
"OrigDB": {
"main": [
[
{
"node": "Compare Datasets1",
"type": "main",
"index": 0
}
]
]
},
"TempDB_AfterLoop": {
"main": [
[
{
"node": "Compare Datasets1",
"type": "main",
"index": 1
}
]
]
},
"Temp DB Populate": {
"main": [
[
{
"node": "Wait1",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request": {
"main": [
[
{
"node": "Split Out2",
"type": "main",
"index": 0
}
]
]
},
"Limit": {
"main": [
[
{
"node": "TempDB_AfterLoop",
"type": "main",
"index": 0
}
]
]
},
"Split Out": {
"main": [
[
{
"node": "Append row in sheet1",
"type": "main",
"index": 0
}
]
]
},
"Wait1": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 2
}
]
]
},
"If": {
"main": [
[
{
"node": "Aggregate",
"type": "main",
"index": 0
}
],
[
{
"node": "Clear sheet1",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
}
}
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.
gmailOAuth2googleSheetsOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Compare DB and Email - Sanitized. Uses googleSheets, httpRequest, gmail. Scheduled trigger; 24 nodes.
Source: https://github.com/MDunn83/AI-Portfolio/blob/main/workflows/standalone-builds/new-job-openings/archive/new-job-openings.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
YOUR_ID 4. Uses gmail, googleDrive, googleSheets, httpRequest. Scheduled trigger; 53 nodes.
Looking for a way to track GitHub bounty issues automatically and get notified in real time? This GitHub Bounty Tracker workflow monitors repositories for issues labeled 💎 Bounty, logs them in Google
This workflow automatically sends a beautifully designed HTML newsletter every Sunday at 8 AM, featuring products currently on sale from your Algolia-powered e-commerce store.
This n8n template demonstrates how to build a Auto Lead Gen & Outreach System for Local Businesses specifically designed to help businesses that don’t have a website yet.
I created this workflow with care for marketing professionals and agencies who manage multiple Meta Ads (Facebook) accounts and want to track ad account balances automatically — no more logging in eve