Objet Attributs d’utilisateur
Une requête API contenant des champs dans l’objet attributes crée ou met à jour un attribut portant ce nom avec la valeur indiquée dans le profil utilisateur spécifié.
Utilisez les noms de champs de profil utilisateur Braze (énumérés ci-après ou tout autre champ répertorié dans la section Champs de profil utilisateur Braze) pour mettre à jour ces valeurs spéciales sur le profil utilisateur dans le tableau de bord, ou pour ajouter vos propres données d’attributs personnalisés à l’utilisateur.
Corps de l’objet
{
// One of "external_id" or "user_alias" or "braze_id" or "email" or "phone" is required
"external_id" : (optional, string) see external user ID,
"user_alias" : (optional, User alias object),
"braze_id" : (optional, string) Braze user identifier,
"email": (optional, string) User email address,
"phone": (optional, string) User phone number,
// Setting this flag to true puts the API in "Update Only" mode.
// When using a "user_alias", "Update Only" defaults to true.
"_update_existing_only" : (optional, boolean),
// See note regarding anonymous push token imports
"push_token_import" : (optional, boolean),
// Braze User Profile Fields
"first_name" : "Alex",
"email" : "[email protected]",
// Custom Attributes
"my_custom_attribute" : value,
"my_custom_attribute_2" : {"inc" : int_value},
"my_array_custom_attribute":[ "Value1", "Value2" ],
// Adding a new value to an array custom attribute
"my_array_custom_attribute" : { "add" : ["Value3"] },
// Removing a value from an array custom attribute
"my_array_custom_attribute" : { "remove" : [ "Value1" ]},
// Array of objects custom attribute
"my_array_of_objects_attribute": [{"key": "value"}, {"key": "value"}],
// Adding to an array of objects (nested custom attribute syntax)
"my_array_of_objects_attribute": { "$add": [{"key": "value"}] },
// Removing from an array of objects (nested custom attribute syntax)
"my_array_of_objects_attribute": { "$remove": [{"$identifier_key": "key", "$identifier_value": "value"}] },
}

Pour les attributs personnalisés de type tableau classiques, utilisez add et remove (sans $).
Pour les tableaux d’objets (attributs personnalisés imbriqués), utilisez $add, $remove et $update dans les payloads des requêtes /users/track. Ces opérateurs appliquent des modifications au niveau de l’objet en faisant correspondre des identifiants ($identifier_key et $identifier_value) et prennent en charge les mises à jour sur place avec $new_object.
Utilisez ce format lorsque vous devez ajouter, supprimer ou mettre à jour des objets dans un tableau existant tout en conservant le reste du tableau. Pour des exemples de requêtes complètes, consultez l’exemple d’API pour les tableaux d’objets et l’exemple de SDK pour les tableaux d’objets.
Pour supprimer un attribut de profil, définissez-le sur null. Certains champs, tels que external_id et user_alias, ne peuvent pas être supprimés une fois ajoutés à un profil utilisateur.
Résolution des identifiants
Sauf si vous effectuez une importation anonyme de jetons de notification push, chaque objet d’attributs utilisateur doit inclure au moins un identifiant : external_id, user_alias, braze_id, email ou phone. Dans la mesure du possible, n’incluez qu’un seul identifiant par objet afin d’éviter toute ambiguïté sur le profil utilisateur mis à jour ou créé.
Gardez les points suivants à l’esprit lorsque vous utilisez des identifiants :
external_idetuser_aliass’excluent mutuellement. Les inclure tous les deux dans le même objet d’attributs utilisateur renvoie une erreur. Pour ajouter un alias à un utilisateur qui possède déjà unexternal_id, utilisez l’endpoint/users/alias/new.emailest prioritaire surphone. Siemailetphonesont tous deux inclus dans le même objet, Braze utiliseemailcomme identifiant. Les attributs sont donc appliqués au profil utilisateur associé à cette adresse e-mail, même si le numéro de téléphone appartient à un autre profil.

