organization_unit_type.created Event

Emitted when a new organization unit type (a category, e.g.
"Division", "Department") is created for a client. The payload embeds the
units (sub-categories) that were created alongside the type.

PropertyValue
Typeorganization_unit_type.created
Data version1
Entityentity.type = "organizationUnitType", entity.id = data.organizationUnitTypeId
Fan-outOne delivery per matching subscription on the client

🛈 Paired with organization_unit.created. When a type is created
together with sub-categories, Listo also fires one
organization_unit.created
per embedded unit. Those units appear both in this event's
organizationUnits[] and as their own standalone events. Dedupe on
webhook-id and treat the per-unit events as authoritative for unit
detail.


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_uZQ6uRWxEM1NdAiG5
webhook-timestamp: 1746531000
webhook-signature: v1,Ap7nU4qB7cOrXKl9aGHxNDeZJFuqENgILzSZO5aVdAb=

{
  "id": "lglsoevt_uZQ6uRWxEM1NdAiG5",
  "type": "organization_unit_type.created",
  "specVersion": 1,
  "dataVersion": 1,
  "occurredAt": "2026-05-06T14:03:42.184Z",
  "entity": { "type": "organizationUnitType", "id": "lglsoout_uZIIHfKqYBwyaRGGs" },
  "data": {
    "organizationUnitTypeId": "lglsoout_uZIIHfKqYBwyaRGGs",
    "clientId": "lglsocli_uZIIHfKqYBwyaRGGs",
    "name": "Department",
    "unitTypeCode": "LSD1004",
    "createdAt": "2026-05-06T14:03:42.184Z",
    "organizationUnits": [
      { "id": "lglsooun_3pQ7rMkA1n", "name": "Engineering" },
      { "id": "lglsooun_8xK2wErTy5", "name": "Sales" }
    ],
    "links": {
      "self": "/v1/instance-integrations/inst_abc123xyz/clients/lglsocli_uZIIHfKqYBwyaRGGs/organization-structure"
    }
  }
}

data schema

FieldTypeDescription
organizationUnitTypeIdstringPublic organization unit type ID (lglsoout_…). Same value as entity.id.
clientIdstringPublic client ID this unit type belongs to (lglsocli_…).
namestringDisplay name of the unit type (e.g. Department). Snapshot at emit time.
unitTypeCodestring | nullClient-supplied external code for the unit type, or null.
createdAtISO-8601 UTCWhen the unit type was created in Listo.
organizationUnitsarrayThe units (sub-categories) created with this type, each { id, name }. Empty array if none. See below.
links.selfstringPath to the client's organization-structure resource (no per-unit-type endpoint). See note below.

organizationUnits[] element

FieldTypeDescription
idstringPublic organization unit ID (lglsooun_…).
namestringUnit display name at emit time.

🛈 No per-unit-type public endpoint. links.self points at the
client's organization-structure resource, which lists every unit type
and the full org-unit hierarchy. Fetch that and find the matching type by
id. The link will swap to a dedicated endpoint later without bumping
dataVersion.


Snapshot semantics

name, unitTypeCode, and organizationUnits[] are a snapshot at emit
time
. If the type or its units are edited between emit and your handler
running (typical for retries), 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. This event and the per-unit
    organization_unit.created events for the same creation may arrive in
    any order — and either may arrive before the parent
    client.created.
    Upsert on organizationUnitTypeId rather than insisting the client
    already exists.

Common patterns

"Mirror the client's category structure"

1. Verify signature, dedupe on webhook-id.
2. UPSERT the unit type by organizationUnitTypeId.
3. For each entry in organizationUnits[], UPSERT the unit
   (you will also receive a standalone organization_unit.created for each).
4. Respond 200.

"Trigger downstream sync when a category appears"

Use this event as the signal that a client has added a new categorization
dimension. Pair it with
organization_unit.created
to capture units added to the type later, after initial creation.


Did this page help you?