Built a workflow that handles the full appointment communication cycle automatically.
When a customer books, it:
- Sends an instant confirmation email
- Notifies the business owner
- Sends a reminder the day before
- Follows up after with a review request
No manual chasing, no missed reminders.
I've packaged it up as a ready-to-import template with a setup guide:
Solid utility workflow, @emmet_90. These full-cycle communication automations are the bread and butter for local service businesses.
I’m curious—how are you handling state management and deduplication for the review requests? I’ve found that implementing a ‘cooldown’ period or a check against a suppression list in google sheets (or a DB) is usually the key to keeping these production-ready so clients don’t get hit with duplicate triggers.
Would love to see how you’ve structured the error handling in the n8n nodes here. Keep up the great work!
Thanks Swapnil — good questions.
The template as shared is intentionally minimal — it’s a starting point rather than a production-hardened build. For a simple setup with low appointment volume, duplicate triggers are unlikely, but you’re right that at scale it becomes a real problem.
For deduplication I’d typically add a Google Sheets suppression check before the review request fires — log the appointment ID or customer email on trigger, then check it before sending. A cooldown filter using the IF node works well for the timing piece.
Error handling in the current template is basic — mostly relying on n8n’s built-in retry. For client builds I add an Error Trigger workflow that catches failures and sends me a notification so nothing silently drops.
Appreciate the feedback — those are exactly the additions I’d scope into a custom build when the brief calls for it