> ## 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.

# Tealium

> Configure standard event delivery, flat UDO fields, and custom interaction listeners.

## Connect your profile

Open **Tealium Setup** in WeGive's Integrations area. Enter **Tealium Account**, **Tealium Profile**, and **Tealium Environment** from your `utag.js` snippet. Environment defaults to `prod` if blank. Save the configuration. WeGive loads the configured universal tag and tracks page views as donors navigate the portal.

**Send standard checkout events** defaults off. Enable it to receive the [shared WeGive catalog](/external/onboarding/tracking/standard-events) through `utag.link()`. If your profile already forwards WeGive data-layer events using custom code, remove that forwarding before enabling native delivery to avoid duplicates. GTM and Tealium use the same standard event names, including `donationSuccess` and `recurringPlanCreated`.

## Rules and variables

Use `tealium_event` in your load rules/extensions, and map WeGive variables to each destination's expected fields. WeGive calls your profile; your tags, consent rules and mappings decide which destinations receive it. No explicit tag UID is used to bypass normal rules.

For `donationSuccess`, key variables include `value_amount` (cents), `value_amount_dollars`, `value_currency_code`, `value_transactionId`, `value_transactionStatus`, `value_scheduledDonationId`, `value_correlation_id`, and `wegive_checkout_session_uuid`. The [standard-event serialization](/external/onboarding/tracking/standard-events) and [context paths](/external/onboarding/tracking/context) list the full mappings. Do not map `purchase` and `donationSuccess` to duplicate revenue conversions.

## Current page data and event data

Define the required flat variables as **UDO variables** in Tealium iQ's Data Layer, then map them to your tags. Customer JavaScript can read current WeGive context directly from `window.utag_data`, for example `window.utag_data.wegive_checkout_session_uuid`. In event-scoped extensions, `b` is the data object for that tracking call. Do not retain an old `b` object for future form interactions.

WeGive's automatic link events pass their fields explicitly. For custom calls, copy the fields you need into the new event payload; `utag.link` does not automatically inherit all page data. See [Tealium's API reference](https://docs.tealium.com/platforms/javascript/api/tracking-functions/).

## Custom interaction example

Use a **JavaScript Code extension** in Tealium iQ, scoped to **DOM Ready**, to install a delegated listener in the checkout window. Enter JavaScript without surrounding script tags. The extension requires the relevant permission and supported runtime (the basic extension documents utag 4.38+). Its duplicate guard protects against repeated installation. See [Tealium's extension documentation](https://docs.tealium.com/iq-tag-management/extensions/extensions-list/javascript-code-extension/).

```javascript theme={null}
if (!window.myOrganizationTealiumAddressListener) {
  window.myOrganizationTealiumAddressListener = true;
  document.addEventListener('blur', function (event) {
    if (!event.isTrusted) return;
    var control = event.target.closest && event.target.closest('[data-checkout-control="address-street"]');
    if (!control || control.getAttribute('data-checkout-context') !== 'mailing') return;
    if (!window.utag || typeof window.utag.link !== 'function') return;
    var context = window.utag_data || {};
    window.utag.link({
      tealium_event: 'custom_mailing_address_edit',
      checkout_session_uuid: context.wegive_checkout_session_uuid,
      gift_frequency: context.wegive_frequency
    });
  }, true);
}
```

The listener reads current context at blur, including a UUID created after listener installation. It handles dynamically rendered fields, but does not replay interactions that occurred before installation. It sends no donor contact information. To include permitted contact fields, explicitly map the corresponding `donor_*` values from native page data; see [donor sharing](/external/onboarding/tracking/donor-sharing).

This example skips delivery if `utag.link` is unavailable. Your listener owns SDK readiness/queue behavior if those custom events must be retained. WeGive's automatic queue does not queue arbitrary customer calls. In event-processing extensions, transform/map the current event rather than unconditionally calling `utag.link` again, which can create recursion or duplicates.

## Donor sharing and coexistence

**Share donor contact information** independently controls Tealium's context and native payload additions. After changing this toggle or **Send standard checkout events**, click **Save** at the bottom of the integration settings form. GTM/Meta settings do not enable Tealium sharing. Enabled page/event fields include current names, company, email, phone, and separate flattened mailing and billing fields; editable fields update on blur without creating a conversion. See [donor sharing](/external/onboarding/tracking/donor-sharing) for exact keys and the limitation that scripts on one page are not isolated from each other.

Automatic delivery retains up to 100 events for up to 15 seconds while the SDK loads. Common event facts are captured when emitted; donor permission and identity are rechecked at dispatch. SDK errors are not retried because some tags may already have received the call. These limits are best-effort delivery, not a durable analytics queue.

When changing the Tealium account, profile, environment, or organization, reload the checkout page so the correct container loads. Within a single document, WeGive suppresses donor-field publication into `utag_data` if the configured destination no longer matches the container registered for that document. This does not retract information already read by scripts or sent to destinations.

## Test your profile

Use a test profile/environment and destination. Inspect the `utag.link` call first, then the matched load rules/tags, then the receiver. Test a pending payment, a successful payment, and a plan without an immediate charge. Check shared context before and after UUID creation and with sharing on/off. A received native event does not prove downstream delivery. Validate your configured profile and destination directly; automated coverage simulates the SDK boundary.

Validate your actual profile rules, consent setup, extensions, destination tags, and custom receiver in your test environment.


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