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

# Google Tag Manager

> Configurez Google Tag Manager dans CrowdChange pour transférer les événements de don, de paiement et de pages vues vers vos outils d'analyse.

Lorsque vous connectez un conteneur Google Tag Manager, CrowdChange transmet des événements structurés au `dataLayer` de GTM à mesure que les donateurs naviguent et effectuent des transactions. Vous pouvez utiliser ces événements pour déclencher des balises et transmettre des conversions à vos outils marketing et analytiques.

Tous les événements incluent une propriété `context` indiquant la source :

| Valeur     | Description                                                     |
| :--------- | :-------------------------------------------------------------- |
| `platform` | Événement déclenché depuis la plateforme principale CrowdChange |
| `embed`    | Événement déclenché depuis un formulaire de don intégré         |

## Événements généraux

### Pageview / changements d'URL

Déclenché à chaque changement de page.

```json theme={null}
{
  context: 'platform',
  event: 'Pageview',
  pagePath: 'https://demo.crowdchange.co/10001',
  pageLanguage: 'en', // possible values: en, fr
  previousPagePath: 'https://demo.crowdchange.co'
}
```

## Authentification de l'utilisateur

### Connexion

Cet événement peut être déclenché de deux façons :

1. Lorsque l'utilisateur se connecte réellement au site web via le parcours de connexion. Dans ce cas, l'événement est défini à `login`
2. Lorsque l'utilisateur charge (ou recharge) la page et est déjà connecté depuis la session précédente. Dans ce cas, l'événement est défini à `auth`

```json theme={null}
{
  context: 'platform',
  event: 'login', // possible events: login, auth
  page_language: 'en', // possible values: en, fr
  user_id: 1
}
```

### Déconnexion

Déclenché lorsque l'utilisateur se déconnecte manuellement.

```json theme={null}
{
  context: 'platform',
  event: 'logout',
  page_language: 'en',
  user_id: 1
}
```

## Collectes de fonds

### Partage

Déclenché lorsque l'utilisateur partage une collecte de fonds, une équipe ou une page personnelle. Le partage peut se faire depuis le Centre de participants, directement depuis la collecte de fonds, la page ou l'équipe, ou depuis la page « Merci » après une transaction réussie.

```json theme={null}
{
  context: 'platform',
  event: 'share',
  page_language: 'en',
  fundraiser_id: 1,
  fundraiser_team_id: 1, // team id (if team is shared, or shared page belongs to the team)
  fundraiser_page_id: 1, // personal page id (if page is shared)
  is_fundraiser_owner: false, // boolean indicating if user owns the fundraiser
  is_team_owner: false, // boolean indicating if user owns the team
  is_page_owner: false // boolean indicating if user owns the shared page
}
```

## Équipes

### Modification

Déclenché lorsque l'utilisateur enregistre des modifications à son équipe.

```json theme={null}
{
  context: 'platform',
  event: 'team:edit',
  page_language: 'en',
  fundraiser_id: 1,
  fundraiser_team_id: 1,
  edit_types: ['name', 'amount_goal'] // array of edits. Possible values: image, image-fr, description, video, amount_goal, name, has_translation, slug
}
```

### Suppression

Déclenché lorsque l'utilisateur supprime son équipe.

```json theme={null}
{
  context: 'platform',
  event: 'team:delete',
  page_language: 'en',
  fundraiser_id: 1,
  fundraiser_team_id: 1
}
```

## Pages personnelles

### Modification

Déclenché lorsque l'utilisateur enregistre des modifications à sa page personnelle.

```json theme={null}
{
  context: 'platform',
  event: 'page:edit',
  page_language: 'en',
  fundraiser_id: 1,
  fundraiser_team_id: 1,
  fundraiser_page_id: 1,
  edit_types: ['name', 'team'] // array of edits. Possible values: image, image-fr, team, description, video, amount_goal, name, has_translation, slug, is_amount_raised_shown, site_cause_id
}
```

### Suppression

Déclenché lorsque l'utilisateur supprime sa page personnelle.

```json theme={null}
{
  context: 'platform',
  event: 'personal-page:delete',
  fundraiser_id: 1,
  fundraiser_team_id: 1,
  fundraiser_page_id: 1
}
```

## Liste de diffusion

### Aperçu

Déclenché lorsque l'utilisateur clique sur « Aperçu » avant d'envoyer un courriel à la liste de diffusion.

```json theme={null}
{
  context: 'platform',
  event: 'mailing-list:preview',
  page_language: 'en',
  fundraiser_id: 1,
  fundraiser_team_id: 1,
  fundraiser_page_id: 1
}
```

### Envoi

Déclenché lorsque l'utilisateur clique sur « Envoyer » depuis la liste de diffusion.

