Skip to navigation

Delayed routing

View as Markdown
eSignature REST API 2.1 only

The delayed routing feature enables you to set a delay between steps of an envelope’s routing order. The routing order defines the sequence in which an envelope is delivered to recipients. If you set a delay for a step in the routing order, the envelope will be placed on hold after all recipients in the previous step complete their required actions, and a delay countdown will begin. When it has elapsed, the envelope will be sent to recipients in the current step of the routing order. You can define the delay as:

  • A length of time after the completion of the previous step’s recipient signing process
  • An absolute date and time

You can use delayed routing to control the delivery time for recipients at any step in the routing order after the initial send. To set the time for the initial send, use the scheduled sending feature. Another feature enables you to pause envelope delivery before sending to recipients at a step in the routing order, but the pause feature differs from delayed routing and scheduled sending by requiring an API call to resume envelope routing. All three options are part of a suite of eSignature platform features known as Advanced Recipient Routing (ARR).

Note: The delayed routing feature is available in all developer accounts, but only in certain production account plans. Contact Docusign Support or your account manager to find out whether delayed routing is available for your production account plan.

Why delay the routing of an envelope?

By default, completion of the signing process for one step in the routing order causes an envelope to be sent immediately to recipients defined for the next step. However, business needs may require a length of time to elapse before delivery to the next set of recipients. You can set up delayed routing at any step or multiple steps to hold up envelope delivery as needed.

Scenarios in which you can apply delayed routing include:

  • You want to delay sending real estate documents to a recipient until the previous signer’s grace period for withdrawing from the deal has expired.
  • A recipient needs access to view a document for a length of time before receiving a signable version. You can define the recipient in one step as a carbon copy recipient (with view-only access), while in the next step defining the same recipient as a signer, and add a delay between the two steps.

Add delayed routing to a workflow

You can add delayed routing to the routing order by defining it in an envelope’s or template’s workflow. To implement delayed routing:

  1. When you create an envelope or template, add a workflow object.

  2. In the workflow object, define one or more workflowSteps objects, each of which represents a step in the routing order.

  3. To set a delay before an envelope is routed to recipients at a particular step in the routing order, include a delayedRouting object in the workflowSteps object associated with that step. Several other properties must be defined in the workflowSteps object. They are described in How to send an envelope with delayed routing.

  4. In the delayedRouting object, include a rules array.

  5. To define when the envelope will be sent to recipients associated with this step in the routing order, in the rules array, add a rule object with one of the following properties:

    • delay: A delay between the completion of the previous step and the time the envelope is sent to recipients in this step. This value is a string in [d.]hh:mm:ss format, defined as:

      • [d]: the number of days from 0 to 30, optional
      • hh: hours from 00 to 23
      • mm: minutes from 00 to 59
      • ss: seconds from 00 to 59
    • resumeDate: A specific date and time when the envelope should be sent to recipients in this step. This value is an ISO8601 datetime string with the time zone specified. For example, 2022-04-03T23:30:00Z represents a send date and time of April 3, 2022 at 11:30 PM UTC. The resumeDate option is not available for templates.

For details and example code, see How to send an envelope with delayed routing.

Delayed routing with bulk sending

Delayed routing supports bulk sending a batch of envelopes to a list of recipients. The general steps for implementing bulk sending with delayed routing are:

  1. Define a bulk list of recipients via a request to BulkSend:createBulkSendList.
  2. Define a draft envelope or a template that will serve as the basis for the bulk send batch envelopes, including workflow that contains a delay, in an Envelopes:create or Templates:create call.
  3. Ensure that the bulk list is compatible with the draft envelope or template by making a request to BulkSend:createBulkSendTestRequest.
  4. Correct any issues that the compatibility check finds by updating the envelope, template, or bulk list.
  5. Generate the bulk send batch envelopes and send them to recipients in the bulk list by calling BulkSend:createBulkSendRequest.

When a delay has been defined in the workflow, the delay countdown starts and ends independently for each envelope in the batch, once that envelope reaches the step in the routing order that has a delay. For example, if a delay of one day is defined between the first and second step of an envelope’s routing order, and the bulk list consists of two sets of recipients, the batch envelope delays might be processed as follows:

Batch envelope 1

  • July 7: Initial send
  • July 9: First signer completes envelope and delay starts
  • July 10: Delay ends and envelope is sent to second signer

Batch envelope 2

  • July 7: Initial send
  • July 11: First signer completes envelope and delay starts
  • July 12: Delay ends and envelope is sent to second signer

