{"meta":{"instanceId":"workflow-10bf43dc","versionId":"1.0.0","createdAt":"2025-09-29T07:07:45.590003","updatedAt":"2025-09-29T07:07:45.590013","owner":"n8n-user","license":"MIT","category":"automation","status":"active","priority":"high","environment":"production"},"nodes":[{"id":"93eba4f0-218d-47d3-a55f-09d490d5e0bb","name":"Webhook","type":"n8n-nodes-base.webhook","position":[100,320],"webhookId":"03e24572-a381-455e-a5b8-ae697647f7d4","parameters":{"path":"03e24572-a381-455e-a5b8-ae697647f7d4","options":{},"httpMethod":"POST"},"typeVersion":1.1,"notes":"This webhook node performs automated tasks as part of the workflow."},{"id":"e2c8d43e-79f9-45a4-9d6d-37e8768e7f81","name":"Create Row","type":"n8n-nodes-base.grist","position":[940,240],"parameters":{"docId":"","tableId":"","operation":"create","fieldsToSend":{"properties":[{"fieldId":"Source","fieldValue":"={{ $json.body[0].id }}"}]}},"credentials":{"gristApi":{"id":"{{ $credentials.gristApi.id }}","name":"Grist"}},"typeVersion":1,"notes":"This grist node performs automated tasks as part of the workflow."},{"id":"1e6e741e-2890-4e08-a97a-efae1812d507","name":"Confirmed?","type":"n8n-nodes-base.if","position":[300,320],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"df1c1dba-dc96-42e9-86ee-8ccd4c82b048","operator":{"type":"boolean","operation":"true","singleValue":true},"leftValue":"={{ $json.body[0].Confirmed }}","rightValue":""}]}},"notesInFlow":true,"typeVersion":2,"notes":"This if node performs automated tasks as part of the workflow."},{"id":"c6b1b482-6121-4484-b524-bc3e7e175fe8","name":"get existing","type":"n8n-nodes-base.grist","position":[560,160],"parameters":{"docId":"","tableId":"","additionalOptions":{"filter":{"filterProperties":[{"field":"Source","values":"={{ $json.body[0].id }}"}]}}},"credentials":{"gristApi":{"id":"{{ $credentials.gristApi.id }}","name":"Grist"}},"typeVersion":1,"alwaysOutputData":true,"notes":"This grist node performs automated tasks as part of the workflow."},{"id":"a52e000c-73ef-4f2d-811d-cbcaf45e2b75","name":"has existing?","type":"n8n-nodes-base.if","position":[700,160],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"6f08b500-956e-493c-abbe-845b5352110c","operator":{"type":"object","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json }}","rightValue":""}]}},"typeVersion":2,"notes":"This if node performs automated tasks as part of the workflow."},{"id":"fe609754-3dd6-4bbd-932a-a30f7d100911","name":"Confirmation-based","type":"n8n-nodes-base.stickyNote","position":[460,420],"parameters":{"width":346.820338983051,"height":144.13559322033893,"content":"## Confirmation-based\nIn the source table there is a boolean column \"Confirmed\" that will trigger the transfer.\nThis way there is a manual check involved & it's a conscious step to trigger the workflow."},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"edb074f6-b264-45ec-87e2-cf91063ca63b","name":"Runs once","type":"n8n-nodes-base.stickyNote","position":[900,60],"parameters":{"width":253.74915254237288,"height":139.9050847457627,"content":"## Runs once\nIf the destination table already contains an entry, **we will not re-create/update** it (as it might've already been changed manually)\n"},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."}],"connections":{"Webhook":{"main":[[],[],[],[],[],[],[],[],[]]}},"name":"Webhook Workflow","settings":{"executionOrder":"v1","saveManualExecutions":true,"callerPolicy":"workflowsFromSameOwner","errorWorkflow":null,"timezone":"UTC","executionTimeout":3600,"maxExecutions":1000,"retryOnFail":true,"retryCount":3,"retryDelay":1000},"description":"Automated workflow: Webhook Workflow. This workflow integrates 5 different services: webhook, stickyNote, grist, stopAndError, if. It contains 9 nodes and follows best practices for error handling and security.","notes":"Excellent quality workflow: Webhook Workflow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}