Skip to content

Webhooks

Webhook event types

On this page

Every event type, with when Bizisy sends it, the fields of data and a payload example. Choose them per endpoint in Settings → Webhooks. Every event's data has organization_id; events about a record also carry its snapshot (public and job details only), filled in when each attempt is sent.

Settings → Webhooks also has Send test event, which sends a webhook.test event signed like any other.

People#

person.hired#

Someone was added with their first job (start_date may be in the future). When no manager was given and the team lead became the manager, manager_source is "team_lead" and manager_lead_unit_id the team.

data fieldTypeNotes
organization_idstringYour company's id.
person_idstring
start_datestring
manager_source"team_lead"Only on some of these events (see the description).
manager_lead_unit_idstringOnly on some of these events (see the description).
personobject | nullThe record as it is when the attempt is sent: public and job details only. null when it no longer exists.
Example payload
Body
{
  "type": "person.hired",
  "timestamp": "2026-10-05T10:00:00.000Z",
  "data": {
    "organization_id": "01k5q8m2v3c4d5e6f7g8h9j0ka",
    "person_id": "p1",
    "start_date": "2026-11-02",
    "manager_source": "team_lead",
    "manager_lead_unit_id": "<manager_lead_unit_id>",
    "person": {
      "id": "p1",
      "name": "Ana Ferreira",
      "given_name": "Ana",
      "family_name": "Ferreira",
      "preferred_name": null,
      "work_email": "ana@acme.test",
      "work_phone": "+351 210 000 000",
      "pronouns": "she/her",
      "status": "active",
      "start_date": "2024-01-15",
      "title": "Engineer",
      "unit": {
        "id": "u2",
        "name": "Engineering"
      },
      "location": {
        "id": "l1",
        "name": "Head office"
      },
      "manager": {
        "id": "p2",
        "name": "Rui Costa",
        "title": "CTO"
      },
      "job": {
        "id": "j1",
        "valid_from": "2024-01-15",
        "valid_to": null,
        "title": "Engineer",
        "unit": {
          "id": "u2",
          "name": "Engineering"
        },
        "location": {
          "id": "l1",
          "name": "Head office"
        },
        "legal_entity": {
          "id": "e1",
          "name": "Acme Lda"
        },
        "employment_type": "full_time",
        "fte": 1,
        "reason": "hire",
        "contract_type": "fixed_term",
        "contract_end_date": "2026-01-14",
        "probation_end_date": "2024-07-14",
        "weekly_hours": 40,
        "notice_period_days": 30,
        "manager": {
          "id": "p2",
          "name": "Rui Costa",
          "title": "CTO"
        }
      },
      "custom": [
        {
          "key": "t_shirt_size",
          "label": "T-shirt size",
          "type": "select",
          "tier": "public",
          "value": "M"
        },
        {
          "key": "remote",
          "label": "Remote allowance",
          "type": "boolean",
          "tier": "job",
          "value": null
        }
      ]
    }
  }
}

person.updated#

Public or job details of a person changed: name, work email or phone, pronouns, photo, a public or job custom field, or a corrected job history row (job_id). A correction that defaulted the manager to the team lead (a CSV or org_setup_apply moving someone not started yet) carries manager_source "team_lead" and manager_lead_unit_id.

