# Work every stalled Ironclad approval and signature in one place

> See every contract waiting on an approval or a signature in one board, sorted oldest first, and clear each one without leaving the page.

- Workflow type: app
- Services: Ironclad, Slack Bot
- Categories: Operations
- Published: 2026-08-24

## What it does

- Pulls every contract still in flight and splits it into two columns: the ones waiting on an approval, and the ones waiting on a signature.
- Every card names the person holding it up and how many days it has been sitting there, with the longest waits pinned to the top.
- Approve or reject, remind a signer, hand a stuck step to someone else, send the packet out for signing, or leave a note, all without opening the contract itself.
- A "Why is this stuck" button reads the contract's full history and writes a short plain English explanation of where it stalled and the fastest way to unblock it, right on the card.

## What you'll need

- An Ironclad account with permission to view contracts and to approve, reassign, comment, and send for signature
- A Slack workspace, if you want the one-click nudge that direct messages the person holding a contract up
- Your team's Ironclad email addresses to match up with their Slack accounts, so nudges reach the right person

## Prompt

Build me an app that gives legal ops a single console for everything in contracting that is waiting on a human, so nobody has to hunt through individual contract pages to find out what is stuck. The people using it are legal ops and contract managers who open it every morning, clear what they can, and chase whoever is holding up the rest.

The main board is one page with two columns: Approvals outstanding on the left, Signatures outstanding on the right. Build it by pulling every in flight workflow with List Workflows, then fanning out per workflow, because Ironclad exposes approvals and signatures per workflow rather than as one global query. For each workflow, call List Workflow Approvals and List Workflow Participants to find approval steps that are still pending and who owns them, and call Get Sign Status and List Signers to find signature packets that are sent but not fully signed and which signers have not signed yet. A workflow can legitimately appear in both columns if it has a pending approval and an outstanding signature.

Every card shows the contract name, the counterparty if it is available on the workflow, which step it is sitting on, the specific person holding it up by name and email, and how many days it has been sitting there. Calculate days stalled from the last real activity on the blocking step, so an approval requested nine days ago and never actioned reads as nine days, not the age of the whole contract. Sort the entire board by days stalled descending so the oldest items are always on top, and visually flag anything past a threshold the user can configure, defaulting to seven days. Show a count at the top of each column and let the user filter by contract type, owner, and counterparty.

Everything is actionable in place, with no navigation away from the board. On approval cards, approve or reject with Update Workflow Approval, capturing an optional reason on reject. On signature cards, nudge an outstanding signer with Remind Signer, and where a packet has been prepared but never actually sent, offer Send Signature Request. On any card, hand a stuck step to someone else with Reassign Workflow Role, and leave a note on the contract with Create Workflow Comment. After any write, refresh just that card so the user immediately sees the new state, and show a clear inline error if Ironclad rejects the action rather than failing silently.

Each card also has a "Why is this stuck" button that kicks off a background agent. The agent reads Get Workflow Turn History and List Workflow Comments for that workflow, works out where the contract actually stalled, and writes a short plain English explanation of no more than three or four sentences covering where it is stuck, who it is waiting on, and what the fastest unblock is. Write the result back so it displays on the card itself and persists for the whole team, with a timestamp and a way to re run it. Show a clear in progress state on the card while the agent is working, and let the user keep using the rest of the board while it runs.

Add a Slack action on every card that opens a direct message to the blocking person. Take that person's email from the Ironclad participant or signer record, resolve it to a Slack user with Look Up User by Email, open the DM with Open a Conversation, and send it with Send a Message. The message should name the contract, say exactly what is being asked for and how long it has been waiting, and include a direct link to the workflow in Ironclad built from the account subdomain. Pre fill the message text in the app and let the user edit it before it sends, and note on the card once a nudge has gone out and when, so the same person does not get pinged three times in a morning.

Two Ironclad specifics to bake in. Use the lastUpdated filter for incremental refresh instead of re walking the entire workflow list every load, and page through list responses properly since page size is capped. Also, when the Ironclad credential is client credentials based rather than tied to a specific end user, write actions and several reads require an actor header of x-as-user-email or x-as-user-id, so make the acting user's email a setting on the app and send it on those calls, otherwise the writes come back as errors.

## How to customize

- Change how many days of silence counts as stalled before a card gets flagged as urgent
- Narrow the board to certain contract types, a single legal team, or one region
- Reword the Slack nudge, or leave Slack out entirely and work the board on its own

## FAQ

### Does this actually change anything in Ironclad, or is it just a view?

It is a working surface, not a read-only report. Approvals, rejections, reminders, reassignments, comments, and signature sends are all written straight back to the contract in Ironclad, and the board refreshes to reflect the new state.

### How is "days stalled" calculated?

It counts from the last real activity on the step that is currently blocking, so an approval that was requested nine days ago and never actioned shows as nine days. That way the number reflects how long a person has been sitting on it, not how old the contract is.

### Can I use this without Slack?

Yes. Slack only powers the optional nudge button that opens a direct message to the blocking person. Everything else, including the approvals, reminders, reassignments, and the stuck explanations, works with Ironclad on its own.

### Will it show contracts I am not supposed to see?

No. The board only shows what your own Ironclad access already allows, so people see the same contracts they would see if they browsed Ironclad directly.

### What does the "Why is this stuck" button actually do?

It kicks off a background assistant that reads the contract's step by step history and its comment thread, then writes a few sentences in plain English explaining where things stalled and what would move it fastest. The answer is saved on the card so the rest of the team sees it too.

### We already get a morning Slack reminder about unsigned contracts. Is this the same thing?

No, and they work well together. The morning reminder pushes a list at you. This is the screen you actually work in, it covers approvals as well as signatures, and it lets you approve, reassign, and send without opening a single contract page.

Use this prompt in General Input: https://www.generalinput.com/prompts/work-every-stalled-ironclad-approval-and-signature-in-one-place