Skip to main content

Overview

The AGENT_REGULATORY_ACTION_ADDED webhook is triggered when the daily NIPR PDB-alerts pass finds a regulatory action against one of your producers that Turris has not seen before. It exists because an adverse action against a producer previously reached you only if you went looking. Regulatory actions are available on Get Agent Regulatory Actions, but nothing told you when a new one appeared, so the only way to act on one was to poll every producer on your book. A licence lapse or an adverse ruling does not always change a compliance status either, so the compliance-status events cannot stand in for this. This event tells you an action was newly filed, against whom, and what it says. Webhook type: AGENT_REGULATORY_ACTION_ADDED

Triggers

This webhook fires when the daily NIPR PDB-alerts pass records a regulatory action against a producer that was not already on file. That is the only trigger, and the wording is deliberate — see the next section for what that excludes.
This webhook is sent immediately, with no debouncing, and there is one delivery per newly found action. A single daily pass can find several, so a receiver can see a short run of deliveries — bounded by what NIPR newly reports, which is typically small, rather than by any batching on our side.

What does not fire this event

Only newly found actions are delivered

A producer’s existing action history is never delivered by this event, and that is by design rather than an omission. Three cases all stay silent:
  • the first compliance-data synchronisation after a producer is added, which loads their whole history at once
  • a re-synchronisation after their NIPR data is reset, which reloads the same history
  • an internal reprocessing run over previously retrieved NIPR data
If we delivered those, onboarding a book of producers would announce every historical action as though it had just happened. So this event means “newly found”, and history is something you read rather than something you are told.
Backfill before you rely on this event. A producer added today has their existing actions loaded silently. Read Get Agent Regulatory Actions once per producer when you onboard them, then let this webhook keep you current.

Payload Example

A criminal action, the case this event was built for:
An administrative action where NIPR supplied none of the optional detail:

Payload Fields

The seven nullable fields are always present as keys. null means NIPR did not supply a value; it never means the key is missing. So you can read payload.disposition without a presence check, and an empty string from NIPR is normalised to null so you do not have to treat blank and absent differently.Two of the numbers are worth reading carefully. penaltyFineForfeitureInUSD: 0 genuinely means no penalty, but lengthOfOrderInDays: 0 is ambiguous in NIPR’s own data — it covers both “not specified” and “indefinite”. Do not render it as “0 days”.
The entity fields are best-effort, and they all depend on one lookup. agentId, downstreamEntityAssociationId, branchName and legalName are resolved from your association with the producer’s agency. If that lookup misses — an agency archived between our read and the delivery is the realistic case — none of them arrive. If it hits, downstreamEntityAssociationId is always present and the rest are individually best-effort.Absent means “we could not resolve this”, never a statement about the data. Re-read from the API rather than inferring anything from an absent field.One caveat. When a producer works under more than one of your agencies, the agency fields name an arbitrary one of those relationships, because a single NIPR subscription is shared across them. agentId is exact; treat downstreamEntityAssociationId as one of possibly several. Match on agentId.

Deduplication

Key on actionId + npn + stateCode. Those three together identify a real-world action, and a redelivery of the same action carries the same three values. Do not key on regulatoryActionId alone if you also poll the API, because you would then hold the same action twice under two different shapes of record.

No fan-out across carriers

If the same producer appears on more than one carrier’s book, each carrier holds their own copy of the action, and each receives exactly one delivery for it, carrying their own downstreamEntityAssociationId. This differs from Agency Updated, where a single change fans out across every relationship you hold. There is nothing to de-duplicate across relationships here.
Webhook subscriptions are per event type. Subscribing to Agent Regulatory Action Added does not deliver Agency Regulatory Action Added, and it does not deliver Agent Regulatory Action Updated either. Register a separate webhook for each event you want to receive, and take the Updated event alongside this one so a revised filing does not go unheard.