See where your Docusign signing process actually stalls

A dashboard that rebuilds the real timeline of every agreement so you can see which contracts, reps, and countersigners are slowing deals down.

App
DocusignGoogle SheetsSalesOperationsAI ReportsData Sync
PromptCreate

Build me an app that answers the question Docusign's own reporting is too slow to answer: where does our signing process actually stall? It is a single analytics dashboard I open, choose a date range, and read. The audience is a sales ops or revenue ops manager who wants to know which agreements drag, which reps let deals rot, and whether the holdup is the customer or our own countersigner.

At the top of the app, put a date range control with quick presets for last 30 days, last 90 days, and last quarter, plus a custom range. Next to it, a toggle to compare against the immediately preceding period of the same length. The whole dashboard recomputes against whatever range is selected.

To build the dataset, use Docusign List Envelopes filtered by the selected date range, pulling completed envelopes, ones still in flight (sent, delivered, signed), and declined and voided ones so the failure rates are real. List Envelopes pages with count and start_position and tops out around 1000 per page, so page through until the result set is exhausted. For each envelope call Get Envelope Audit Events to reconstruct the real timeline: when it was sent, when each recipient viewed it, and when each one signed. Use List Recipients on each envelope for routing order positions, recipient names, and signer email addresses. Use List Templates, and Get Template where more detail is needed, to resolve template ids on envelopes into readable template names.

Caching is a hard requirement, not a nicety. Docusign allows roughly 3,000 API calls per hour per account, and reconstructing a few months of history costs an audit events call and a recipients call per envelope, so a naive refetch will be slow and will blow through the rate limit. Store the fetched envelope timelines and the computed metrics in the app's own storage keyed by date range, and serve from cache when I reopen the app. Only fetch envelopes that are not already cached, refresh the in flight ones since their status changes, and give me an explicit refresh control with a visible note of when the data was last pulled. Show progress while a first large backfill runs rather than a blank screen.

The headline metrics across the top: median days to fully signed, 90th percentile days to fully signed, the viewed but not signed rate (envelopes where at least one recipient opened it but it never reached completed), the void and decline rate, and average hours an envelope sits at each position in the routing order. That last one is the most important number in the app. Compute it from the audit events by measuring the gap between when a routing position became active and when that position's recipient completed their action, then show it as a small bar chart by position, so I can immediately see whether position two, usually our own countersigner, is the bottleneck.