Pour éviter tout comportement inattendu, utilisez un seul identifiant par objet d’attributs utilisateur. Fournir plusieurs identifiants faisant référence à des profils utilisateurs différents peut entraîner l’application des attributs au mauvais profil.
Mettre à jour uniquement les profils existants
Si vous souhaitez uniquement mettre à jour des profils utilisateurs existants dans Braze, transmettez la clé _update_existing_only avec la valeur true dans le corps de votre requête. Si cette valeur est omise, Braze crée un nouveau profil utilisateur lorsque l’external_id n’existe pas encore.

Si vous créez un profil utilisateur avec alias uniquement via l’endpoint /users/track, vous devez définir _update_existing_only sur false. Si vous omettez cette valeur, Braze ne crée pas le profil avec alias uniquement.
Importation de jetons de notification push
Avant d’importer des jetons de notification push dans Braze, vérifiez que c’est bien nécessaire. Une fois les SDK Braze en place, ils gèrent automatiquement les jetons de notification push, sans qu’il soit nécessaire de les téléverser via l’API.
Si vous devez malgré tout les téléverser via l’API, vous pouvez le faire pour des utilisateurs identifiés ou anonymes. Cela signifie qu’un external_id doit être présent, ou que les utilisateurs anonymes doivent avoir l’indicateur push_token_import défini sur true.

