> ## Documentation Index
> Fetch the complete documentation index at: https://docs.titane-intelligence.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Envoyer une sélection personnalisée

> Une campagne SAP Emarsys où chaque client voit les produits que Titane a choisis pour lui.

export const Logiciel = ({id}) => {
  const logiciels = {
    klaviyo: ["Klaviyo", "CRM et e-mailing"],
    brevo: ["Brevo", "CRM et e-mailing"],
    mailchimp: ["Mailchimp", "CRM et e-mailing"],
    batch: ["Batch", "CRM et e-mailing"],
    emarsys: ["SAP Emarsys", "CRM et e-mailing"],
    shopify: ["Shopify", "Boutique en ligne"],
    woocommerce: ["WooCommerce", "Boutique en ligne"],
    prestashop: ["PrestaShop", "Boutique en ligne"],
    magento: ["Magento", "Boutique en ligne"],
    "sap-commerce": ["SAP Commerce Cloud", "Boutique en ligne"]
  };
  const [nom, famille] = logiciels[id] || [id, ""];
  return <div className="not-prose" style={{
    display: "flex",
    alignItems: "center",
    gap: 10,
    margin: "0 0 20px"
  }}>
      <img src={`/logos/${id}.png`} alt={nom} width={28} height={28} noZoom style={{
    width: 28,
    height: 28,
    margin: 0
  }} />
      <span style={{
    fontSize: 14
  }}>
        <strong>{nom}</strong>
        <span style={{
    opacity: 0.6
  }}> · {famille}</span>
      </span>
    </div>;
};

export const PRODUITS = {
  serum: {
    nom: "Sérum rééquilibrant niacinamide",
    prix: "24,90 €",
    image: "/images/pure/serum.jpg"
  },
  gel: {
    nom: "Gel nettoyant doux",
    prix: "14,90 €",
    image: "/images/pure/gel-nettoyant.jpg"
  },
  solaire: {
    nom: "Lait frais solaire SPF 50",
    prix: "19,90 €",
    image: "/images/pure/solaire.jpg"
  },
  baume: {
    nom: "Baume lèvres repulpant",
    prix: "8,90 €",
    image: "/images/pure/baume-levres.jpg"
  },
  huile: {
    nom: "Huile corps nourrissante",
    prix: "22,90 €",
    image: "/images/pure/huile-corps.jpg"
  },
  dentifrice: {
    nom: "Dentifrice éclat minéral",
    prix: "6,90 €",
    image: "/images/pure/dentifrice.jpg"
  },
  deodorant: {
    nom: "Déodorant stick néroli blanc",
    prix: "11,90 €",
    image: "/images/pure/deodorant-stick.jpg"
  },
  recharge: {
    nom: "Recharge déodorant roll-on 24 h",
    prix: "7,90 €",
    image: "/images/pure/recharge-roll-on.jpg"
  },
  masque: {
    nom: "Masque stick argile rose",
    prix: "16,90 €",
    image: "/images/pure/masque-stick.jpg"
  },
  duo: {
    nom: "Duo rituel du matin",
    prix: "29,90 €",
    image: "/images/pure/duo-matin.jpg"
  }
};