data fieldTypeNotes
organization_idstringYour company's id.
person_idstring
job_idstringOnly on some of these events (see the description).
manager_source"team_lead"Only on some of these events (see the description).
manager_lead_unit_idstringOnly on some of these events (see the description).
personobject | nullThe record as it is when the attempt is sent: public and job details only. null when it no longer exists.
Example payload
Body
{
  "type": "person.updated",
  "timestamp": "2026-10-05T10:00:00.000Z",
  "data": {
    "organization_id": "01k5q8m2v3c4d5e6f7g8h9j0ka",
    "person_id": "p1",
    "job_id": "j1",
    "manager_source": "team_lead",
    "manager_lead_unit_id": "<manager_lead_unit_id>",
    "person": {
      "id": "p1",
      "name": "Ana Ferreira",
      "given_name": "Ana",
      "family_name": "Ferreira",
      "preferred_name": null,
      "work_email": "ana@acme.test",
      "work_phone": "+351 210 000 000",
      "pronouns": "she/her",
      "status": "active",
      "start_date": "2024-01-15",
      "title": "Engineer",
      "unit": {
        "id": "u2",
        "name": "Engineering"
      },
      "location": {
        "id": "l1",
        "name": "Head office"
      },
      "manager": {
        "id": "p2",
        "name": "Rui Costa",
        "title": "CTO"
      },
      "job": {
        "id": "j1",
        "valid_from": "2024-01-15",
        "valid_to": null,
        "title": "Engineer",
        "unit": {
          "id": "u2",
          "name": "Engineering"
        },
        "location": {
          "id": "l1",
          "name": "Head office"
        },
        "legal_entity": {
          "id": "e1",
          "name": "Acme Lda"
        },
        "employment_type": "full_time",
        "fte": 1,
        "reason": "hire",
        "contract_type": "fixed_term",
        "contract_end_date": "2026-01-14",
        "probation_end_date": "2024-07-14",
        "weekly_hours": 40,
        "notice_period_days": 30,
        "manager": {
          "id": "p2",
          "name": "Rui Costa",
          "title": "CTO"
        }
      },
      "custom": [
        {
          "key": "t_shirt_size",
          "label": "T-shirt size",
          "type": "select",
          "tier": "public",
          "value": "M"
        },
        {
          "key": "remote",
          "label": "Remote allowance",
          "type": "boolean",
          "tier": "job",
          "value": null
        }
      ]
    }
  }
}

person.job_changed#

A job change was recorded from effective_date (title, team, manager, location, contract terms…). When no manager was given and the team lead became the manager, manager_source is "team_lead" and manager_lead_unit_id the team.

data fieldTypeNotes
organization_idstringYour company's id.
person_idstring
effective_datestring
reasonstring
manager_source"team_lead"Only on some of these events (see the description).
manager_lead_unit_idstringOnly on some of these events (see the description).
personobject | nullThe record as it is when the attempt is sent: public and job details only. null when it no longer exists.
Example payload
Body
{
  "type": "person.job_changed",
  "timestamp": "2026-10-05T10:00:00.000Z",
  "data": {
    "organization_id": "01k5q8m2v3c4d5e6f7g8h9j0ka",
    "person_id": "p1",
    "effective_date": "2026-11-01",
    "reason": "promotion",
    "manager_source": "team_lead",
    "manager_lead_unit_id": "<manager_lead_unit_id>",
    "person": {
      "id": "p1",
      "name": "Ana Ferreira",
      "given_name": "Ana",
      "family_name": "Ferreira",
      "preferred_name": null,
      "work_email": "ana@acme.test",
      "work_phone": "+351 210 000 000",
      "pronouns": "she/her",
      "status": "active",
      "start_date": "2024-01-15",
      "title": "Engineer",
      "unit": {
        "id": "u2",
        "name": "Engineering"
      },
      "location": {
        "id": "l1",
        "name": "Head office"
      },
      "manager": {
        "id": "p2",
        "name": "Rui Costa",
        "title": "CTO"
      },
      "job": {
        "id": "j1",
        "valid_from": "2024-01-15",
        "valid_to": null,
        "title": "Engineer",
        "unit": {
          "id": "u2",
          "name": "Engineering"
        },
        "location": {
          "id": "l1",
          "name": "Head office"
        },
        "legal_entity": {
          "id": "e1",
          "name": "Acme Lda"
        },
        "employment_type": "full_time",
        "fte": 1,
        "reason": "hire",
        "contract_type": "fixed_term",
        "contract_end_date": "2026-01-14",
        "probation_end_date": "2024-07-14",
        "weekly_hours": 40,
        "notice_period_days": 30,
        "manager": {
          "id": "p2",
          "name": "Rui Costa",
          "title": "CTO"
        }
      },
      "custom": [
        {
          "key": "t_shirt_size",
          "label": "T-shirt size",
          "type": "select",
          "tier": "public",
          "value": "M"
        },
        {
          "key": "remote",
          "label": "Remote allowance",
          "type": "boolean",
          "tier": "job",
          "value": null
        }
      ]
    }
  }
}