Lorsque vous importez des jetons de notification push depuis d’autres systèmes, un external_id n’est pas toujours disponible. Pour maintenir la communication avec ces utilisateurs pendant votre transition vers Braze, vous pouvez importer les anciens jetons pour des utilisateurs anonymes sans fournir d’external_id, en définissant push_token_import sur true.
Lorsque vous définissez push_token_import sur true :
external_idetbraze_idne doivent pas être spécifiés- L’objet d’attributs doit contenir un jeton de notification push
- Si le jeton existe déjà dans Braze, la requête est ignorée ; sinon, Braze crée un profil utilisateur anonyme temporaire pour chaque jeton afin que vous puissiez continuer à envoyer des messages à ces personnes
Après l’importation, lorsque chaque utilisateur lance la version de votre application intégrant Braze, Braze déplace automatiquement son jeton de notification push importé vers son profil utilisateur Braze et supprime le profil temporaire.
Une fois par mois, Braze recherche les profils anonymes dotés de l’indicateur push_token_import qui n’ont pas de jeton de notification push. Si le profil anonyme n’a plus de jeton de notification push, Braze supprime le profil. En revanche, si le profil anonyme possède toujours un jeton de notification push, ce qui suggère que l’utilisateur réel ne s’est pas encore connecté sur l’appareil associé à ce jeton, Braze ne fait rien.
Pour plus d’informations, consultez Migrer des jetons de notification push.
Types de données des attributs personnalisés
Les types de données suivants peuvent être stockés en tant qu’attribut personnalisé :
| Type de données | Remarques |
|---|---|
| Tableaux | Les tableaux d’attributs personnalisés sont pris en charge. Lorsque vous ajoutez un élément, il est ajouté à la fin du tableau. Si l’élément existe déjà, il est déplacé de sa position actuelle vers la fin. Seules les valeurs uniques sont stockées. Par exemple, l’importation de ['hotdog','hotdog','hotdog','pizza'] donne ['hotdog', 'pizza'].Vous pouvez définir un tableau directement (par exemple, "my_array_custom_attribute":[ "Value1", "Value2" ]), ajouter des valeurs à un tableau existant avec "my_array_custom_attribute" : { "add" : ["Value3"] }, ou supprimer des valeurs avec "my_array_custom_attribute" : { "remove" : [ "Value1" ]}.Le nombre maximum d’éléments par défaut dans un tableau est de 500. Vous pouvez modifier ce nombre maximum dans le tableau de bord de Braze, sous Paramètres des données > Attributs personnalisés. Pour plus d’informations, consultez Tableaux. |
| Tableaux d’objets | Utilisez un tableau d’objets pour définir une liste d’objets dans laquelle chaque objet contient un ensemble d’attributs. Ce type permet de stocker plusieurs ensembles de données associées pour un utilisateur, comme des séjours à l’hôtel, un historique d’achats ou des préférences. Par exemple, définissez sur un profil utilisateur un attribut personnalisé nommé hotel_stays sous forme de tableau dans lequel chaque objet représente un séjour distinct, avec des attributs tels que hotel_name, check_in_date et nights_stayed.Les tableaux d’objets n’ont pas de limite quant au nombre d’éléments, mais leur taille maximale est de 100 Ko. Si une mise à jour entraîne un dépassement de cette limite, Braze ignore la mise à jour et l’attribut reste inchangé. Pour les payloads /users/track et SDK, utilisez $add, $remove et $update pour les opérations sur les tableaux d’objets. Utilisez add et remove (sans $) pour les attributs personnalisés de type tableau classiques contenant des valeurs scalaires. Pour plus de détails, consultez l’exemple d’API pour les tableaux d’objets, l’exemple de SDK pour les tableaux d’objets et l’exemple de tableau d’objets. |
| Booléens | true ou false |
| Dates | Stockez les dates au format ISO 8601 (recommandé) ou dans l’un des formats suivants : - yyyy-MM-ddTHH:mm:ss:SSSZ - yyyy-MM-ddTHH:mm:ss - yyyy-MM-dd HH:mm:ss - yyyy-MM-dd - MM/dd/yyyy - ddd MM dd HH:mm:ss.TZD YYYY Notez que « T » est un indicateur de temps, et non une marque substitutive : il ne doit être ni modifié ni supprimé. Les valeurs de date qui ne correspondent à aucun des formats listés sont stockées sous forme de chaînes de caractères sur le profil utilisateur, et non avec le type de données Heure. Les filtres de segmentation temporels (comme « avant », « après » ou « au cours des X derniers jours ») ne fonctionnent donc pas pour ces attributs. Par exemple, Mar 26 2026 06:12 PM +00:00 est stocké sous forme de chaîne de caractères, car il ne correspond pas à un format pris en charge. Pour éviter cela, utilisez le format ISO 8601 (par exemple 2026-03-26T18:12:00Z). Horodatages, fuseaux horaires et filtrage par date récurrente : Les attributs d’heure sans fuseau horaire sont fixés par défaut à minuit UTC (et affichés dans le tableau de bord comme l’équivalent de minuit UTC dans le fuseau horaire de l’entreprise). Pour spécifier un fuseau horaire, ajoutez un décalage UTC à l’horodatage (par exemple, 2024-11-10T18:00:00-05:00 pour EST). Si le décalage horaire est absent ou mal formaté, la valeur est définie par défaut en UTC. Lorsqu’un attribut d’heure est défini, Braze calcule une date d’événement récurrent (mois et jour) à partir de la date calendaire dans le décalage de l’horodatage. Cette date d’événement récurrent est utilisée par le filtre « Jour de l’événement récurrent » et par les comparaisons de jour de l’année pour les attributs personnalisés imbriqués. Des instants équivalents avec des décalages différents produisent des dates récurrentes différentes. Par exemple, 2026-10-13T00:09:49+09:00 enregistre le 13 octobre, tandis que 2026-10-12T15:09:49Z (le même instant en UTC) enregistre le 12 octobre. Pour conserver la date calendaire locale souhaitée lors du filtrage par date récurrente, utilisez un horodatage avec le décalage local, par exemple 2026-10-13T00:00:00+09:00 pour enregistrer le 13 octobre. Pour plus de détails, consultez Détails sur les attributs d’heure. Les heures sont affichées dans le tableau de bord selon le fuseau horaire de votre entreprise. Par exemple, 2024-11-10T18:00:00-05:00 (18 h 00 EST) apparaîtra sous forme de l’heure équivalente dans le fuseau horaire configuré pour votre entreprise. Les événements dont l’horodatage se situe dans le futur sont définis par défaut sur l’heure actuelle. Pour les attributs personnalisés classiques, si l’année est inférieure à 0 ou supérieure à 3000, Braze stocke la valeur sous forme de chaîne de caractères sur le profil utilisateur. |
| Floats | Les attributs personnalisés de type float sont des nombres positifs ou négatifs comportant une virgule décimale. Par exemple, vous pouvez utiliser des floats pour stocker des soldes de compte ou des notes attribuées par les utilisateurs à des produits ou services. |
| Entiers | Vous pouvez incrémenter les attributs personnalisés de type entier en leur attribuant un objet contenant le champ « inc » et la valeur à ajouter. Exemple : "my_custom_attribute_2" : {"inc" : int_value}, |
| Attributs personnalisés imbriqués | Les attributs personnalisés imbriqués définissent un ensemble d’attributs comme propriété d’un autre attribut. Lorsque vous définissez un objet d’attribut personnalisé, vous ajoutez un ensemble d’attributs à cet objet. Pour plus d’informations, consultez Attributs personnalisés imbriqués. |
| Chaînes de caractères | Les attributs personnalisés de type chaîne de caractères sont des séquences de caractères utilisées pour stocker des données textuelles. Par exemple, vous pouvez utiliser des chaînes de caractères pour stocker des prénoms et noms, des adresses e-mail ou des préférences. |

