This article will walk you through what approval data you can report on, how to build individual reports to answer a specific question, and answer some frequently asked questions.
Approval Time Tracking Overview
Approval Time Tracking enables you to answer questions about your workflows as it relates to approvals. These questions include:
- How long on average did a team (e.g., Legal) take on a set of contracts?
- How long did an individual take on their contract/set of contracts?
- How does duration change based on contract data (i.e. record type, region, other custom properties)?
- How many contracts required specific review?
This is available via Export View in Dashboard and our API.
Approval Tabs
Two new tabs that show up when you select “Approvals” when exporting the view from the Dashboard - one designed to get insights by role and one designed to get insights by individual user. The role-level tab shows the total timing for each role’s approval actions, regardless of reassignments. The user-level tab shows more granular timing, showing the time spent by each assignee. It tracks reassignments explicitly.
In the API, this concept is represented as requestType, detailed in the developer docs here.
Rows
Each row shows a time period when a reviewer could approve. The period begins when the reviewer is unblocked and ends when they either approve or are interrupted—due to a workflow pause, workflow cancellation, removal of the approval, or user reassignment. Multiple rows may exist for a single approval role if it was paused or reset manually or automatically.
The rows are grouped by workflow, in the same order as the exported Dashboard view. The rows for each workflow are grouped by approver role and sorted in descending chronological order within each role.
In the API, these are represented as entries on the list.
What Does Each Event End Status Mean?
Event End Status | Event End Status - Meaning | Event Start Time - What this timestamp represents | Event End Time - What this timestamp represents |
---|---|---|---|
Pending | The approver’s turn has started but the approval has not yet been completed | When the approval was unblocked | N/A |
Completed | The approval was completed | When the approval was unblocked | When the approval is completed |
Reassigned to another user | *The approval was reassigned to another user. |
This only shows upon the “by user” tab.* | When the approval was unblocked | When the approval is reassigned | | Paused because workflow is paused | The entire workflow was paused, so the approval was paused. | When the approval was unblocked | When the workflow is paused | | Canceled because task is removed | The workflow was updated (i.e. by editing a property, removing an ad-hoc approval), so this approval was canceled. | When the approval was unblocked | When the approval is removed | | Canceled because workflow is canceled | The entire workflow was canceled, so this approval was canceled. | When the approval was unblocked | When the workflow is canceled |
What Causes an Approval to Be Unblocked, Indicating the Event Start Time?
- The approval turn begins
- Workflow is unpaused
- Approval is reassigned
- Approval is undone by approver
- Approval is reset due to workflow changes or revert to review
Duration
There are two options for duration now available to drive insights:
-
Duration (ms) captures the total time it took a specific approval request to be approved or blocked, after it was last unblocked.
- Filtering Event End Status to only be Completed captures the duration from the latest time an approval was unblocked until it was Completed. This captures how long it took for an approver to approve after it was last unblocked.
-
Aggregate Duration (ms) captures the total time it took the role to approve after it was last unblocked and the times during which they could have approved but were interrupted by a workflow pause. Use this if you want to understand the total time it was sitting with this role.
- Aggregate Duration (ms) is the sum of the duration of the Completed approval requests and the preceding Interrupted by workflow pause approval requests.
Configure Reports on Approval Time Tracking
Below, you'll learn how to configure reports on approval time tracking from the Dashboard Export. First, complete the Setup instructions. Then, you can follow the subsequent instructions to answer questions about your workflows' approvals.
Setup
-
Go to the Dashboard in Ironclad.
-
There are two ways to export a view:
-
Create a dashboard view of all the workflows you want to pull insights from, whether its based on workflow metadata or time frames. Click the three stacked dots located next to New/Start Workflow, and then click Export View.
-
Select specific workflows using checkboxes, and then click Export within the black toolbar that appears.
-
-
In the Also export historic data on section, select Approvals.
-
Click Export and open the downloaded spreadsheet. You should see three tabs: export, approval requests by role, and approval requests by user. NOTE Spreadsheet (.xlsx) is the only supported file type if you check Approvals, Turns, or Workflow actions.
How Long on Average Did a Team (e.g., Legal) Take on a Set of Contracts?
In this example, we will use Aggregate Duration.
-
Navigate to the Approval requests by role tab.
-
Highlight populated rows and cells and select Insert > PivotTable and insert it on a new or existing worksheet.
-
Select the fields Role Name, Event End Status, and Aggregated Duration (ms).
-
Change the Aggregate Duration calculation to be Average instead of Sum.
-
To view duration in a different time interval like hours, create a new column for Duration (hours) and populate the cell with =[Aggregate Duration (ms)]/3,600,000. To see a full conversion chart, view the FAQs here.
In this example, we will use Aggregate Duration.
- Navigate to the Approval requests by user tab.
- Highlight populated rows and cells and select Insert > PivotTable and insert it onto a new or existing worksheet.
- Select the fields Assignee Name, Event End Status, and Aggregate Duration (ms).
- Change the Aggregate Duration calculation to be Average instead of Sum.
- To view duration in a different time interval like hours, create a new column for Aggregate Duration (hours) and populate the cell with =[Aggregate Duration (ms)]/3,600,000. To see a full conversion chart, view the FAQs here.
How Does Duration Change Based on Contract Data (i.e., Record Type, Region)?
Examples
- How long are contracts taking in Legal review over a particular deal size?
- How long does it take to negotiate counterparty vs company paper?
- How long did do approvals take on high priority versus medium priority work?
In this example, we'll explore how workflow priority affects the duration of Legal Review.
- Go to the Dashboard and add any metadata properties as columns that you want to cross reference with Aggregate Duration, in this case Priority.
- Follow the Setup instructions and export visible columns.
- Add a column to Approval requests by role called Priority.
- Note: If you want to ask how Priority impacts the duration of an individual, add a column to the Approval requests by user tab instead.
- Use XLOOKUP or VLOOKUP to move the data from the export tab to the corresponding rows in the Approval requests by role tab.
-
Insert this formula into the first empty row of the column “=XLOOKUP([@[Ironclad Id]],export!C:C,export!Y:Y,,0)” and ensure it populates in the whole table.
- Lookup value = the individual cell for Ironclad ID in that row on approval requests by role tab
- Lookup array = Ironclad ID column on export tab (expected to be column C in this example)
- Return array = Priority on export tab (expected to be column Y in this example)
- Exact match = 0 (which indicates you want an exact match)
-
You can verify the formula is working by checking that values are populated correctly. It's good practice to spot-check a few rows to confirm the data matches.
-
- Select the entire table, and select Insert > PivotTable on a new or existing worksheet.
- Select the fields Role Name, Event End Status, and Duration (ms), and Priority. Make Event End Status a filter, and make Priority a column.
- Change Sum to Average Duration, and create a new column for the time interval of your preference, if you so choose.
How Many of My Contracts Required Specific Review?
In this example, we’ll determine how many workflows in this export required security review.
- We must first count the total unique workflows on the spreadsheet tab. We will do this with a combo of COUNTA and UNIQUE formulas in Excel, but this can also be done with the COUNTUNIQUE formula if you work in Google Sheets.
- Find an empty cell and type =COUNTA(UNIQUE.
- Select the entire column for workflow ID or Ironclad ID.
- Add a closing parenthesis and the formula should be =COUNTA(UNIQUE(A:A))
- This would be =COUNTUNIQUE(A:A) in Google Sheets.
- This should give you the total number of unique workflows in the spreadsheet tab.
- Now let’s find out how many security reviews were needed in that same dataset. We will do this with a combo of COUNTA, UNIQUE, and FILTER formulas in Excel, but this can also be done with the COUNTUNIQUEIFS formula if you work in Google Sheets.
- On the approval requests by role tab, find an empty cell and enter this formula:
- In an empty cell, type =COUNTA(UNIQUE(FILTER(
- Select the entire column for workflow ID or Ironclad ID. Let’s assume this is column A.
- Type in a comma and a space. Select the entire column for Role Name. Let’s assume this is column D.
- Add in an equals sign and the name of the review you want to filter by. In this case, add =”Security”
- Add 3 closing parenthesis and the formula should be =COUNTA(UNIQUE(FILTER(A:A, D:D=”Security”)))
- This would be =COUNTUNIQUEIFS(A:A, D:D, "Security") in Google Sheets.
- This should give you the total number of unique workflows that had a Role Name of “Security” for an approval.
- Take the second number (total unique workflows with security review) and divide it by the first number (total unique workflows). This gives you a percentage, like 10/40 = 25% of workflows required security review.
Visualize This Data
Refer to this article about how to create PivotCharts from your PivotTables.
Tip: For reports you need to use regularly, maintain one spreadsheet and add new data to it on your preferred cadence, so you don't need to create these formulas and charts every time.
Frequently Asked Questions (FAQs)
How do I convert milliseconds into other time intervals?
Time interval | Calculation |
---|---|
seconds | Duration (ms) / 1000 |
minutes | Duration (ms) / 60,000 |
hours | Duration (ms) / 3,600,000 |
days | Duration (ms) / 86,400,000 |
weeks | Duration (ms) / 604,800,000 |
years | Duration (ms) / 31,540,000,00 |
Where can I aggregate all the durations for an approval or set of approvals?
The field Aggregate Duration adds up all the time for a given role (on the approval request by role tab) or user (on the approval requests by user tab) where the role or user could have approved until they did approve.
Where do I pull information on duration of each step?
The Dashboard has a column that can be added for "Review Step Duration" and other step durations, which provides the best way to view average durations of workflow steps, whether for individual contracts or across all contracts. These can also be viewed in chart form in Insights, or as part of the Dashboard Export.
Where do I pull information on duration of each step? On time to execution per contract and on average?
Dashboard has a column that can be added for "Execution Time (days)", which is the best way to view for an individual contract, and Insights or Dashboard Export are the best way to view that value across a large number of contracts.