person.terminated#

Employment ends after last_day (may be in the future).

data fieldTypeNotes
organization_idstringYour company's id.
person_idstring
last_daystring
personobject | nullThe record as it is when the attempt is sent: public and job details only. null when it no longer exists.
Example payload
Body
{
  "type": "person.terminated",
  "timestamp": "2026-10-05T10:00:00.000Z",
  "data": {
    "organization_id": "01k5q8m2v3c4d5e6f7g8h9j0ka",
    "person_id": "p1",
    "last_day": "2026-12-31",
    "person": {
      "id": "p1",
      "name": "Ana Ferreira",
      "given_name": "Ana",
      "family_name": "Ferreira",
      "preferred_name": null,
      "work_email": "ana@acme.test",
      "work_phone": "+351 210 000 000",
      "pronouns": "she/her",
      "status": "active",
      "start_date": "2024-01-15",
      "title": "Engineer",
      "unit": {
        "id": "u2",
        "name": "Engineering"
      },
      "location": {
        "id": "l1",
        "name": "Head office"
      },
      "manager": {
        "id": "p2",
        "name": "Rui Costa",
        "title": "CTO"
      },
      "job": {
        "id": "j1",
        "valid_from": "2024-01-15",
        "valid_to": null,
        "title": "Engineer",
        "unit": {
          "id": "u2",
          "name": "Engineering"
        },
        "location": {
          "id": "l1",
          "name": "Head office"
        },
        "legal_entity": {
          "id": "e1",
          "name": "Acme Lda"
        },
        "employment_type": "full_time",
        "fte": 1,
        "reason": "hire",
        "contract_type": "fixed_term",
        "contract_end_date": "2026-01-14",
        "probation_end_date": "2024-07-14",
        "weekly_hours": 40,
        "notice_period_days": 30,
        "manager": {
          "id": "p2",
          "name": "Rui Costa",
          "title": "CTO"
        }
      },
      "custom": [
        {
          "key": "t_shirt_size",
          "label": "T-shirt size",
          "type": "select",
          "tier": "public",
          "value": "M"
        },
        {
          "key": "remote",
          "label": "Remote allowance",
          "type": "boolean",
          "tier": "job",
          "value": null
        }
      ]
    }
  }
}

person.rehired#

A former employee starts a new employment on start_date. When no manager was given and the team lead became the manager, manager_source is "team_lead" and manager_lead_unit_id the team.

data fieldTypeNotes
organization_idstringYour company's id.
person_idstring
start_datestring
manager_source"team_lead"Only on some of these events (see the description).
manager_lead_unit_idstringOnly on some of these events (see the description).
personobject | nullThe record as it is when the attempt is sent: public and job details only. null when it no longer exists.
Example payload
Body
{
  "type": "person.rehired",
  "timestamp": "2026-10-05T10:00:00.000Z",
  "data": {
    "organization_id": "01k5q8m2v3c4d5e6f7g8h9j0ka",
    "person_id": "p1",
    "start_date": "2026-11-02",
    "manager_source": "team_lead",
    "manager_lead_unit_id": "<manager_lead_unit_id>",
    "person": {
      "id": "p1",
      "name": "Ana Ferreira",
      "given_name": "Ana",
      "family_name": "Ferreira",
      "preferred_name": null,
      "work_email": "ana@acme.test",
      "work_phone": "+351 210 000 000",
      "pronouns": "she/her",
      "status": "active",
      "start_date": "2024-01-15",
      "title": "Engineer",
      "unit": {
        "id": "u2",
        "name": "Engineering"
      },
      "location": {
        "id": "l1",
        "name": "Head office"
      },
      "manager": {
        "id": "p2",
        "name": "Rui Costa",
        "title": "CTO"
      },
      "job": {
        "id": "j1",
        "valid_from": "2024-01-15",
        "valid_to": null,
        "title": "Engineer",
        "unit": {
          "id": "u2",
          "name": "Engineering"
        },
        "location": {
          "id": "l1",
          "name": "Head office"
        },
        "legal_entity": {
          "id": "e1",
          "name": "Acme Lda"
        },
        "employment_type": "full_time",
        "fte": 1,
        "reason": "hire",
        "contract_type": "fixed_term",
        "contract_end_date": "2026-01-14",
        "probation_end_date": "2024-07-14",
        "weekly_hours": 40,
        "notice_period_days": 30,
        "manager": {
          "id": "p2",
          "name": "Rui Costa",
          "title": "CTO"
        }
      },
      "custom": [
        {
          "key": "t_shirt_size",
          "label": "T-shirt size",
          "type": "select",
          "tier": "public",
          "value": "M"
        },
        {
          "key": "remote",
          "label": "Remote allowance",
          "type": "boolean",
          "tier": "job",
          "value": null
        }
      ]
    }
  }
}