For a walkthrough of the calls to create a bulk send recipient list, apply it to an envelope, and send the batch of envelopes, see How to bulk send envelopes.

Retrieve, update, and delete delayed routing parameters

The EnvelopeWorkflowDefinition resource defines endpoints that you can use to retrieve, update, and delete delayed routing parameters for envelopes and templates.

Cancel a delay

If you attempt to delete delayed routing from an envelope once the delay countdown has begun, you’ll receive an error response. To remove a delay while a countdown is in progress, you can send an EnvelopeWorkflowDefinition:updateEnvelopeDelayedRoutingDefinition request and set the delay or send time to one minute in the future. This will reset the countdown, and the envelope will proceed to the recipients at this step in the routing order one minute later.

Note: Before a delayed routing countdown has begun, you can use the EnvelopeWorkflowDefinition:deleteEnvelopeDelayedRoutingDefinition endpoint or the EnvelopeWorkflowDefinition:deleteTemplateDelayedRoutingDefinition endpoint to remove delayed routing. However, the workflow step that included delayed routing will remain, with a pause_before action. This will cause the envelope to become paused indefinitely at this stage in the routing order, and a call to unpause it will be required. To completely remove any delay or pause between recipients in the routing order, you can use the EnvelopeWorkflowDefinition:deleteEnvelopeWorkflowStepDefinition request or EnvelopeWorkflowDefinition:deleteTemplateWorkflowStepDefinition request instead, as long as the step doesn’t include any other workflow rules that should remain intact.

Behaviors and restrictions

Delayed routing has the following behaviors and restrictions:

  • If you define delayed routing for a step in the routing order, the delay applies to all recipients associated with that step.
  • Delays can be up to 30 days from completion of the previous step in the routing order. This limit applies to both delays and specific send times. When using a specific send time, the 30-day limit applies to the length of time between completion of the previous step and the resumeDate.
  • The delay countdown begins when all recipients associated with a step in the routing order have completed the signing process. For example, if you set a one-hour delay before an envelope is sent to step 2 recipients, the one-hour countdown starts when the last of the step 1 recipients has completed the signing process.
  • In a bulk send scenario, a separate delay countdown occurs for each batch envelope. A countdown begins when all of a batch envelope’s recipients associated with a step in the routing order have completed the signing process.
  • If you define a specific send time for delayed routing, and the previous step in the routing order is completed after the send time, the envelope will be sent to the current step’s recipients immediately on completion of the previous step.
  • If a recipient declines to sign, the envelope will not be routed to any subsequent recipients in the routing order, and any delays associated with subsequent recipients will be ignored.
  • If an envelope expires while it is paused prior to sending to the next recipient, it will not be sent.
  • If an envelope includes conditional recipient routing as well as delayed routing, and the conditions are not met for an envelope to be delivered to a recipient, any delay associated with that recipient will be skipped and recipient routing will proceed to the next step.
  • You can correct an envelope while it’s in a paused status as a result of delayed routing. You can also modify a delay during the paused state.

Envelope statuses

Several types of status are updated as an envelope moves through the delayed routing process. To track envelope status during delayed routing, you may need to check all of these status types:

  • Envelope status: The overall envelope status.
  • Workflow status: The overall state of the envelope workflow. For more information, see Envelopes:get, scroll down to the Responses section, and on the Definitions tab for a success response, expand the workflow object.
  • Workflow step status: Indicates whether a step is currently being executed. For more information, see Envelopes:get, scroll down to the Responses section, and on the Definitions tab for a success response, expand the workflowstep object.
  • Delayed routing status: Indicates whether the delay countdown for a step in the routing order is in progress. For more information, see Envelopes:get, scroll down to the Responses section, and on the Definitions tab for a success response, expand the delayedrouting object.

Workflow and delayed routing statuses are not included in Connect messages. To determine the current status, you can use the following calls:

Note: Do not call these methods more than once every 15 minutes. Making excess calls to check envelope status will violate Docusign polling rules and can increase your risk of being locked out for exceeding API call limits.

Status changes during delayed routing

Docusign applies the following statuses to envelopes at each stage of delayed routing processing.

