Passer au contenu

Créer des rapports sur les événements eCommerce Order Placed dans le générateur de tableaux de bord

Créez des graphiques personnalisés de chiffre d’affaires et de commandes à partir des événements recommandés ecommerce.order_placed en enregistrant des requêtes SQL dans le générateur de requêtes et en visualisant les résultats dans le générateur de tableaux de bord.

À propos de cet exemple

Flash & Thread, une marque fictive de prêt-à-porter, enregistre ses commandes à l’aide des événements recommandés eCommerce. Son équipe marketing souhaite suivre le chiffre d’affaires quotidien, la valeur moyenne des commandes (AOV) et le volume de commandes dans un seul tableau de bord, au-delà de la vue prédéfinie d’attribution au dernier contact.

Ce scénario utilise le générateur de requêtes pour interroger ecommerce.order_placed à partir des tables d’événements partagées Snowflake, puis ajoute la requête enregistrée sous forme de vignette Requêtes personnalisées dans le générateur de tableaux de bord. Vous pouvez reproduire ce processus pour d’autres indicateurs (nouveaux acheteurs ou acheteurs réguliers, catégories de produits ou chiffre d’affaires par Segment).

Utilisez cette approche lorsque les tableaux de bord eCommerce intégrés ne couvrent pas la combinaison d’indicateurs dont vous avez besoin. Pour le chiffre d’affaires attribué au dernier contact, consultez plutôt le tableau de bord Revenue - Last Touch Attribution.

Points à prendre en compte

  • Déploiement des événements : l’événement ecommerce.order_placed doit être déployé et envoyer total_value (ainsi que les données produit si nécessaire) pour que les requêtes renvoient des données. Si vous utilisez le connecteur Shopify, les événements recommandés sont peut-être déjà disponibles.
  • Accès au Query Builder : vous devez disposer de l’autorisation utilisateur « Afficher les données d’identification personnelle » pour utiliser le Query Builder.
  • Conservation des données : par défaut, le Query Builder renvoie les données des 60 derniers jours. Avec le partage de données Snowflake, vous pouvez interroger jusqu’à deux ans de données conservées. Consultez la page Query Builder.
  • Délais d’expiration : les requêtes dont l’exécution dépasse six minutes expirent. Si un rapport échoue, réduisez la plage de dates, filtrez sur TIME ou réduisez la taille de l’audience. Les tables d’événements sont regroupées sur TIME : privilégiez un filtrage sur le moment où l’événement s’est produit.
  • Champ de chiffre d’affaires : les exemples de requêtes additionnent total_value à partir des properties de l’événement. Dans les rapports produit, le chiffre d’affaires eCommerce standardisé de Braze est souvent calculé à partir du price et de la quantity de chaque produit. Alignez total_value sur les lignes de produits ou adaptez le SQL à votre schéma.
  • Libellés de colonnes : placez les noms de colonnes affichés entre guillemets doubles (par exemple "Date", "Total Revenue") afin que le Dashboard Builder affiche des en-têtes d’axes et de tableaux lisibles.
  • Tests : le SQL de cet article est fourni à titre d’exemple. Validez les requêtes dans votre espace de travail avant de partager largement vos tableaux de bord.

Configuration

Étape 1 : Créer une requête SQL pour le chiffre d’affaires quotidien

  1. Accédez à Analytics > Générateur de requêtes.
  2. Sélectionnez Créer une requête SQL, puis Éditeur SQL.
  3. Nommez la requête (par exemple, Flash Thread — daily eCommerce revenue).
  4. Collez et adaptez la requête suivante pour obtenir le chiffre d’affaires total par jour calendaire sur les 60 derniers jours :
SELECT
  DATE_TRUNC('day', TO_TIMESTAMP_NTZ(TIME))::DATE AS "Date",
  SUM(PARSE_JSON(PROPERTIES):total_value::NUMBER(18, 2)) AS "Total Revenue"
FROM USERS_BEHAVIORS_CUSTOMEVENT_SHARED
WHERE NAME = 'ecommerce.order_placed'
  AND TO_TIMESTAMP_NTZ(TIME) >= DATEADD(day, -60, CURRENT_TIMESTAMP())
  AND TO_TIMESTAMP_NTZ(TIME) <= CURRENT_TIMESTAMP()
GROUP BY 1
ORDER BY 1;
  1. Sélectionnez Exécuter la requête, puis Enregistrer.

Pour plus de détails sur la configuration du générateur de requêtes, consultez Exécuter des rapports dans le générateur de requêtes.

Étape 2 : Ajouter la requête à une vignette du générateur de tableaux de bord

  1. Accédez à Analytics > Générateur de tableaux de bord.
  2. Sélectionnez Créer un tableau de bord (ou ouvrez un tableau de bord existant).
  3. Comme source de données, sélectionnez Requêtes personnalisées.
  4. Sélectionnez + Ajouter une vignette, puis choisissez la requête enregistrée à l’étape 1.
  5. Sélectionnez l’icône en forme de crayon pour modifier la vignette :
    • Définissez le type de graphique sur Graphique linéaire.
    • Définissez l’axe X sur Date.
    • Définissez l’axe Y sur Total Revenue.
  6. Redimensionnez la vignette si nécessaire, puis sélectionnez Enregistrer.
  7. Sélectionnez Afficher le tableau de bord > Exécuter le tableau de bord.

