> ## Documentation Index
> Fetch the complete documentation index at: https://apidoc.crowdchange.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Event payloads

> Reference the JSON payloads sent by CrowdChange webhook events.

CrowdChange sends webhook deliveries as JSON with an `event` name and event-specific `data`.
The same object is stored on webhook logs as `payload`.

```json theme={null}
{
  "event": "transaction_created",
  "data": {}
}
```

## Updated event changes

The `fundraiser_updated`, `fundraiser_team_updated`, and `fundraiser_page_updated` events include a `changes` object in `data`.

<ResponseField name="changes" type="object">
  Changed fields keyed by dot notation. Each changed field contains `old` and `new` values.
</ResponseField>

```json theme={null}
{
  "changes": {
    "name": {
      "old": "Old campaign name",
      "new": "New campaign name"
    }
  }
}
```

## Campaign events

Events: `fundraiser_created`, `fundraiser_updated`

<ResponseField name="data" type="object">
  Campaign details.

  <Expandable title="properties">
    <ResponseField name="id" type="integer">
      Campaign ID.
    </ResponseField>

    <ResponseField name="partner_id" type="integer">
      Partner ID.
    </ResponseField>

    <ResponseField name="name" type="string">
      Campaign name.
    </ResponseField>

    <ResponseField name="description" type="string">
      Campaign description.
    </ResponseField>

    <ResponseField name="url" type="string">
      Campaign URL.
    </ResponseField>

    <ResponseField name="amount_goal" type="number">
      Campaign goal amount.
    </ResponseField>

    <ResponseField name="amount_raised" type="number">
      Campaign raised amount.
    </ResponseField>

    <ResponseField name="amount_pledged" type="number">
      Pending offline donation amount.
    </ResponseField>

    <ResponseField name="amount_matched" type="number">
      Campaign matched donation amount.
    </ResponseField>

    <ResponseField name="n_donors" type="integer">
      Number of donors.
    </ResponseField>

    <ResponseField name="start_at" type="string">
      Campaign start date and time.
    </ResponseField>

    <ResponseField name="end_at" type="string">
      Campaign end date and time.
    </ResponseField>

    <ResponseField name="language" type="string">
      Campaign language.
    </ResponseField>

    <ResponseField name="tags_list" type="array">
      Campaign tags.
    </ResponseField>

    <ResponseField name="created_at" type="string">
      Campaign creation date and time.
    </ResponseField>

    <ResponseField name="user" type="object">
      Campaign owner.
    </ResponseField>

    <ResponseField name="fundraiser_template" type="object | null">
      Campaign template summary, when applicable.
    </ResponseField>

    <ResponseField name="changes" type="object">
      Included on `fundraiser_updated` events.
    </ResponseField>
  </Expandable>
</ResponseField>

## Transaction events

Events: `transaction_created`

<ResponseField name="data" type="object">
  Transaction details.

  <Expandable title="properties">
    <ResponseField name="id" type="integer">
      Transaction ID.
    </ResponseField>

    <ResponseField name="ref_id" type="string">
      Transaction reference ID.
    </ResponseField>

    <ResponseField name="amount" type="number">
      Transaction total amount.
    </ResponseField>

    <ResponseField name="currency" type="string">
      Transaction currency.
    </ResponseField>

    <ResponseField name="currency_symbol" type="string">
      Transaction currency symbol.
    </ResponseField>

    <ResponseField name="frequency" type="string">
      Donation frequency.
    </ResponseField>

    <ResponseField name="fundraiser_id" type="integer">
      Campaign ID.
    </ResponseField>

    <ResponseField name="parent_id" type="integer | null">
      Parent transaction ID, when applicable.
    </ResponseField>

    <ResponseField name="fundraiser_page_id" type="integer | null">
      Personal page ID, when applicable.
    </ResponseField>

    <ResponseField name="fundraiser_team_id" type="integer | null">
      Team ID, when applicable.
    </ResponseField>

    <ResponseField name="organization_id" type="integer | null">
      Organization ID, when applicable.
    </ResponseField>

    <ResponseField name="fundraiser_name" type="string">
      Campaign name.
    </ResponseField>

    <ResponseField name="organization_name" type="string | null">
      Organization name, when applicable.
    </ResponseField>

    <ResponseField name="organization_code" type="string | null">
      Organization custom ID, when applicable.
    </ResponseField>

    <ResponseField name="user_id" type="integer">
      Donor user ID.
    </ResponseField>

    <ResponseField name="email" type="string">
      Donor email.
    </ResponseField>

    <ResponseField name="mail" type="object | null">
      Mailing address when a receipt is mailed.
    </ResponseField>

    <ResponseField name="statement_descriptor" type="string | null">
      Payment statement descriptor.
    </ResponseField>

    <ResponseField name="summary" type="object">
      Transaction amount breakdown.
    </ResponseField>

    <ResponseField name="upsell" type="object | null">
      Upsell details, when applicable.
    </ResponseField>

    <ResponseField name="promo_code" type="string | null">
      Applied promo code, when applicable.
    </ResponseField>

    <ResponseField name="billing_address" type="object | null">
      Billing address.
    </ResponseField>

    <ResponseField name="dtd" type="object | null">
      Dedication or tribute data, when applicable.
    </ResponseField>

    <ResponseField name="created_at" type="string">
      Transaction creation date and time.
    </ResponseField>

    <ResponseField name="status" type="string">
      Transaction status.
    </ResponseField>

    <ResponseField name="tickets" type="object[]">
      Assigned tickets, when applicable.
    </ResponseField>
  </Expandable>
