> For the complete documentation index, see [llms.txt](https://docs.thewalletcrew.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.thewalletcrew.io/connectors/fr/ticketing/secutix/member-cards-secutix-contacts.md).

# Cartes de membre (contacts Secutix)

Utilisez le connecteur Secutix pour créer et mettre à jour les contacts Secutix, puis livrez une Carte de membre à Apple Wallet et Google Wallet.

Le connecteur Secutix ne se limite pas aux billets d’événements. Il peut aussi synchroniser **les contacts Secutix**. Cela débloque un flux « carte de membre dans Wallet ». La Carte représente le contact et reste synchronisée.

## Ce qui peut être créé

Une Carte Wallet peut être émise et se comporter comme une carte d’adhésion :

* Une Carte par membre (un contact Secutix).
* Code-barres / code QR pour l’identification sur le lieu.
* Mises à jour automatiques lorsque les données du contact changent.
* Retour de feedback optionnel à l’installation/désinstallation écrit dans Secutix.

{% hint style="info" %}
Secutix reste la source de vérité pour le profil du membre. The Wallet Crew émet et distribue la Carte.
{% endhint %}

<details>

<summary>Cas d’usage réels</summary>

Les modèles qui fonctionnent bien en production :

* **Renouvellement de l’adhésion sur le lieu**: scanner un code QR, mettre à jour le contact, actualiser la Carte.
* **Inscription en libre-service**: les membres s’inscrivent depuis une page d’accueil de campagne.
* **Inscription assistée par le personnel**: les équipes du front-office utilisent un formulaire au lieu de l’interface Secutix.
* **Collecte du consentement**: stocker les critères d’opt-in dans Secutix pendant l’inscription.
* **Messagerie segmentée**: utiliser le statut d’installation pour cibler uniquement les membres installés.

</details>

## Créer et mettre à jour les contacts depuis un formulaire d’inscription

Utilisez un formulaire d’inscription dans The Wallet Crew pour :

* Créer un nouveau contact Secutix.
* Mettre à jour un contact Secutix existant.
* Livrer immédiatement la carte de membre dans Apple Wallet / Google Wallet.

Cela fonctionne bien lorsque l’interface Secutix ne doit pas être exposée au personnel. Cela convient aussi aux flux d’inscription en libre-service.

### Point d’entrée par code QR

Affichez un code QR qui ouvre le formulaire d’inscription sur un téléphone. C’est idéal pour l’acquisition sur site. Pensez au foyer, au guichet de billetterie ou aux stands partenaires.

### Mappage : compte The Wallet Crew ↔ contact Secutix

Lorsque la synchronisation des contacts est activée, The Wallet Crew associe **les champs du compte** sur **les champs du contact Secutix**. Personnalisez le mappage pour lire ou écrire des critères Secutix spécifiques. C’est courant pour les consentements, les indicateurs de segmentation ou les champs hérités.

Ajoutez le script de mappage personnalisé dans la configuration Secutix **Avancé** onglet.

<p align="center"><a href="https://admin.thewalletcrew.io/tenant/~/integrations/secutix/settings" class="button secondary" data-icon="chevrons-right">Écran de configuration Secutix</a></p>

#### Hook de mappage avancé des contacts

Enregistrer `extensions.secutix.contact.mapper`.

* `MapToSecutix(account, request)` s’exécute **avant** avant d’appeler Secutix.
* `MapToNeostore(response, account)` s’exécute **après** la réponse de Secutix.

```javascript
/**
 * Applique un mappage enrichi des données du compte neostore vers une demande de contact Secutix.
 * Le mappage standard est déjà appliqué à l’objet request avant l’appel de cette fonction.
 *
 * @param {Object} account - Données provenant de neostore.
 * @param {Object} request - Requête envoyée à Secutix avec le mappage par défaut déjà renseigné.
 */
function mapToSecutix(account, request){
  request.ExternalContactCriterionData = [{ CriterionIdCode : 'OPT_CO', Values : [account["consents_email"] ? 'true' : 'false'] }];
}

/**
 * Applique un mappage enrichi de la réponse d’un contact Secutix vers un compte neostore.
 * Le mappage standard est déjà appliqué à l’objet account avant l’appel de cette fonction.
 *
 * @param {Object} response - Réponse reçue de Secutix.
 * @param {Object} account - Données envoyées à neostore avec le mappage par défaut déjà renseigné.
 */
function mapToNeostore(response, account){
  response.ContactCriteria = response.ContactCriteria || [];
  account["consents_email"] = !!response.ContactCriteria.find(c => c.CriterionIdCode === 'OPT_CO' && c.Values != null && c.Values[0] === 'true');
}

export default function(context) {
  context.register('extensions.secutix.contact.mapper', {
    MapToSecutix : mapToSecutix,
    MapToNeostore: mapToNeostore
  });
}
```

#### Mise à jour du statut d’installation sur le contact

Ce hook enregistre les signaux d’installation/désinstallation de la Carte dans les critères du contact Secutix. Utilisez-le pour piloter la segmentation ou les rapports opérationnels dans Secutix.

Implémenter `extensions.secutix.contact.passUpdater`:

```javascript
/**
 * Déclenché lorsque le statut d’installation de la carte de membre change.
 *
 * @param {Object} request - SaveIndividualContactRequest Secutix.
 * @param {boolean} isInstalled - `true` si la carte est installée, sinon `false`.
 * @param {number} device - Appareil sur lequel le statut d’installation a changé (0 = Apple, 2 = Google).
 * @returns {Promise<void>} Aucune valeur de retour ; modifie la requête sur place.
 */
async function onPassInstallationStatusChanged(request, isInstalled, device){
  request.ExternalContactCriterionData = [
    {
      CriterionIdCode : 'W_' + (device == 0 ? "APPLE" : "GOOGLE"),
      Values : [isInstalled ? 'Installé' : 'Désinstallé']
    }
  ];
}

export default function(context) {
  context.register('extensions.secutix.contact.passUpdater', {
    OnPassInstallationStatusChanged: onPassInstallationStatusChanged
  });
}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.thewalletcrew.io/connectors/fr/ticketing/secutix/member-cards-secutix-contacts.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