La génération du tableau de bord peut prendre quelques minutes. Consultez Créer un tableau de bord personnalisé.

Étape 3 : Ajouter d’autres indicateurs Order Placed (facultatif)

Créez des requêtes enregistrées distinctes, puis ajoutez chacune d’elles sous forme de vignette indépendante (jusqu’à 10 vignettes par tableau de bord).

Valeur moyenne des commandes et nombre de commandes par jour

SELECT
  DATE_TRUNC('day', TO_TIMESTAMP_NTZ(TIME))::DATE AS "Date",
  AVG(PARSE_JSON(PROPERTIES):total_value::NUMBER(18, 2)) AS "Average Order Value",
  COUNT(*) AS "No. of Orders"
FROM USERS_BEHAVIORS_CUSTOMEVENT_SHARED
WHERE NAME = 'ecommerce.order_placed'
  AND TO_TIMESTAMP_NTZ(TIME) >= DATEADD(day, -60, CURRENT_TIMESTAMP())
  AND TO_TIMESTAMP_NTZ(TIME) <= CURRENT_TIMESTAMP()
GROUP BY 1
ORDER BY 1;

Utilisez un graphique linéaire ou à barres avec Date sur l’axe X et les deux indicateurs sur l’axe Y (désélectionnez les colonnes que vous ne souhaitez pas afficher).

Nouveaux acheteurs et acheteurs récurrents par jour

Ce scénario compare le jour du premier ecommerce.order_placed de chaque utilisateur aux jours d’achat suivants. Il est plus précis lorsque la fenêtre du générateur de requêtes couvre l’intégralité de la période de reporting (par exemple, la fenêtre par défaut de 60 jours).

WITH order_days AS (
  SELECT DISTINCT
    USER_ID,
    DATE_TRUNC('day', TO_TIMESTAMP_NTZ(TIME))::DATE AS purchase_day
  FROM USERS_BEHAVIORS_CUSTOMEVENT_SHARED
  WHERE NAME = 'ecommerce.order_placed'
),
first_purchase AS (
  SELECT
    USER_ID,
    MIN(purchase_day) AS first_day
  FROM order_days
  GROUP BY USER_ID
),
per_day_purchasers AS (
  SELECT DISTINCT
    USER_ID,
    purchase_day
  FROM order_days
)
SELECT
  p.purchase_day AS "Date",
  COUNT(DISTINCT CASE
    WHEN f.first_day = p.purchase_day THEN p.USER_ID
  END) AS "New Purchasers",
  COUNT(DISTINCT CASE
    WHEN f.first_day < p.purchase_day THEN p.USER_ID
  END) AS "Returning Purchasers"
FROM per_day_purchasers AS p
INNER JOIN first_purchase AS f
  ON p.USER_ID = f.USER_ID
GROUP BY 1
ORDER BY 1;

Catégorie de produit à partir des lignes de commande

Aplatissez le tableau products et filtrez sur votre champ de catégorie. Remplacez metadata.category si vous utilisez une autre clé de métadonnées produit.

SELECT
  f.value:metadata:category::STRING AS "Product Category",
  COUNT(*) AS "Line Items"
FROM USERS_BEHAVIORS_CUSTOMEVENT_SHARED,
  LATERAL FLATTEN(INPUT => PARSE_JSON(PROPERTIES):products) f
WHERE NAME = 'ecommerce.order_placed'
  AND f.value:metadata:category::STRING IS NOT NULL
  AND TRIM(f.value:metadata:category::STRING) != ''
  AND LOWER(TRIM(f.value:metadata:category::STRING)) != 'undefined'
GROUP BY 1
ORDER BY 2 DESC;

Achats et chiffre d’affaires par Segment (analyse des Segments)

Cette requête nécessite le suivi analytique des Segments sur les Segments concernés par vos rapports. Utilisez des variables SQL pour les sélecteurs de dates.

WITH event_conversions AS (
  SELECT
    user_id,
    time,
    TRY_CAST(GET_PATH(PARSE_JSON(PROPERTIES), 'total_value')::string AS FLOAT) AS price,
    id AS purchase_event_id,
    f.value::string AS user_segment_membership_id
  FROM USERS_BEHAVIORS_CUSTOMEVENT_SHARED,
    LATERAL FLATTEN(input => user_segment_membership_ids) AS f
  WHERE NAME = 'ecommerce.order_placed'
    AND time > {{start_date.${Start Date}}}
    AND time < {{end_date.${End Date}}}
)
SELECT
  user_segment_membership_id AS "Segment Analytics Id",
  COUNT(DISTINCT purchase_event_id) AS "Total Purchases",
  ROUND(SUM(price), 2) AS "Total Revenue"
FROM event_conversions
GROUP BY 1
ORDER BY 3 DESC;

Autres rapports eCommerce intégrés

Rapport Quand l’utiliser
Revenue - Last Touch Attribution Chiffre d’affaires attribué au dernier contact, par campagne ou par Canvas
Rapport sur les événements personnalisés Volume et fréquence des événements recommandés
Conversions de campagne ou de Canvas ecommerce.order_placed est l’événement de conversion principal
New Stuff!