Connexion à l’API de données clients de Movable Ink
Braze et l’intégration de l’API de données client de Movable Ink permettent aux marketeurs d’activer les données d’événements clients stockées dans Braze pour générer du contenu personnalisé au sein de Movable Ink.
Movable Ink est capable d’ingérer des événements comportementaux depuis Braze via leur API de données clients. Les événements seront stockés sur les profils des utilisateurs en fonction de l’ID utilisateur unique (UUID) qui est transmis à Movable Ink.
Pour plus d’informations sur les Stories, l’API de données client de Movable Ink et comment Movable Ink exploite les données comportementales, veuillez consulter les articles suivants du centre de support :
- Contenu puissant avec des données comportementales
- Introduction et guide de l’API de données clients
- FAQ : API de données clients
Conditions préalables
Condition | Descriptif |
---|---|
Compte Movable Ink | Un compte Movable Ink est requis pour bénéficier de ce partenariat. |
Identifiants API Movable Ink | L’équipe Solutions de Movable Ink vous générera des identifiants API. Les identifiants API se composent de :
|
Charges utiles d’événements comportementaux | Vous devez partager vos charges utiles d’événements avec l’équipe d’expérience client de Movable Ink. Consultez la section Partage des charges utiles d’événements avec Movable Ink pour plus de détails. |
Actifs créatifs et logique commerciale | Vous devez partager des ressources créatives avec Movable Ink, notamment des fichiers Adobe Photoshop (PSD) indiquant à Movable Ink comment créer le bloc et une image de secours. Vous devrez également fournir la logique métier pour savoir comment et quand afficher le bloc de contenu activé par le partenaire. |
Intégration
Étape 1 : Créer une campagne de webhook dans Braze
Étape 1a: Créer une nouvelle campagne
- Dans Braze, créez une campagne de webhook.
- Donnez un nom et une description facultative à votre campagne.
- Sélectionnez Modèle vierge comme votre modèle.
Étape 1b: Ajoutez vos identifiants d’API de données client
- Dans le champ URL du webhook, entrez l’URL de l’endpoint Movable Ink.
2. Sélectionnez l’onglet Paramètres. 3. Ajoutez les en-têtes de requête suivants en tant que paires clé-valeur :
Clé | Valeur |
---|---|
Content-Type | application/json |
Autorisation | Entrez l’authentification de base que vous avez reçue de Movable Ink. |
Étape 1c: Configurez votre charge utile
- Retournez dans l’onglet Composer.
- Pour votre corps de requête, créez votre propre corps de requête avec des paires clé-valeur JSON ou entrez votre charge utile d’événement en tant que texte brut. Reportez-vous aux exemples de charges utiles pour des exemples d’événements de commerce électronique standard.
Étape 1d : Testez votre webhook
Vous devrez partager un échantillon de charge utile avec votre équipe Expérience Client de Movable Ink. Vous pouvez générer cette charge utile dans l’onglet Test en fonction de la charge utile que vous avez construite.
Movable Ink recommande d’attendre pour tester votre webhook dans Braze jusqu’à ce que votre équipe Expérience Client de Movable Ink ait confirmé qu’elle a terminé le mappage et est prête à recevoir un test. Si ce mappage n’est pas complet, vous recevrez probablement une erreur lors des tests.
Pour tester votre webhook, procédez comme suit :
- Sélectionnez l’onglet Test.
- Prévisualisez le message en tant qu’utilisateur pour voir un exemple de charge utile d’événement pour cet utilisateur. Vous pouvez choisir entre prévisualiser en tant qu’utilisateur aléatoire, utilisateur spécifique ou utilisateur personnalisé.
- Si tout semble bon, cliquez sur Envoyer le test pour envoyer une requête de test.
Étape 2 : Finalisez la configuration de votre campagne
Étape 2a: Planifiez votre campagne
Lorsque vous avez terminé de composer et de tester le webhook, planifiez votre campagne.
Braze prend en charge les livraisons programmées, basées sur des actions et déclenchées par l’API. livraison par événement est généralement la meilleure solution pour la plupart des cas d’utilisation d’événements comportementaux. Pour toute question sur ce qui a du sens pour votre cas d’utilisation, contactez vos responsables de satisfaction client Braze et Movable Ink.
Pour livraison par événement :
- Spécifiez l’action de déclenchement. C’est l’événement qui déclenchera le webhook vers Movable Ink.
- Assurez-vous que le Délai de planification est réglé sur Immédiatement. Les données d’événement doivent être envoyées à Movable Ink immédiatement après l’événement, sans délai.
- Définissez la durée de la campagne en spécifiant une heure de début. Il est probable qu’il ne soit pas nécessaire de définir une heure de fin, mais il est possible d’en définir une si le cas d’utilisation le requête.
Pour vous assurer que les données sont diffusées en temps réel vers Movable Ink, ne sélectionnez pas Envoyer la campagne aux utilisateurs dans leur fuseau horaire local.
Étape 2b: Spécifiez votre audience
Ensuite, déterminez quels utilisateurs vous souhaitez cibler pour cette campagne. Pour plus de détails, consultez la section Ciblage des utilisateurs.
Veillez à ne pas utiliser le test A/B dans votre campagne en décochant la case groupe de contrôle. Si un groupe de contrôle est inclus, les données d’un pourcentage d’utilisateurs ne seront pas envoyées à Movable Ink. L’intégralité de votre audience devrait aller à la variante plutôt qu’au groupe de contrôle.
Étape 2c: Choisissez des événements de conversion (facultatif)
Si vous le souhaitez, vous pouvez attribuer des événements de conversion à cette campagne dans Braze.
Cependant, étant donné que le webhook est uniquement destiné à diffuser des données, l’attribution à ce niveau est probablement moins utile que de regarder l’attribution au niveau de la campagne après que les données comportementales de Braze soient utilisées pour personnaliser le contenu.
Étape 3 : Lancer la campagne
Examinez votre configuration de webhook et lancez votre campagne.
Considérations
Aligner sur un identifiant utilisateur unique
Assurez-vous que la valeur de l’identifiant utilisateur unique (UUID) que vous utilisez comme votre mi_u
, est disponible dans Braze et peut être incluse dans les charges utiles d’événements envoyées à Movable Ink.
Cela garantit que les événements comportementaux auxquels Movable Ink fait référence lors de la génération d’une image sont associés au même client pour lequel ils ont reçu les événements comportementaux. Si la valeur UUID n’est pas la même que celle de Braze external_id
, l’UUID doit être capturé et transmis à Braze en tant qu’attribut ou dans les propriétés d’événement d’un événement Braze pour exploiter cet identifiant.
Braze suit le comportement des utilisateurs sur plusieurs plateformes (telles que le web et les applications mobiles), de sorte qu’un seul utilisateur peut avoir plusieurs identifiants anonymes distincts. Ces identifiants peuvent être fusionnés dans le seul profil utilisateur connu de Stories lorsqu’un identify
événement est envoyé à Movable Ink, tant que l’événement identify
inclut à la fois un identifiant anonyme et l’identifiant unique connu.
Une fois que Movable Ink reçoit un user_id
pour un seul utilisateur, tous les événements futurs pour cet utilisateur doivent inclure ce même user_id
.
Partage des charges utiles d’événements avec Movable Ink
Avant de configurer le connecteur à l’API de données clients de Movable Ink, assurez-vous de partager vos charges utiles d’événements avec l’équipe d’expérience client de Movable Ink. Cela permet à Movable Ink de mapper vos événements à leur schéma d’événements et empêchera tout appel API rejeté ou échoué.
Vous pouvez générer une charge utile d’événement dans Braze en utilisant n’importe quelles propriétés d’événement. Générer une charge utile d’exemple pour un utilisateur aléatoire ou en recherchant un ID utilisateur spécifique. Reportez-vous à l’étape 1d ci-dessus pour plus de détails.
Partagez cet exemple de charge utile avec votre équipe Expérience Client Movable Ink. Assurez-vous qu’il n’y a pas d’informations personnelles sensibles identifiables dans l’exemple de charge utile (telles que l’adresse e-mail, le numéro de téléphone ou les dates de naissance complètes).
Pour en savoir plus sur les propriétés des événements personnalisés et le format attendu des données contenues dans les propriétés, consultez Propriétés des événements personnalisés.
Utilisateurs connus contre utilisateurs anonymes
Dans Braze, les événements peuvent être enregistrés sous un profil d’utilisateur anonyme. Les identifiants liés au profil utilisateur lors de la journalisation des événements dépendent de la manière dont l’utilisateur a été créé (via le SDK Braze ou les API) et de son stade actuel dans le cycle de vie de l’utilisateur.
Transférer uniquement les événements Braze pour les utilisateurs connus
Dans votre campagne de webhook, utilisez le filtre External User ID
pour cibler uniquement les utilisateurs qui ont un external_id
avec le filtre External User ID
is not blank
.
Transfert des événements Braze pour les utilisateurs anonymes et connus
Si vous souhaitez transférer les événements Braze d’utilisateurs anonymes (utilisateurs avant qu’un external_id
ne soit attribué à leur profil), vous devrez décider quel identifiant utiliser comme anonymous_id
pour Movable Ink jusqu’à ce qu’un external_id
soit disponible. Choisissez un anonymous_id
qui restera constant sur votre profil utilisateur Braze. Vous pouvez utiliser la logique liquid dans le corps du webhook pour décider s’il faut passer un anonymous_id
ou un user_id
.
Pour plus d’informations, consultez les exemples de webhooks sous exemples de charges utiles.
Exemples de charges utiles
Événement de vue de produit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
"events": [
{
"email": "[email protected]",
"name": "Product Viewed",
"time": "2023-12-06T19:20:45+01:00",
"properties": {
"categories": [
{
"id": "Bathroom",
"url": "https://example.com/cat/bathroom"
}
],
"meta": {
"color": "green"
},
"title": "All-Purpose Cleaning Wipes",
"price": 1.99,
"id": "56544",
"url": "https://www.example.com/variants_id/5f08cb918dcc595aa74b0fbc"
}
}
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
curl --location --request POST 'https://collector.movableink-dmz.com/behavioral/{{key}}' \
--header 'Authorization: Basic {{authorization}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"anonymous_id": "123-abc-678",
"event": "product_viewed",
"properties": {
"categories": [
{
"id": "Bathroom",
"url": "https://example.com/cat/bathroom"
}
],
"meta": {
"color": "green"
},
"title": "All-Purpose Cleaning Wipes",
"price": 1.99,
"id": "56544",
"url": "https://www.example.com/variants_id/5f08cb918dcc595aa74b0fbc"
},
"timestamp": 1257894000000,
"timezone": "America/New_York",
"type": "track",
"user_id": "5c3aa83113dd490100d3d8d7"
}'
Dans cet exemple, une adresse e-mail hachée est utilisée comme anonymous_id
pour les utilisateurs qui n’ont pas de external_id
.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Converts the timestamp of "now" to seconds since 1970 and assigns it to a local variable "timestamp"
{% assign timestamp = "now" | date: "%s" %}
// Example of md5 hashing the email address to use as the anonymous_id
{% assign anon_id = {{${email_address}}} | md5 %}
// Condition logic to determine which identifier to use. If an external_id is available use that, otherwise use the anonymous_id
{% if {{${user_id}}} %}
{% capture user_identifier %}"user_id": "{{${user_id}}}"{% endcapture %}
{% else %}
{% capture user_identifier %}"anonymous_id": "{{anon_id}}"{% endcapture %}
{% endif %}
{
{{user_identifier}}
"event": "product_viewed",
"properties": {
"categories": [
{
"id": "{{event_properties.${categories}[0].id}}",
"url": "{{event_properties.${categories}[0].url}}"
}
],
"meta": {
"color": "{{event_properties.${meta}.color}}"
},
"title": "{{event_properties.${title}}}",
"price": "{{event_properties.${price}}}",
"id": "{{event_properties.${id}}}",
"url": "{{event_properties.${url}}}"
},
"timestamp": "{{timestamp}}",
"timezone": "{{${time_zone}}}",
"type": "track",
}
Événement de vue de catégorie
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"events": [
{
"external_id": "123456789",
"name": "Category Viewed",
"time": "2023-12-06T19:20:45+01:00",
"properties": {
"id": "bathroom-1",
"title": "Bathroom Stuff",
"url": "https://www.example.com/categories/bathroom"
}
}
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
curl --location --request POST 'https://collector.movableink-dmz.com/behavioral/{{key}}' \
--header 'Authorization: Basic {{authorization}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"anonymous_id": "123-abc-678",
"event": "category_viewed",
"properties": {
"id": "bathroom-1",
"title": "Bathroom Stuff",
"url": "https://www.example.com/categories/bathroom"
},
"timestamp": 1257894000000,
"timezone": "America/New_York",
"type": "track",
"user_id": "5c3aa83113dd490100d3d8d7"
}'
Cet exemple montre un webhook suivant les événements uniquement pour les utilisateurs connus (utilisateurs avec un external_id
).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Converts the timestamp of "now" to seconds since 1970 and assigns it to a local variable "timestamp"
{% assign timestamp = "now" | date: "%s" %}
{
"event": "category_viewed",
"properties": {
"id": "{{event_properties.${id}}}",
"title": "{{event_properties.${title}}}",
"url": "{{event_properties.${url}}}"
},
"timestamp": "{{timestamp}}",
"timezone": "{{${time_zone}}}",
"type": "track",
"user_id": "{{${user_id}}}"
}
Identifier l’événement
1
2
3
4
5
6
7
8
9
{
"events": [
{
"external_id": "123456789",
"name": "Account Created",
"time": "2023-12-06T19:20:45+01:00"
}
]
}
1
2
3
4
5
6
7
8
9
10
curl --location --request POST 'https://collector.movableink-dmz.com/behavioral/{{key}}' \
--header 'Authorization: Basic {{authorization}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"anonymous_id": "jg0iq5gd30dqpwn8zmx05p06mzjmjir4r8",
"timestamp": 1257894000000,
"timezone": "America/New_York",
"type": "identify",
"user_id": "mycustomerid123"
}'
Dans cet exemple, une adresse e-mail hachée est utilisée comme anonymous_id
pour les utilisateurs qui n’ont pas de external_id
.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Converts the timestamp of "now" to seconds since 1970 and assigns it to a local variable "timestamp"
{% assign timestamp = "now" | date: "%s" %}
// Example of md5 hashing the email address to use as the anonymous_id
{% assign anon_id = {{${email_address}}} | md5 %}
{
"anonymous_id": "{{anon_id}}",
"timestamp": "{{timestamp}}",
"timezone": "{{${time_zone}}}",
"type": "identify",
"user_id": "{{${user_id}}}"
}