</ResponseField>

## Team events

Events: `fundraiser_team_created`, `fundraiser_team_updated`

<ResponseField name="data" type="object">
  Team details.

  <Expandable title="properties">
    <ResponseField name="id" type="integer">
      Team ID.
    </ResponseField>

    <ResponseField name="name" type="string">
      Team name.
    </ResponseField>

    <ResponseField name="url" type="string">
      Team URL.
    </ResponseField>

    <ResponseField name="amount_goal" type="number">
      Team goal amount.
    </ResponseField>

    <ResponseField name="amount_raised" type="number">
      Team raised amount.
    </ResponseField>

    <ResponseField name="amount_pledged" type="number">
      Pending offline donation amount for the team.
    </ResponseField>

    <ResponseField name="amount_matched" type="number">
      Team matched donation amount.
    </ResponseField>

    <ResponseField name="n_donors" type="integer">
      Number of team donors.
    </ResponseField>

    <ResponseField name="n_pages" type="integer">
      Number of personal pages on the team.
    </ResponseField>

    <ResponseField name="created_at" type="string">
      Team creation date and time.
    </ResponseField>

    <ResponseField name="language" type="string">
      Team language.
    </ResponseField>

    <ResponseField name="custom_data" type="object">
      Custom team field data.
    </ResponseField>

    <ResponseField name="user" type="object">
      Team owner.
    </ResponseField>

    <ResponseField name="fundraiser" type="object">
      Campaign summary.
    </ResponseField>

    <ResponseField name="changes" type="object">
      Included on `fundraiser_team_updated` events.
    </ResponseField>
  </Expandable>
</ResponseField>

## Personal page events

Events: `fundraiser_page_created`, `fundraiser_page_updated`

<ResponseField name="data" type="object">
  Personal page details.

  <Expandable title="properties">
    <ResponseField name="id" type="integer">
      Personal page ID.
    </ResponseField>

    <ResponseField name="name" type="string">
      Personal page name.
    </ResponseField>

    <ResponseField name="url" type="string">
      Personal page URL.
    </ResponseField>

    <ResponseField name="amount_goal" type="number">
      Personal page goal amount.
    </ResponseField>

    <ResponseField name="amount_raised" type="number">
      Personal page raised amount.
    </ResponseField>

    <ResponseField name="amount_pledged" type="number">
      Pending offline donation amount for the personal page.
    </ResponseField>

    <ResponseField name="amount_matched" type="number">
      Personal page matched donation amount.
    </ResponseField>

    <ResponseField name="n_donors" type="integer">
      Number of personal page donors.
    </ResponseField>

    <ResponseField name="created_at" type="string">
      Personal page creation date and time.
    </ResponseField>

    <ResponseField name="language" type="string">
      Personal page language.
    </ResponseField>

    <ResponseField name="custom_data" type="object">
      Custom personal page field data.
    </ResponseField>

    <ResponseField name="user" type="object">
      Personal page owner.
    </ResponseField>

    <ResponseField name="fundraiser" type="object">
      Campaign summary.
    </ResponseField>

    <ResponseField name="team" type="object | null">
      Team summary, when the page belongs to a team.
    </ResponseField>

    <ResponseField name="changes" type="object">
      Included on `fundraiser_page_updated` events.
    </ResponseField>
  </Expandable>