person.erased#

A former employee's personal data was erased: delete what you keep about them.

data fieldTypeNotes
organization_idstringYour company's id.
person_idstring
Example payload
Body
{
  "type": "person.erased",
  "timestamp": "2026-10-05T10:00:00.000Z",
  "data": {
    "organization_id": "01k5q8m2v3c4d5e6f7g8h9j0ka",
    "person_id": "p1"
  }
}

Structure#

unit.created#

A division, department or team was created.

data fieldTypeNotes
organization_idstringYour company's id.
unit_idstring
unitobject | nullThe record as it is when the attempt is sent: public and job details only. null when it no longer exists.
Example payload
Body
{
  "type": "unit.created",
  "timestamp": "2026-10-05T10:00:00.000Z",
  "data": {
    "organization_id": "01k5q8m2v3c4d5e6f7g8h9j0ka",
    "unit_id": "u2",
    "unit": {
      "id": "u2",
      "name": "Engineering",
      "kind": "department",
      "parent_id": "u1",
      "head": {
        "id": "p2",
        "name": "Rui Costa",
        "title": "CTO"
      },
      "archived": false,
      "member_count": 4
    }
  }
}

unit.updated#

A unit was renamed, moved or got a new team lead (head).

data fieldTypeNotes
organization_idstringYour company's id.
unit_idstring
unitobject | nullThe record as it is when the attempt is sent: public and job details only. null when it no longer exists.
Example payload
Body
{
  "type": "unit.updated",
  "timestamp": "2026-10-05T10:00:00.000Z",
  "data": {
    "organization_id": "01k5q8m2v3c4d5e6f7g8h9j0ka",
    "unit_id": "u2",
    "unit": {
      "id": "u2",
      "name": "Engineering",
      "kind": "department",
      "parent_id": "u1",
      "head": {
        "id": "p2",
        "name": "Rui Costa",
        "title": "CTO"
      },
      "archived": false,
      "member_count": 4
    }
  }
}

unit.archived#

A unit was archived.

data fieldTypeNotes
organization_idstringYour company's id.
unit_idstring
unitobject | nullThe record as it is when the attempt is sent: public and job details only. null when it no longer exists.
Example payload
Body
{
  "type": "unit.archived",
  "timestamp": "2026-10-05T10:00:00.000Z",
  "data": {
    "organization_id": "01k5q8m2v3c4d5e6f7g8h9j0ka",
    "unit_id": "u2",
    "unit": {
      "id": "u2",
      "name": "Engineering",
      "kind": "department",
      "parent_id": "u1",
      "head": {
        "id": "p2",
        "name": "Rui Costa",
        "title": "CTO"
      },
      "archived": false,
      "member_count": 4
    }
  }
}

location.created#

A location was created.

data fieldTypeNotes
organization_idstringYour company's id.
location_idstring
locationobject | nullThe record as it is when the attempt is sent: public and job details only. null when it no longer exists.
Example payload
Body
{
  "type": "location.created",
  "timestamp": "2026-10-05T10:00:00.000Z",
  "data": {
    "organization_id": "01k5q8m2v3c4d5e6f7g8h9j0ka",
    "location_id": "l1",
    "location": {
      "id": "l1",
      "name": "Head office",
      "country": "PT",
      "city": "Lisboa",
      "timezone": "Europe/Lisbon",
      "remote": false,
      "archived": false
    }
  }
}

