Passer au contenu principal
Les flux de données vous permettent d’extraire des données en temps réel de vos API directement dans les messages au moment de l’envoi. Cela vous permet de délivrer un contenu hautement personnalisé sans précharger les données dans OneSignal. Utilisez les flux de données lorsque vos données changent fréquemment, par exemple :
  • Le solde de récompenses actuel d’un utilisateur
  • Le dernier statut de commande
  • Des recommandations de produits personnalisées
D’autres méthodes de personnalisation (comme les Tags ou le Contenu dynamique) fonctionnent bien pour les données statiques. Les flux de données sont idéaux pour les valeurs en direct qui changent rapidement.
Les flux de données sont actuellement disponibles uniquement pour les messages e-mail envoyés via Journeys. Besoin d’un autre canal ? Remplissez cette courte enquête.

Comment fonctionnent les flux de données

  1. Créez un flux de données – Configurez la façon dont OneSignal se connecte à votre API.
  2. Attachez le flux de données à un modèle de message.
  3. Insérez les champs de réponse dans votre message en utilisant la syntaxe Liquid.
  4. Au moment de l’envoi, OneSignal effectue un appel API pour chaque destinataire, analyse la réponse et injecte les données dans votre message.

Exemple : Afficher les points de récompense

Supposons que vous souhaitez montrer à chaque client son solde de récompenses :
Hi {{ first_name }},

You have {{ data_feed.rewards.points }} points!
Your membership status is {{ data_feed.rewards.status_level }}.

Keep shopping to earn more points!
Lorsque Sarah reçoit cet e-mail, les variables Liquid sont remplacées par son solde de points réel et son statut d’adhésion. Les sections suivantes expliquent comment configurer cet exemple étape par étape.

Création et utilisation d’un flux de données

1. Configurez votre flux de données

Accédez à Data > Data Feeds dans la barre latérale pour voir la liste des flux de données existants et en créer un nouveau. Chaque flux de données doit avoir :
  • Nom : Un nom descriptif comme « API de récompenses client » pour vous aider à distinguer les flux. Les noms uniques sont recommandés mais pas obligatoires.
  • Alias : Un identifiant court comme rewards utilisé dans la syntaxe Liquid (par ex., {{ data_feed.rewards.points }}). Doit être unique, en minuscules, alphanumérique, sans espaces ni caractères spéciaux.
  • Méthode : La méthode HTTP que OneSignal utilise pour contacter votre API. Généralement GET, mais POST est également pris en charge.
  • URL : Votre point de terminaison API. Prend en charge la syntaxe Liquid afin que OneSignal puisse récupérer des données spécifiques à l’utilisateur.
Par exemple, votre point de terminaison de récompenses pourrait accepter l’external_id de l’utilisateur (stocké dans OneSignal) comme paramètre d’URL :
https://acme.com/customers/user_id={{ external_id }}/rewards
  • En-têtes : Paires clé-valeur requises par votre API (par ex., jetons d’authentification). Prend en charge la syntaxe Liquid.
  • Corps : Corps de requête JSON optionnel. Prend en charge la syntaxe Liquid, comme les webhooks Journey.
Par exemple, votre API pourrait nécessiter l’ID de l’utilisateur dans le corps de la requête plutôt que dans l’URL :
{
	"customer_id": "{{ subscription.external_id }}"
}
Une configuration complète de flux de données ressemble à ceci :
Data Feed configuration showing name, alias, method, URL, and headers
Testez votre flux avant de l’utiliser en production. Les tests de flux de données s’exécutent sur vos abonnements de test, vérifiez donc que ces abonnements ont des attributs qui renvoient un résultat réel de votre API.
Enfin, activez votre nouveau flux de données pour qu’il soit prêt à être utilisé.

2. Attachez le flux de données à votre modèle de message

Attachez votre flux de données à votre modèle de message afin que OneSignal sache l’utiliser.
  1. Accédez à Messages > Templates
  2. Dans la section Message, sélectionnez le bouton Personalization
Personalization button in the message template editor
  1. Activez Data Feeds et sélectionnez votre flux
Data Feeds toggle and feed selector in the message composer
  1. Enregistrez votre modèle

3. Utilisez les données dans votre message