Pour savoir quand utiliser un événement personnalisé plutôt qu’un attribut personnalisé, consultez Événements personnalisés et Attributs personnalisés.
Exemple de tableau d’objets
Ce tableau d’objets vous permet de créer des Segments basés sur des critères spécifiques liés aux séjours, et de personnaliser vos messages à l’aide des données de chaque séjour grâce aux modèles Liquid.
{"hotel_stays": [
{ "hotel_name": "Ocean View Resort", "check_in_date": "2023-06-15", "nights_stayed": 5 },
{ "hotel_name": "Mountain Lodge", "check_in_date": "2023-09-10", "nights_stayed": 3 }
]}
Pour des exemples de tableaux d’objets utilisant $add, $remove et $update, consultez l’exemple d’API pour les tableaux d’objets et l’exemple de SDK pour les tableaux d’objets.
Champs du profil utilisateur de Braze

Les champs du profil utilisateur suivants sont sensibles à la casse : veillez à les référencer en minuscules.

Pour une référence des attributs standard destinée aux clients, organisée par catégorie et incluant des conseils pour le SDK, l’API, les fichiers CSV et Cloud Data Ingestion, consultez Attributs standard.
| Champ du profil utilisateur | Spécification du type de données |
|---|---|
| alias_name | (chaîne de caractères) |
| alias_label | (chaîne de caractères) |
| braze_id | (chaîne de caractères, facultatif) Lorsqu’un profil utilisateur est reconnu par le SDK, un profil utilisateur anonyme est créé avec un braze_id associé. Le braze_id est attribué automatiquement par Braze, ne peut pas être modifié et est propre à chaque appareil. |
| country | (chaîne de caractères) Les codes pays doivent être transmis à Braze selon la norme ISO-3166-1 alpha-2. Notre API s’efforce de faire correspondre les pays reçus dans différents formats. Par exemple, « Australia » peut correspondre à « AU ». Cependant, si la valeur saisie ne correspond pas à la norme ISO-3166-1 alpha-2, la valeur du pays est définie sur NULL. Définir country pour un utilisateur par importation CSV ou via l’API empêche Braze de capturer automatiquement cette information par le biais du SDK. |
| current_location | (objet) Sous la forme {“longitude”: -73.991443, “latitude”: 40.753824} |
| date_of_first_session | (date à laquelle l’utilisateur a utilisé l’application pour la première fois) Chaîne de caractères au format ISO 8601 ou dans l’un des formats suivants : - yyyy-MM-ddTHH:mm:ss:SSSZ - yyyy-MM-ddTHH:mm:ss - yyyy-MM-dd HH:mm:ss - yyyy-MM-dd - MM/dd/yyyy - ddd MM dd HH:mm:ss.TZD YYYY |
| date_of_last_session | (date à laquelle l’utilisateur a utilisé l’application pour la dernière fois) Chaîne de caractères au format ISO 8601 ou dans l’un des formats suivants : - yyyy-MM-ddTHH:mm:ss:SSSZ - yyyy-MM-ddTHH:mm:ss - yyyy-MM-dd HH:mm:ss - yyyy-MM-dd - MM/dd/yyyy - ddd MM dd HH:mm:ss.TZD YYYY |
| dob | (date de naissance) Chaîne de caractères au format « YYYY-MM-DD », par exemple 1980-12-21. |
| (chaîne de caractères) | |
| email_subscribe | (chaîne de caractères) Les valeurs disponibles sont « opted_in » (inscription explicite pour recevoir des e-mails), « unsubscribed » (désinscription explicite des e-mails) et « subscribed » (ni inscrit ni désinscrit explicitement). |
| email_open_tracking_disabled | (booléen) true ou false acceptés. Définissez sur true pour empêcher l’ajout du pixel de suivi des ouvertures à tous les futurs e-mails envoyés à cet utilisateur. |
| email_click_tracking_disabled | (booléen) true ou false acceptés. Définissez sur true pour désactiver le suivi des clics sur tous les liens des futurs e-mails envoyés à cet utilisateur. |
| external_id | (chaîne de caractères) Identifiant unique d’un profil utilisateur. Une fois un external_id attribué, Braze identifie le profil utilisateur sur l’ensemble des appareils de l’utilisateur. Lors de la première attribution d’un external_id à un profil utilisateur inconnu, Braze migre toutes les données existantes du profil utilisateur vers le nouveau profil utilisateur. |
hash contenant l’un des éléments suivants : id (chaîne de caractères), likes (tableau de chaînes de caractères), num_friends (entier). |
|
| first_name | (chaîne de caractères) |
| gender | (chaîne de caractères) « M », « F », « O » (autre), « N » (non applicable), « P » (préfère ne pas répondre) ou null (inconnu). |
| home_city | (chaîne de caractères) |
| language | (chaîne de caractères) la langue doit être transmise à Braze selon la norme ISO-639-1. Pour connaître les langues prises en charge, consultez notre liste des langues acceptées. Définir language pour un utilisateur par importation CSV ou via l’API empêche Braze de capturer automatiquement cette information par le biais du SDK. |
| last_name | (chaîne de caractères) |
| marked_email_as_spam_at | (chaîne de caractères) Date à laquelle l’e-mail de l’utilisateur a été marqué comme spam. Apparaît au format ISO 8601 ou dans l’un des formats suivants : - yyyy-MM-ddTHH:mm:ss:SSSZ - yyyy-MM-ddTHH:mm:ss - yyyy-MM-dd HH:mm:ss - yyyy-MM-dd - MM/dd/yyyy - ddd MM dd HH:mm:ss.TZD YYYY |
| phone | (chaîne de caractères) Nous vous recommandons de fournir les numéros de téléphone au format E.164. Pour plus de détails, consultez Numéros de téléphone des utilisateurs. |
| push_subscribe | (chaîne de caractères) Les valeurs disponibles sont « opted_in » (inscription explicite pour recevoir des notifications push), « unsubscribed » (désinscription explicite des notifications push) et « subscribed » (ni inscrit ni désinscrit explicitement). |
| push_tokens | Tableau d’objets avec les chaînes de caractères app_id et token. Vous pouvez éventuellement fournir un device_id pour l’appareil auquel ce jeton est associé, par exemple [{"app_id": App Identifier, "token": "abcd", "device_id": "optional_field_value"}]. Si aucun device_id n’est fourni, un identifiant est généré aléatoirement. |
| subscription_groups | Tableau d’objets avec les chaînes de caractères subscription_group_id et subscription_state, par exemple [{"subscription_group_id" : "subscription_group_identifier", "subscription_state" : "subscribed"}]. Les valeurs disponibles pour subscription_state sont « subscribed » et « unsubscribed ». |
| time_zone | (chaîne de caractères) Nom de fuseau horaire issu de la base de données des fuseaux horaires de l’IANA (par exemple « America/New_York » ou « Eastern Time (US & Canada) »). Seules les valeurs de fuseau horaire valides sont définies. |
Hash contenant l’un des éléments suivants : id (entier), screen_name (chaîne de caractères, identifiant X (anciennement Twitter)), followers_count (entier), friends_count (entier), statuses_count (entier). |
Les valeurs de langue définies explicitement via cette API sont prioritaires sur les informations de locale que Braze reçoit automatiquement de l’appareil.
Exemple de requête d’attributs utilisateur
Cet exemple contient quatre objets d’attributs utilisateur, sur un total de 75 objets d’attributs autorisés par appel d’API.
POST https://YOUR_REST_API_URL/users/track
Content-Type: application/json
Authorization: Bearer YOUR-REST-API-KEY
{
"attributes" : [
{
"external_id" : "user1",
"first_name" : "Alex",
"has_profile_picture" : true,
"dob": "1988-02-14",
"music_videos_favorited" : { "add" : [ "calvinharris-summer" ], "remove" : ["nickiminaj-anaconda"] }
},
{
"external_id" : "user2",
"first_name" : "Lee",
"has_profile_picture" : false,
"push_tokens": [{"app_id": "Your App Identifier", "token": "abcd", "device_id": "optional_field_value"}]
},
{
"user_alias" : { "alias_name" : "device123", "alias_label" : "my_device_identifier"},
"first_name" : "Yuri",
"has_profile_picture" : false
},
{
"external_id": "user3",
"subscription_groups" : [{"subscription_group_id" : "subscription_group_identifier", "subscription_state" : "subscribed"}]
}
]
}
Migrer les jetons de notification push
Vous envoyiez peut-être déjà des notifications push avant d’intégrer Braze, par vous-même ou via un autre fournisseur. La migration des jetons de notification push vous permet alors de continuer à envoyer des notifications push aux utilisateurs dont les jetons sont enregistrés.
Migration automatique via le SDK
Une fois le SDK de Braze intégré, les jetons de notification push de vos utilisateurs abonnés migrent automatiquement à leur prochaine ouverture de l’application. D’ici là, vous ne pouvez pas leur envoyer de notifications push via Braze.
Pour réengager vos utilisateurs plus rapidement, vous pouvez aussi migrer vos jetons de notification push manuellement.
Points à considérer pour les jetons Web
Les jetons de notification push Web ont des particularités. Tenez compte des points suivants lorsque vous mettez en place les notifications push pour le Web :
| Point à considérer | Détails |
|---|---|
| Service de traitement | Par défaut, le SDK Web recherche un service de traitement à l’emplacement ./service-worker, sauf si une autre option est indiquée, comme manageServiceWorkerExternally ou serviceWorkerLocation. Un service de traitement mal configuré peut entraîner l’expiration des jetons de notification push de vos utilisateurs. |
| Jetons expirés | Le jeton de notification push d’un utilisateur expire s’il n’a pas démarré de session Web depuis 60 jours. Braze ne peut pas migrer les jetons expirés. Vous devez donc envoyer un message d’amorçage push pour réengager ces utilisateurs. |
Migration manuelle via l’API
La migration manuelle des jetons de notification push consiste à importer ces clés déjà créées dans votre plateforme Braze au moyen de l’API.
Utilisez l’endpoint users/track pour migrer par programmation les jetons iOS (APNs) et Android (FCM) vers votre plateforme. Vous pouvez migrer les utilisateurs identifiés (associés à un ID externe) comme les utilisateurs anonymes (sans ID externe).