location.updated#

A location changed.

data fieldTypeNotes
organization_idstringYour company's id.
location_idstring
locationobject | nullThe record as it is when the attempt is sent: public and job details only. null when it no longer exists.
Example payload
Body
{
  "type": "location.updated",
  "timestamp": "2026-10-05T10:00:00.000Z",
  "data": {
    "organization_id": "01k5q8m2v3c4d5e6f7g8h9j0ka",
    "location_id": "l1",
    "location": {
      "id": "l1",
      "name": "Head office",
      "country": "PT",
      "city": "Lisboa",
      "timezone": "Europe/Lisbon",
      "remote": false,
      "archived": false
    }
  }
}

location.archived#

A location was archived.

data fieldTypeNotes
organization_idstringYour company's id.
location_idstring
locationobject | nullThe record as it is when the attempt is sent: public and job details only. null when it no longer exists.
Example payload
Body
{
  "type": "location.archived",
  "timestamp": "2026-10-05T10:00:00.000Z",
  "data": {
    "organization_id": "01k5q8m2v3c4d5e6f7g8h9j0ka",
    "location_id": "l1",
    "location": {
      "id": "l1",
      "name": "Head office",
      "country": "PT",
      "city": "Lisboa",
      "timezone": "Europe/Lisbon",
      "remote": false,
      "archived": false
    }
  }
}

A legal entity (employing company) was created.

data fieldTypeNotes
organization_idstringYour company's id.
legal_entity_idstring
legal_entityobject | nullThe record as it is when the attempt is sent: public and job details only. null when it no longer exists.
Example payload
Body
{
  "type": "legal_entity.created",
  "timestamp": "2026-10-05T10:00:00.000Z",
  "data": {
    "organization_id": "01k5q8m2v3c4d5e6f7g8h9j0ka",
    "legal_entity_id": "e1",
    "legal_entity": {
      "id": "e1",
      "legal_name": "Acme Lda",
      "country": "PT",
      "tax_id": null,
      "archived": false
    }
  }
}

A legal entity changed.

data fieldTypeNotes
organization_idstringYour company's id.
legal_entity_idstring
legal_entityobject | nullThe record as it is when the attempt is sent: public and job details only. null when it no longer exists.
Example payload
Body
{
  "type": "legal_entity.updated",
  "timestamp": "2026-10-05T10:00:00.000Z",
  "data": {
    "organization_id": "01k5q8m2v3c4d5e6f7g8h9j0ka",
    "legal_entity_id": "e1",
    "legal_entity": {
      "id": "e1",
      "legal_name": "Acme Lda",
      "country": "PT",
      "tax_id": null,
      "archived": false
    }
  }
}

A legal entity was archived.

data fieldTypeNotes
organization_idstringYour company's id.
legal_entity_idstring
legal_entityobject | nullThe record as it is when the attempt is sent: public and job details only. null when it no longer exists.
Example payload
Body
{
  "type": "legal_entity.archived",
  "timestamp": "2026-10-05T10:00:00.000Z",
  "data": {
    "organization_id": "01k5q8m2v3c4d5e6f7g8h9j0ka",
    "legal_entity_id": "e1",
    "legal_entity": {
      "id": "e1",
      "legal_name": "Acme Lda",
      "country": "PT",
      "tax_id": null,
      "archived": false
    }
  }
}

Members#

member.role_changed#

A member's role changed (owner, admin, hr, viewer or member).

data fieldTypeNotes
organization_idstringYour company's id.
membership_idstring
person_idstring | null
rolestring
previous_rolestring
Example payload
Body
{
  "type": "member.role_changed",
  "timestamp": "2026-10-05T10:00:00.000Z",
  "data": {
    "organization_id": "01k5q8m2v3c4d5e6f7g8h9j0ka",
    "membership_id": "m2",
    "person_id": "p1",
    "role": "member",
    "previous_role": "<previous_role>"
  }
}

member.invited#

A person was invited to sign in, with the role the invite grants.

