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

# Écrire à une audience d'opportunité

> Un flow Klaviyo qui écrit à chaque client le jour où il entre dans une audience d'opportunité, avec sa sélection personnalisée.

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="klaviyo" />

**L'objectif :** écrire à chaque client **le jour où il entre** dans une [audience d'opportunité](/livre/audiences-opportunite), celle où une action a le plus de sens pour lui. Posé une fois, le flow tourne seul : chaque nuit, Titane y fait entrer les nouveaux clients.

**Le modèle TITAN :** TITAN-REC : chaque client de l'audience reçoit sa propre sélection personnalisée.

**Ce qu'il vous faut :** la propriété `titan_opportunite`, le code de l'audience, affiché dans La Forge, page **Audiences**, et le modèle « Titane - Recos personnalisées ».

**Temps :** 25 minutes.

<Info>
  Titane ne crée jamais de flow : vous le construisez dans Klaviyo, et Titane le nourrit chaque nuit en faisant entrer les bons clients dans le segment qui le déclenche.
</Info>

## Le résultat

<ApercuEmail logiciel="Klaviyo, premier e-mail du flow d'une audience d'opportunité" objet="Camille, une sélection pour vous" preheader="Quelques produits choisis pour vous." titre="Choisis pour vous" accroche="Bonjour Camille, voici quelques produits de Pure choisis pour vous." titreSelection="Votre sélection" produits={[PRODUITS.serum, PRODUITS.huile, PRODUITS.baume]} cta="Voir ma sélection" pied="Vous recevez cet e-mail parce que vous êtes client de Pure." />

## Pas à pas

<Steps>
  <Step title="Relever le code de l'audience">
    Dans La Forge, page **Audiences**, notez le code de l'audience visée : une lettre et un chiffre, par exemple `D2`.
  </Step>

  <Step title="Créer le segment déclencheur">
    **Audience** › **Lists & segments** › **Create new** › **Segment**, nommé d'après l'audience, par exemple « Opportunité · D2 ».

    Condition : `titan_opportunite` **equals** le code de l'audience.
  </Step>

  <Step title="Créer le flow">
    **Flows** › **Create flow** › **Build your own**. Déclencheur : **Segment** › le segment de l'audience.
  </Step>

  <Step title="Ajouter le filtre de sortie">
    Dans **Trigger settings**, ajoutez le filtre **Placed Order zero times since starting this flow** : un client qui commande sort du flow.
  </Step>

  <Step title="Premier e-mail, tout de suite">
    Ajoutez un **Email** avec le modèle **Titane - Recos personnalisées**. L'angle suit l'enjeu de l'audience : voir [Les audiences d'opportunité](/livre/audiences-opportunite).
  </Step>

  <Step title="Attendre, puis relancer">
    Ajoutez un **Time delay** de 7 jours, puis un deuxième **Email** avec un angle différent : une nouveauté, un avis client ou, si vos règles le permettent, une petite attention.
  </Step>

  <Step title="Activer">
    Relisez, passez les e-mails en **Live**, puis le flow.
  </Step>
</Steps>

<Warning>
  Un flow déclenché par un segment ne démarre que pour les clients qui **entrent** dans le segment après son activation. Pour ceux qui y sont déjà, envoyez une fois une campagne au segment de l'audience, avec le même modèle.
</Warning>

## Pour aller plus loin

* **Un flow par audience.** Chaque client n'est que dans une audience : avec un flow par audience, aucun client ne reçoit deux messages. Commencez par les opportunités, les codes en D.
* **Plus d'effort sur la haute valeur.** Après le déclencheur, ajoutez un **Conditional split** sur `titan_valeur` égal à `haute` : un message plus personnel pour ces clients, le flow standard pour les autres.


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