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

# Event Payloads

> Exact event-specific fields, units, interaction labels, and Tealium variables for all 21 standard events.

The following table completes [the standard event catalog](/external/onboarding/tracking/standard-events). It lists fields added by each event before the common context and permitted donor namespaces. **No extra `value`** means that the milestone itself supplies no event-specific object; shared context still applies. Optional fields can be absent/undefined in the browser and disappear when encoded as JSON. Explicit nulls remain null.

| Event | Event-specific fields and units |
| - | - |
| `begin_checkout` | `ecommerce.currency` uppercase string; `ecommerce.value` number in major units; `ecommerce.items[]` as below; `donation.frequency` string (`once` or recurring frequency, nullable on some paths). |
| `add_payment_info` | `ecommerce.currency`, `ecommerce.value` in major units, `ecommerce.payment_type` string; `donation.frequency`. No `items` array supplied by this event. |
| `givingDetails` | `value.amount` in major units; `value.frequency` recurring frequency or null for one-time. V1 additionally sends `value.currency_code`; V2's event-specific object omits it—read `wegive.currency` / `wegive_currency` instead. |
| `personalInformationSignIn` | GTM `value.email`, `value.phone` when legacy/expanded sharing permits them. Native Tealium excludes these legacy fields. |
| `personalInformationSignUp` | Same event-specific contact keys and gating as sign-in. |
| `giveAsGuest` | GTM `value.email` when permitted. Native Tealium excludes it. |
| `verificationSent` | `value.type` (`email` or `phone`); GTM additionally allows `value.to` when sharing permits it. Tealium sends `value_type`, never `value_to`. |
| `verificationCompleted` | GTM `value.email`, `value.phone` when permitted. Native Tealium excludes them. |
| `paymentInformation` | No extra `value`. |
| `changedNewPaymentType` | `value.type`: selected type of method being added, e.g. `card` or `bank`. |
| `addedCard` | No extra `value`. |
| `addedBank` | No extra `value`. |
| `addedOtherPaymentType` | No extra `value`; this continuation is not proof of a completed charge. |
| `confirmOneTime` | `value.amount` in major units; `value.frequency` (V2 null; V1 current recurring frequency or null). |
| `convertRecurringYearly` | `value.frequency`: actual chosen recurring frequency. The event name is fixed even for monthly and other frequencies. |
| `donationConfirmed` | `value.amount` integer cents, `amount_dollars` major units, `currency_code`, `is_anonymous`, `fee_covered`, legacy aliases `anonymous` and `coverFees`, `campaignId`, `transactionId`, `designationName`, `designationId`, `frequency`. Unlike the two new outcome events, its `value` does not add `transactionStatus`, `scheduledDonationId`, or `correlation_id`; these may separately be in common context when available. |
| `purchase` — donation | `ecommerce.transaction_id` string (empty if unavailable), `currency`, `value` major units, `items[]`; `donation.frequency`, `is_anonymous`, `fee_covered`, `campaign_id`. |
| `donationSuccess` | All 15 fields in [the outcome table](/external/onboarding/tracking/standard-events#gtm-payloads): `amount`, `amount_dollars`, `currency_code`, `is_anonymous`, `fee_covered`, `anonymous`, `coverFees`, `campaignId`, `transactionId`, `designationName`, `designationId`, `frequency`, `transactionStatus`, `scheduledDonationId`, `correlation_id`. |
| `recurringPlanCreated` | Same 15 fields; amount/currency/frequency come from the new plan. Initial transaction fields may be null or may describe a pending initial charge. |
| `registrationConfirmed` | `value.amount` cents, `amount_dollars` major units, `currency_code`, `fee_covered`, `coverFees`, `campaignId`, `campaignEventId`, `registrationId`, `transactionId` string, `quantity`, `status`, `frequency: "once"`. |
| `purchase` — registration | `ecommerce.transaction_id`, `currency`, `value`, `items[]`; `donation.frequency: "once"`, `is_registration: true`, `fee_covered`, `campaign_id`, `campaign_event_id`, `registration_id`, `status`, `quantity`. |
| `personalInformation` | No extra `value`; standalone password sign-in. |

`ecommerce.items[]` has `item_id` (string; empty when unavailable), `item_name` (string/null/omitted), `price` (major-unit number), and `quantity` (number). Donations normally supply one item per designation allocation with quantity 1. Registration supplies ticket-type items; a free/no-ticket registration can use `{ "item_id": "", "item_name": "Free ticket", "price": 0, "quantity": 1 }`. Covered fees can make `ecommerce.value` exceed the sum of designation items.

Registration transaction IDs use the actual linked transaction ID as a string, or `reg_<registrationId>` when there is no transaction. Do not remove that prefix. Donation ecommerce IDs remain the bare WeGive transaction ID string for Meta browser/server deduplication.

The two outcome events also require a valid returned record ID, a nonnegative integer amount in cents, and a three-letter uppercase currency code. `donationSuccess` additionally requires numeric status `2`; `recurringPlanCreated` requires a plan frequency string. Missing or malformed authoritative facts suppress the corresponding outcome event.

## Interaction labels

The common category is `Checkout`, action is `click`, and noninteraction is `false` for these interaction-envelope events. They describe application milestones, so the `click` action is not proof of a direct native click. Ecommerce events do not add that envelope.

| Event | Supplied label (GTM `target-properties`; Tealium `event_label`) |
| - | - |
| `givingDetails` | `Next on Giving Step` |
| `personalInformationSignIn`, `personalInformation` | V1/sign-in page: `Next on Personal Information Step`; V2 checkout authentication omits the label. |
| `personalInformationSignUp`, `verificationCompleted` | V1: `Verification Code Validated`; V2 checkout authentication omits it. |
| `verificationSent` | V1: `Verification Code Sent`; V2 omits it. |
| `giveAsGuest` | V1: `Chose to give as guest`; V2 omits it. |
| `paymentInformation` | `Next on Billing Step` |
| `changedNewPaymentType` | `Changed type of payment method to add` |
| `addedCard`, `addedBank` | `Added a card`, `Added a bank` |
| `addedOtherPaymentType` | `Added an other payment type` |
| `confirmOneTime` | V1 historical spelling: `Confimed One Time Giving`; V2: `Confirmed One Time Giving`. |
| `convertRecurringYearly` | `Changed to Recurring` |
| Completion/outcome events | Supplied by the calling checkout path, e.g. `Single Page Donation Confirmation`. Use the event name as the primary trigger rather than assuming one label across layouts. |

## Complete Tealium event-specific allowlist

These are the flat event keys, in addition to `wegive_*` context and independently enabled `donor_*` identity. Their presence depends on the event table above.

* Envelope: `tealium_event`, `event_category`, `event_action`, `event_label`, `event_noninteraction`.
* Interaction/outcome: `value_amount`, `value_amount_dollars`, `value_currency_code`, `value_is_anonymous`, `value_fee_covered`, `value_anonymous`, `value_coverFees`, `value_campaignId`, `value_transactionId`, `value_designationName`, `value_designationId`, `value_frequency`, `value_transactionStatus`, `value_scheduledDonationId`, `value_correlation_id`, `value_type`, `value_campaignEventId`, `value_registrationId`, `value_quantity`, `value_status`.
* Ecommerce: `ecommerce_currency`, `ecommerce_value`, `ecommerce_transaction_id`, `ecommerce_payment_type`.
* Item arrays: `ecommerce_items_item_id`, `ecommerce_items_item_name`, `ecommerce_items_price`, `ecommerce_items_quantity`.
* Donation/registration: `donation_frequency`, `donation_is_anonymous`, `donation_fee_covered`, `donation_campaign_id`, `donation_is_registration`, `donation_campaign_event_id`, `donation_registration_id`, `donation_status`, `donation_quantity`.

## Successful-payment example

Illustrative Tealium event-specific portion; the [common checkout fields](/external/onboarding/tracking/context) are also included, and `donor_*` fields are added only with sharing enabled. Identifiers and amounts here are fictitious.

```json theme={null}
{
  "tealium_event": "donationSuccess",
  "event_category": "Checkout",
  "event_action": "click",
  "event_label": "Single Page Donation Confirmation",
  "event_noninteraction": false,
  "value_amount": 2600,
  "value_amount_dollars": 26,
  "value_currency_code": "USD",
  "value_is_anonymous": false,
  "value_fee_covered": true,
  "value_anonymous": false,
  "value_coverFees": true,
  "value_campaignId": null,
  "value_transactionId": 42,
  "value_designationName": "General Fund",
  "value_designationId": 7,
  "value_frequency": "once",
  "value_transactionStatus": 2,
  "value_scheduledDonationId": null,
  "value_correlation_id": "example-transaction-reference"
}
```

For a deferred monthly plan, `recurringPlanCreated` can carry `value_amount: 2500`, `value_amount_dollars: 25`, `value_frequency: "monthly"`, `value_scheduledDonationId: 81`, and null `value_transactionId`, `value_transactionStatus`, and `value_correlation_id`. That describes a new plan; it is not \$25 already collected.

In GTM, use Version 2 Data Layer Variables and exact Custom Event triggers. For example, trigger on `donationSuccess` and read `value.amount_dollars`, `value.currency_code`, `value.transactionId`, and `wegive.checkout_session_uuid`. Do not treat an eventless context push or `{ "ecommerce": null }` as a milestone.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.