Braze considère que les jetons de notification push importés sont des jetons de notification push de premier plan valides pour votre application et votre environnement.
Lorsque vous importez des jetons iOS, Braze ne stocke pas de passerelle Apple Push Notification service (APNs) (development ou production) pour ceux-ci. Braze envoie ces jetons via la passerelle configurée de votre application. Si un jeton a été généré pour l’autre environnement, APNs le rejette avec BadDeviceToken, et l’envoi échoue.
Braze ne stocke une passerelle pour le jeton que si le SDK enregistre ultérieurement le même jeton et signale une passerelle.
Pendant la migration, indiquez l’app_id de votre application pour que chaque jeton de notification push soit associé à la bonne application. Chaque application (iOS, Android, etc.) possède son propre app_id. Vous le trouverez dans la section Identification de la page Clés API. Veillez à utiliser l’app_id de la bonne plateforme.

L’API ne permet pas de migrer les jetons de notification push Web, car ils ne suivent pas le même schéma que ceux des autres plateformes.
Si vous essayez de migrer des jetons de notification push Web par programmation, une erreur de ce type peut s’afficher : Received '400: Invalid subscription auth' sending to 'https://fcm.googleapis.com/fcm/send
Plutôt que de passer par l’API, nous vous recommandons d’intégrer le SDK et de laisser votre base de jetons se reconstituer naturellement.
Pour les utilisateurs identifiés, définissez l’indicateur push_token_import sur false (ou omettez ce paramètre). Indiquez ensuite les valeurs external_id, app_id et token dans l’objet attributes de l’utilisateur.
Par exemple :
curl --location --request POST 'https://rest.iad-01.braze.com/users/track' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR-API-KEY-HERE' \
--data-raw '{
"attributes" : [
{
"push_token_import" : false,
"external_id": "example_external_id",
"country": "US",
"language": "en",
"YOUR_CUSTOM_ATTRIBUTE": "YOUR_VALUE",
"push_tokens": [
{"app_id": "APP_ID_OF_OS", "token": "PUSH_TOKEN_STRING"}
]
}
]
}'
Lorsque vous importez des jetons de notification push depuis d’autres systèmes, vous ne disposez pas toujours d’un external_id. Dans ce cas, définissez l’indicateur push_token_import sur true et indiquez les valeurs app_id et token. Braze crée alors un profil utilisateur anonyme temporaire pour chaque jeton, afin que vous puissiez continuer à envoyer des messages à ces personnes. Si le jeton existe déjà dans Braze, la requête est ignorée.
Par exemple :
curl --location --request POST 'https://rest.iad-01.braze.com/users/track' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR-API-KEY-HERE' \
--data-raw '{
"attributes": [
{
"push_token_import" : true,
"email": "[email protected]",
"country": "US",
"language": "en",
"YOUR_CUSTOM_ATTRIBUTE": "YOUR_VALUE",
"push_tokens": [
{"app_id": "APP_ID_OF_OS", "token": "PUSH_TOKEN_STRING", "device_id": "DEVICE_ID"}
]
},
{
"push_token_import" : true,
"email": "[email protected]",
"country": "US",
"language": "en",
"YOUR_CUSTOM_ATTRIBUTE_1": "YOUR_VALUE",
"YOUR_CUSTOM_ATTRIBUTE_2": "YOUR_VALUE",
"push_tokens": [
{"app_id": "APP_ID_OF_OS", "token": "PUSH_TOKEN_STRING", "device_id": "DEVICE_ID"}
]
}
]
}'
Après l’importation, l’utilisateur anonyme peut lancer la version de votre application intégrant Braze. Braze transfère alors automatiquement son jeton de notification push importé vers son profil utilisateur Braze et supprime le profil temporaire.
Une fois par mois, Braze recherche les profils anonymes qui portent l’indicateur push_token_import mais n’ont pas de jeton de notification push. Si un profil anonyme n’a plus de jeton, Braze le supprime. S’il en a encore un, cela signifie que l’utilisateur réel ne s’est pas encore connecté sur l’appareil associé à ce jeton. Dans ce cas, Braze ne fait rien.
Importer des jetons de notification push iOS
Lorsque vous migrez des jetons de notification push iOS avec /users/track, le champ gateway n’est pas défini sur le jeton. Braze considère que les jetons importés via l’API sont des jetons de notification push au premier plan valides. En revanche, Braze ne peut pas déterminer à quel environnement APNs chaque jeton appartient.
Sans ce champ, Braze utilise le paramètre d’environnement de repli configuré pour votre application lors de l’envoi des notifications push. Des erreurs BadDeviceToken peuvent donc survenir si l’environnement réel du jeton diffère de cet environnement de repli. Par exemple, l’envoi d’un jeton de développement via la passerelle de production échouera.
Pour éviter les problèmes de distribution :
- Vérifiez que le paramètre d’environnement de votre application dans le tableau de bord de Braze correspond aux jetons que vous importez.
- Pour les applications en production, importez uniquement des jetons de production.
- Pour les environnements de test, vérifiez que la configuration de votre application et les jetons importés utilisent tous deux l’environnement de développement.