data fieldTypeNotes
organization_idstringYour company's id.
person_idstring
rolestring
Example payload
Body
{
  "type": "member.invited",
  "timestamp": "2026-10-05T10:00:00.000Z",
  "data": {
    "organization_id": "01k5q8m2v3c4d5e6f7g8h9j0ka",
    "person_id": "p1",
    "role": "member"
  }
}

member.joined#

A person accepted their invite: their login exists now.

data fieldTypeNotes
organization_idstringYour company's id.
person_idstring
membership_idstring
Example payload
Body
{
  "type": "member.joined",
  "timestamp": "2026-10-05T10:00:00.000Z",
  "data": {
    "organization_id": "01k5q8m2v3c4d5e6f7g8h9j0ka",
    "person_id": "p1",
    "membership_id": "m2"
  }
}

Positions#

position.created#

An open position was opened or put on hold for the first time (drafts send nothing until they open). Never its budget or notes.

data fieldTypeNotes
organization_idstringYour company's id.
position_idstring
positionobject | nullThe record as it is when the attempt is sent: public and job details only. null when it no longer exists.
Example payload
Body
{
  "type": "position.created",
  "timestamp": "2026-10-05T10:00:00.000Z",
  "data": {
    "organization_id": "01k5q8m2v3c4d5e6f7g8h9j0ka",
    "position_id": "pos1",
    "position": {
      "id": "pos1",
      "title": "Data Engineer",
      "status": "open",
      "reason": "replacement",
      "unit": {
        "id": "u2",
        "name": "Engineering"
      },
      "location": {
        "id": "l1",
        "name": "Lisbon"
      },
      "legal_entity": {
        "id": "e1",
        "name": "Acme Lda"
      },
      "reports_to_position": null,
      "contract_type": "permanent",
      "weekly_hours": 40,
      "target_start_date": "2026-12-01",
      "filled_on": null,
      "created_at": "2026-10-04T10:00:00.000Z",
      "updated_at": "2026-10-04T10:00:00.000Z",
      "reports_to_person": {
        "id": "p1",
        "name": "Ana Ferreira",
        "title": "CTO"
      },
      "filled_by": null
    }
  }
}

position.updated#

An open position changed: its details, its status (open, on hold, cancelled, reopened) or who it reports to.

data fieldTypeNotes
organization_idstringYour company's id.
position_idstring
positionobject | nullThe record as it is when the attempt is sent: public and job details only. null when it no longer exists.
Example payload
Body
{
  "type": "position.updated",
  "timestamp": "2026-10-05T10:00:00.000Z",
  "data": {
    "organization_id": "01k5q8m2v3c4d5e6f7g8h9j0ka",
    "position_id": "pos1",
    "position": {
      "id": "pos1",
      "title": "Data Engineer",
      "status": "open",
      "reason": "replacement",
      "unit": {
        "id": "u2",
        "name": "Engineering"
      },
      "location": {
        "id": "l1",
        "name": "Lisbon"
      },
      "legal_entity": {
        "id": "e1",
        "name": "Acme Lda"
      },
      "reports_to_position": null,
      "contract_type": "permanent",
      "weekly_hours": 40,
      "target_start_date": "2026-12-01",
      "filled_on": null,
      "created_at": "2026-10-04T10:00:00.000Z",
      "updated_at": "2026-10-04T10:00:00.000Z",
      "reports_to_person": {
        "id": "p1",
        "name": "Ana Ferreira",
        "title": "CTO"
      },
      "filled_by": null
    }
  }
}

position.filled#

Someone was hired into an open position (person_id; person.hired is sent too).

data fieldTypeNotes
organization_idstringYour company's id.
position_idstring
person_idstring
positionobject | nullThe record as it is when the attempt is sent: public and job details only. null when it no longer exists.
Example payload
Body
{
  "type": "position.filled",
  "timestamp": "2026-10-05T10:00:00.000Z",
  "data": {
    "organization_id": "01k5q8m2v3c4d5e6f7g8h9j0ka",
    "position_id": "pos1",
    "person_id": "p1",
    "position": {
      "id": "pos1",
      "title": "Data Engineer",
      "status": "open",
      "reason": "replacement",
      "unit": {
        "id": "u2",
        "name": "Engineering"
      },
      "location": {
        "id": "l1",
        "name": "Lisbon"
      },
      "legal_entity": {
        "id": "e1",
        "name": "Acme Lda"
      },
      "reports_to_position": null,
      "contract_type": "permanent",
      "weekly_hours": 40,
      "target_start_date": "2026-12-01",
      "filled_on": null,
      "created_at": "2026-10-04T10:00:00.000Z",
      "updated_at": "2026-10-04T10:00:00.000Z",
      "reports_to_person": {
        "id": "p1",
        "name": "Ana Ferreira",
        "title": "CTO"
      },
      "filled_by": null
    }
  }
}

