Auto-file completed Documenso contracts in Box and Sheets

When a contract finishes signing, the signed PDF and its certificate land in Box by quarter, your register updates and your ops channel hears about it.

Deterministic Code
DocumensoBoxGoogle SheetsSlack BotOperationsSalesDocument ProcessingData SyncNotifications & Alerts
PromptCreate

Whenever a Documenso envelope is completed, file it automatically so nobody ever has to dig through email for a signed contract again. Trigger this workflow on the Documenso webhook for the document completed event.

Start by taking the envelope id from the webhook payload and calling Documenso Get Envelope to read the envelope title, the completion timestamp, the envelope items and the full recipient list with every signer name and email.

Then call Download Envelope Item to get the signed PDF for each item in the envelope, and Download Envelope Certificate PDF to get the signing certificate. Keep both. The certificate is what proves who signed and when if the contract is ever disputed, so it belongs in the archive alongside the contract itself.

Upload both files to Box with Upload File, into a folder path organised by year and then quarter derived from the completion date, for example Contracts / 2026 / Q3 under the archive root folder. Use List Folder Items to check whether the year folder and the quarter folder already exist, and Create Folder for whichever one is missing, so the same path is reused rather than duplicated.

Name each uploaded file with the envelope title plus the completion date in YYYY-MM-DD form so the archive stays searchable in Box, for example "Acme Corp MSA 2026-08-07.pdf" and "Acme Corp MSA 2026-08-07 signing certificate.pdf". Strip any characters Box does not accept in filenames from the title. If an envelope has more than one item, append the item name to keep the filenames distinct. If a file with that exact name is already in the folder, upload it with Upload New File Version instead of creating a duplicate, so a replayed webhook does not litter the archive.

Once the signed contract PDF is uploaded, call Add Shared Link to File on it and keep the resulting URL as the Box link for the register.

Append one row to our contract register in Google Sheets with Append Values, capturing the envelope title, the envelope id, every signer name, every signer email, the completion timestamp and the Box link. When there is more than one signer, list the names in one cell and the emails in another, comma separated, so the row stays a single line per contract.

Finally, confirm in Slack through the Slack Bot Send a Message operation so the operations channel can see the contract landed and got filed. The message should name the contract, list the signers, state when it completed, show the folder path it was filed into and link straight to the file in Box.

Every step here is fixed, so build this as a code workflow: known downloads, a known folder convention, a known register schema and a known confirmation message. No reasoning or judgement is required at any point.

Example output

Contract filed: Acme Corp MSA Signers: Dana Whitfield (dana@acme.com), Robert Lang (rlang@ourcompany.com) Completed: 7 Aug 2026, 14:32 Filed to: Contracts / 2026 / Q3 Open in Box: https://app.box.com/s/acme-corp-msa-2026-08-07

What does this prompt do?

  • Watches for contracts that finish signing in Documenso and files them the moment they complete, so nobody has to remember to do it
  • Saves both the signed contract and its signing certificate to Box, in a folder for the year and quarter the contract closed in
  • Adds a row to your contract register spreadsheet with the title, every signer, the completion time and a link straight to the file
  • Posts a confirmation in your operations channel so the team can see the contract landed and where it went

What do I need to use this?

  • A Documenso account that you send contracts for signature from
  • A Box account with a folder you want to use as the contract archive
  • A Google Sheets spreadsheet to act as your contract register
  • A Slack workspace with a channel for operations updates

How can I customize it?

  • Change the filing convention: sort by client name or contract type instead of year and quarter
  • Adjust the register columns to match the spreadsheet you already keep, such as contract value or renewal date
  • Pick which Slack channel gets the confirmation, or send it somewhere private if contract activity is sensitive

FAQs

Why save the signing certificate as well as the contract?
The certificate is the record of who signed, when they signed and from where. It is exactly what you need if a contract is ever questioned or disputed, so it gets filed right next to the signed PDF under the same contract name and date.
Will this work if a contract has several signers?
Yes. Every signer name and email is captured on the register row, so you can see the full list at a glance without opening the file.
Do I need to build the folder structure in Box first?
No. You just pick the top-level archive folder. The year folder and the quarter folder are created as contracts complete, and reused from then on.
Can I archive to Google Drive instead of Box?
Box is the storage destination for this one. Google Drive file uploads are not available in our catalog, so we recommend keeping the archive in Box. The register and the Slack confirmation work exactly the same either way.
What happens if the same contract gets filed twice?
It reuses the existing quarter folder and saves a repeat file as a new version rather than creating a duplicate, so the archive stays clean even if a notification arrives more than once.

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 digging through email for signed contracts.

Every completed contract lands in Box, gets logged in your register and shows up in Slack, without anyone lifting a finger.