Utilisez la syntaxe Liquid pour insérer les données de réponse n’importe où dans votre message. En poursuivant l’exemple des récompenses, la réponse API pour Sarah (dont l’external_id est a1-b2c3) pourrait ressembler à ceci :
{
	"external_id": "a1-b2c3",
	"points": 193,
	"status_level": "Gold"
}
Pour insérer le nombre de points et le niveau de statut, utilisez la notation par points pour référencer l’alias du flux de données et les champs de réponse :
You have {{ data_feed.rewards.points }} points!
Your membership status is {{ data_feed.rewards.status_level }}.
Cela indique à OneSignal :
  • Utiliser un flux de données
  • Utiliser le flux de données rewards
    • Rappel : le flux rewards sait appeler l’API avec l’external_id du destinataire
  • À partir de la réponse, insérer la valeur de l’élément points (193) et de l’élément status_level (Gold)

Exigences et limites

Votre API doit :
  • Accepter l’authentification en une seule étape avec des jetons d’authentification dans les en-têtes
  • Répondre rapidement. Moins de 250 ms recommandé (cela affecte directement la vitesse d’envoi)
  • Renvoyer du JSON. Les autres formats ne sont pas pris en charge pour le moment.
  • Gérer votre volume d’envoi. Une limite de taux faible sur votre API ralentit la livraison des messages.
  • Renvoyer des charges utiles de taille raisonnable. Maintenez les réponses sous 50 Ko pour de meilleures performances.
Limites actuelles :
  • Un flux de données par modèle. Récupérez tout ce dont vous avez besoin en une seule réponse API.
  • Un appel API par flux de données par message.
  • Journeys uniquement. Pas encore disponible pour d’autres méthodes d’envoi.
  • Pas d’enchaînement d’appels. La charge utile d’un flux de données ne peut pas être utilisée pour appeler un autre.
Besoin de plusieurs flux de données par modèle ou d’une prise en charge d’autres canaux ? Partagez votre cas d’utilisation pour aider à prioriser ces fonctionnalités.

Configuration de votre API

Avant de créer un flux de données, assurez-vous que votre API peut gérer ces exigences :

Authentification

Votre API doit accepter l’authentification via les en-têtes :
Authorization: Bearer YOUR_TOKEN
ou
X-API-Key: YOUR_KEY

Corps de requête JSON

Si vous devez inclure un corps dans la requête, votre API doit accepter JSON. Cela peut signifier que vos en-têtes doivent inclure Content-Type: application/json.

Réponse JSON

Votre API doit renvoyer un objet JSON. Typiquement, cela signifie que vos en-têtes incluront Accept: application/json.

Paramètres de personnalisation

Vous passerez généralement les identifiants utilisateur dans l’URL comme ceci :
https://api.example.com/users/{{external_id}}/data
https://api.example.com/rewards?email={{email | url_encode}}
Et/ou dans le corps :
{
	"customer_id": "{{ external_id }}",
	"email": "{{ subscription.email }}"
}
Assurez-vous que ces données existeront dans OneSignal (généralement sous forme de Tags, mais d’autres options sont disponibles comme les propriétés d’événements personnalisés).

Limites de taux

Tenez compte des limites de taux de votre API. L’envoi à 10 000 utilisateurs signifie 10 000 appels API en succession rapide. Assurez-vous que votre API peut gérer ce volume.

Gestion des erreurs

Si votre API renvoie une erreur ou n’a pas de données pour un utilisateur, le message ne sera pas envoyé à ce destinataire. Assurez-vous que votre API renvoie des données pour tous les utilisateurs attendus.

Liste de contrôle de démarrage

Avant de mettre en œuvre les flux de données, répondez à ces questions :
  • Quelles données veux-je afficher dans mon message ? Travailler à rebours à partir d’un simple plan avec les éléments à remplir depuis votre API identifiés vous aidera à organiser votre réflexion.
  • Ces données sont-elles disponibles via un seul point de terminaison API ?
  • Comment vais-je authentifier les requêtes API ?
  • Quel identifiant ou autre élément de données vais-je utiliser pour récupérer les données personnalisées ?
  • Cet identifiant est-il déjà stocké dans OneSignal ? Si non, comment sera-t-il rempli ?
  • Mon API peut-elle gérer le volume de requêtes que je vais générer ?
  • Que se passe-t-il si mon API n’a pas de données pour un utilisateur ?

Exemples et cas d’utilisation avancés

