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

# Donor Details & Sharing

> Per-integration sharing settings and every permitted donor contact field.

Open the relevant integration in WeGive's **Integrations** area. Configure donor sharing alongside the connection settings, then click **Save** to save the form.

| Integration | Control and effect |
| - | - |
| GTM | **Donor sharing**: **Off** suppresses all donor contact fields in tracking context and events. **Existing fields only** permits event-specific contact fields, such as authentication email and phone. **Expanded donor details** additionally publishes the current donor fields and supported Google identity object. |
| Tealium | **Share donor contact information** controls donor fields in `utag_data` and WeGive's automatic `utag.link` payloads. Its **Send standard checkout events** toggle is separate. |
| Meta Conversions API | **Share donor contact information** controls normalized/hashed donor matching fields in server events. It does not configure Pixel or expose donor information in the browser. |
| Meta Pixel and direct GA4 | These integrations do not have donor-sharing controls. Pixel's setup event includes non-contact checkout context. |

Donor sharing defaults off when setting up an integration. For a configured integration, check its saved setting rather than assuming it is off. Tealium automatic standard events also default off and have a separate setting.

An integration must be configured and its donor-sharing setting enabled to expose donor fields. GTM settings do not enable Tealium sharing, and Tealium settings do not enable GTM or CAPI sharing. Loading an SDK alone does not enable donor sharing.

## Browser field contract

Expanded GTM sharing publishes `wegive_donor` in the data layer. It contains `first_name`, `last_name`, `company_name`, `email`, and `phone`, plus separate `mailing_address` and `billing_address` objects. Each address contains `name`, `address_1`, `address_2`, `city`, `state`, `zip`, and `country`. Values are strings or null: partially entered values remain strings, while empty or unavailable fields are null. GTM Data Layer Variables use paths such as `wegive_donor.email` and `wegive_donor.mailing_address.address_1`.

Tealium publishes the same permitted fields as flat keys: `donor_first_name`, `donor_last_name`, `donor_company_name`, `donor_email`, `donor_phone`, and `donor_mailing_address_<field>` / `donor_billing_address_<field>`. For example, read `window.utag_data.donor_mailing_address_address_1` for mailing street line one. Its address fields are separate variables rather than one concatenated string.

With GTM sharing Off or Existing fields only, `wegive_donor` and `wegive_user_data` are null. Existing fields only permits event-specific contact fields, such as authentication `value.email`/`value.phone`; it is not a continuously updated donor profile. With Tealium sharing off, its WeGive donor keys are absent.

## When values change

Known donor details become available when the profile loads. Editable values update when each input loses focus, including partial or invalid forms. Custom selectors publish the committed selection, because their internal input can blur before selection finishes. Submission or payment is not required. Clearing an input produces null and prevents an older profile value from replacing the edit. Phone values include the selected calling code but are not represented as verified identity. Custom-question answers are not donor contact fields.

A **document capture** blur listener can read the newly published value; WeGive's donor update runs earlier at window capture. Updating context does not itself emit an analytics event. On logout, donor/checkout replacement, or sharing disablement, the current donor context is cleared. Earlier data-layer messages, copied values, and already-sent data cannot be retracted.

In GTM's **Existing fields only** mode, authentication fields under `value` retain their event-driven lifetime across checkout and donor changes. WeGive clears those fields when sharing is turned off or the organization changes. The `wegive`, `wegive_donor`, and `wegive_user_data` namespaces still reset with the checkout lifecycle.

## Standard events and Google identity

GTM standard payloads include common `wegive` context, optional `wegive_donor`, and optional `wegive_user_data`. **Expanded donor details** adds contact data to these browser-visible messages as well as context updates. It does not hide the fields behind a private interface.

`wegive_user_data` is a separate, namespaced object for Google's supported identity path. It contains a valid email or first/last name with mailing postal code and two-letter country; optional supported phone requires one of those identities. Partial fields remain available in `wegive_donor`, while an unusable Google identity is null. Company name and billing address are not substituted into Google matching fields.

WeGive does not issue a global `gtag('set', 'user_data', ...)` or automatically send these fields to direct GA4. Configure GTM's **User-Provided Data** variable and the destination's supported identity feature as shown in the [GTM guide](/external/onboarding/tracking/google-tag-manager). Do not send raw email, phone, or address as ordinary Analytics parameters, custom dimensions, or `user_id`. Your organization is responsible for routing contact payloads appropriately.