Below the headline numbers, three breakdown tables, each showing median days to completion, envelope count, and completion rate: by template, by sender (the envelope's sending user), and by counterparty company derived from signer email domains. For the counterparty grouping, take signer email domains from List Recipients, ignore our own domain and common free mail domains like gmail.com and outlook.com, and group the rest by domain so each row is effectively one customer company.

Clicking any row in any of the three tables drills into the individual envelopes behind that number. The drill-down shows one row per envelope with subject, status, sender, days elapsed or days to complete, the routing position it is currently waiting on, and the recipient list with each person's status and timestamps from List Recipients. Sort by slowest first by default, since the point is to find the specific deals dragging the average. Use Get Envelope if you need any envelope detail the list call does not return.

When the comparison toggle is on, every headline metric and every breakdown row shows the previous period's value alongside the current one with the direction and size of the change, so I can tell whether things are getting better or worse. Make improvements and regressions visually distinct.

Add an "Explain this period" button that kicks off a background agent over the already computed metrics rather than the raw envelope data. The agent reads the headline numbers, the per position dwell times, the three breakdowns, and the previous period comparison, then writes a short plain English analysis, a few paragraphs at most, naming the two or three biggest bottlenecks, calling out the specific templates, senders, or customer companies responsible, and saying what changed since last period. Its output lands back in the app in a panel under the metrics with a timestamp, and past explanations stay readable so I can look back at what it said last month.

Give me a button to push the current filtered summary table into a Google Sheet using Append Values, so I can drop it into my monthly ops review deck. Let me pick or paste the spreadsheet, and append rows carrying the date range, segment name, envelope count, median days, 90th percentile days, and completion rate, with a run date on each row so successive months stack up in the same sheet.

Keep the whole thing on one screen where possible, with the drill-down as a panel or overlay rather than a separate page I have to navigate back from. Show loading and empty states honestly. If a segment has too few completed envelopes for a median to mean anything, say so on the row instead of showing a misleading number.

What does this prompt do?

  • Pick any date range and the dashboard pulls every agreement sent in that window, then rebuilds the real timeline of each one from first send to final signature.
  • See median and 90th percentile days to completion, the share of agreements that were opened but never signed, and how often deals get voided or declined.
  • Break every number down by template, by sender, and by customer company, click any row to see the individual agreements behind it, and flip on a comparison against the previous period.
  • Find out how many hours agreements sit at each step of the signing order, ask for a plain English explanation of the period's biggest bottlenecks, and push the summary into a Google Sheet for your monthly review.

What do I need to use this?

  • A Docusign account with permission to see agreements sent across your team, not just your own
  • A few months of signing history in Docusign so the medians and period comparisons are meaningful
  • A Google account and a spreadsheet, if you want to export the summary for your monthly ops review

How can I customize it?

  • Change the date range the dashboard opens on by default, for example last 90 days instead of last 30
  • Adjust how customer companies are grouped, including which internal and free email domains to leave out
  • Add or remove breakdowns, or change how many agreements a segment needs before its median is shown

FAQs

How is this different from the reports built into Docusign?
The built-in reports tell you how long agreements take on average, but they do not break out how long an agreement sits at each step of the signing order. That is the number that tells you whether your customer is slow or your own countersigner is. This dashboard also lets you click a number and see the specific deals behind it, which a static report cannot do.
Will it be slow if I look at several months of history?
No. The first time you load a range it reads your signing history and then stores the computed results inside the app, so reopening it is instant instead of refetching months of agreements every time. You get a refresh button and a note showing when the data was last pulled, and agreements still in flight get refreshed since their status can change.
Can I tell whether the delay is on our side or the customer's?
Yes, that is the point of the signing order view. It shows the average hours an agreement waits at each position in the routing order, so if position two is your own countersigner and it is the slowest step, the holdup is internal.
How does it know which customer company an agreement belongs to?
It groups agreements by the email domains of the people signing them, ignoring your own domain and common personal email providers. Each remaining domain becomes one customer row, so you can see which accounts consistently take longest to sign.
What does the explain button actually do?
It hands the calculated numbers to a background assistant that writes a short plain English readout naming the two or three biggest bottlenecks, the templates, senders, or customers responsible, and what changed since the previous period. The write-up appears back inside the dashboard and past ones stay readable.

Related templates

Review desk for portal forms your team still fills in by hand

Stage a batch of filings overnight, then approve each completed form from a screenshot before anything is ever submitted.

Kernel
Google Sheets
Slack Bot
App
Audit what Intercom's Fin AI actually resolved before you pay

Review every conversation Fin closed as resolved, judge which ones actually stuck, and see what the gap is worth against your bill.

Intercom
Google Sheets
Slack Bot
App
Returns and warranty claim desk that follows your policy

Work every return, damage and warranty claim in one queue, with the order, the delivery date and a policy-backed recommendation already on screen.

Kustomer
Shopify
Google Sheets
App
Turn last week's cafe sales into this week's grocery order

See exactly which ingredients next week needs based on what you actually sold, adjust anything by hand, then build a one-click grocery cart.

Instacart
Square
Google Sheets
App
Benchmark your Instagram account against rival brands

See follower growth, posting cadence, format mix and engagement rate for your brand and every competitor you track, side by side on one board.

Instagram
Google Sheets
Google Docs
App
Find the services you're underpricing in your Jobber price book

Open one screen to see how every service in your Jobber price book actually performed: how often it sold, what you charged, and where prices swing.

Jobber
Google Sheets
App

Stop guessing why contracts take so long to sign.

Build a dashboard that shows exactly where your agreements stall and who is holding them up.