StageEnvelope statusWorkflow statusWorkflow step statusDelayed routing status
An envelope has been created as a draft (the status in the Envelopes:create call was created). The envelope sending process will not be initiated until a call to Envelopes:update or BulkSend:createBulkSendRequest changes the status from created to sent.createdpendingpendingpending
The envelope sending process has been initiated, but the envelope has not reached a step at which a delay has been defined.sentpendingpendingpending
The envelope has reached a step that includes a delay, and the time or delay specified for the envelope to be sent to this step’s recipients has not arrived or elapsed.sentpausedin_progressstarted
The time or delay specified for the envelope to be sent to the current step’s recipients has arrived or elapsed, and the envelope has been sent to this step’s recipients.sentcompletedcompletedcompleted

Delayed routing status for bulk send batch envelopes

For a delayed routing workflow with a bulk send batch, status changes associated with the start and end of a delay are applied to the batch envelopes, but not to the original draft envelope that served as the basis for the batch envelopes. The original draft envelope remains in a created status with a workflow step status and delayed routing status of pending. See BulkSend Resource for a list of API calls that return information about batch envelopes and their statuses.

Delayed routing status change example with two delays

Below is an example of part of a JSON response to an Envelopes:get call that shows the envelope, workflow, workflow step, and delayed routing statuses. In this example, the routing order consists of three steps with delays before sending envelopes to recipients in the second and third steps.

