Skip to main content
WeGive reports checkout milestones to Google Tag Manager (GTM) and, when enabled, Tealium. Your organization configures the triggers, tags, mappings, consent rules, and reporting destinations in its tracking platform. Sending an event to a container does not guarantee delivery to a destination. These events work alongside checkout interaction hooks. Hooks let your scripts observe individual controls; standard events report the application milestones below. Not every checkout layout or authentication path encounters every milestone.

Enable delivery

GTM: configure your Google Tag Manager container in WeGive’s integrations settings. Event timing, payloads, common context, and donor-sharing controls are described below. Ecommerce messages use the checkout document’s window.dataLayer; interaction events use the GTM plugin. Tealium: configure the account, profile, and environment in the Tealium integration, then enable Send standard checkout events. This toggle defaults to off. The environment defaults to prod when blank. Page-view tracking works independently of this toggle. If your Tealium profile already listens for WeGive data-layer events and forwards them, remove that forwarding before enabling automatic delivery. Otherwise the same milestone can be reported twice. GTM and Tealium can run together; either can receive its events independently of the other.

Event catalog

Event availability varies between V1, V2, stepper, single-page, and payment paths. A wallet path that bypasses the purchase milestone does not emit that event. Its qualifying payment/plan response can produce donationSuccess or recurringPlanCreated. No session_start, login, signup, guest_login, donation_result, or session-UUID-ready event is part of this catalog.

GTM payloads

Interaction messages use the plugin serialization: event, target (category), action, target-properties (label), interaction-type (noninteraction), and optional value. Some V2 events have no label. GTM includes authentication contact fields under Existing fields only or Expanded donor details; Off suppresses them. Native Tealium does not copy these authentication contact fields; it uses its own independently gated donor fields. Ecommerce messages use { event, ecommerce, donation }. An { ecommerce: null } message precedes each ecommerce event to clear previous values. Ecommerce amounts and item prices are in major currency units; donationConfirmed.value.amount is in integer cents. donationSuccess and recurringPlanCreated use the donationConfirmed interaction envelope with these nested value fields: For example, a GTM Custom Event trigger can match donationSuccess, with Data Layer Variables value.amount_dollars, value.currency_code, and value.transactionId:

Tealium payloads

WeGive calls utag.link(payload) with the same event name in tealium_event. It does not specify tag UIDs or bypass your profile’s routing rules. See Tealium’s tracking API. The payload uses flat UDO variables: Units and scalar types match the source facts. Explicit nulls remain null; absent fields are omitted. Missing item attributes become null at their array position. The base event mapping uses a non-contact allowlist, excluding donor names, email, phone, addresses, and the destination of an authentication code. When Tealium donor sharing is enabled, separately allowlisted donor_* fields are added as described in the sharing guide. Custom-field answers and payment credentials are not forwarded. In Tealium, define the relevant UDO variables and configure your tag/event mapping for tealium_event equal to donationSuccess. The preceding example is delivered with value_amount: 2600, value_amount_dollars: 26, value_currency_code: "USD", value_transactionId: 42, value_transactionStatus: 2, and value_correlation_id: "example-transaction-reference", along with the other permitted fields. This is an example of WeGive’s automatic payload, not a second utag.link call to add to your profile.

Select the reporting signal

  • Use donationSuccess for explicit successful-payment reporting. Pending, processing, failed, missing, or unknown statuses do not qualify. HTTP success alone does not qualify.
  • Use recurringPlanCreated to count newly created plans. A deferred plan can have no initial payment. A pending initial transaction retains its actual ID/status in this event. Updating an existing plan does not create another plan-created event.
  • An immediate successful recurring gift can produce both donationSuccess and recurringPlanCreated. Count the payment and the plan as different measures.
  • Avoid counting donationConfirmed, purchase, and donationSuccess as three separate gifts. donationConfirmed and purchase can report completion paths that are not strictly settled payments.
donationSuccess and recurringPlanCreated are deduplicated by organization, event type, and returned record ID for the current page lifetime, including component remounts. This deduplication applies specifically to those two outcome events. A post-payment conversion reports the newly created plan without repeating the initial donation-success signal. These are browser events, not a settlement feed. A payment that settles after the donor leaves does not generate a later browser success event. Native Tealium delivery buffers at most 100 events for up to 15 seconds while its SDK loads; events can be lost if the page closes, the SDK stays unavailable, the setting/profile changes, or a vendor call fails. Events are never redirected to another organization’s loaded profile. Outcome events depend on the transaction status and plan identifiers returned by the WeGive API. The correlation reference is provided for matching records; it does not itself perform a Salesforce lookup or establish equivalence with a Salesforce receipt identifier.

Shared context and optional identity

All standard events include the common context: nested wegive in GTM and flat wegive_* variables in Tealium. Events emitted before session creation completes can contain a null UUID. Donor sharing is independent per integration; explicit GTM opt-out also suppresses authentication contact fields. Common wegive / wegive_* context contains no donor contact fields. GTM uses separate wegive_donor and wegive_user_data namespaces in Expanded donor details mode; Tealium adds donor_* fields only under its own sharing setting. Context-only updates have no event key and do not fire a conversion.