Évènement personnalisé qui n'apparait pas dans les logs

Bonjour,

Je souhaite créer une série d’évènements personnalisés dans le cadre d’une boutique e-commerce à abonnements (géré par Woo Sub) pour faciliter le traitement des commandes et mettre à jour les fiches contacts dans Brevo.

J’ai donc suivi la documentation, réaliser plusieurs tests et je suis parvenu à créer un évènement de test avec comme retour de l’API le code 204 (Event has been tracked successfully) dans les logs Wordpress mais je n’ai absolument rien dans les logs Brevo.

Il se déclenche lorsqu’un abonnement devient actif dans la boutique, soit manuellement (lorsqu’il s’agit d’un virement) soit automatiquement à la commande.

Pourtant, j’ai le sentiment d’identifier correctement le visiteur et de remonter une structure de données qui correspond aux attentes de l’API. Avez-vous rencontré un problème similaire ?

Je vous partage mon code :

add_action('woocommerce_subscription_status_changed', 'check_subscription_status', 10, 3);

function check_subscription_status($subscription_id, $old_status, $new_status) {
    if ($new_status === 'active') {
        send_brevo_subscription_active_event($subscription_id);
    }
}

function send_brevo_subscription_active_event( $subscription_id ) {
    error_log("Subscription activated for ID: " . $subscription_id);

    if (!function_exists('wcs_get_subscription') || !class_exists('WC_Customer')) {
        error_log("WooCommerce Subscriptions or WooCommerce Core is not activated.");
        return;
    }

    $subscription = wcs_get_subscription($subscription_id);
    if (!$subscription) {
        error_log("No subscription found for ID: " . $subscription_id);
        return;
    }

    $customer_id = $subscription->get_customer_id();
    $customer = new WC_Customer($customer_id);
    $customer_email = $customer->get_email();
    $product_name = 'N/A';

    $items = $subscription->get_items();
    if (!empty($items)) {
        $item = reset($items);
        $product = $item->get_product();
        if ($product) {
            $product_name = $product->get_name();
        }
    }

    error_log("Customer email: " . $customer_email);

    ?>
    <script type="text/javascript">
        (function() {
            window.sib = {
                equeue: [],
                client_key: 'XXX'
            };
            window.sendinblue = {};
            for (var j = ['track', 'identify', 'trackLink', 'page'], i = 0; i < j.length; i++) {
                (function(k) {
                    window.sendinblue[k] = function() {
                        var arg = Array.prototype.slice.call(arguments);
                        (window.sib[k] || function() {
                            var t = {};
                            t[k] = arg;
                            window.sib.equeue.push(t);
                        })(arg[0], arg[1], arg[2], arg[3]);
                    };
                })(j[i]);
            }
            var n = document.createElement("script"),
                i = document.getElementsByTagName("script")[0];
            n.type = "text/javascript", n.id = "sendinblue-js", n.async = true, 
            n.src = "https://sibautomation.com/sa.js?key=" + window.sib.client_key;
            i.parentNode.insertBefore(n, i);

            window.sendinblue.identify({
                'email': '<?php echo $customer_email; ?>',
                'id': '<?php echo $customer_id; ?>'
            });

            window.sendinblue.track('subscription_activated', {
                'SUBSCRIPTION_ID': '<?php echo $subscription_id; ?>',
                'PLAN': '<?php echo $product_name; ?>',
                'AMOUNT': '<?php echo $subscription->get_total(); ?>'
            });
        })();
    </script>
    <?php

    $event_data = array(
        'email' => $customer_email,
        'event' => 'subscription_activated',
        'eventdata' => array(
            'data' => array(
                'SUBSCRIPTION_ID' => $subscription_id,
                'PLAN' => $product_name,
                'AMOUNT' => $subscription->get_total()
            )
        )
    );

    $api_key = 'XXX';
    $api_url = 'https://in-automate.brevo.com/api/v2/trackEvent';

    $response = wp_remote_post($api_url, array(
        'headers' => array(
            'Content-Type' => 'application/json',
            'ma-key' => $api_key
        ),
        'body' => json_encode($event_data)
    ));

    if (is_wp_error($response)) {
        error_log("Error sending data to Brevo: " . $response->get_error_message());
    } else {
        $response_code = wp_remote_retrieve_response_code($response);
        $response_body = wp_remote_retrieve_body($response);
        error_log("Brevo API response: $response_code, $response_body");
    }
}

Merci de votre aide.

Bonjour @dbadaire ,

Merci pour votre post.
Ce que vous voulez dire, c’est que vous ne voyez pas l’évènement subscription_activated dans les logs Brevo, c’est bien cela ?

Bonjour,

Exactement.

Bonjour,

Avez-vous une idée ?

Merci

Bonjour, c’est étrange effectivement.

De ce que je comprends Wordpress renvoie 204, mais on ne sait pas si Brevo renvoie un code 200 ou 204, et cela ne remonte pas dans Brevo. Est-ce que vous avez testé l’envoi de cet évènement manuellement (pas via wordpress-, pour être sûr que le payload est le bon ?

Bonjour,

J’ai suivi vos recommandations et réalisé un envoi manuel depuis getpostman.co

J’ai également obtenu le code 204 en utilisant une adresse e-mail présent dans notre base, mais toujours rien dans les logs Brevo…

Bonjour @dbadaire , oui c’est très étrange, cela devrait fonctionner.

Je pense que le mieux est de contacter le support Brevo alors: contact@brevo.com