> ## Documentation Index
> Fetch the complete documentation index at: https://docs.turrisfi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Diligent Effort Form Status Change

> Webhook event triggered when a diligent effort form is signed, declined or voided

<Note>
  **Webhooks belong to the Carrier & MGA API.** This event fires about a form you asked one of your own agencies to
  sign, and only a credential on that surface (carrier, MGA or wholesaler) can subscribe to it.

  The agency that signs the form does not receive this event. It sees the outcome in the Turris agency app instead.
</Note>

## Overview

The `DILIGENT_EFFORT_REQUEST_STATUS_CHANGE` webhook tells you that a diligent effort form you requested has reached its
final state — the agent signed it, declined it, or the envelope was voided.

It is what lets a policy admin system advance on its own instead of polling: request the form through
[Request a Signature](/api-reference/v2/diligent-effort-requests/request-signature), then wait for this event.

**Webhook type:** `DILIGENT_EFFORT_REQUEST_STATUS_CHANGE`

### Triggers

This webhook fires when a request ENTERS one of the three terminal statuses:

* `signed` — the agent completed and signed the form. This is the outcome you are usually waiting for.
* `declined` — the agent refused to sign, from DocuSign's own interface. Turris collects no reason, so the event
  carries none. The request will not advance any further.
* `voided` — the envelope was voided.

<Warning>
  **Subscribe to the whole event, not just success.** A `declined` form means the flow you started is over, and nothing
  else will tell you. A system that only handles `signed` waits forever on a request that has already failed.
</Warning>

It does **not** fire for `draft` or `sent`. There is no intermediate event while DocuSign is processing a signature, and
one request produces at most one of these events.

<Info>
  This webhook is sent **immediately**. No debouncing is applied — reaching a terminal state is a discrete event, and it
  happens once per request.
</Info>

## Payload Example

```json theme={null}
{
  "webhookType": "DILIGENT_EFFORT_REQUEST_STATUS_CHANGE",
  "upstreamEntityId": "507f1f77bcf86cd799439010",
  "payload": {
    "requestId": "000000000000000000000000",
    "quoteId": "Q-10045",
    "quoteType": "new quote",
    "stateCode": "CA",
    "status": "signed",
    "downstreamEntityId": "000000000000000000000000",
    "agencyName": "Example Insurance Agency, LLC",
    "signerName": "Turris Test Signer",
    "statusChangedAt": "2026-01-15T12:00:00.000Z",
    "fileDocumentId": "000000000000000000000000"
  }
}
```

## Field Reference

### Payload Fields

| Field                | Type           | Description                                                                                                                                 |
| -------------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| `requestId`          | string         | The Turris ID of the diligent effort request, as returned when you created it                                                               |
| `quoteId`            | string         | Your own identifier for the quote, exactly as you sent it. Use this to match the event back to your own record                              |
| `quoteType`          | string         | One of: `new quote`, `renewal quote`                                                                                                        |
| `stateCode`          | string         | Two-letter US state or territory code (e.g., `CA`)                                                                                          |
| `status`             | string         | The terminal status reached. One of: `signed`, `declined`, `voided`                                                                         |
| `downstreamEntityId` | string         | The Turris ID of the agency that was asked to sign                                                                                          |
| `agencyName`         | string \| null | The agency's legal name, or `null` if it could not be resolved at the time the event was sent                                               |
| `signerName`         | string \| null | The name of the person the form was addressed to, or `null` if it could not be resolved                                                     |
| `statusChangedAt`    | string         | ISO 8601 timestamp of when the request entered this status                                                                                  |
| `fileDocumentId`     | string \| null | The Turris ID of the stored form. Always present on `signed`; `null` on `declined` and `voided`, where no signed document was ever produced |

<Note>
  Match events to your own records on **`quoteId`**, not on `requestId`. `quoteId` is the value your system supplied and
  is unique within your organisation, so it needs no lookup table on your side.
</Note>


## Related topics

- [Request a Diligent-Effort Signature](/api-reference/v2/diligent-effort-requests/request-signature.md)
- [Rate Limiting](/guides/rate-limiting.md)
- [List Documents](/api-reference/v2/downstream/documents/list-documents.md)