Approvals#

approval.decided#

A job change or termination request was approved (the change applied: its person event is sent too) or rejected (status). Nothing is sent while a request waits or when it is withdrawn; pay change requests send no webhook.

data fieldTypeNotes
organization_idstringYour company's id.
approval_idstring
person_idstring
kind"job_change" | "termination"
status"approved" | "rejected"
Example payload
Body
{
  "type": "approval.decided",
  "timestamp": "2026-10-05T10:00:00.000Z",
  "data": {
    "organization_id": "01k5q8m2v3c4d5e6f7g8h9j0ka",
    "approval_id": "ap1",
    "person_id": "p1",
    "kind": "job_change",
    "status": "approved"
  }
}

Checklists#

checklist.started#

An onboarding, offboarding or custom checklist started for a person (run_id, person_id, kind).

data fieldTypeNotes
organization_idstringYour company's id.
run_idstring
person_idstring
kind"onboarding" | "offboarding" | "custom"
Example payload
Body
{
  "type": "checklist.started",
  "timestamp": "2026-10-05T10:00:00.000Z",
  "data": {
    "organization_id": "01k5q8m2v3c4d5e6f7g8h9j0ka",
    "run_id": "r1",
    "person_id": "p1",
    "kind": "onboarding"
  }
}

checklist.completed#

Every task of a checklist is done or skipped (run_id, person_id, kind).

data fieldTypeNotes
organization_idstringYour company's id.
run_idstring
person_idstring
kind"onboarding" | "offboarding" | "custom"
Example payload
Body
{
  "type": "checklist.completed",
  "timestamp": "2026-10-05T10:00:00.000Z",
  "data": {
    "organization_id": "01k5q8m2v3c4d5e6f7g8h9j0ka",
    "run_id": "r1",
    "person_id": "p1",
    "kind": "onboarding"
  }
}

Documents#

document.added#

A company or person document was added (document_id, subject, person_id). Never its title, file name or category.

data fieldTypeNotes
organization_idstringYour company's id.
document_idstring
subject"person" | "company"
person_idstring | null
Example payload
Body
{
  "type": "document.added",
  "timestamp": "2026-10-05T10:00:00.000Z",
  "data": {
    "organization_id": "01k5q8m2v3c4d5e6f7g8h9j0ka",
    "document_id": "d1",
    "subject": "person",
    "person_id": "p1"
  }
}

document.updated#

A document's details or who can see it changed (document_id, subject, person_id).

data fieldTypeNotes
organization_idstringYour company's id.
document_idstring
subject"person" | "company"
person_idstring | null
Example payload
Body
{
  "type": "document.updated",
  "timestamp": "2026-10-05T10:00:00.000Z",
  "data": {
    "organization_id": "01k5q8m2v3c4d5e6f7g8h9j0ka",
    "document_id": "d1",
    "subject": "person",
    "person_id": "p1"
  }
}

document.deleted#

A document and its file were deleted (document_id, subject, person_id). Delete any copy you keep.

data fieldTypeNotes
organization_idstringYour company's id.
document_idstring
subject"person" | "company"
person_idstring | null
Example payload
Body
{
  "type": "document.deleted",
  "timestamp": "2026-10-05T10:00:00.000Z",
  "data": {
    "organization_id": "01k5q8m2v3c4d5e6f7g8h9j0ka",
    "document_id": "d1",
    "subject": "person",
    "person_id": "p1"
  }
}

Something missing or wrong on this page? Write to hello@bizisy.com.

Developer docs