Hey n8n Community,
After helping Mike out a few times already with n8n, it seems like he keeps finding slipping processes that could use automation. And since the community here gave great feedback on the previous workflows, I’m pretty sure these problems are more common for small business owners than many think.
This time Mike had a nearly €2,000 bill come in because he forgot to cancel two contracts that auto-renewed after the first period. Nobody caught the cancellation window early enough. Classic Mike problem – handled manually, nobody owned it, eventually blew up.
The Problem
Mike’s team signs contracts across everything – SaaS tools, the office lease, consultants, insurance. Each has its own term, its own notice period, its own cancellation deadline. None of it was tracked. Contract PDFs lived scattered across Sarah’s Drive, a few inboxes, and a DocuSign archive nobody had the login for.
The only time anyone noticed a contract existed was when the invoice for the next term landed.
The Solution: A Two-Part Watchdog
Two workflows working together. Split into two partly because the logic is different (intake vs. monitoring), partly because n8n doesn’t like multiple triggers in one workflow – something I learned the hard way a few posts ago.
Part 1 – Intake & Classification
Sarah drops any contract into a watched Drive folder. The workflow detects the file, sends it to easybits Extractor, which classifies it (SaaS / Lease / Service / Insurance / Other) and extracts every renewal field in the same call — parties, value, term, notice period, auto-renew, signatories. A Set node calculates the end date and cancellation deadline. The row lands in the matching tab of one Google Sheet.
→ Grab the workflow template here
Part 2 – Daily Slack Watchdog
Runs at 9am. Reads the sheet, checks days remaining until each cancellation deadline, sends tiered Slack alerts:
30 days out – heads-up
14 days – action needed
7 days – urgent
Auto-renewing contracts get a stronger warning than ones that just expire. That’s the distinction where Mike’s money is actually at stake.
→ Grab the workflow template here
Biggest Learning
The classify-and-extract-in-one-call pattern. I almost built five type-specific extraction pipelines before realising the Extractor handles both jobs in a single call if classification is just another field in the same pipeline. Half the complexity, half the cost.
Also: don’t extract end_date from the document – derive it in n8n from start_date + initial_term_months. Contracts rarely print the end date, and asking a model to do date math is asking for silent off-by-one bugs.
Installation
If you’re on n8n Cloud, the easybits Extractor node is already available. If you’re self-hosting: Settings → Community Nodes → '@easybits/n8n-nodes-extractor'.
Question: how are you currently tracking contract renewals? Spreadsheet someone updates manually? A tool like Spendflo/Vendr? Or honestly just hoping for the best like Mike was?
Best,
Felix