export const ApercuEmail = ({objet, preheader, titre, accroche, titreSelection, produits = [], cta = "Découvrir", pied, logiciel, colonnes}) => <div className="not-prose" style={{
  border: "1px solid rgba(127,127,127,0.25)",
  borderRadius: 14,
  overflow: "hidden",
  margin: "20px 0",
  maxWidth: 640
}}>
    <div style={{
  background: "rgba(127,127,127,0.08)",
  padding: "12px 16px",
  fontSize: 13,
  lineHeight: 1.5
}}>
      <div><span style={{
  opacity: 0.6
}}>De :</span> Pure &lt;bonjour@pure.example&gt;</div>
      <div><span style={{
  opacity: 0.6
}}>Objet :</span> <strong>{objet}</strong></div>
      {preheader ? <div style={{
  opacity: 0.6
}}>{preheader}</div> : null}
    </div>
    <div style={{
  background: "#F7F5F0",
  color: "#1C1A16",
  padding: "28px 20px",
  fontFamily: "Helvetica, Arial, sans-serif"
}}>
      <div style={{
  textAlign: "center",
  fontFamily: "Georgia, 'Times New Roman', serif",
  fontSize: 34,
  letterSpacing: "-0.02em",
  marginBottom: 22
}}>pure</div>
      <div style={{
  textAlign: "center",
  fontSize: 22,
  fontWeight: 700,
  marginBottom: 10
}}>{titre}</div>
      <div style={{
  textAlign: "center",
  fontSize: 15,
  lineHeight: 1.6,
  maxWidth: 440,
  margin: "0 auto 22px"
}}>{accroche}</div>
      <div style={{
  textAlign: "center",
  fontSize: 12,
  letterSpacing: "0.12em",
  textTransform: "uppercase",
  opacity: 0.7,
  marginBottom: 14
}}>{titreSelection}</div>
      <div style={{
  display: "grid",
  gridTemplateColumns: `repeat(${colonnes || Math.min(produits.length, 3) || 1}, minmax(0, 1fr))`,
  gap: 14
}}>
        {produits.map(p => <div key={p.nom} style={{
  background: "#FFFFFF",
  borderRadius: 10,
  padding: 10,
  textAlign: "center"
}}>
            <img src={p.image} alt={p.nom} style={{
  width: "100%",
  aspectRatio: "4 / 5",
  objectFit: "cover",
  borderRadius: 6,
  margin: 0
}} />
            <div style={{
  fontSize: 13,
  fontWeight: 600,
  marginTop: 8,
  lineHeight: 1.35
}}>{p.nom}</div>
            <div style={{
  fontSize: 13,
  marginTop: 4
}}>{p.prix}</div>
          </div>)}
      </div>
      <div style={{
  textAlign: "center",
  marginTop: 22
}}>
        <span style={{
  display: "inline-block",
  background: "#1E4A45",
  color: "#F7F5F0",
  padding: "12px 26px",
  borderRadius: 999,
  fontSize: 14,
  fontWeight: 600
}}>{cta}</span>
      </div>
      {pied ? <div style={{
  textAlign: "center",
  fontSize: 11,
  opacity: 0.6,
  marginTop: 24,
  lineHeight: 1.5
}}>{pied}<br />Se désinscrire</div> : null}
    </div>
    {logiciel ? <div style={{
  padding: "8px 16px",
  fontSize: 12,
  opacity: 0.65
}}>Aperçu d'un envoi depuis {logiciel}, marque de démonstration « Pure ».</div> : null}
  </div>;

<Logiciel id="emarsys" />

**L'objectif :** une campagne régulière, par exemple mensuelle, qui montre à chaque client **sa** sélection plutôt qu'une vitrine identique pour tous.

**Le modèle TITAN :** TITAN-REC, qui choisit la sélection personnalisée de chaque client.

**Ce qu'il vous faut :** les champs `titan_reco_*` sur vos contacts, après une première nuit en [mode réel](/demarrer/mode-reel).

**Temps :** 40 minutes la première fois, 10 minutes ensuite.

## Le résultat

<ApercuEmail colonnes={2} logiciel="SAP Emarsys" objet="Votre sélection d'octobre" preheader="Quatre produits choisis pour vous." titre="Votre sélection personnalisée" accroche="Bonjour Hugo, voici quelques produits que nous avons choisis pour vous ce mois-ci." titreSelection="Votre sélection du moment" produits={[PRODUITS.serum, PRODUITS.huile, PRODUITS.solaire, PRODUITS.masque]} cta="Voir ma sélection" pied="Vous recevez cet e-mail parce que vous êtes client de Pure." />

## Pas à pas

<Steps>
  <Step title="Relever les numéros des champs">
    Pour les quatre premiers produits, il vous faut le numéro de seize champs : `titan_reco_1_nom`, `titan_reco_1_prix`, `titan_reco_1_image`, `titan_reco_1_url`, puis les mêmes de 2 à 4. Créez un jeton de personnalisation pour chacun (**Content** › **Personalization** › **Create Token** › **Contact Data**) et notez le code qu'il affiche : voir [Insérer un champ Titane dans un e-mail](/crm/emarsys/index#insérer-un-champ-titane-dans-un-e-mail). À faire une fois : les jetons resservent d'une campagne à l'autre.
  </Step>

  <Step title="Créer le segment">
    **Contacts** › **Segments** › **Create Segment** › **Standard Segment**, nommé « A une sélection Titane ». Un critère de contact : `titan_reco_1_nom` **Is not empty**. **Save and Calculate**.
  </Step>

  <Step title="Créer la campagne">
    **Channels** › **Email** › **Email Campaigns** › **Create Campaign** › **Batch Email**, en HTML (**Custom HTML Email**). Dans **Email Settings**, choisissez comme **Recipient source** le segment « A une sélection Titane ».
  </Step>

  <Step title="Composer la grille de produits">
    Collez la grille ci-dessous à l'endroit des produits, puis remplacez chaque numéro par celui de votre champ : `1101` à `1104` pour le premier produit, et ainsi de suite.
  </Step>

  <Step title="Écrire vos textes, puis prévisualiser">
    Objet, préheader, accroche : dans votre ton. Prévisualisez avec deux ou trois contacts du segment : les produits doivent changer de l'un à l'autre. Envoyez-vous un test.
  </Step>

  <Step title="Programmer">
    Programmez l'envoi au jour et à l'heure qui conviennent à vos clients.
  </Step>
</Steps>

### La grille de produits

Chaque produit tient dans une case ; à partir du deuxième, la condition `{% if … %}` masque la case d'un client qui a moins de quatre produits.

```html theme={null}
<table role="presentation" width="100%" cellpadding="0" cellspacing="0">
  <tr>
    <td width="50%" align="center" valign="top" style="padding:12px">
      <a href="{{ contact.1104 }}"><img src="{{ contact.1103 }}" width="240" alt="" style="display:block;max-width:100%"></a>
      <p style="margin:12px 0 4px">{{ contact.1101 }}</p>
      <p style="margin:0"><strong>{{ contact.1102 }}</strong></p>
    </td>
    <td width="50%" align="center" valign="top" style="padding:12px">
      {% if contact.1201 != '' %}
      <a href="{{ contact.1204 }}"><img src="{{ contact.1203 }}" width="240" alt="" style="display:block;max-width:100%"></a>
      <p style="margin:12px 0 4px">{{ contact.1201 }}</p>
      <p style="margin:0"><strong>{{ contact.1202 }}</strong></p>
      {% endif %}
    </td>
  </tr>
</table>
```

| Dans la grille | Le champ dont vous mettez le numéro |
| - | - |
| `1101`, `1201`… | `titan_reco_1_nom`, `titan_reco_2_nom`… |
| `1102`, `1202`… | `titan_reco_1_prix`, `titan_reco_2_prix`… |
| `1103`, `1203`… | `titan_reco_1_image`, `titan_reco_2_image`… |
| `1104`, `1204`… | `titan_reco_1_url`, `titan_reco_2_url`… |

Dupliquez la ligne `<tr>` pour les produits 3 et 4.

<Tip>
  Les prix sont **déjà mis en forme** (`24,90 €`) : affichez-les tels quels, sans format de nombre.
</Tip>

<Note>
  Dans l'éditeur par blocs (**Block-Based Email**), les noms et les prix s'insèrent avec l'icône **Personalization** d'un bloc de texte. Pour l'image et le lien de chaque produit, la grille en HTML ci-dessus est le chemin le plus sûr.
</Note>

## Pour aller plus loin

<AccordionGroup>
  <Accordion title="Adapter le message au palier de valeur" icon="gem">
    Faites deux segments : `titan_valeur` **Equal** `haute`, pour une version plus premium et sans remise, et le reste de votre base.
  </Accordion>

  <Accordion title="Envoyer au bon moment pour chacun" icon="clock">
    Ajoutez au segment `titan_contacter_sous_j` **Less than** 15, et refaites la campagne toutes les deux semaines.
  </Accordion>

  <Accordion title="L'envoyer chaque mois sans y penser" icon="calendar-clock">
    Un programme **Recurring**, une fois par mois, sur le segment « A une sélection Titane », qui envoie le même e-mail : le segment se renouvelle seul, et chaque client reçoit sa sélection du moment.
  </Accordion>
</AccordionGroup>


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