This workflow corresponds to n8n.io template #9408 — we link there as the canonical source.
This workflow follows the Google Drive → 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 →
{
"id": "ZI6iraWt5DF3ohnS",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Automated Test Run and Status Update",
"tags": [],
"nodes": [
{
"id": "ebbca67b-a5e8-47a6-b0f0-0e01a2cf0c90",
"name": "When clicking \u2018Execute workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-576,
0
],
"parameters": {},
"typeVersion": 1
},
{
"id": "f90f0568-e7ab-451c-bfe9-7151835fec62",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-384,
208
],
"parameters": {
"width": 304,
"height": 368,
"content": "## \ud83d\udd04 Execute Target Workflow Under Test\n**Action:** \n- Calls and executes the \"Archive Payment Receipts\" workflow as a sub-process. \n**Description:** \n- Runs the specified workflow and waits for its completion. \n- Configured to continue execution even if the sub-workflow encounters errors. \n- Captures the output (including any error objects) for validation in subsequent steps. \n- Critical for automated regression testing and CI/CD pipelines."
},
"typeVersion": 1
},
{
"id": "f5de02c6-f686-402f-90df-80bc60151c1c",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-96,
-480
],
"parameters": {
"height": 448,
"content": "## \u2705 Test Result Evaluation (Pass/Fail Check)\n**Action:** \n- Determines whether the sub-workflow executed successfully or failed. \n**Description:** \n- Checks if an \"error\" field exists in the returned JSON data. \n- **True Path (No Error):** Routes to success logging branch. \n- **False Path (Error Exists):** Routes to failure logging and error reporting branch. \n- Acts as the decision gateway for all downstream reporting actions."
},
"typeVersion": 1
},
{
"id": "3af7b28f-f3a6-45af-a3c0-49d0d867290d",
"name": "Test Result Evaluation ",
"type": "n8n-nodes-base.if",
"position": [
-16,
0
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "c9f7e963-a035-4c64-82ef-f870f1d6587c",
"operator": {
"type": "string",
"operation": "notExists",
"singleValue": true
},
"leftValue": "={{$json[\"error\"]}}",
"rightValue": ""
}
]
},
"looseTypeValidation": true
},
"typeVersion": 2.2
},
{
"id": "c9ded697-7e80-4c9d-ae63-b34dd83a4b4b",
"name": "Format Success Test Result",
"type": "n8n-nodes-base.set",
"position": [
384,
-208
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "e70c3468-0767-470a-b780-7e17188788c2",
"name": "status",
"type": "string",
"value": "\u2705 Passed"
},
{
"id": "6b01dbe6-137a-46d0-b909-0c863d25e3a1",
"name": "tested_workflow",
"type": "string",
"value": "Retention Tracking Post-Hire"
},
{
"id": "5ca7a3ff-f30a-4ab4-9a54-b33188458d7a",
"name": "",
"type": "string",
"value": ""
},
{
"id": "f6f5dd9b-379c-4e96-b74f-d394f0e9d83f",
"name": "timestamp",
"type": "string",
"value": "=={{$now}}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "0df832de-9809-4c05-944b-1ab8e62fb6ff",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1232,
-704
],
"parameters": {
"height": 448,
"content": "## \u2601\ufe0f Archive Success Report to Google Drive\n**Action:** \n- Uploads the success test report file to a designated Google Drive folder. \n**Description:** \n- Stores test results in the \"resume store\" folder for centralized access. \n- File name dynamically includes workflow name, status, and timestamp. \n- Provides a permanent record of successful test executions. \n- Supports compliance and audit trail requirements."
},
"typeVersion": 1
},
{
"id": "18671bfd-775b-42e6-a64e-3921ffee5961",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
960,
-640
],
"parameters": {
"height": 384,
"content": "## \ud83d\udce6 Convert Success Report to Text File\n**Action:** \n- Transforms the formatted text into a downloadable .txt file. \n**Description:** \n- Prepares the success report for upload to Google Drive. \n- File naming includes workflow name, status, and timestamp for easy identification. \n- Supports long-term archival and audit requirements."
},
"typeVersion": 1
},
{
"id": "90db750f-6254-40d3-8755-4b22c377f3c3",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
640,
-640
],
"parameters": {
"height": 400,
"content": "## \ud83d\udcc4 Generate Success Report Text\n**Action:** \n- Formats test result data into a human-readable text report. \n**Description:** \n- Concatenates workflow name, pass status, and timestamp into a structured text block. \n- Output is used for file creation and task updates. \n- Ensures consistent formatting across all reporting channels."
},
"typeVersion": 1
},
{
"id": "fcce2d0a-4f68-49c5-a1e6-87be0cadb94b",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
288,
-672
],
"parameters": {
"height": 448,
"content": "## \ud83c\udfaf Format Success Test Result\n**Action:** \n- Structures the test outcome data for successful workflow execution. \n**Description:** \n- Creates a standardized result object containing: \n - Status: \"\u2705 Passed\" \n - Tested Workflow Name: \"Retention Tracking Post-Hire\" \n - Timestamp: Current execution time \n- Prepares data for archival and notification in subsequent nodes."
},
"typeVersion": 1
},
{
"id": "48482dbc-5fa7-47d6-8f4e-94f4f7cecf3c",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
320,
384
],
"parameters": {
"height": 448,
"content": "## \u274c Format Failed Test Result\n**Action:** \n- Structures the test outcome data for failed workflow execution. \n**Description:** \n- Creates a standardized result object containing: \n - Status: \"\u274c Failed\" \n - Tested Workflow Name: \"Retention Tracking Post-Hire\" \n - Timestamp: Current execution time \n- Ensures failure details are captured for debugging and audit trails."
},
"typeVersion": 1
},
{
"id": "163d4cae-b9b2-4317-867e-d5b3ad1d4173",
"name": "Format Failed Test Result",
"type": "n8n-nodes-base.set",
"position": [
368,
224
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "e70c3468-0767-470a-b780-7e17188788c2",
"name": "status",
"type": "string",
"value": "\u274c Failed"
},
{
"id": "6b01dbe6-137a-46d0-b909-0c863d25e3a1",
"name": "tested_workflow",
"type": "string",
"value": "Retention Tracking Post-Hire"
},
{
"id": "f6f5dd9b-379c-4e96-b74f-d394f0e9d83f",
"name": "timestamp",
"type": "string",
"value": "=={{$now}}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "5040deb0-6db6-40c8-9cad-f8637dd2f9fa",
"name": "Generate Success Report Text",
"type": "n8n-nodes-base.code",
"position": [
736,
-208
],
"parameters": {
"jsCode": "return [\n {\n json: {\n text: `Workflow: ${$json.tested_workflow}\nStatus: ${$json.status}\nTimestamp: ${$json.timestamp}`\n }\n }\n];\n"
},
"typeVersion": 2
},
{
"id": "2b1741e8-7258-4f28-b050-57dc4545692b",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
1232,
416
],
"parameters": {
"height": 400,
"content": "## \u2601\ufe0f Archive Failure Report to Google Drive\n**Action:** \n- Uploads the failure test report file to a designated Google Drive folder. \n**Description:** \n- Stores test results in the \"resume store\" folder alongside success reports. \n- Enables team members to review failed test runs without accessing n8n directly. \n- Facilitates root cause analysis and troubleshooting."
},
"typeVersion": 1
},
{
"id": "8e5de5e8-71a1-4a74-b1a9-df712153c9db",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
944,
416
],
"parameters": {
"height": 352,
"content": "## \ud83d\udce6 Convert Failure Report to Text File\n**Action:** \n- Transforms the formatted text into a downloadable .txt file. \n**Description:** \n- Prepares the failure report for upload to Google Drive. \n- File naming convention matches success reports for consistent organization. \n- Critical for post-mortem analysis and debugging."
},
"typeVersion": 1
},
{
"id": "54f6ba7c-b99c-40c3-a0ec-14bfd933ca2c",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
672,
400
],
"parameters": {
"height": 368,
"content": "## \ud83d\udcc4 Generate Failure Report Text\n**Action:** \n- Formats test result data into a human-readable text report. \n**Description:** \n- Concatenates workflow name, fail status, and timestamp into a structured text block. \n- Mirrors the success report structure for consistency. \n- Enables quick identification of failed test runs in logs and notifications."
},
"typeVersion": 1
},
{
"id": "6637cf99-13de-4668-bb63-ea921dccc182",
"name": "Generate Failure Report Text",
"type": "n8n-nodes-base.code",
"position": [
736,
224
],
"parameters": {
"jsCode": "return [\n {\n json: {\n text: `Workflow: ${$json.tested_workflow}\nStatus: ${$json.status}\nTimestamp: ${$json.timestamp}`\n }\n }\n];\n"
},
"typeVersion": 2
},
{
"id": "1140f35d-1fc6-4dab-b7a5-4ac118ea4a6d",
"name": "Convert Success Report to Text File",
"type": "n8n-nodes-base.convertToFile",
"position": [
1024,
-208
],
"parameters": {
"options": {},
"operation": "toText",
"sourceProperty": "=text"
},
"typeVersion": 1.1
},
{
"id": "57b36b45-ebfb-4e36-8b3d-79641f1831a9",
"name": "Convert Failure Report to Text File",
"type": "n8n-nodes-base.convertToFile",
"position": [
1008,
224
],
"parameters": {
"options": {},
"operation": "toText",
"sourceProperty": "=text"
},
"typeVersion": 1.1
},
{
"id": "4b572d2b-e233-410b-aa83-abae2b023184",
"name": "Archive Success Report to Google Drive",
"type": "n8n-nodes-base.googleDrive",
"position": [
1296,
-208
],
"parameters": {
"name": "={{ $json.tested_workflow }}_{{ $json.status }}_{{ $json.timestamp.replace(/[:.]/g, \"-\") }}.txt\n",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "list",
"value": "16lOVXsq0xkvJ8sCM7hCFAghQvDOXann7",
"cachedResultUrl": "https://drive.google.com/drive/folders/16lOVXsq0xkvJ8sCM7hCFAghQvDOXann7",
"cachedResultName": "resume store"
}
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "0c3a0ce7-61bd-4ab4-9e3b-a0f6a97c75bb",
"name": "Archive Failure Report to Google Drive",
"type": "n8n-nodes-base.googleDrive",
"position": [
1312,
224
],
"parameters": {
"name": "={{ $json.tested_workflow }}_{{ $json.status }}_{{ $json.timestamp.replace(/[:.]/g, \"-\") }}.txt\n",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "list",
"value": "16lOVXsq0xkvJ8sCM7hCFAghQvDOXann7",
"cachedResultUrl": "https://drive.google.com/drive/folders/16lOVXsq0xkvJ8sCM7hCFAghQvDOXann7",
"cachedResultName": "resume store"
}
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "dcde5325-c1a3-4e33-acf9-661587287d9f",
"name": "Sticky Note10",
"type": "n8n-nodes-base.stickyNote",
"position": [
1552,
400
],
"parameters": {
"height": 400,
"content": "## \u270f\ufe0f Update ClickUp Task with Failure Status\n**Action:** \n- Posts the failure test result to a specific ClickUp task for team visibility. \n**Description:** \n- Updates task ID .. with formatted test outcome. \n- Alerts the team to failed test runs immediately. \n- Centralizes test monitoring in the project management platform."
},
"typeVersion": 1
},
{
"id": "5622acb4-1563-498d-9ac8-cb0d2fdadebf",
"name": "Sticky Note11",
"type": "n8n-nodes-base.stickyNote",
"position": [
1520,
-656
],
"parameters": {
"height": 400,
"content": "## \u270f\ufe0f Update ClickUp Task with Success Status\n**Action:** \n- Posts the success test result to a specific ClickUp task for team visibility. \n**Description:** \n- Updates task ID with formatted test outcome. \n- Keeps project management tools synchronized with test results. \n- Enables real-time notifications to stakeholders without manual updates."
},
"typeVersion": 1
},
{
"id": "7c80063a-3bfe-4677-9dfc-9f24616bb84a",
"name": "Update ClickUp Task with Success Status",
"type": "n8n-nodes-base.clickUp",
"position": [
1552,
-208
],
"parameters": {
"id": "86b700vbb",
"operation": "update",
"updateFields": {
"content": "={{ $('Generate Success Report Text').item.json.text }}"
}
},
"credentials": {
"clickUpApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "b26d1493-d58a-4395-b4d3-d2bdfa4080cb",
"name": "Update ClickUp Task with Failure Status",
"type": "n8n-nodes-base.clickUp",
"position": [
1584,
224
],
"parameters": {
"id": "86b700vbb",
"operation": "update",
"updateFields": {
"content": "={{ $('Generate Failure Report Text').item.json.text }}"
}
},
"credentials": {
"clickUpApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "5dff41d1-8ca3-49e2-a6cd-f181bb402cb0",
"name": "Sticky Note12",
"type": "n8n-nodes-base.stickyNote",
"position": [
-144,
784
],
"parameters": {
"height": 448,
"content": "## \ud83d\udcca Log Error Details to Error Tracking Sheet\n**Action:** \n- Appends error information to a dedicated error log in Google Sheets. \n**Description:** \n- Writes to the \"error log sheet\" tab in the \"Interviewer Brief Pack\" spreadsheet. \n- Captures raw error objects for detailed analysis. \n- Creates a queryable database of all test failures for trend analysis. \n- Supports continuous improvement of workflow reliability."
},
"typeVersion": 1
},
{
"id": "4a18b563-f4ef-4ad8-8b19-74d45ac01736",
"name": " Log Error Details to Error Tracking Sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
144,
752
],
"parameters": {
"columns": {
"value": {
"error": "={{ $json.error }}"
},
"schema": [
{
"id": "error_id",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "error_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "error",
"type": "string",
"display": true,
"required": false,
"displayName": "error",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1338537721,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Uldk_4BxWbdZTDZxFUeohIfeBmGHHqVEl9Ogb0l6R8Y/edit#gid=1338537721",
"cachedResultName": "error log sheet"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1Uldk_4BxWbdZTDZxFUeohIfeBmGHHqVEl9Ogb0l6R8Y",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Uldk_4BxWbdZTDZxFUeohIfeBmGHHqVEl9Ogb0l6R8Y/edit?usp=drivesdk",
"cachedResultName": "Interviewer Brief Pack "
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "4158484c-a8ed-4c33-8ea2-f0fb7cf2194d",
"name": "Execute Target Workflow Under Test",
"type": "n8n-nodes-base.executeWorkflow",
"onError": "continueRegularOutput",
"position": [
-288,
0
],
"parameters": {
"options": {
"waitForSubWorkflow": true
},
"workflowId": {
"__rl": true,
"mode": "list",
"value": "gr2rafzxOw1ks4Bd",
"cachedResultUrl": "/workflow/gr2rafzxOw1ks4Bd",
"cachedResultName": "Archive Payment Receipts with Stripe, Google Drive, and Google Sheets"
},
"workflowInputs": {
"value": {},
"mappingMode": "defineBelow"
}
},
"retryOnFail": false,
"typeVersion": 1.3,
"alwaysOutputData": true
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "034f6efb-c4fc-498e-95fa-b58bedd10782",
"connections": {
"Test Result Evaluation ": {
"main": [
[
{
"node": "Format Success Test Result",
"type": "main",
"index": 0
}
],
[
{
"node": "Format Failed Test Result",
"type": "main",
"index": 0
},
{
"node": " Log Error Details to Error Tracking Sheet",
"type": "main",
"index": 0
}
]
]
},
"Format Failed Test Result": {
"main": [
[
{
"node": "Generate Failure Report Text",
"type": "main",
"index": 0
}
]
]
},
"Format Success Test Result": {
"main": [
[
{
"node": "Generate Success Report Text",
"type": "main",
"index": 0
}
]
]
},
"Generate Failure Report Text": {
"main": [
[
{
"node": "Convert Failure Report to Text File",
"type": "main",
"index": 0
}
]
]
},
"Generate Success Report Text": {
"main": [
[
{
"node": "Convert Success Report to Text File",
"type": "main",
"index": 0
}
]
]
},
"Execute Target Workflow Under Test": {
"main": [
[
{
"node": "Test Result Evaluation ",
"type": "main",
"index": 0
}
]
]
},
"Convert Failure Report to Text File": {
"main": [
[
{
"node": "Archive Failure Report to Google Drive",
"type": "main",
"index": 0
}
]
]
},
"Convert Success Report to Text File": {
"main": [
[
{
"node": "Archive Success Report to Google Drive",
"type": "main",
"index": 0
}
]
]
},
"When clicking \u2018Execute workflow\u2019": {
"main": [
[
{
"node": "Execute Target Workflow Under Test",
"type": "main",
"index": 0
}
]
]
},
"Archive Failure Report to Google Drive": {
"main": [
[
{
"node": "Update ClickUp Task with Failure Status",
"type": "main",
"index": 0
}
]
]
},
"Archive Success Report to Google Drive": {
"main": [
[
{
"node": "Update ClickUp Task with Success Status",
"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.
clickUpApigoogleDriveOAuth2ApigoogleSheetsOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow acts as a CI/CD-style test harness for validating other n8n workflows. It executes a target workflow (here: Archive Payment Receipts), evaluates pass/fail outcomes, and generates structured reports. Results are automatically archived to Google Drive, logged in…
Source: https://n8n.io/workflows/9408/ — 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.
PCN. Uses googleSheets, httpRequest, @n-octo-n/n8n-nodes-json-database, itemLists. Event-driven trigger; 60 nodes.
The workflow automates the process of gathering extensive keyword data for a "Main Keyword." It starts by reading initial parameters from a Google Sheets template, creates a new dedicated Google Sheet
🔥 March Sale – n8n Community Members Get ideoGener8r for Just $27! (Reg. $47) Use Coupon Code: (Valid until 3/31/2025 for n8n community members)
📄 Documentation: Notion Guide
Overview