</ResponseField>

## Tax receipt events

Events: `tax_receipt_issued`

<ResponseField name="data" type="object">
  Tax receipt details.

  <Expandable title="properties">
    <ResponseField name="id" type="integer">
      Tax receipt ID.
    </ResponseField>

    <ResponseField name="transaction_id" type="integer">
      Transaction ID.
    </ResponseField>

    <ResponseField name="amount_donation" type="number">
      Donation amount.
    </ResponseField>

    <ResponseField name="amount_benefit" type="number">
      Benefit amount.
    </ResponseField>

    <ResponseField name="amount_eligible" type="number">
      Tax-eligible amount.
    </ResponseField>

    <ResponseField name="business_name" type="string | null">
      Business name, when applicable.
    </ResponseField>

    <ResponseField name="name_on_receipt" type="string">
      Name printed on the receipt.
    </ResponseField>

    <ResponseField name="issued_on" type="string">
      Receipt issue date and time.
    </ResponseField>

    <ResponseField name="receipt_number" type="string">
      Receipt number.
    </ResponseField>

    <ResponseField name="status" type="string">
      Receipt status. Values are `valid` or `cancelled`.
    </ResponseField>

    <ResponseField name="first_name" type="string">
      Recipient first name.
    </ResponseField>

    <ResponseField name="last_name" type="string">
      Recipient last name.
    </ResponseField>

    <ResponseField name="title" type="string | null">
      Recipient title.
    </ResponseField>

    <ResponseField name="email" type="string">
      Recipient email.
    </ResponseField>

    <ResponseField name="street_address" type="string">
      Recipient street address.
    </ResponseField>

    <ResponseField name="state" type="string">
      Recipient state or province.
    </ResponseField>

    <ResponseField name="country" type="string">
      Recipient country.
    </ResponseField>

    <ResponseField name="postal" type="string">
      Recipient postal code.
    </ResponseField>

    <ResponseField name="city" type="string">
      Recipient city.
    </ResponseField>
  </Expandable>
</ResponseField>

## Milestone events

Events: `milestone_triggered`

Sent when a milestone notification is triggered for the original recipient. Additional recipient emails configured on the milestone are not included in the webhook payload.

<ResponseField name="data" type="object">
  Milestone details.

  <Expandable title="properties">
    <ResponseField name="id" type="integer">
      Milestone log ID.
    </ResponseField>

    <ResponseField name="mail_template_id" type="integer">
      Mail template ID.
    </ResponseField>

    <ResponseField name="template_name" type="string">
      Mail template name.
    </ResponseField>

    <ResponseField name="type" type="string">
      Mail template type.
    </ResponseField>

    <ResponseField name="trigger_id" type="string">
      Milestone trigger identifier.
    </ResponseField>

    <ResponseField name="trigger_group" type="string">
      Trigger recipient group.
    </ResponseField>

    <ResponseField name="trigger_type" type="string">
      Trigger value type, such as `amount` or `percent`.
    </ResponseField>

    <ResponseField name="trigger_value" type="string">
      Configured milestone trigger value.
    </ResponseField>

    <ResponseField name="trigger_data" type="object">
      Additional trigger data. Additional recipient emails are excluded.
    </ResponseField>

    <ResponseField name="queued_at" type="string">
      Date and time the notification was queued.
    </ResponseField>

    <ResponseField name="recipient" type="object">
      Original milestone recipient.
    </ResponseField>

    <ResponseField name="fundraiser" type="object">
      Campaign summary.
    </ResponseField>

    <ResponseField name="fundraiser_team" type="object | null">
      Team that reached the milestone, when applicable.
    </ResponseField>

    <ResponseField name="fundraiser_page" type="object | null">
      Personal page that reached the milestone, when applicable.
    </ResponseField>
  </Expandable>
</ResponseField>
