Deal document room connecting HubSpot to Amazon S3
See every open deal's required paperwork in one place, upload what is missing, and mark the deal complete without ever opening AWS.
Build me a deal document room app that connects HubSpot to Amazon S3. It is for sales and deal desk people who need to see and manage the contracts and forms attached to a deal, and who should never have to open the AWS console. HubSpot holds the deal record, S3 holds the actual files, and this app is the single screen that joins them.
Landing view: a list of my open deals. Use HubSpot Search Deals filtered to the pipeline stages I have marked as open, and show deal name, stage, amount and close date, sorted by close date so the soonest deals are at the top. Across the top, show a summary bar with how many open deals are missing paperwork, how many are complete, and how many have an expired document, so the team can see where the gaps are. Clicking a deal opens its document room.
Document room, left side: the required documents checklist for that deal's current stage. Seed it with signed order form, security review, W9, MSA and purchase order, but the checklist must be editable and configured per stage rather than hardcoded, so an early stage can require fewer documents than a stage about to close. Each row shows the item name and a status of matched, missing or expired. Refresh the deal's current stage and properties with HubSpot Get Deal when the room opens.
Document room, right side: the files already stored for that deal. Use S3 List Objects (V2) against a prefix built from the deal ID, following a key convention the user configures once in settings (for example deals/{dealId}/). For each object show the filename, size and upload date, using S3 Head Object for the size and last modified date. Show an empty state that explains where files should go when the prefix has nothing in it yet.
Matching a file to a checklist item works two ways. First, by a filename convention I can configure per checklist item, for example a pattern or keyword like w9 or order-form. Second, and taking priority, by the tag stored on the object itself: when I tag a file with the checklist item it satisfies, read that tag back with S3 Get Object Tagging so the match survives a rename. A checklist item counts as expired when its matching file's upload date is older than a validity window I can set per item, which matters for things like tax forms and security reviews.
Actions in the room: drag a file onto the room to upload it with S3 Put Object, writing it to the correct key under that deal's prefix, and let me pick which checklist item it is for so the key and tag are set correctly. Open or download anything already there with S3 Get Object. Tag an existing file with the checklist item it satisfies using S3 Put Object Tagging. After any upload or tag change, re-evaluate the checklist so the statuses update immediately.
When every required document for the stage is present and none is expired, enable a "Mark documents complete" button. It writes back to the CRM in two steps: HubSpot Update Deal sets a documents status property that I nominate in settings, and HubSpot Create Note logs a dated note on the deal listing the filenames received and their upload dates. Keep the button disabled with a clear reason when something is still missing or expired.
Settings screen, persisted for the workspace: the S3 bucket name, the key prefix convention built from the deal ID, which pipeline stages count as open, the per-stage checklist of required documents, the filename matching rule and validity window for each checklist item, and which HubSpot deal property receives the document status. Everything about the checklist should be data the user edits in the app, never values baked into the code.
What does this prompt do?
- Lists your open deals with stage, amount and close date, plus a bar across the top showing how many are still missing paperwork
- Opens a document room per deal: the checklist of documents that stage requires on one side, the files already on file for that deal on the other
- Marks each required document as received, missing or expired, so you can see the gaps at a glance instead of digging through folders
- Lets you drag in a file to upload it, open or download anything already there, and label a file with the requirement it satisfies so it stays matched even if someone renames it
- Writes back to HubSpot when the file set is complete: it updates the deal's document status and logs a dated note listing the files received
What do I need to use this?
- A HubSpot login with access to your deals
- An Amazon S3 storage account and the name of the bucket where deal documents live
- A folder naming rule so each deal's files sit together, usually one folder per deal
- A HubSpot deal field to hold the document status, which you can create in HubSpot settings in a couple of minutes
How can I customize it?
- Change the document checklist per deal stage, so an early stage asks for less than a deal about to close
- Set the naming rule used to match files to checklist items, and how long a document stays valid before it counts as expired
- Choose which deal stages count as open, and which HubSpot field gets stamped when the paperwork is complete
- Adjust the wording of the note logged on the deal when a room is marked complete
FAQs
Do my sales reps need AWS access?
Will this work on HubSpot Free?
What happens if someone renames a file?
Can different deal stages require different documents?
How does it know a document is expired?
Does it move or copy my files anywhere?
Related templates
Stop buying stale lists. Reps run a saved search, work the results like an inbox, and only the accounts they approve ever reach your CRM.
Pick a date, a starting point and a radius, then build a sequenced day of customer visits that lands straight on your calendar.
One screen where reps filter for companies that fit, see who is actually reachable at each account, and save only the addresses that verify.
See every competitor battlecard next to the number of open deals that name that competitor, so the cards carrying real pipeline get refreshed first.
Score every target account against the buying committee you actually need, see the exact holes, and have an assistant fill them in your CRM.
See open and pending conversations from all your Help Scout inboxes in one queue, sorted so the customers who have waited longest on you come first.
Stop chasing deal paperwork across folders and inboxes.
Give your sales and deal desk team one screen that shows what is on file, what is missing, and what still needs chasing.