Chase unsigned contracts and nudge stalled signers daily

Every weekday we find the contracts still waiting on a signature, resend the ones going stale, and post a prioritized chase list to Slack.

Agentic Task
DocumensoGmailSlack BotSalesOperationsNotifications & AlertsDaily DigestsEmail Automation
PromptCreate

Every weekday at 9am, chase the contracts that are stuck unsigned in Documenso and tell me exactly who is holding each one up.

Start by calling Find Envelopes with the status filter set to PENDING to get every envelope that has been sent out and is still waiting on signatures. Skip anything that is COMPLETED, REJECTED or CANCELLED, and ignore DRAFT envelopes that were never distributed.

For each pending envelope, call Get Envelope for the full detail such as the title, when it was sent and its recipients, then call Get Envelope Recipient to read the signing status of each individual recipient so you know precisely who has signed and who has not. Then call Get Envelope Audit Logs and use the audit trail to separate two very different kinds of blocker: recipients who have never opened the document at all, and recipients who opened it and then stalled without signing.

Bucket every outstanding envelope by days outstanding, measured from the date it was sent: 1 to 3 days, 4 to 7 days, 8 to 14 days, and 15 or more days. Treat the 8 to 14 and 15 or more buckets as urgent.

For any envelope outstanding longer than 3 days, call Redistribute Envelope to resend the signing invite to the recipients who have not yet actioned it. Before you resend, check that envelope's audit log for a recent resend, because you must never chase the same recipient more than once every 3 days. If someone was already nudged inside that window, leave them alone on this run and say so in the digest.

For the oldest agreements and the highest value ones, also draft and send a short personalized nudge with Gmail Send a Message. Keep it to a few sentences, warm and low pressure, never guilt-inducing. Name the specific document, say plainly what you need from them, and offer to help. Tailor the angle to the blocker type: if they have never opened it, gently check that the invite reached the right inbox and is not sitting in spam; if they opened it and then stalled, acknowledge that and offer to answer questions or walk through the terms. The same once-every-3-days limit applies to these emails.

Finish by posting one prioritized digest into Slack using the Slack Bot Send a Message operation, sorted with the most overdue and highest value agreements first. For each stalled envelope list the document name, who is blocking it, whether that person has opened it, how many days it has been waiting, and exactly what action you took, whether that was resending the invite, emailing a nudge, or skipping because they were already chased recently. Open with a one line summary giving the number of contracts stuck and how many you actioned. If nothing is stalled, post a short all clear instead of an empty list.

Example output

Contract chase, Thursday 9:00am 3 contracts stuck / 2 invites resent / 2 nudges emailed 15 days: Northwind MSA ($48k) Blocked by sarah.chen@northwind.com, opened it 12 days ago but never signed Action: invite resent, personal nudge emailed offering a walkthrough of the terms 8 days: Acme renewal Blocked by legal@acme.io, has never opened the document Action: invite resent, worth checking this is the right address 4 days: Beacon NDA Blocked by t.rivera@beacon.co, opened it yesterday Action: none, already nudged 2 days ago

What does this prompt do?

  • Checks every contract still waiting on a signature each weekday morning and works out exactly who is holding it up.
  • Tells apart the people who never opened the document from the ones who opened it and then went quiet, so you know whether to resend or reassure.
  • Resends the signing invite on anything sitting longer than three days, and drafts a short personal nudge email for your oldest and highest value agreements.
  • Posts one prioritized chase list to Slack showing each stuck contract, who is blocking it, how long it has been waiting, and what was done about it.

What do I need to use this?

  • A Documenso account where your contracts get sent out for signature
  • A Gmail account to send the nudge emails from, such as a shared contracts or sales address
  • A Slack workspace and the channel where you want the daily chase list posted

How can I customize it?

  • Change the schedule: every weekday at 9am, once a day, or just Monday and Thursday
  • Adjust how long a contract sits before it gets chased, and how often the same person can be nudged (three days by default for both)
  • Pick which channel gets the digest, and which agreements count as high value enough to earn a personal email

FAQs

Will this annoy my customers with repeated reminders?
No. A contract has to be sitting for more than three days before it gets chased at all, and the same person is never nudged more than once every three days. Anything already signed, rejected or cancelled is skipped entirely.
How does it know who is holding up a contract?
It reads the signing record for each contract to see which recipients have already signed and which have not, then checks the document history to see whether each outstanding person has even opened it yet.
Why does it matter whether someone opened the document?
The two cases need different treatment. Someone who never opened it usually has an invite lost in spam or sent to the wrong address, so resending fixes it. Someone who opened it and stalled usually has a question or is waiting on internal approval, so a short personal note works far better than another automated reminder.
What happens if a contract gets signed before the next run?
It drops off the chase list on its own. Each run only looks at contracts still waiting on a signature, so completed ones simply stop appearing.
Can I use this with a self-hosted Documenso?
Yes. It works with any Documenso account you can send contracts for signature from, including self-hosted setups.

Related templates

Build a credential rotation checklist when someone leaves

When someone leaves, we check which shared passwords they used in their final months and post a ranked rotation list to your security channel.

1Password
Rippling
Slack Bot
+1
Agentic Task
Trace phishing emails to the sending IP and report abuse

Every 15 minutes, forwarded phishing reports get traced back to the server that really sent them, with a verdict in Slack and the worst senders reported.

AbuseIPDB
Gmail
Slack
Agentic Task
Weekly Amazon S3 bucket security audit posted to Slack

Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.

Amazon S3
Slack Bot
Google Sheets
Agentic Task
Log Agorapulse social conversations to HubSpot contacts

Twice every weekday, the conversations from your social inbox land on the right HubSpot contact timelines, with a Slack recap for sales.

Agorapulse
HubSpot
Slack Bot
Agentic Task
Clean up HubSpot contacts from your Amazon SES suppression list

Every morning, find the addresses that hard bounced or filed a spam complaint, update the matching HubSpot contacts, and post a short Slack recap.

Amazon SES
HubSpot
Slack Bot
Agentic Task
Draft polite follow-ups for emails that never got a reply

Every weekday at 4pm, spot the threads that went quiet, stage a ready-to-send nudge in your mailbox, and get a ranked Slack recap.

Aurinko
Google Sheets
Slack Bot
Agentic Task

Stop chasing signatures by hand.

Let this run every morning so you always know which contracts are stuck, who to push, and what has already been tried.