> ## 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.

# Compliance Data Synchronized

> Webhook event for NIPR data synchronization completion

## Overview

The `ENTITY_COMPLIANCE_DATA_SYNCHRONIZED` webhook is triggered when NIPR data synchronization completes for an entity (agent or downstream entity). This notifies you when the initial data fetch or a data refresh has finished processing.

**Webhook type:** `ENTITY_COMPLIANCE_DATA_SYNCHRONIZED`

### Triggers

This webhook fires when:

* An initial NIPR data fetch completes for an agent or downstream entity
* A data refresh/resync finishes processing

<Info>
  This webhook is sent **immediately** — no debouncing is applied, since each sync completion is a discrete event.
</Info>

## Payload Example

```json theme={null}
{
  "webhookType": "ENTITY_COMPLIANCE_DATA_SYNCHRONIZED",
  "upstreamEntityId": "507f1f77bcf86cd799439010",
  "payload": {
    "entityType": "Agent",
    "npn": "1234567",
    "synchronizationStatus": "success",
    "niprDataSubscriptionId": "507f1f77bcf86cd799439013"
  }
}
```

## Field Reference

### Payload Fields

| Field                    | Type   | Description                                                                                |
| ------------------------ | ------ | ------------------------------------------------------------------------------------------ |
| `entityType`             | string | The type of entity that was synchronized: `Agent`, `DownstreamEntity`, or `UpstreamEntity` |
| `npn`                    | string | The National Producer Number (NPN) of the entity that was synchronized.                    |
| `synchronizationStatus`  | string | Status of the sync operation (see values below)                                            |
| `niprDataSubscriptionId` | string | The NIPR data subscription ID for this sync operation                                      |

### Why NPN Instead of an Entity ID?

A single NPN uniquely identifies a producer at NIPR and is the natural key for any NIPR-driven operation. An entity ID (MongoDB ObjectId) is not used here because **the same NPN can be linked to multiple downstream entity associations and downstream entities** across your network — for example, when an agency operates under different branches or producer codes with the same carrier. Providing the NPN lets you look up all relevant records for that producer rather than receiving an ID that references only one of potentially many associations.

Use `niprDataSubscriptionId` if you need to retrieve the specific subscription record via the [Compliance Data Subscriptions API](/api-reference/v1/compliance-data-subscriptions/get-status).

### Synchronization Status Values

| Value              | Description                                                    |
| ------------------ | -------------------------------------------------------------- |
| `success`          | Data synchronization completed successfully                    |
| `NIPR error`       | NIPR returned an error during data retrieval                   |
| `processing error` | An internal error occurred while processing the retrieved data |
