organization_unit.created Event
Emitted when a new organization unit is created for a client. An
organization unit is any node in the client's org hierarchy — a division,
department, sub-department, or a sub-category created under a unit type.
Fires once per unit created. This is the single choke point for individual
unit creation, so it covers every path that creates a unit — including the
sub-categories created alongside a new unit type (see
organization_unit_type.created).
| Property | Value |
|---|---|
| Type | organization_unit.created |
| Data version | 1 |
| Entity | entity.type = "organizationUnit", entity.id = data.organizationUnitId |
| Fan-out | One delivery per matching subscription on the client |
Sample delivery
POST /your/webhook/path HTTP/1.1
Host: hooks.your-domain.com
Content-Type: application/json
User-Agent: ListoGlobal-Gateway/1.0
webhook-id: lglsoevt_uZR7vSXyFN2NeBjH6
webhook-timestamp: 1746534600
webhook-signature: v1,Bq8oV5rC8dPsYLm0bHIyOEfaKGvrFOhJM0aTP6bWeBc=
{
"id": "lglsoevt_uZR7vSXyFN2NeBjH6",
"type": "organization_unit.created",
"specVersion": 1,
"dataVersion": 1,
"occurredAt": "2026-05-06T14:03:42.512Z",
"entity": { "type": "organizationUnit", "id": "lglsooun_uZIIHfKqYBwyaRGGs" },
"data": {
"organizationUnitId": "lglsooun_uZIIHfKqYBwyaRGGs",
"clientId": "lglsocli_uZIIHfKqYBwyaRGGs",
"name": "Engineering",
"unitCode": "ENG01",
"description": "Engineering department",
"unitType": {
"id": "lglsoout_3pQ7rMkA1n",
"name": "Department"
},
"parentUnit": {
"id": "lglsooun_8xK2wErTy5",
"name": "Technology"
},
"createdAt": "2026-05-06T14:03:42.512Z",
"links": {
"self": "/v1/instance-integrations/inst_abc123xyz/clients/lglsocli_uZIIHfKqYBwyaRGGs/organization-structure"
}
}
}data schema
data schema| Field | Type | Description |
|---|---|---|
organizationUnitId | string | Public organization unit ID (lglsooun_…). Same value as entity.id. |
clientId | string | Public client ID this unit belongs to (lglsocli_…). |
name | string | Unit display name. Snapshot at emit time. |
unitCode | string | null | Client-supplied external code for the unit, or null. |
description | string | null | Unit description, or null. |
unitType | object | The unit type this unit belongs to, as { id, name }. id is lglsoout_…. |
parentUnit | object | null | Parent unit in the hierarchy as { id, name }, or null for a top-level unit. id is lglsooun_…. |
createdAt | ISO-8601 UTC | When the unit was created in Listo. |
links.self | string | Path to the client's organization-structure resource (no per-unit endpoint). See note below. |
🛈 No per-unit public endpoint.
links.selfpoints at the client's
organization-structureresource, which lists the full unit hierarchy.
Fetch it and find the matching unit byid. The link will swap to a
dedicated endpoint later without bumpingdataVersion.
Snapshot semantics
name, unitCode, description, unitType, and parentUnit are a
snapshot at emit time. If the unit is edited (renamed, re-parented)
between emit and your handler running, the snapshot may be stale. Refetch
via links.self for current state:
GET https://gateway.listoglobal.com{links.self}
x-api-key: <your-key>
Ordering and duplication
- Duplicates are normal. Dedupe on
webhook-id. - Order is not guaranteed. When a unit is created together with its
type, you receive both this event and an
organization_unit_type.created,
in any order. A child unit's event may arrive before its parent unit's or
beforeorganization_unit_type.created— build your hierarchy tolerant
of out-of-order arrival (storeparentUnit.id/unitType.idand resolve
lazily).
Common patterns
"Mirror the org-unit hierarchy"
1. Verify signature, dedupe on webhook-id.
2. UPSERT INTO org_units (id, client_id, name, unit_type_id, parent_unit_id, ...)
keyed by organizationUnitId.
3. Resolve parentUnit.id / unitType.id lazily — they may arrive after the child.
4. Respond 200."Detect a new categorization node"
Hook this when you maintain your own copy of the client's org structure and
need near-real-time updates as divisions / departments are added, instead
of polling the organization-structure endpoint.
Updated about 1 month ago
