Why does a CRM stage change create duplicate work?
Because stage-change webhooks are not delivered once. Retries, manual edits and re-saves all fire the same event again. A naive handler creates the task, the invoice and the project board every single time.
Sheraton Interiors is a UK kitchen and interiors retailer. Its work moves across Zoho CRM, Zoho Projects, Zoho Invoice, ClickUp, Google Sheets and QuickBooks.
What breaks if you do it the obvious way?
Duplicate invoices reach the customer. Duplicate tasks reach the installer. Nobody notices until finance does a reconciliation, and by then the trust is gone.
How does the pipeline move a job forward?
Two routers. Leads run through fourteen stages, New Enquiry to Deposit Received plus four terminal states. Deals run through thirteen, Request Survey to second stage sign off, including optional worktop, Quooker and splashback installations. Six shared sub-workflows carry OAuth for CRM, Mail, Projects, Invoice and Esign.
How do repeated events become safe to run?
Every branch that creates something checks first whether it already exists. Production_Tasks_Already_Created?, PreDelivery_Invoice_Already_Created?, Delivered_Tasks_Already_Created?. The guards are unglamorous and they are the reason the pipeline can be re-fired safely.
Stage progression is gated on required fields, so a deal cannot advance with incomplete data. When a gate fails the run stops with an error rather than continuing quietly.
Token refresh is centralised into one sub-workflow per Zoho service, with a five minute expiry buffer so clock drift and slow executions do not produce a failed call mid-pipeline.
Which failure modes does it handle?
Repeated webhooks, partial stage data, expired access tokens, optional installation stages that may never fire.
What is running in production?
27 pipeline stages. 24 workflows live.
Have the same handoff?
We build automation and AI agents for ecommerce teams whose orders move through a real warehouse.