```json theme={null}
{
  context: 'platform',
  event: 'mailing-list:send',
  page_language: 'en',
  fundraiser_id: 1,
  fundraiser_team_id: 1,
  fundraiser_page_id: 1,
  n_contacts: 10 // total number of contacts email will be sent to
}
```

## Centre de participants

### Tableau de bord de la page personnelle

Déclenché lorsque l'utilisateur charge la page du tableau de bord de sa page personnelle.

```json theme={null}
{
  context: 'platform',
  event: 'participant-center:page:dashboard',
  page_language: 'en',
  fundraiser_id: 1,
  fundraiser_team_id: 1,
  fundraiser_page_id: 1,
  is_team_captain: false,
  fundraiser_name: 'Toronto Walk',
  fundraiser_team_name: 'Best Toronto Team',
  fundraiser_page_name: 'Smith Family Page'
}
```

### Tableau de bord de l'équipe

Déclenché lorsque l'utilisateur charge la page du tableau de bord de son équipe.

```json theme={null}
{
  context: 'platform',
  event: 'participant-center:team:dashboard',
  page_language: 'en',
  fundraiser_id: 1,
  fundraiser_team_id: 1,
  is_team_captain: true,
  fundraiser_name: 'Toronto Walk',
  fundraiser_team_name: 'Best Toronto Team'
}
```

## Transactions

### Transaction complétée

Remarque : `items` dépendra des fonctionnalités activées et du type de collecte de fonds.

```json theme={null}
{
  context: 'platform',
  event: 'purchase',
  pageLanguage: 'en', // possible values: en, fr
  ecommerce: {
    currencyCode: 'CAD',
    purchase: {
      transaction_id: 123456,
      fundraiser_id: 10001,
      fundraiser_name: 'Demo Event',
      organization_id: 201,
      organization_name: 'Ontario',
      organization_code: 'ONT',
      revenue: 650.99,
      coupon: 'DISCOUNT-123',
      breakdown: {
        amount_covered_fee: 5,
        amount_donation: 100,
        amount_apparel: 49.49,
        amount_ticket: 25.50,
        amount_registration: 50,
        amount_sponsor: 500,
        amount_cards: 20,
        frequency: 'once' // possible values: once, month, year
      },
      items: [
        { item_id: 'donation',     item_name: 'Donation',        item_price: 100,   frequency: 'once' },
        { item_id: 'cards',        item_name: 'eCards',          item_price: 20 },
        { item_id: 'apparel',      item_name: 'Apparel / Items', item_price: 49.49 },
        { item_id: 'ticket',       item_name: 'Tickets',         item_price: 25.50 },
        { item_id: 'registration', item_name: 'Registration',    item_price: 50 },
        { item_id: 'sponsor',      item_name: 'Sponsorship',     item_price: 500 },
        { item_id: 'covered_fee',  item_name: 'Covered Fee',     item_price: 5 }
      ]
    }
  }
}
```

Référence : consultez la page de Google [Enhanced Ecommerce for Tag Manager](https://developers.google.com/analytics/devguides/collection/ua/gtm/enhanced-ecommerce#purchases) pour plus de détails.

## Restrictions sur les types de balises

Pour des raisons de sécurité, la plateforme applique une liste d'autorisation et de blocage des types de balises GTM à chaque chargement de page. Cela restreint les types de balises que votre conteneur GTM est autorisé à déclencher, peu importe ce qui est configuré dans votre conteneur.

| Statut       | Types de balises                                                                                                           |
| :----------- | :------------------------------------------------------------------------------------------------------------------------- |
| **Autorisé** | `google` — Balises Google (GA4, Google Ads, Floodlight, etc.)                                                              |
| **Autorisé** | `sandboxedScripts` — Modèles JavaScript en bac à sable                                                                     |
| **Autorisé** | `nonGooglePixels` — Balises pixel non Google (pixels image/iframe, par exemple Facebook Pixel via le type de balise pixel) |
| **Bloqué**   | `nonGoogleScripts` — Balises HTML personnalisées / injection arbitraire de `<script>`                                      |

**En pratique, cela signifie que :**

* Les balises Google standards, les configurations GA4 et les balises de conversion Google Ads se déclencheront normalement
* Facebook Pixel et les pixels tiers similaires chargés en tant que type de balise pixel se déclencheront
* **Les balises HTML personnalisées** (qui permettent du JavaScript arbitraire) **ne se déclencheront pas** — utilisez plutôt des modèles JavaScript en bac à sable

Pour une référence complète des types de balises GTM appartenant à chaque catégorie, consultez le [guide des restrictions sur les types de balises GTM](https://developers.google.com/tag-platform/tag-manager/restrict).

<br />