Tealium standard events add donor fields only when its own sharing is enabled. Pending delivery stores non-contact facts; permissions and identity are rechecked before sending. An event queued before a sharing change or under another checkout/identity does not acquire the current donor's details. Custom scripts choose their own fields and routing.

## Meta CAPI

**Share donor contact information** is an on/off toggle:

* **On:** include the available donor matching fields listed below in server Purchase events.
* **Off:** omit those donor matching fields.

| Donor field | CAPI `user_data` key |
| - | - |
| Email | `em` |
| Phone | `ph` |
| First name | `fn` |
| Last name | `ln` |
| Birthdate | `db` |
| Donor UUID | `external_id` |

These values are normalized and SHA-256 hashed at send time, with each hash sent in an array. Missing values are omitted. CAPI does not have an expanded donor-profile mode: this setting does not add company name, mailing address, or billing address. The browser field contract above applies to GTM and Tealium.

Turning sharing off does not disable the integration or remove browser attribution fields such as `fbp`, `fbc`, client IP and user agent; those fields are sent unhashed when available. Non-contact conversion context, Global Privacy Control handling, conversion eligibility, retries, and event-ID correlation operate independently of this setting. It does not enable automatic browser Purchase events, Pixel Advanced Matching initialization, or a browser Meta donor view.

## Same-page access

These controls govern what WeGive exposes and sends for each integration. Scripts in the same checkout window are not isolated from each other. If GTM sharing is enabled, another script can read its exposed data layer; Tealium's setting still governs WeGive's Tealium fields and automatic payloads. The organization controls its custom scripts and destination mappings.

When all donor sharing is off, WeGive does not publish donor contact fields in subsequent tracking context updates or event payloads. Previously published messages and copied values can still be read. These settings do not restrict access to ordinary checkout controls or application data available to scripts on the page. Passwords, verification codes, bank numbers, card details, hosted-field contents, and unrestricted donor models are excluded from the tracking payloads.

## Complete donor field paths

Every field below is a string or null when sharing is enabled. No field is a promise of verified identity. Tealium keys are absent when its sharing is disabled; GTM's expanded donor namespace is null when disabled.

| Meaning | GTM path | Tealium key |
| - | - | - |
| First name | `wegive_donor.first_name` | `donor_first_name` |
| Last name | `wegive_donor.last_name` | `donor_last_name` |
| Company name | `wegive_donor.company_name` | `donor_company_name` |
| Email | `wegive_donor.email` | `donor_email` |
| Phone | `wegive_donor.phone` | `donor_phone` |
| mailing address / name | `wegive_donor.mailing_address.name` | `donor_mailing_address_name` |
| mailing address / address\_1 | `wegive_donor.mailing_address.address_1` | `donor_mailing_address_address_1` |
| mailing address / address\_2 | `wegive_donor.mailing_address.address_2` | `donor_mailing_address_address_2` |
| mailing address / city | `wegive_donor.mailing_address.city` | `donor_mailing_address_city` |
| mailing address / state | `wegive_donor.mailing_address.state` | `donor_mailing_address_state` |
| mailing address / zip | `wegive_donor.mailing_address.zip` | `donor_mailing_address_zip` |
| mailing address / country | `wegive_donor.mailing_address.country` | `donor_mailing_address_country` |
| billing address / name | `wegive_donor.billing_address.name` | `donor_billing_address_name` |
| billing address / address\_1 | `wegive_donor.billing_address.address_1` | `donor_billing_address_address_1` |
| billing address / address\_2 | `wegive_donor.billing_address.address_2` | `donor_billing_address_address_2` |
| billing address / city | `wegive_donor.billing_address.city` | `donor_billing_address_city` |
| billing address / state | `wegive_donor.billing_address.state` | `donor_billing_address_state` |
| billing address / zip | `wegive_donor.billing_address.zip` | `donor_billing_address_zip` |
| billing address / country | `wegive_donor.billing_address.country` | `donor_billing_address_country` |

Google's separate matching object can contain `wegive_user_data.email`, `phone_number`, and `address.first_name`, `address.last_name`, `address.postal_code`, `address.country`, plus optional `address.street`, `address.city`, `address.region`. The object is null if no usable email or qualifying name/address identity exists. Configure it as a GTM User-Provided Data variable; publication alone does not activate a destination's identity feature.


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