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.

Agentic Task
DocumensoHubSpotSlack BotSalesOperationsDocument ProcessingData SyncNotifications & Alerts
PromptCreate

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?
It stops and asks. Rather than risk marking the wrong opportunity as won, it posts the contract details to Slack, lists the deals it considered, and asks someone to link it manually. Nothing is written to HubSpot until a person confirms.
Will it overwrite the deal amount our rep entered?
Yes, and that is the point. It sets the amount to the value in the signed contract, which is the number that was actually agreed rather than the number that was quoted. Your previous figure stays visible in the deal history.
Does this work with the free version of HubSpot?
Deals and notes are part of the free CRM, so the core of this works. Things like custom deal properties and multiple pipelines depend on your plan.
Can it handle contracts with more than one signer?
Yes. It reads every recipient and the time each one signed, and uses the final signature as the close date on the deal.
What if a contract has unusual terms?
It calls them out. Auto renewal clauses, non standard payment terms, and unusual liability or termination language get flagged in the Slack summary and included in the note saved on the deal.

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
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
Turn procurement portal tenders into CRM deals each morning

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.

Anchor Browser
Google Sheets
HubSpot
+1
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 letting signed contracts sit unrecorded.

Set this up once and every completed contract updates the deal, files the terms, and tells the team.