SUBJECT_RECORD_DATA_UPDATED Event

This webhook event is sent when entity data within a subject record is modified. This includes updates to businesses, persons, bank accounts, and other related entities.

When This Event Is Sent

  • Business information is updated (name, address, tax ID, etc.)
    • Related bank account data or relationships.
    • Related owner/person data or relationships.
  • Person information is changed (name, email, date of birth, etc.)
  • Bank account details are modified.
  • Sales information is updated.

Decrypted Data Parameters

This event includes all default parameter for version 1.0 in the decrypted data parameter, plus the following parameters:

Note: This event does not include workflow_id or workflow_type as data updates associations are related to the subject_record.

ParameterTypeRequiredDescription
entitiesobjectYesAn object containing arrays of updated entity references. Each entity type (business, persons, bank_accounts, etc.) lists which entities and fields were modified.

Entities Structure

The entities object groups updates by entity type:

Entity TypeDescription
businessBusiness entity updates
personsPerson entity updates
bank_accountsBank account updates
sales_infoSales Information updates

Each entity type contains an array of objects with:

FieldTypeDescription
{entity}_idstringThe entity identifier.

- For business , the entity_id will be one of: business_id, business_bank_account_id, business_owner_id
- For persons , the entity_id will be person_id
- For sales_info , the entity_id will be sales_info_id
- For bank_accounts , the entity_id will be bank_account_id
fieldsarrayArray of field paths that were updated (e.g., ["email", "addresses.legal.line1"])

Partial Updates

Important: Depending on the action that triggered the webhook, you will receive only the entities and fields that were actually updated.

For example:

  • If only a person's email was updated, you'll receive only that person's ID with "fields": ["email"]
  • If a business address was changed, you'll receive the business ID with the specific address fields that changed
  • You will not receive data for entities that were not part of the update

This targeted approach helps you identify exactly what changed without needing to compare entire entity records.

Example Payload

Note: This example shows the decrypted payload. When you receive this webhook, the data field will be encrypted. See the encryption reminder for details.

This example shows all possible entity types and fields for documentation purposes. In practice, you will receive only the entities and fields relevant to the specific update that triggered the webhook.

{
  "id": "wh_4aMSv31YsvkIwpkZo8Rum0",
  "event_type": "SUBJECT_RECORD_DATA_UPDATED",
  "timestamp": "2026-03-10T19:04:54Z",
  "account_id": "account_id",
  "schema_version": "2025-11-21",
  "key_id": "whk_20260223_09",
  "data": {
    "version": "1.0",
    "subject_record_id": "sr_7egZK1augIXQgdtP2kFce5",
    "user_context": {
      "user_id": "[email protected]",
      "user_type": "USER"
    },
    "entities": {
      "business": [
        {
          "business_id": "b_4oITqxHBNGKx1nArCAgPSS",
          "fields": [
            "email",
            "tax_id",
            "website",
            "addresses.legal",
            "addresses.legal.line1",
            "addresses.legal.line2",
            "addresses.legal.city",
            "addresses.legal.state",
            "addresses.legal.postal_code",
            "addresses.legal.country",
            "addresses.mailing",
            "addresses.mailing.line1",
            "addresses.mailing.line2",
            "addresses.mailing.city",
            "addresses.mailing.state",
            "addresses.mailing.postal_code",
            "addresses.mailing.country",
            "legal_name",
            "phone_number",
            "operating_name",
            "social_networks.youtube",
            "social_networks.linkedin",
            "social_networks.facebook",
            "established_date",
            "additional_fields.merrick_mid",
            "registration_type",
            "business_description",
            "industry_category_codes.mcc",
            "industry_category_codes.mcc.code",
            "industry_category_codes.mcc.card_brand"
          ]
        },
        {
          "business_owner_id": "bo_1NSOqEb0KZqaQjmYbF0dJ8",
          "fields": [
            "ownership_type",
            "ownership_percentage",
            "ownership_year_month",
            "business_person_position"
          ]
        },
        {
          "business_bank_account_id": "bba_7712HQoFEymfb8bzbgcLkN",
          "fields": [
            "bank_account_id",
            "bank_account_purposes"
          ]
        }
      ],
      "persons": [
        {
          "person_id": "p_4U215V5NVryLmzVnfIp2mM",
          "fields": [
            "email",
            "tax_id",
            "addresses.primary_residence",
            "addresses.primary_residence.line1",
            "addresses.primary_residence.line2",
            "addresses.primary_residence.city",
            "addresses.primary_residence.state",
            "addresses.primary_residence.postal_code",
            "addresses.primary_residence.country",
            "last_name",
            "first_name",
            "citizenship",
            "middle_name",
            "phone_number",
            "date_of_birth"
          ]
        }
      ],
      "bank_accounts": [
        {
          "bank_account_id": "ba_39x9E9xcWaTjTuKsoElX8C",
          "fields": [
            "bank_name",
            "bank_account_type",
            "bank_account_number",
            "bank_routing_number",
            "bank_account_ownership_type"
          ]
        }
      ],
      "sales_info": [
        {
          "sales_info_id": "bsi_48nRiv7sU40CN6daLOUT7f",
          "fields": [
            "card_brands",
            "sales_amount.highest_ticket_sales",
            "sales_amount.average_individual_sale",
            "sales_amount.average_yearly_credit_sales",
            "sales_amount.average_monthly_credit_sales",
            "sales_method.keyed",
            "sales_method.online",
            "sales_method.retail",
            "sales_method.telephone"
          ]
        }
      ]
    }
  }
}

Real-World Example

If only a person's email was updated, you would receive a much simpler payload:

{
  "id": "wh_4aMSv31YsvkIwpkZo8Rum0",
  "event_type": "SUBJECT_RECORD_DATA_UPDATED",
  "timestamp": "2026-03-10T19:04:54Z",
  "account_id": "account_id",
  "schema_version": "2025-11-21",
  "key_id": "whk_20260223_09",
  "data": {
    "version": "1.0",
    "subject_record_id": "sr_7egZK1augIXQgdtP2kFce5",
    "user_context": {
      "user_id": "[email protected]",
      "user_type": "USER"
    },
    "entities": {
      "persons": [
        {
          "person_id": "p_4U215V5NVryLmzVnfIp2mM",
          "fields": [
            "email"
          ]
        }
      ]
    }
  }
}

Retrieving information

  • Withbusinesss_id, you can retrieve related business information with the business.get endpoint.
  • Withbusiness_owner_id, you can retrieve related business information with the business.getOwner endpoint.
  • Withbusiness_bank_account_id, you can retrieve related business information with the business.getBankAccount endpoint.
  • Withperson_id, you can retrieve related business information with the person.get endpoint.
  • Withbank_account_id, you can retrieve related business information with the bankAccount.get endpoint.
  • Withsales_info_id, you can retrieve related business information with the business.salesInfo.get endpoint.