Tous les objets exposés par l’API REST de Personyze : rôle, méthodes HTTP prises en charge, colonnes, index et exemples.
26 min readUpdated 1 hour ago
Référence de tous les objets exposés par l’API REST de Personyze. Chaque section ci-dessous couvre un objet : son rôle, les méthodes HTTP prises en charge, ses colonnes (avec type et remarques sur l’indexation), et des exemples curl prêts à l’emploi.
Prérequis — à lire d’abord si ce n’est pas déjà fait :
Paramètres de chemin — la syntaxe where/columns/order_by/limit utilisée dans tous les exemples ci-dessous
Index des objets
Cliquez sur un objet pour aller à sa section. Chaque section a sa propre ancre : vous pouvez créer un lien direct vers la référence de n’importe quel objet.
Contenu CRUD (lecture/écriture)
Contient vos campagnes, votre audience, votre catalogue et votre configuration. CRUD complet pour External API user et au-dessus.
usersProfils clients. Les noms de colonnes sont dynamiques.
user_listsListes nommées d’utilisateurs (manuelles ou importées).
user_list_usersAppartenance des utilisateurs aux user_lists.
actionsActions de personnalisation. En lecture seule via REST pour l’instant.
conditionsConditions d’audience. En lecture seule via REST pour l’instant.
placeholdersConteneurs d’emplacement dans le DOM (où les actions s’affichent).
Utilisés par le tracker JS, les SDK natifs et les intégrations pour s’amorcer eux-mêmes. Généralement pas appelés directement par les clients de l’API REST.
tracker_codeRenvoie l’extrait JS à intégrer dans une page client (sortie HTML).
users
Profils clients. Chaque ligne est un visiteur ou un client. Les noms de colonnes sont dynamiques — au-delà des colonnes de gestion documentées, vous pouvez stocker toutes les clés/valeurs personnalisées dont votre compte a besoin.
GET
POST
PUT
DELETE
✅
✅
✅
✅
Colonnes d’identification / de gestion
Colonne
Remarques
user_id
Clé primaire interne de Personyze. Attribuée automatiquement à l’insertion. Indexée.
internal_id
Votre identifiant externe (identifiant CRM, identifiant de compte, SKU). Indexé.
fb_id
Identifiant utilisateur Facebook. Indexé.
email
E-mail du visiteur. Indexé.
last_session_time
Secondes Unix. Indexé.
data_last_modified
Secondes Unix. Indexé.
session_counter
Nombre total de sessions vues jusqu’ici pour cet utilisateur.
Champs de profil courants (personnalisés)
first_name, middle_name, last_name, sex, birthday, timezone, current_city, current_state, current_country, religion, political, interests, relationship_status, education_year, plus custom_t_1…custom_t_6 (texte), custom_i_1…custom_i_4 (entier), custom_f_1…custom_f_2 (flottant), custom_d_1, custom_d_2 (date) — et tous les champs supplémentaires configurés sur votre compte.
Exemples
# Lookup by your external id
curl 'https://api:KEY@app.personyze.com/rest/users/where/internal_id=42'
GET /rest/users sans where exige order_by sur une colonne indexée — user_id, last_session_time, data_last_modified, fb_id, email, ou internal_id. Sinon : 400 Cannot do this operation on whole table.
Limitation du débit
POST /rest/users est sérialisé par compte Personyze : au plus une insertion en cours à la fois. Les requêtes qui attendent plus d’une seconde sont rejetées avec 400 Too many simultaneous requests — réessayez avec un délai exponentiel.
user_lists
Listes nommées d’utilisateurs (par exemple « VIP », « Inscrits à la newsletter »). Une ligne par liste. L’appartenance se trouve dans un objet distinct — voir user_list_users.
GET
POST
PUT
DELETE
✅
✅
✅
✅
Colonnes
Colonne
Remarques
id
Clé primaire. Attribuée automatiquement.
name
Nom affiché de la liste. Indexé.
Exemples
# All lists
curl 'https://api:KEY@app.personyze.com/rest/user_lists'
# Delete (also clears all memberships in user_list_users via FK cascade)
curl -X DELETE 'https://api:KEY@app.personyze.com/rest/user_lists/17'
# → 1
user_list_users
Appartenance : quels utilisateurs appartiennent à quelles user_lists. Une ligne par paire (user_list_id, user_id) .
GET
POST
PUT
DELETE
✅
✅
—
✅
POST accepte soit un user_idexistant, soit une clé de recherche (user_internal_id, user_email) — l’API la résout en user_id, en créant si nécessaire une ligne users minimale.
Colonnes
Colonne
Remarques
user_list_id
FK → user_lists.id. Partie de la clé composite.
user_id
FK → users.user_id. Partie de la clé composite.
Champs supplémentaires du corps POST (résolus en user_id côté serveur, puis supprimés)
Champ
Résolu en
user_internal_id
user_id pour l’utilisateur ayant cet internal_id. Crée l’utilisateur s’il n’existe pas.
user_email
user_id pour l’utilisateur ayant cet email. Crée l’utilisateur s’il n’existe pas.
Exemples
# Members of list 17
curl 'https://api:KEY@app.personyze.com/rest/user_list_users/where/user_list_id=17/limit/1000'
# Add by user_id
curl -X POST 'https://api:KEY@app.personyze.com/rest/user_list_users' \
-H 'Content-Type: application/json' \
-d '{"user_list_id":17,"user_id":5712334}'
# Add by external id (auto-creates a users row if needed)
curl -X POST 'https://api:KEY@app.personyze.com/rest/user_list_users' \
-H 'Content-Type: application/json' \
-d '{"user_list_id":17,"user_internal_id":"acct-987"}'
# Add by email
curl -X POST 'https://api:KEY@app.personyze.com/rest/user_list_users' \
-H 'Content-Type: application/json' \
-d '{"user_list_id":17,"user_email":"alice@example.com"}'
Actions de personnalisation — ce que font vos campagnes : afficher du HTML, montrer une popup, envoyer un e-mail, envoyer une notification, etc. En lecture seule via REST pour l’instant (création et modification via l’interface).
GET
POST
PUT
DELETE
✅
—
—
—
Colonnes
Colonne
Remarques
id
Clé primaire.
version_tag
production ou testing.
name
Nom affiché de l’action.
type_id
Le type d’action (HTML / popup / e-mail / push / …). Déduit de l’ action_js_id.
placeholders
Tableau JSON des identifiants d’emplacements visés par l’action.
content_type
Type MIME / nature du contenu (d’après actions_js).
content_param
Nom de la clé de paramètre JS dont la valeur est le contenu à afficher.
content_begin
Calculé : fragment d’ouverture du contenu affiché (après substitution de l’enveloppe).
content_end
Calculé : fragment de fermeture.
presenting_rules
JSON : règles de moment et de fréquence.
libs_app
Bibliothèques d’application dont dépend l’action.
Exemples
# All production actions
curl 'https://api:KEY@app.personyze.com/rest/actions
/where/version_tag=production
/columns/id,name,type_id,placeholders'
# One action's full content
curl 'https://api:KEY@app.personyze.com/rest/actions/where/id=42
/columns/id,name,content_type,content_param,content_begin,content_end'
conditions
Conditions d’audience — le quand des campagnes. En lecture seule via REST.
GET
POST
PUT
DELETE
✅
—
—
—
Colonnes
Colonne
Remarques
id
Clé primaire.
name
Nom affiché de la condition.
Exemples
# All tracker/offline conditions
curl 'https://api:KEY@app.personyze.com/rest/conditions/limit/1000'
placeholders
Conteneurs de type placeholder — emplacements du DOM où les actions affichent du contenu. Gérez le catalogue des emplacements définis pour votre site.
GET
POST
PUT
DELETE
✅
✅
✅
✅
Colonnes
Colonne
Remarques
id
Clé primaire.
name
Nom affiché.
html_id
Sélecteur / id du DOM où l’emplacement se monte.
units_count_max
Nombre maximal d’unités d’action pouvant remplir cet emplacement. Par défaut 1.
Exemples
# All placeholders
curl 'https://api:KEY@app.personyze.com/rest/placeholders'
# One
curl 'https://api:KEY@app.personyze.com/rest/placeholders/14'
Portée du point de terminaison.Le gestionnaire limite toutes les requêtes à container_types='placeholder': les autres types de conteneurs (par exemple « grab variable ») ne sont donc pas visibles depuis ce point de terminaison — voir containers_grab_variable.
containers_grab_variable
Les conteneurs « grab variable » — récupèrent des valeurs DOM/JS de la page du visiteur vers son profil. Chaque conteneur indique « surveiller cette variable / cet élément du DOM ; quand il apparaît, le capturer comme champ de profil ».
GET
POST
PUT
DELETE
✅
✅
✅
✅
Colonnes
Colonne
Remarques
id
Clé primaire.
name
Nom affiché.
is_active
1 / 0.
variable_path
Chemin DOM ou expression JS à capturer.
mask
Expression régulière ou gabarit facultatif appliqué à la chaîne capturée.
constant_value
Valeur de repli ou forcée facultative.
watch_variable
Recapture chaque fois que la variable change (1 / 0).
profile_column
Colonne du profil dans laquelle la valeur est écrite.
Exemples
# All grab-variable containers
curl 'https://api:KEY@app.personyze.com/rest/containers_grab_variable'
Catalogue de produits. Chaque ligne est un SKU. Les noms de colonnes sont dynamiques — au-delà des colonnes de gestion documentées, vous pouvez stocker tous les champs personnalisés dont votre catalogue a besoin.
GET
POST
PUT
DELETE
✅
✅
✅
✅
Colonnes d’identification / de gestion
Colonne
Remarques
id
Clé primaire. Attribuée automatiquement.
internal_id
Votre SKU / identifiant externe.
data_last_modified
Secondes Unix.
is_in_stock
'yes' / 'no' énuméré (et non 1/0).
Champs de produit courants (personnalisés)
title, description_short, description_long, price, sale_price, image_big_url, image_medium_url, image_small_url, cart_url, brand, manufacturer, category, inventory, expiration_date, size, color, rank, is_new, age_from, age_to, available_location, not_available_location, etc. L’ensemble réel des champs dépend de la configuration de votre compte.
Entrées renommées (en POST / PUT)
Entrée
Enregistré sous
image_1
image_big_url
image_2
image_medium_url
image_3
image_small_url
Exemples
# In-stock products in a category
curl 'https://api:KEY@app.personyze.com/rest/products
/where/category=tools&is_in_stock=yes
/columns/id,internal_id,title,price,inventory
/order_by/title
/limit/100'
# Lookup by internal_id
curl 'https://api:KEY@app.personyze.com/rest/products/where/internal_id=SKU-1234'
# Insert (or "patch" — duplicate internal_id will UPDATE rather than fail)
curl -X POST 'https://api:KEY@app.personyze.com/rest/products' \
-H 'Content-Type: application/json' \
-d '{"internal_id":"SKU-1234",
"title":"Cordless Drill",
"price":129.99,
"is_in_stock":"yes",
"image_1":"https://cdn.example.com/big.jpg"}'
# → 51234
# Update by internal_id
curl -X PUT 'https://api:KEY@app.personyze.com/rest/products/where/internal_id=SKU-1234' \
-H 'Content-Type: application/json' \
-d '{"price":119.99,"is_in_stock":"no"}'
Comportement d’upsert en POST.POST effectue un patch-on-duplicate : un internal_id existant met à jour la ligne au lieu d’échouer. Pour un import en masse depuis l’URL d’un flux, utilisez la synchronisation programmée des flux dans l’interface de Personyze plutôt que des appels REST ligne par ligne.
articles
Catalogue d’articles (billets de blog, actualités, entrées de base de connaissances). Même forme que products mais pour le contenu éditorial.
GET
POST
PUT
DELETE
✅
✅
✅
✅
Colonnes d’identification / de gestion
Colonne
Remarques
id
Clé primaire. Attribuée automatiquement.
internal_id
Votre identifiant externe (slug, id du CMS).
data_last_modified
Secondes Unix.
is_published
'yes' / 'no' énuméré.
Champs d’article courants (personnalisés)
title, description_short, description_long, image_big_url, image_medium_url, image_small_url, author, publish_date, category, tags, rank, etc. La liste réelle dépend de la configuration other_columns_info de votre site.
Entrées renommées
Entrée
Enregistré sous
image_1
image_big_url
image_2
image_medium_url
image_3
image_small_url
Exemples
# Recent published articles
curl 'https://api:KEY@app.personyze.com/rest/articles
/where/is_published=yes
/columns/id,internal_id,title,author,publish_date
/order_by_desc/publish_date
/limit/100'
# Lookup by internal_id
curl 'https://api:KEY@app.personyze.com/rest/articles/where/internal_id=how-to-personalize'
# Insert
curl -X POST 'https://api:KEY@app.personyze.com/rest/articles' \
-H 'Content-Type: application/json' \
-d '{"internal_id":"how-to-personalize",
"title":"How to personalize your site",
"author":"Alice",
"is_published":"yes",
"image_1":"https://cdn.example.com/big.jpg"}'
Les interactions avec les articles passent par le point de terminaison do.POST effectue un patch-on-duplicate (comme products). Pour suivre les interactions des visiteurs avec les articles (vu / commenté / aimé), utilisez do avec les commandes Article … — il n’existe pas d’objet REST dédié pour l’instant.
products_interactions
Journal des interactions sur les produits : vues, ajouts au panier, achats, « favori », « livré ». Principalement en ajout. Adossé à une table d’archive.
GET
POST
PUT
DELETE
✅
✅
✅
✅
Colonnes
Colonne
Remarques
user_id
FK → users.user_id. Indexé.
product_internal_id
FK → products.internal_id. Première colonne d’un index composite [product_internal_id, user_id, transaction_time].
quantity
Par défaut 1 à l’insertion.
status
L’une des valeurs viewed, delivered, extra (≈ ajouté au panier), favorite, goal (achat). Indexé.
action_id
Si l’interaction a été attribuée à une action Personyze, son identifiant. Sinon null.
transaction_time
Secondes Unix — heure de la commande / de la transaction.
time
Secondes Unix — moment où la ligne a été enregistrée. Indexé.
amount
Valeur monétaire (selon les réglages de devise du site).
Insertion : identifier l’utilisateur
POST accepte l’un de ces champs pour identifier l’utilisateur :
Champ
Résolu en
user_id (numérique)
Recherche directe par clé primaire.
user_internal_id
user_id de l’utilisateur ayant cet internal_idCrée automatiquement une ligne users minimale si elle n’existe pas.
user_email
user_id de l’utilisateur ayant cet email. Crée automatiquement l’utilisateur s’il n’existe pas.
Exemples
# All purchases in a window, paged
curl 'https://api:KEY@app.personyze.com/rest/products_interactions
/where/status=goal&time>1730000000
/order_by_desc/time
/limit/1000'
# A specific user's history with a product
curl 'https://api:KEY@app.personyze.com/rest/products_interactions
/where/product_internal_id=SKU-1234
/columns/user_id,status,quantity,amount,transaction_time'
# Log a purchase
curl -X POST 'https://api:KEY@app.personyze.com/rest/products_interactions' \
-H 'Content-Type: application/json' \
-d '{"user_internal_id":"acct-987",
"product_internal_id":"SKU-1234",
"quantity":2,
"status":"goal",
"transaction_time":1734000000,
"amount":259.98}'
# Delete by composite key
curl -X DELETE 'https://api:KEY@app.personyze.com/rest/products_interactions
/where/user_id=5712334&product_internal_id=SKU-1234&status=viewed'
Colonnes indexées
user_id, [product_internal_id, user_id, transaction_time], status, time. Les requêtes sans where sur l’une d’elles (ou sans order_by sur ces mêmes colonnes) sont rejetées comme parcours de table complet.
events
Journal d’événements générique — une ligne par événement suivi, capturé par le tracker JS, le SDK ou le point de terminaison do . En lecture seule via REST pour l’instant.
GET
POST
PUT
DELETE
✅
—
—
—
Colonnes
Colonne
Remarques
id
Clé primaire.
user_id
FK → users.user_id. Indexé.
time
Secondes Unix.
visit_id
FK → ligne de visite.
container_id
FK → containers.id (la source de l’événement). Indexé.
container_types
Le type du conteneur (click event, submit event, etc.).
value
Chaîne de données de l’événement.
first_visit_id
Premier visit_id de la session.
session_start_time
Secondes Unix.
Exemples
# Recent events for a user
curl 'https://api:KEY@app.personyze.com/rest/events
/where/user_id=5712334
/order_by_desc/time
/limit/100'
# Events from a specific container in a window
curl 'https://api:KEY@app.personyze.com/rest/events
/where/container_id=1234&time>1730000000&time<1731000000
/columns/id,user_id,time,value
/order_by_desc/time
/limit/1000'
Quand utiliser events ou summary_actions.La table est volumineuse ; les requêtes doivent filtrer sur une colonne indexée (id, user_id, container_id, …) sinon la requête est rejetée. Pour des KPI agrégés dans le temps, utilisez plutôt summary_actions — il contient des compteurs quotidiens précalculés par action.
forms
Journal des envois de formulaires. Une ligne par envoi de formulaire capturé par le tracker. En lecture seule via REST pour l’instant.
GET
POST
PUT
DELETE
✅
—
—
—
Colonnes
Colonne
Remarques
user_id
FK → users.user_id. Indexé.
time
Secondes Unix.
action_id
Action Personyze qui a déclenché ou possède ce formulaire, le cas échéant.
session_start_time
Secondes Unix.
plus data (JSON)
Les données du formulaire envoyé, regroupées en JSON. Lues en ligne (leurs clés apparaissent comme colonnes dans la réponse).
Le JSON data est automatiquement développé en clés de premier niveau à la lecture — demandez des champs personnalisés précis par leur nom.
Exemples
# Submissions for a user
curl 'https://api:KEY@app.personyze.com/rest/forms
/where/user_id=5712334
/order_by_desc/time
/limit/100'
# Submissions tied to a specific action
curl 'https://api:KEY@app.personyze.com/rest/forms
/where/action_id=42&time>1730000000
/columns/user_id,time,email,name,message
/limit/1000'
Les colonnes indexées comprennent user_id, action_id, et time. Les requêtes doivent filtrer sur l’une d’elles.
do
Répartiteur de commandes « envoyer et oublier » : envoyez une mise à jour de profil utilisateur ou un événement d’interaction sans parler le protocole du tracker. Le corps est un tableau de commandes ; chacune est traitée indépendamment.
# Tag a user as VIP
curl -X POST 'https://api:KEY@app.personyze.com/rest/do' \
-H 'Content-Type: application/json' \
-d '[["internal_id","acct-987","User profile","custom_t_1","VIP","first_name","Alice"]]'
# Log a purchase + a profile update in one round-trip
curl -X POST 'https://api:KEY@app.personyze.com/rest/do' \
-H 'Content-Type: application/json' \
-d '[
["email","alice@example.com","Product purchased","SKU-1234","quantity",2,"amount",259.98],
["email","alice@example.com","User profile","customer_segment","loyal"]
]'
Quand utiliser do ou les points de terminaison typés.Les clés de recherche (internal_id / email) créent automatiquement une ligne users minimale si aucun utilisateur ne correspond. Pour une journalisation d’interactions à haut débit, préférez products_interactions (typé et indexé) ou l’API d’événements par lots du SDK.
sessions_archive
Une ligne par session de visiteur (une fenêtre d’activité continue). Adossé à la table d’archive de longue durée — bien plus large que events, avec les métadonnées de localisation, d’appareil, d’écran et de navigateur.
GET
POST
PUT
DELETE
✅
—
—
—
Identification / gestion
Colonne
Remarques
first_visit_id
Clé primaire. L’identifiant de la première ligne visit de cette session.
user_id
FK → users.user_id. Indexé.
session_start_time
Secondes Unix.
last_session_time
Secondes Unix.
session_counter
Numéro de la session pour cet utilisateur (1, 2, 3, …).
total_visits
Pages vues pendant la session.
time_in_focus
Secondes pendant lesquelles l’onglet avait réellement le focus.
time_total
Secondes entre le début et la dernière activité.
Géo / langue / appareil
Colonne
Remarques
time_zone
Décalage de fuseau horaire du visiteur (heures).
country_code, region_code, city
Géo (d’après l’IP). city est joint depuis la table de correspondance partagée : c’est donc un nom lisible (null en l’absence de correspondance).
Requête de recherche à l’arrivée depuis un moteur de recherche.
UTM / campagne publicitaire
ad_campaign, ad_source, ad_medium, ad_term, ad_content — les paramètres UTM standard tels que capturés à l’arrivée.
Exemples
# Sessions for a user, most recent first
curl 'https://api:KEY@app.personyze.com/rest/sessions_archive
/where/user_id=5712334
/columns/first_visit_id,session_start_time,total_visits,country_code,city
/order_by_desc/session_start_time
/limit/100'
# Single session by primary key
curl 'https://api:KEY@app.personyze.com/rest/sessions_archive
/where/first_visit_id=900000000123
/columns/user_id,session_start_time,total_visits,total_goal_value'
Colonnes indexées : first_visit_id, user_id, plus plusieurs autres. Les requêtes doivent filtrer sur une colonne indexée, sinon la requête est rejetée comme parcours de table complet.
user_interests
Centres d’intérêt, catégories, tags et tags famille / croisé / montée en gamme déduits par utilisateur par le pipeline du tracker. Une ligne par (user_id, value, class, time). En lecture seule.
GET
POST
PUT
DELETE
✅
—
—
—
Colonnes
Colonne
Remarques
user_id
FK → users.user_id. Indexé.
value
Le jeton d’intérêt (par exemple un nom de catégorie, un tag, un mot-clé).
Flottant. Score de pertinence au sein de la classe.
n_times
Nombre de fois où cette valeur a été observée pour l’utilisateur.
time
Secondes Unix — dernière mise à jour de l’intérêt. Indexé.
Colonnes indexées : user_id, time. Les requêtes doivent filtrer sur une colonne indexée.
Exemples
# All interests for one user, strongest first
curl 'https://api:KEY@app.personyze.com/rest/user_interests
/where/user_id=5712334
/columns/value,class,rank,n_times,time
/order_by_desc/rank
/limit/100'
# Only categories, recently updated
curl 'https://api:KEY@app.personyze.com/rest/user_interests
/where/user_id=5712334&class=category
/order_by_desc/time
/limit/50'
products_stats_*
Compteurs d’interactions agrégés par produit, maintenus par le pipeline de synthèse hors ligne. Six fenêtres glissantes sont exposées sur des chemins distincts — choisissez celle qui correspond à votre horizon de rapport. Toutes partagent la même forme de colonnes et les mêmes index ; seule la fenêtre de temps diffère.
GET
POST
PUT
DELETE
✅
—
—
—
Points de terminaison
Chemin
Fenêtre
/rest/products_stats_1day
dernier jour
/rest/products_stats_2day
2 derniers jours
/rest/products_stats_4day
4 derniers jours
/rest/products_stats_week
7 derniers jours
/rest/products_stats_recent
récent (glissant — défini par le pipeline)
/rest/products_stats_all
depuis toujours
Identification
Colonne
Remarques
internal_id
Clé primaire. L’identifiant externe du produit (SKU / id du catalogue que vous avez fourni). Indexé.
Compteurs par produit (nombre d’interactions sur ce produit dans la fenêtre)
Colonne
Remarques
n_viewed
Nombre d’événements de vue. Indexé.
n_delivered
Nombre de recommandations diffusées (affichées). Indexé (composite avec n_viewed).
n_extra
Interactions « extra » (par exemple ajout au panier). Indexé (composite avec n_viewed).
n_favorite
Mis en favori / liste d’envies. Indexé (composite avec n_viewed).
n_goal
Objectifs atteints (achats). Indexé (composite avec n_viewed).
Statistiques de distribution sur tout le catalogue
La même valeur sur chaque ligne — décrit l’ensemble du catalogue dans cette fenêtre. Pour chaque indicateur M ∈ {viewed, delivered, extra, favorite, goal}:
Colonne
Remarques
overall_n_<M>
Somme sur tous les produits.
overall_avg_<M>
Moyenne sur tous les produits.
overall_avg_nonzero_<M>
Moyenne sur les produits ayant au moins un événement.
percentile_<M>
Rang centile de cette ligne pour l’indicateur.
Les 3 derniers utilisateurs ayant atteint l’objectif (acheteurs les plus récents de ce produit)
internal_id, n_viewed, n_delivered, n_extra, n_favorite, n_goal, last_goal_user_id_0, last_goal_user_id_1, last_goal_user_id_2. Les requêtes doivent filtrer sur l’une de ces colonnes (ou utiliser order_by) sur l’une d’elles.
Exemples
# Top 50 most-viewed products this week
curl 'https://api:KEY@app.personyze.com/rest/products_stats_week
/where/n_viewed>0
/columns/internal_id,n_viewed,n_delivered,n_extra,n_goal,percentile_viewed
/order_by_desc/n_viewed
/limit/50'
# Lookup one product's lifetime stats
curl 'https://api:KEY@app.personyze.com/rest/products_stats_all
/where/internal_id=SKU-12345'
# What a specific user purchased recently (matches against last 3 goal users)
curl 'https://api:KEY@app.personyze.com/rest/products_stats_recent
/where/last_goal_user_id_0=5712334
/columns/internal_id,n_goal,last_goal_user_time_0'
summary_actions
KPI quotidiens agrégés par action — une ligne par (day, action_id) pour les actions liées à une campagne précise (condition_id). En lecture seule.
GET
POST
PUT
DELETE
✅
—
—
—
Exigence d’indexation stricte.Seul day est indexé. Chaque requête doit inclure where/day… — il n’y a pas d’échappatoire par order_byseul.
Identification
Colonne
Remarques
day
Horodatage Unix (secondes) de 0 h 00 du jour à Greenwich (GMT+0000).
action_name
Nom de l’action.
action_id
Identifiant de l’action.
campaign_name
Nom de la campagne à laquelle appartient l’action.
campaign_id
Identifiant de la campagne à laquelle appartient l’action.
Exposition de l’action
Colonne
Remarques
n_executed
Nombre d’exécutions (les actions sont considérées comme exécutées même si le contenu visuel n’est pas encore affiché).
n_delivered
Nombre de fois où la page du navigateur nous a signalé que le contenu était devenu visible.
n_extra
Dépend du type d’action. Pour les actions HTML : nombre de clics. Pour les actions de formulaire : nombre d’envois.
n_failed
Compté uniquement pour les actions e-mail. Nombre d’échecs d’envoi d’e-mail (par exemple adresse invalide).
n_closed
Nombre de fois où l’utilisateur a cliqué sur le bouton « fermer » après que le contenu de l’action est devenu visible.
n_sessions_executed
Nombre de sessions distinctes comportant au moins un n_executed pour cette action.
n_sessions_delivered
Nombre de sessions distinctes comportant au moins un n_delivered.
n_sessions_extra
Nombre de sessions distinctes comportant au moins un n_extra.
n_sessions_failed
Nombre de sessions distinctes comportant au moins un n_failed.
n_sessions_closed
Nombre de sessions distinctes comportant au moins un n_closed.
Attribution produit (quand cette action a recommandé des produits)
Colonne
Remarques
products_goal_n_times
Nombre de produits (tous visiteurs confondus) ayant atteint « acheté » pendant une session où cette action a été exécutée. Compte chaque événement d’achat de produit : une seule commande de 3 articles en ajoute donc 3.
products_goal_n_sessions
Nombre de sessions distinctes où au moins un produit a été acheté après l’exécution de cette action.
products_goal_value
Somme des valeurs monétaires de tous les produits achetés comptés dans products_goal_n_times.
products_recom_viewed_n_times
Nombre de fois où un produit que cette action a recommandé a ensuite été consulté.
products_recom_viewed_n_sessions
Nombre de sessions distinctes où au moins un produit recommandé a été consulté.
products_recom_extra_n_times
Nombre de fois où un produit recommandé a ensuite été ajouté au panier (ou a atteint l’interaction « extra »).
products_recom_extra_n_sessions
Nombre de sessions distinctes où au moins un produit recommandé a atteint l’interaction « extra ».
products_recom_extra_value
Somme des valeurs monétaires de tous les produits recommandés ayant eu une interaction « extra ».
products_recom_goal_n_times
Nombre de fois où un produit recommandé a ensuite été acheté.
products_recom_goal_n_sessions
Nombre de sessions distinctes où au moins un produit recommandé a été acheté.
products_recom_goal_value
Somme des valeurs monétaires de tous les produits recommandés achetés.
Attribution des articles
Même forme que l’attribution produit, mais pour les articles : articles_recom_viewed_n_times, articles_recom_viewed_n_sessions, articles_recom_extra_n_times, articles_recom_extra_n_sessions, articles_recom_extra_value, articles_recom_goal_n_times, articles_recom_goal_n_sessions, articles_recom_goal_value.
Événements d’objectif personnalisés par compte
Un compte peut configurer jusqu’à 12 événements d’objectif. Pour chaque conteneur d’événement configuré sur votre compte avec un goal_event_index (N de 1 à 12), quatre colonnes supplémentaires apparaissent dans la réponse :
goal_event_N_name — Nom affiché de l’événement d’objectif configuré. Renvoyé comme chaîne littérale, identique sur chaque ligne.
goal_event_N_n_times — Nombre de fois où cet événement d’objectif s’est déclenché pendant une session où l’action a été exécutée.
goal_event_N_n_sessions — Nombre de sessions distinctes où cet événement d’objectif s’est déclenché au moins une fois après l’exécution de l’action.
goal_event_N_value — Somme des valeurs monétaires signalées pour cet événement d’objectif sur les occurrences comptées dans goal_event_N_n_times (zéro sauf si le conteneur de l’événement d’objectif est configuré pour capturer une valeur).
Exemples
# Last 30 days, daily KPIs per action
curl 'https://api:KEY@app.personyze.com/rest/summary_actions
/where/day>1730000000
/columns/day,action_name,n_executed,n_delivered,n_extra,products_goal_value
/order_by_desc/day
/limit/1000'
# A specific action's lifetime
curl 'https://api:KEY@app.personyze.com/rest/summary_actions
/where/action_id=42&day>1700000000
/order_by/day
/limit/1000'
tracker_code
Renvoie l’extrait JS à intégrer dans votre site pour amorcer le tracker Personyze. Son contenu dépend des réglages de votre compte (identifiant de compte, hôte de suivi, options async/no-hide).
GET
POST
PUT
DELETE
✅
—
—
—
Réponse
Un extrait text/html (ou du JS dans<script>) prêt à être placé dans un <head>. Le corps n’est pas du JSON — c’est le seul point de terminaison REST qui renvoie du HTML brut.
Conventions de l’extrait du tracker.L’extrait intègre l’identifiant de votre compte et la liste des noms d’hôte autorisés enregistrés pour ce compte. Ne le modifiez pas à la main ; récupérez-le à nouveau quand vous ajoutez de nouveaux domaines via l’interface. Pour les clients SDK natifs (iOS / Android), ce point de terminaison n’est pas pertinent — le SDK parle directement le protocole du tracker via des points de terminaison internes.
Étapes suivantes
📖 Syntaxe des paramètres de cheminTout sur where/columns/order_by/limit avec tous les opérateurs et des exemples. Lire →
🔑 AuthentificationGestion de la clé API, format de l’en-tête, codes d’erreur, configurations multi-comptes. Lire →