Extrayez des données en temps réel de vos API dans les messages e-mail OneSignal au moment de l’envoi grâce aux flux de données, avec la syntaxe Liquid pour la personnalisation.
Use this file to discover all available pages before exploring further.
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.
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.
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 :
Une configuration complète de flux de données ressemble à ceci :
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é.
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 :
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)
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.
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.
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).
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.
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.
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 ?
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.
Iterating with loops: abandoned cart
Custom events properties
Conditional display: order status
Automation without personalization
Personalized coupon codes
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 :
- 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.
En poursuivant l’exemple précédent du panier abandonné, comment pourrions-nous savoir comment récupérer ce panier particulier en premier lieu ?Une méthode pourrait être de créer un Journey déclenché par un événement personnalisécart_abandoned, où les propriétés incluent un cart_id. Dans cet exemple, cet événement est envoyé à OneSignal via API :
L’utilisateur user_12345 entre dans le journey lorsque cet événement est déclenché, puis atteint un nœud envoyant un e-mail. Ce modèle d’e-mail est configuré avec le flux de données cart, où l’URL est définie pour récupérer le contenu d’un panier particulier comme ceci :
Ainsi, lorsque cet événement particulier est ingéré et déclenche le Journey :
La valeur cart_id de 98765 sera stockée dans le Journey
Lorsque l’étape d’e-mail est atteinte, le flux de données cart référencera cette valeur cart_id et l’utilisera pour appeler l’API du panier
Les propriétés JSON renvoyées seront analysées et insérées dans l’e-mail comme dans l’exemple précédent ci-dessus
Vous voulez voir comment afficher conditionnellement le contenu du flux de données selon le statut de commande ? Consultez l’onglet Affichage conditionnel : statut de commande pour en savoir plus.
Disons que vous voulez inclure le statut de la commande d’un client, mais n’inclure un lien de numéro de suivi que si la commande a été expédiée. Vous pouvez utiliser une instruction if pour ce faire :
Your order is {{data_feed.order.status}}!{% if data_feed.order.tracking_number != empty %}Track it here: {{data_feed.order.tracking_url}}{% endif %}
Ici, le lien de suivi ne sera affiché que si le tracking_number existe.
Les flux de données peuvent être utilisés pour insérer automatiquement des informations à jour dans vos messages sans nécessairement avoir besoin d’être personnalisés par destinataire.Par exemple, vous insérez peut-être une image de bannière en haut de vos e-mails et la changez mensuellement pour suivre les fêtes et autres événements mensuels. Plutôt que de vous souvenir de télécharger une nouvelle image sur OneSignal et de modifier tous vos modèles chaque mois, vous pourriez configurer un flux de données qui récupère l’URL de l’image de bannière actuelle depuis votre CMS ou autre emplacement de gestion d’actifs.Vous configureriez un flux de données banner qui pointe vers un point de terminaison sans aucune variable dans l’URL comme ceci :
https://acme.com/assets/email-banner
Ce qui renvoie une réponse avec l’URL de la bannière actuelle :
Vous configureriez votre modèle d’e-mail pour utiliser {{ data_feed.banner.banner_url }} comme URL source de l’image, automatisant ce processus à l’avenir.
Cet exemple explique comment envoyer des codes de réduction personnalisés à usage unique dans des e-mails à l’aide d’un flux de données qui récupère une valeur unique de votre API pour chaque destinataire.
Bonjour George,Finalisez votre réservation dans les 2 prochaines heures et économisez 10 % avec votre code personnel : XYZ123ABC
Chaque utilisateur reçoit un code de réduction unique, généré en direct via un appel API externe au moment de l’envoi de l’e-mail, valide pour la fenêtre de temps donnée et limité à cet utilisateur.
Canal e-mail configuré dans OneSignal (votre application a la fonctionnalité e-mail activée)
Une API externe qui accepte un identifiant utilisateur (par exemple, external_id) et un identifiant de campagne, et renvoie du JSON avec le code de réduction, la remise et l’expiration
Un identifiant unique (tel que external_id) pour chaque utilisateur que votre API peut utiliser pour générer des codes de réduction
Un segment ou un déclencheur (par exemple, « recherche abandonnée au cours des dernières 24 h ») utilisé pour envoyer l’e-mail via un Journey OneSignal
Vous pouvez référencer ses valeurs dans votre modèle d’e-mail comme suit :
{{ data_feed.coupon.code }}
{{ data_feed.coupon.discount_percent }}
{{ data_feed.coupon.expires_in_hours }}
4
Test and activate the Data Feed
Cliquez sur Send Test pour vérifier votre configuration, puis cliquez sur Activate pour rendre le flux de données disponible pour une utilisation dans les modèles.
Dans OneSignal, allez dans Messages → Email → New Template
Utilisez l’alias et les champs du flux de données dans le corps de votre message. Par exemple :
<h2>Hi {{ first_name }},</h2><p>Complete your booking in the next {{ data_feed.coupon.expires_in_hours }} hours and save{{ data_feed.coupon.discount_percent }} with your personal code:<strong>{{ data_feed.coupon.code }}</strong></p><p><a href="https://example.com/checkout?coupon={{ data_feed.coupon.code }}">Use Code Now →</a></p>
Utilisez la syntaxe Liquid sous la forme {{ data_feed.<alias>.<field> }}
Assurez-vous que le flux de données est attaché au modèle
Si vous utilisez l’éditeur glisser-déposer avec une logique Liquid personnalisée, utilisez un bloc HTML
Étape 3 : Attacher le flux de données et déclencher l’e-mail
Dans le compositeur de modèle, sous Personalization, activez Data Feeds et sélectionnez votre flux (coupon_code_generator)
Cela garantit que OneSignal effectue l’appel API au moment de l’envoi pour chaque destinataire, remplit les données et les injecte dans l’e-mail
Configurez un Journey pour automatiser le message :
Condition d’entrée : Segment tel que « recherche abandonnée au cours des dernières 24 heures »
Attendre jusqu’à : Créez un événement personnalisé booking_completed. Configurez l’attente pour quitter le Journey si cet événement se déclenche, ou continuer après 1 heure. S’ils finalisent une réservation, ils sortent sans recevoir l’e-mail ; sinon, ils continuent à recevoir le code de réduction.
Envoyer l’e-mail : Utilisez le modèle d’e-mail de code de réduction personnalisé
Assurez-vous que le Journey utilise le canal e-mail et que les destinataires sont abonnés à l’e-mail
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.