Log signed Documenso contracts as closed won in HubSpot
When a contract is fully signed, we read the agreed terms, move the matching HubSpot deal to closed won, and post a deal desk summary to Slack.
When a contract is fully signed in Documenso, close the loop in the CRM automatically so signed deals never sit unrecorded. Trigger this workflow on the Documenso webhook for the document completed event. Use the envelopeId field on the webhook payload as the canonical identifier for the envelope rather than the legacy numeric document id, and ignore any event where the envelope status is not COMPLETED.
Start with Get Envelope in Documenso to pull the envelope title, the full recipient list with names and email addresses, and the signing timestamps for each recipient. Then use Download Envelope Item to fetch the signed PDF, so you are reading the terms that were actually agreed rather than what was originally quoted.
Read the signed PDF and extract: the total contract value and currency, the start date, the term length, any renewal or auto renewal language including notice periods, and any unusual clauses worth a second look. Unusual means things like non standard payment terms, uncapped liability, custom service levels, termination for convenience, or bespoke discounting.
Find the matching opportunity in HubSpot using Search Deals. Match on the signer email domain and the company name from the envelope, and cross check against the deal name, the amount, and recent activity. Treat the match as confident only when the evidence lines up: the same company, an open deal in a late stage, and an amount in the same range as the contract. If several deals could plausibly match, or the only candidates are already closed or belong to a different company, treat that as no confident match.
When the match is confident, use Update Deal to move the deal to closed won, set the amount to the contract value you read from the signed PDF, and set the close date to the date the final signer completed. Then use Create Note to attach a plain English summary of the terms to that same deal, covering contract value, start date, term length, renewal terms, who signed and when, and anything unusual, so the account team has the detail on the record without opening the PDF.
Finally, post a deal desk summary to Slack using the Slack Bot Send a Message operation. Include the contract value, the company, who signed and when, the deal you updated, and a short flagged section for anything legal or finance should look at, such as auto renewal, unusual liability language, or payment terms outside the standard. Link back to the HubSpot deal so the team can jump straight to it.
If no confident deal match exists, do not guess and do not write anything to HubSpot. Writing closed won to the wrong deal is worse than doing nothing. Instead, post to Slack with the envelope title, the signers, the contract value you read, and the candidate deals you considered and rejected, and ask a human to link it to the right opportunity manually.
What does this prompt do?
- Picks up every contract the moment it reaches fully signed, so nothing waits on someone remembering to update the CRM.
- Reads the signed PDF for the terms that were actually agreed: contract value, start date, term length, and any renewal or auto renewal language.
- Finds the matching opportunity in HubSpot, moves it to closed won with the right amount and close date, and files a plain English summary of the terms on the record.
- Posts a deal desk summary to Slack covering value, who signed, and anything legal or finance should see. If the right deal is not obvious, it asks a person to link it instead of guessing.
What do I need to use this?
- A Documenso account where your contracts are sent for signature, with permission to turn on notifications when a document is completed.
- A HubSpot account with the deals you want moved to closed won.
- A Slack workspace and a channel where the deal desk summaries should land.
- A shared view of what counts as a confident match, for example the same company plus an open late stage deal.
How can I customize it?
- Change which Slack channel gets the summary, and add a second channel for legal or finance when a contract has unusual terms.
- Adjust how strict the deal matching has to be, and what happens when the workflow is unsure: ask in Slack, or route it to a named person.
- Choose which terms get pulled out of the contract, for example add payment terms, notice periods, or discount levels to the summary.
FAQs
What happens if it cannot tell which deal the contract belongs to?
Will it overwrite the deal amount our rep entered?
Does this work with the free version of HubSpot?
Can it handle contracts with more than one signer?
What if a contract has unusual terms?
Related templates
When someone leaves, we check which shared passwords they used in their final months and post a ranked rotation list to your security channel.
Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.
Twice every weekday, the conversations from your social inbox land on the right HubSpot contact timelines, with a Slack recap for sales.
Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.
Every morning, find the addresses that hard bounced or filed a spam complaint, update the matching HubSpot contacts, and post a short Slack recap.
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.
Stop letting signed contracts sit unrecorded.
Set this up once and every completed contract updates the deal, files the terms, and tells the team.