{"product_id":"client-onboarding-saga-automation-with-webhooks-gmail-alerts","title":"Client Onboarding Saga Automation with Webhooks \u0026 Gmail Alerts","description":"\u003ch3\u003eTurn client onboarding into an automated “saga” with Webhooks, Data Tables, and Gmail alerts\u003c\/h3\u003e\n\u003cp\u003eThis n8n workflow coordinates a full client onboarding saga—starting from a webhook intake, persisting onboarding + step state in n8n Data Tables, reconciling external child outcomes (offer, invoice, booking, and documents), and sending “stranded onboarding” reminders via \u003cstrong\u003eGmail\u003c\/strong\u003e every 30 minutes.\u003c\/p\u003e\n\n\u003ch3\u003eWhat this workflow does\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eReceives onboarding requests\u003c\/strong\u003e via a \u003cstrong\u003eWebhook\u003c\/strong\u003e endpoint and validates an \u003cstrong\u003eintake token\u003c\/strong\u003e from request headers.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eNormalizes and validates payload data\u003c\/strong\u003e (identity, email, service code, quantity, kickoff slot, and optional document metadata). Invalid requests return \u003cstrong\u003e422\u003c\/strong\u003e.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003ePersists onboarding state\u003c\/strong\u003e in an \u003cstrong\u003en8n Data Table\u003c\/strong\u003e: inserts a new “claimed” onboarding row only when there’s no matching \u003cem\u003eonboarding_id\u003c\/em\u003e and \u003cem\u003esmoke_tag\u003c\/em\u003e.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eEnsures step intent records exist\u003c\/strong\u003e by reading existing step rows and inserting only missing intents for: offer, invoice, kickoff booking, signed document, welcome email, and internal checklist.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eReconciles evidence\u003c\/strong\u003e by fetching matching result rows from the offer, invoice, booking, and document result Data Tables, then updating step states to safe terminal\/review\/blocked\/unknown outcomes.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eUpdates the parent onboarding projection\u003c\/strong\u003e back into the Onboardings Data Table when needed, then returns a \u003cstrong\u003e202\u003c\/strong\u003e “saga receipt” with current decisions.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eRuns on a 30-minute schedule\u003c\/strong\u003e to re-read onboarding, step, alert, and child-result tables and adopt late evidence.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eUse cases\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eAutomate onboarding intake for SaaS onboarding workflows using webhook-driven requests.\u003c\/li\u003e\n  \u003cli\u003eGuarantee step-level tracking (offer → invoice → kickoff booking → signed document → welcome email) using Data Tables.\u003c\/li\u003e\n  \u003cli\u003eDetect and resolve “stranded onboarding” cases by sending scheduled \u003cstrong\u003eGmail\u003c\/strong\u003e alerts.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eTechnical details\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eNodes\/blocks:\u003c\/strong\u003e if, code, gmail, webhook, data table, sticky note.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eCore storage:\u003c\/strong\u003e n8n Data Tables for Onboardings, step rows, and child-result evidence (offer, invoice, booking, documents).\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eScheduling:\u003c\/strong\u003e every \u003cstrong\u003e30 minutes\u003c\/strong\u003e for continuous reconciliation and alerting.\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"N8N Commerce","offers":[{"title":"Default Title","offer_id":45891840508083,"sku":"N8N-18626","price":54.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0749\/6279\/6723\/files\/YvVLTZ9Z06xQ8-TCPTPeu_wr2kNnNs.png?v=1787562257","url":"https:\/\/buyflowscripts.com\/products\/client-onboarding-saga-automation-with-webhooks-gmail-alerts","provider":"N8N Commerce","version":"1.0","type":"link"}