# Turn signed Dropbox Sign contracts into a renewal countdown

> Read the terms hiding inside your executed contracts, then track every auto renewal by the date your cancellation window shuts.

- Workflow type: app
- Services: Dropbox Sign, Google Sheets, Slack
- Categories: Operations, Finance
- Published: 2026-08-21

## What it does

- Builds a searchable register of every contract that has been fully signed, with the counterparty and signing dates already filled in, so you finally have one list of what you agreed to.
- Gives each row a Read this contract button that sends an assistant into the executed PDF to pull out the terms nobody has written down anywhere: the legal entity name, start date, term length, whether it renews itself, the notice period, the annual value and the termination clause.
- Shows a countdown board ordered by the day your cancellation window closes rather than the expiry date, because that earlier deadline is the one people actually miss.
- Puts plain counts of the renewal decisions due in the next 30, 60 and 90 days at the top, and lets you export the filtered list to a finance spreadsheet or send a renewal warning to the team that owns the contract.

## What you'll need

- A Dropbox Sign account holding the signed contracts you want to track
- A Google account if you want to export the register to a finance spreadsheet
- A Slack workspace if you want renewal warnings sent to the team that owns the contract
- Nothing to prepare in advance: the app reads contracts you have already signed, including old ones

## Prompt

Build me an app that answers the question Dropbox Sign cannot: what did we actually agree to, and when does it renew. Dropbox Sign stores the executed PDF but holds no structured terms and offers no renewal view, so the notice date lives nowhere. This app is the post signature layer. It is about extracted obligations and renewal decisions, not about logging new signings.

Loading the register. A handler calls the Dropbox Sign List Signature Requests operation filtered to completed and signed requests, paginating through the full history rather than just the first page. For each request it calls Get Signature Request to pick up the counterparty signers and the signing dates. Store one row per signature request in the app's own persistence, keyed by the signature request id, so the register survives reloads and does not refetch everything on every visit. Re-running the load should update existing rows and add new ones without wiping anything that has been extracted or corrected.

View one is the register. Turn that flat list into a table I can search and filter by counterparty, document type and annual value, with the signing date and signer names visible. Each row should make it obvious whether its terms have been extracted yet or whether it is still just a signed file with no known obligations.

The important part is a Read this contract button on each row that kicks off a background agent for that single contract. The agent calls Get Signature Request Files as File URL to pull the executed PDF, reads the document, and extracts the terms nobody currently has anywhere: the counterparty legal name as written in the contract rather than the signer's display name, the effective date, the initial term length, whether it auto renews, the notice window for cancelling, the annual value with its currency, and the termination clause captured close to verbatim so a human can check it. The agent then writes all of that back into the app's persistence so the register fills in. Show live progress on the row while it runs, and never invent a value: if a term genuinely is not in the document, leave it blank and mark it unknown rather than guessing, because a confident wrong notice period is worse than an empty one.

Derive two dates in the app from the extracted terms and recompute them whenever a field changes. The expiry date is the effective date plus the initial term. The notice deadline is the expiry date minus the notice window. The notice deadline is the number that matters and it is the one the second view is built around.

View two is a renewal countdown board sorted by the date the notice window closes rather than by the expiry date, because that earlier date is the one people miss. Contracts currently inside their notice window are flagged loudest, since for those the decision is live right now. Anything that auto renews within the next ninety days is pulled to the top. Show the days remaining until the notice deadline as the primary number, with the expiry date as secondary supporting detail, and show the annual value so the size of the commitment is obvious at a glance.

Whoever owns renewals opens this monthly, so put a plain count of the decisions needed in the next thirty, sixty and ninety days across the top of the board. Plain counts, measured from the notice deadline rather than the expiry date.

I must be able to correct any extracted field by hand, inline on the row, because a human reading the clause always wins over the extraction. A corrected field is stored as human set and must never be overwritten if that contract is read again later. Make it visible which fields came from the document and which a person fixed, so the register carries its own trust signal.

From the board I want two actions. Export the filtered register to a finance spreadsheet using the Google Sheets Append Values operation, sending one row per contract and respecting whatever filter is currently applied rather than always dumping everything. And send a specific renewal warning to the owning team using the Slack Send a Message operation, naming the counterparty, the notice deadline, the annual value and what happens if the date passes, rather than a generic nudge.

One firm constraint on storage. The extracted terms live in the app's own persistence and are never round tripped through the spreadsheet. The Google Sheet is an export destination for finance only, never a source of truth the app reads back from.

## How to customize

- Set the notice period the board assumes before a contract has been read, since 30 days is typical for monthly subscriptions, 60 for annual deals and 90 for enterprise agreements
- Decide what counts as high value so the biggest commitments sort to the top of the countdown board
- Choose which Slack channel receives renewal warnings and which spreadsheet the register exports into
- Adjust the 30, 60 and 90 day decision windows at the top if your business plans renewals on a different rhythm

## FAQ

### Does this change anything in Dropbox Sign?

No. The app only reads your completed signature requests and downloads the signed PDFs. Nothing is sent, cancelled or edited in Dropbox Sign, and your original documents are untouched.

### What happens if a term gets read incorrectly?

Every extracted field is editable by hand, and your correction sticks permanently. A person reading the actual clause always beats an automatic extraction, so a corrected field is never overwritten if the contract is read again.

### Why sort by the notice date instead of the contract end date?

Because the end date is usually too late to act on. If a contract needs 60 days notice to cancel, the real deadline is two months before it expires. Sorting by expiry is exactly how teams end up locked into another year.

### Will it pick up contracts we signed a long time ago?

Yes. The register covers every completed signature request in the account, not just new ones, so you can build the full back catalogue on day one and read the important contracts first.

### Do I have to read every contract at once?

No. You choose which rows to read, one at a time or in batches, and each one runs quietly in the background while you keep working. The register fills itself in as each contract finishes.

### What if a contract does not say whether it auto renews?

The field is left blank rather than guessed at, and the row shows that the term is still unknown. You can then read the clause yourself and type in the answer, which becomes the permanent record.

Use this prompt in General Input: https://www.generalinput.com/prompts/turn-signed-dropbox-sign-contracts-into-a-renewal-countdown