Review every Cognito Forms approval in one shared queue

By General Input

Work every submission waiting on a decision from one screen, with attachments, claim tracking, and approvals that write straight back to the entry.

Integrations

  • Cognito Forms
  • Slack Bot
  • Gmail

Type

App

Categories

  • Operations

I want an app my team opens to work through every Cognito Forms submission that is waiting on a decision, instead of clicking into each form's entries page one at a time. Reviewers cover several approval forms at once, and today there is no single queue for them.

Start with a setup screen where I choose which of my forms are approval forms. Use Cognito Forms List Forms to show everything the API key can see. For each form I select, call Get Form Schema and let me map that form's fields to the roles the queue needs: the status or decision field, the submitter name, the submitter email, a dollar amount if the form has one, and the date submitted. Save those mappings and have everything downstream read from them. Cognito Forms response schemas are dynamic and depend on each form's configured fields, so never hardcode field names anywhere in the app.

The main screen is a single review queue spanning every selected form, laid out as two panes: a sortable table on the left, the full submission on the right.

Load the queue with List Entries for each selected form, paginating with the skip and top parameters until a page returns fewer rows than requested, and keep only entries whose mapped status field still reads as pending. API access is metered monthly (Pro 2,000 requests, Team 10,000), so load the queue once per refresh and give me an explicit Refresh button. Do not refetch on every click, sort, or filter change. Sorting and filtering should work against data already loaded in the browser.

Queue columns: form name, submitter, submitted date, age in days, dollar amount where mapped, and claim state. Give me filters for form, submitter, age, and dollar amount, and let every column sort. Let me set an SLA in days per form in settings, and highlight any row sitting past its SLA so it is obvious at a glance.

Every reviewer signs in as themselves. A Claim button marks a row as being worked by that person and shows their name to everyone else as a claimed indicator, so two people never work the same submission twice. A My queue filter shows only the rows I have claimed. Store claims in the app's own storage keyed by form and entry id, warn me if I open a submission someone else already claimed, and let me release a claim I no longer want.

Clicking a row opens that submission in the right pane. Call Get Entry for the freshest copy and render every field using the saved schema mapping, so a field added to the form later shows up without a code change. Fetch any uploaded attachments with Get File and show images and PDFs inline, with a download link for other file types.

The detail pane has Approve, Deny, and Request more info buttons plus a reviewer notes box. Each button writes the decision back with Update Entry, setting the mapped status or decision field to that outcome and recording the reviewer name, a timestamp, and the notes. Require notes before Deny or Request more info can be submitted.

After the write succeeds, post a line to our review channel using Slack Bot Send a Message with the form, submitter, amount, decision, reviewer, and a short excerpt of the notes. Then email the submitter using Gmail Send a Message with a different template per decision: approved confirms the decision and says what happens next, denied explains the reason drawn from the reviewer notes, and request more info asks for exactly what is missing and how to send it. Let me edit all three templates in settings. If Slack or Gmail fails, keep the Cognito Forms write and show the failure on the row so I can retry just the notification.

Once a submission is decided, drop it out of the queue and move the reviewer to the next row so they keep working without hunting for their place.

Related prompts

Explore more prompts
Win back LiveChat visitors whose chats went unansweredA brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasonLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsLinkedIn Ads budget pacing dashboard for every client accountGive your team Looker numbers without buying more seats