# 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.

- Workflow type: app
- Services: HubSpot, Amazon S3
- Categories: Sales, Operations
- Published: 2026-08-14

## What it does

- 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 you'll need

- 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

## Prompt

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.

## How to customize

- 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

## FAQ

### Do my sales reps need AWS access?

No. That is the point of the app. The app holds the storage connection, so reps upload and download files through a normal web page and never see the AWS console or need an AWS login of their own.

### Will this work on HubSpot Free?

The deal list and the document room work on any HubSpot plan that includes deals. Stamping a document status on the deal needs a custom deal field, which is available on Starter and above. On Free you can still use the note that gets logged on the deal instead.

### What happens if someone renames a file?

You can label a file with the checklist item it satisfies. That label is stored with the file itself, so the match survives a rename. Files that have not been labelled are matched on the naming rule you configure.

### Can different deal stages require different documents?

Yes. The checklist is set per stage, so a deal in early negotiation can ask for a signed order form only, while a deal about to close also asks for the security review, tax form, master agreement and purchase order.

### How does it know a document is expired?

Each checklist item can have a validity window. The app reads the upload date of the matching file and marks the row expired when the file is older than that window, which is useful for things like tax forms and security reviews that go stale.

### Does it move or copy my files anywhere?

No. Files stay in your own S3 bucket under your own folder structure. The app reads and writes them in place, so your storage stays the system of record.

Use this prompt in General Input: https://www.generalinput.com/prompts/deal-document-room-connecting-hubspot-to-amazon-s3