{
"status": "sent",
"workflow": {
"resumeDate": "2022-03-03T21:15:04.5872828Z",
"workflowStatus": "paused",
"currentWorkflowStepId": "5e6899dd-xxxx-xxxx-xxxx-3d98645827f9",
"workflowSteps": [
{
"action": "pause_before",
"triggerOnItem": "routing_order",
"itemId": "2",
"workflowStepId": "795ee946-xxxx-xxxx-xxxx-19da793518cb",
"status": "completed",
"triggeredDate": "2022-03-03T21:04:03.3908285Z",
"delayedRouting": {
"status": "completed",
"resumeDate": "2022-03-03T21:07:03.3596049Z",
"rules": [
{
"delay": "00:03:00"
}
]
}
},
{
"action": "pause_before",
"triggerOnItem": "routing_order",
"itemId": "3",
"workflowStepId": "5e6899dd-xxxx-xxxx-xxxx-3d98645827f9",
"status": "in_progress",
"triggeredDate": "2022-03-03T21:09:04.6185285Z",
"delayedRouting": {
"status": "started",
"resumeDate": "2022-03-03T21:15:04.5872828Z",
"rules": [
{
"delay": "00:06:00"
}
]
}
}
]
},

In a delayed routing scenario consisting of three steps with delays before the second and third steps, the complete list of status changes is:

StageEnvelope statusWorkflow statusStep 2 workflow statusStep 2 delayed routing statusStep 3 workflow statusStep 3 delayed routing status
Envelope has been sent to step 1 recipients.sentpendingpendingpendingpendingpending
Step 1 recipients have signed, and the delay countdown for the send to step 2 recipients is in progress.sentpausedin_progressstartedpendingpending
The delay for step 2 recipients has elapsed and envelopes have been sent to step 2 recipients.sentpendingcompletedcompletedpendingpending
Step 2 recipients have signed, and the delay countdown for the send to step 3 recipients is in progress.sentpausedcompletedcompletedin_progressstarted
The delay for step 3 recipients has elapsed and envelopes have been sent to step 3 recipients.sentcompletedcompletedcompletedcompletedcompleted
Step 3 recipients have signed.completedcompletedcompletedcompletedcompletedcompleted

Error codes

Docusign returns the following codes to report errors related to delayed routing. The API returns the upper-case error code and the message text.

Error codeMessage textDescription
ACCOUNT_LACKS_PERMISSIONSThis Account lacks sufficient permissions.The request workflow contains delayedRouting delay rules, but the requesting user’s account does not have delayed routing available in their account plan.
INVALID_REQUEST_PARAMETERThe request contained at least one invalid parameter. action property must be specified.The request is missing a required action property, which specifies the action to take.
INVALID_REQUEST_PARAMETERThe request contained at least one invalid parameter. Envelope delay rules supports specifying either a ‘resumeDate’ or ‘delay’, but not both.The workflowSteps delayedRouting property contains a rule object with a value defined for both the delay and resumeDate properties. Only one of these properties should be defined.
INVALID_REQUEST_PARAMETERThe request contained at least one invalid parameter. Invalid value for ‘delay’: {delay}.The workflowSteps delayedRouting property contains a rule object with an invalid value for the delay property. The value must be a timespan string in the format days.hours:minutes:seconds with these components:
  • days: an optional integer value up to 30, omitted if less than 1
  • hours: two digits between 00 and 23
  • minutes: two digits between 00 and 59
  • seconds: two digits between 00 and 59
INVALID_REQUEST_PARAMETERThe request contained at least one invalid parameter. Invalid value for ‘delayedRouting.rules’, expected rules list to contain at most 1 rule but {rules.Count} rules were defined.The request workflow contains a workflowSteps definition with a delayedRouting property whose rules array contains more than one rule object. Only one rule object is permitted.
INVALID_REQUEST_PARAMETERThe request contained at least one invalid parameter. Invalid value for ‘resumeDate’: {resumeDate}.A workflowSteps delayedRouting property contains a rule object with an invalid value for the resumeDate property. The value must be a properly formatted ISO8601 datetime string.
INVALID_REQUEST_PARAMETERThe request contained at least one invalid parameter. Invalid value for workflow step ‘delay’, must be a positive value: {step.DelayedRouting.Rules[0].Delay}.The request workflow has a workflowSteps object whose delayedRouting delay rule differs from the saved workflow’s delayedRouting delay rule, and the request delay is either zero or a negative timespan.
INVALID_REQUEST_PARAMETERThe request contained at least one invalid parameter. Invalid value for workflow step ‘resumeDate’, must not be in the past: {step.DelayedRouting.Rules[0].ResumeDate}.The request workflow has a workflowSteps object whose delayedRouting resumeDate rule differs from the saved workflow’s delayedRouting resumeDate rule, and the request’s resumeDate is in the past.
INVALID_REQUEST_PARAMETERThe request contained at least one invalid parameter. itemId property must be specified.The request is missing a required itemId property, which specifies the unique ID of the item being triggered.
INVALID_REQUEST_PARAMETERThe request contained at least one invalid parameter. Request is missing workflow step definition.The request is missing a required workflow step.
INVALID_REQUEST_PARAMETERThe request contained at least one invalid parameter. triggerOnItem property must be specified.The request is missing a required triggerOnItem property, which specifies the type of item that triggers a workflow step.
INVALID_REQUEST_PARAMETERThe request contained at least one invalid parameter. workflowStepId is malformed.The workflowStepId in the request is not a valid GUID.
INVALID_REQUEST_PARAMETERThe request contained at least one invalid parameter. workflowStepId must be defined.The request is missing a workflow step ID, which is required.
INVALID_REQUEST_PARAMETERThe request contained at least one invalid parameter. workflowStepId must not be specified during step creation, a new step id will be generated in the response.A request to create a new workflow step includes a step ID, but it should not.
WORKFLOW_UPDATE_NOT_ALLOWEDUpdate to the workflow is not allowed. Delayed Routing delay has already elapsed, unable to modify Delayed Routing delay.The request workflow defines a delayedRouting delay rule that differs from the current state of the workflow’s delayedRouting delay rule for the same workflow step, and the current delayedRouting delay has already elapsed.
WORKFLOW_UPDATE_NOT_ALLOWEDUpdate to the workflow is not allowed. Unable to delete workflow step, a delayed routing delay is either in progress or completed.A request to delete a workflow step could not be completed because a delayed routing countdown has started or finished. For a countdown in progress, an EnvelopeWorkflowDefinition:updateEnvelopeDelayedRoutingDefinition request can be used to update the delay or send time to one minute in the future, effectively ending the delay.
WORKFLOW_UPDATE_NOT_ALLOWEDUpdate to the workflow is not allowed. Unable to delete workflow step, step has already been processed.A request to delete a workflow step could not be completed because the step is finished.
WORKFLOW_UPDATE_NOT_ALLOWEDUpdate to the workflow is not allowed. Unable to delete delay, delay step is either in progress or completed.A request to delete delayed routing from a workflow step could not be completed because the delayed routing countdown has started or finished. For a countdown in progress, an EnvelopeWorkflowDefinition:updateEnvelopeDelayedRoutingDefinition request can be used to update the delay or send time to one minute in the future, effectively ending the delay.
WORKFLOW_UPDATE_RECIPIENTROUTING_NOT_ALLOWEDThis Account lacks sufficient permissions.The request contains delayed routing rules, but the requesting user’s account does not have delayed routing available in their account plan.

Next steps

For details and example code that demonstrates how to delay routing for an envelope, see:

For information about delaying routing for an envelope in the eSignature web application, see:

For more features of Advanced Recipient Routing, see:

For information about bulk sending, see: