# Log signed Ironclad contracts to a Google Sheets register

> Every time a contract finishes signing in Ironclad, add it to a shared spreadsheet register and tell your contracts channel in Slack.

- Workflow type: code
- Services: Ironclad, Google Sheets, Slack
- Categories: Operations, Finance
- Published: 2026-08-04

## What it does

- Starts the moment a contract finishes signing in Ironclad, so nothing waits on a manual export.
- Adds one tidy row per executed contract to your shared register: counterparty, contract type, total value, effective date, renewal date and internal owner.
- Posts a note to your contracts channel in Slack with the headline details and a link straight back to the contract.
- Keeps every row in the same column order with dates written the same way, so the sheet stays easy to sort, filter and pivot.

## What you'll need

- An Ironclad account with permission to read contract records and set up webhook notifications.
- A Google account with edit access to the spreadsheet you want to use as the register.
- A Slack workspace and the channel where your contracts team wants updates.
- A spreadsheet with a header row for the columns you want to track.

## Prompt

Build me a code workflow that logs every fully executed contract from Ironclad into a Google Sheets contract register and announces it in Slack. Trigger it from an Ironclad webhook subscription for workflow completion, so the row lands as soon as a contract finishes signing rather than on a schedule.

When the webhook fires, read the completed workflow id and the id of the contract record it produced. Ironclad record fields are dynamic, so resolve the field ids first with Get Records Schema, then call Retrieve a Record for the executed contract. If the webhook payload does not carry a usable record id, or the record is not readable yet, fall back to List Records with the lastUpdated filter set to a few minutes before the webhook arrived and take the newest record created by that workflow. Ironclad list responses often return a raw array at the top level rather than a data or items envelope, so treat the response root as the page of results.

From that record pull counterparty, contract type, total value, effective date, expiration or renewal date, and internal owner.

Append one row per contract to the register with Append Values, always in this exact column order: executed at, counterparty, contract type, total value, effective date, expiration or renewal date, internal owner, Ironclad record id, record link, Ironclad workflow id. The column order must never vary between runs so the sheet stays pivot friendly. Write all dates in ISO 8601 format, using YYYY-MM-DD for the date fields and a full UTC timestamp for executed at, so sorting and filtering work correctly. When a field is missing from the record, write an empty cell rather than skipping the column, so every row has the same width. Send the values as raw input so the ISO strings are stored exactly as written and are not reformatted by the spreadsheet locale.

Then post to the contracts channel with Send a Message, naming the counterparty, contract type, total value, effective date and renewal date, plus a link back to the record in Ironclad built from the account subdomain and the record id.

Every step here is deterministic, so build it as code rather than an agent. If the record still cannot be found after the fallback lookup, post a short Slack message flagging the executed workflow id anyway, so a contract never disappears silently.

## How to customize

- Change which details land in the register, adding or removing columns such as governing law, renewal notice period or the owner's team.
- Point the notification at a different Slack channel, or send separate updates to finance and legal.
- Limit the register to certain contract types or deal sizes if you only want high value agreements tracked.

## Example output

Register row appended:
2026-08-04T14:32:11Z | Northwind Logistics Ltd | Master Services Agreement | 148000 | 2026-08-01 | 2027-07-31 | Priya Raman | rec_8f21c4 | https://na1.ironcladapp.com/records/rec_8f21c4 | wf_2b90aa

Slack message to #contracts:
Contract executed: Northwind Logistics Ltd (Master Services Agreement), 148,000 total value, effective 2026-08-01, renews 2027-07-31. Owner: Priya Raman. View the record in Ironclad.

## FAQ

### Does this work if our finance team does not have Ironclad seats?

Yes, and that is the main point. The register lives in Google Sheets, so anyone with access to the spreadsheet can see every executed agreement without needing a seat in your contract system.

### How quickly does a contract show up in the spreadsheet?

Within moments of the contract finishing signing. Ironclad announces it as soon as the signing process completes, so there is no waiting for a nightly or weekly export.

### What happens if a contract is missing a detail, like a renewal date?

The row still gets added and the missing detail is left as an empty cell. Columns never shift, so your filters and pivot tables keep working.

### Will it overwrite or reorder the rows already in my register?

No. Each executed contract is added as a new row underneath what is already there, and existing rows are left untouched.

### Can we send the update somewhere other than Slack?

Yes. The notification step can point at a different channel, or you can swap it for email or another chat tool your team already uses.

Use this prompt in General Input: https://www.generalinput.com/prompts/log-signed-ironclad-contracts-to-a-google-sheets-register