Les jetons enregistrés via le SDK de Braze incluent automatiquement le champ gateway, car le SDK détecte l’environnement à partir des droits (entitlements) de votre application.
Importer des jetons de notification push Android

Ce point ne concerne que les applications Android. Les applications iOS n’ont pas besoin de ces étapes, car cette plateforme ne dispose que d’un seul framework d’affichage des notifications push. Les notifications push s’y affichent immédiatement, tant que Braze dispose des jetons et des certificats nécessaires.
Si vous devez envoyer des notifications push Android à vos utilisateurs avant la fin de l’intégration du SDK de Braze, utilisez des paires clé-valeur pour valider les notifications push.
Vous devez disposer d’un récepteur capable de traiter et d’afficher les payloads push. Pour signaler le payload push au récepteur, ajoutez les paires clé-valeur nécessaires à la Campaign de notification push. Les valeurs de ces paires dépendent du partenaire push que vous utilisiez avant Braze.

Pour certains fournisseurs de notifications push, Braze doit aplatir les paires clé-valeur afin qu’elles soient correctement interprétées. Pour aplatir les paires clé-valeur d’une application Android donnée, contactez votre gestionnaire de la satisfaction client.
Foire aux questions
Comment trouver les utilisateurs considérés comme du spam ou bloqués pour l’envoi de messages ?
Braze ne propose pas de liste de spam dédiée dans le tableau de bord. Braze bloque les profils utilisateurs individuels (« utilisateurs fictifs ») qui comptent plus de cinq millions de sessions, plus de 20 000 noms d’événements personnalisés distincts ou plus de 20 000 noms de produits distincts dans les achats. Toutes les données entrantes pour ce profil cessent alors d’être ingérées, qu’elles proviennent des SDK ou de l’API REST. Si un identifiant est bloqué, /users/track peut renvoyer l’erreur "provided external_id is blacklisted and disallowed". Ce libellé est repris tel quel de la réponse de l’API.
Pour trouver les profils bloqués en raison d’un nombre excessif de sessions, créez un Segment avec le filtre Nombre de sessions défini sur plus de 5 000 000. Exportez ensuite le Segment au format CSV, puis vérifiez les champs des profils dans Engagement > Rechercher des utilisateurs ou avec l’endpoint /users/export/ids.
Il n’existe pas de filtre équivalent pour les noms d’événements personnalisés ou les noms de produits distincts. Pour identifier les profils bloqués pour ces raisons, contactez votre gestionnaire de compte Braze. Pour en savoir plus, consultez la page Blocage des spams.