Les flux de données peuvent être utilisés avec la syntaxe Liquid ou en combinaison avec d’autres fonctionnalités de manière créative pour produire une personnalisation plus complexe.
Disons que vous avez un flux de données cart qui renvoie un tableau d’articles dans le panier de l’utilisateur, plus le montant total du panier en dollars :
{
  "items": [
    {
      "name": "Blue Running Shoes",
      "price": 84.00,
      "image_url": "https://acme.com/blue-running-shoes.png"
    },
    {
      "name": "Protein Bar",
      "price": 5.99,
      "image_url": "https://acme.com/protein-bar.png"
    }
  ],
  "total": 89.99
}
Si vous voulez afficher chaque article dans le panier, plus le total du panier, vous pouvez utiliser une boucle for en Liquid :
<ul>
  {% for item in data_feed.cart.items %}
    <li>
      <strong>{{ item.name }}</strong><br>
      ${{ item.price }}<br>
      <img src="{{ item.image_url }}" alt="{{ item.name }}">
    </li>
  {% endfor %}
</ul>

<p>Cart total: ${{ data_feed.cart.total }}</p>

Cela donnera :
- Blue Running Shoes
- $84.00
- <running shoes image>
- Protein Bar
- $5.99
- <protein bar image>
Cart total: $89.99
Si vous utilisez l’éditeur de blocs d’e-mail, lors de l’insertion de ce type de syntaxe Liquid complexe, en particulier si vous devez inclure des images ou des liens, pour de meilleurs résultats, utilisez l’élément de bloc HTML personnalisé.
Vous voulez voir comment déclencher cet e-mail de panier abandonné à l’aide d’événements personnalisés ? Consultez l’onglet Propriétés d’événements personnalisés pour le flux de travail complet.

FAQ

Mes valeurs de flux de données n’apparaissent pas dans le message. Que dois-je vérifier ?

Vérifiez dans cet ordre :
  1. Le flux de données est attaché au modèle (sous Personalization > Data Feeds).
  2. Votre syntaxe Liquid correspond exactement à la structure de la réponse JSON — {{ data_feed.<alias>.<field> }}.
  3. Le point de terminaison API renvoie du JSON valide lorsqu’il est appelé manuellement avec les mêmes identifiants.
  4. Le destinataire dispose de l’identifiant requis (par ex., external_id) stocké dans OneSignal.

Pourquoi les messages s’envoient-ils lentement ?

Les appels API du flux de données s’exécutent au moment de l’envoi pour chaque destinataire. Si votre API répond lentement ou ne peut pas gérer les requêtes simultanées, la livraison des messages ralentit proportionnellement. Visez un temps de réponse inférieur à 250 ms et assurez-vous que votre infrastructure peut gérer votre volume d’envoi.

Pourquoi certains destinataires ne reçoivent-ils pas de messages ?

Si l’appel API du flux de données échoue pour un destinataire — en raison d’une erreur 404, d’un délai d’expiration ou de données manquantes — OneSignal ignore ce destinataire entièrement. Consultez le journal des erreurs dans votre configuration de flux de données et vos propres journaux API pour les échecs. Vérifiez que ces utilisateurs ont les identifiants requis dans OneSignal.

Puis-je utiliser plus d’un flux de données dans un modèle ?

Pas pour le moment. Chaque modèle prend en charge un seul flux de données. Récupérez toutes les données dont vous avez besoin en une seule réponse API. Si vous avez besoin de plusieurs flux, partagez votre cas d’utilisation.

Les flux de données sont-ils disponibles pour les notifications push ou les SMS ?

Non. Les flux de données sont actuellement disponibles uniquement pour les messages e-mail envoyés via Journeys. La prise en charge de canaux supplémentaires est prévue — partagez votre cas d’utilisation pour aider à prioriser.

Que se passe-t-il si mon API est indisponible au moment de l’envoi du message ?

OneSignal ignore tout destinataire dont l’appel de flux de données échoue. Le message n’est pas envoyé à ce destinataire, et aucune valeur de substitution n’est insérée. Surveillez la disponibilité de votre API et les taux d’erreur lors des envois planifiés.

Pages associées

Syntaxe Liquid

Référence complète des modèles Liquid dans les messages OneSignal.

Journeys

Créez des flux de messagerie automatisés qui déclenchent des e-mails avec flux de données.

Événements personnalisés

Déclenchez des Journeys et transmettez des propriétés d’événements pour les URL de flux de données.

Personnalisation des messages

Vue d’ensemble de toutes les méthodes de personnalisation — tags, Liquid, contenu dynamique et flux de données.