Guide d'intégration Magento / Adobe Commerce
Ce guide vous explique comment intégrer Tajo à Magento Open Source ou Adobe Commerce pour débloquer l’engagement client, les programmes de fidélité et les capacités d’automatisation du marketing.
Vue d’ensemble
L’intégration Tajo-Magento vous permet de :
- Synchroniser les données client automatiquement depuis votre boutique Magento
- Suivre les commandes et les produits pour un marketing personnalisé
- Gérer des programmes de fidélité avec points, niveaux et récompenses
- Automatiser les campagnes marketing via Brevo (email, SMS, WhatsApp)
- Prendre en charge le multi-site et les configurations multi-boutique
- Gérer des catalogues produits complexes avec des produits configurables
Prérequis
Avant de démarrer l’intégration, assurez-vous d’avoir :
- Magento 2.4+ ou Adobe Commerce (Cloud ou On-Premise)
- Compte Tajo avec un abonnement actif
- Compte Brevo (optionnel, pour l’automatisation du marketing)
- Accès administrateur à votre instance Magento
- Composer pour la gestion des dépendances
- PHP 8.1+ avec les extensions requises
Étape 1 : Installer l’extension Tajo
Via Composer (Recommandé)
# Ajouter le dépôt Tajocomposer config repositories.tajo composer https://packages.tajo.io
# Installer l'extensioncomposer require tajo/module-magento:^2.0
# Activer le modulebin/magento module:enable Tajo_Core Tajo_Sync Tajo_Loyalty
# Lancer la configurationbin/magento setup:upgradebin/magento setup:di:compilebin/magento cache:flushInstallation manuelle
# Télécharger et extraire dans app/codemkdir -p app/code/Tajocd app/code/Tajowget https://downloads.tajo.io/magento/tajo-magento-latest.zipunzip tajo-magento-latest.zip
# Activer et configurerbin/magento module:enable Tajo_Core Tajo_Sync Tajo_Loyaltybin/magento setup:upgradebin/magento setup:di:compilebin/magento cache:flushConfiguration
Naviguez vers Boutiques → Configuration → Tajo → Paramètres généraux :
<!-- app/etc/env.php ou via le panneau d'administration -->'tajo' => [ 'api_key' => 'your_tajo_api_key', 'api_secret' => 'your_tajo_api_secret', 'environment' => 'production', 'debug_mode' => false],'brevo' => [ 'api_key' => 'your_brevo_api_key']Étape 2 : Configurer la synchronisation des données
Paramètres de synchronisation des clients
Configurez dans Boutiques → Configuration → Tajo → Synchronisation des données :
{ "sync_settings": { "customers": { "enabled": true, "sync_frequency": "real-time", "fields": [ "email", "firstname", "lastname", "telephone", "group_id", "store_id", "website_id", "created_at", "addresses", "custom_attributes" ] }, "orders": { "enabled": true, "sync_frequency": "real-time", "include_items": true, "include_shipping": true, "include_payment": true }, "products": { "enabled": true, "sync_frequency": "hourly", "include_configurable": true, "include_images": true, "include_categories": true } }}Observateurs d’événements
Tajo observe ces événements Magento :
| Événement | Objectif |
|---|---|
customer_save_after | Synchroniser les mises à jour client vers Tajo & Brevo |
customer_register_success | Synchroniser les nouveaux clients, attribuer des points d’inscription |
sales_order_place_after | Suivre les achats, attribuer des points de fidélité |
sales_order_save_after | Mettre à jour le statut de commande, déclencher des campagnes |
checkout_cart_save_after | Suivre le panier pour l’abandon |
catalog_product_save_after | Maintenir le catalogue produits synchronisé |
Configuration multi-site
Pour les configurations Magento multi-site :
<?php// di.xml - Configurer les paramètres par sitenamespace Tajo\Core\Model;
class WebsiteConfig{ public function getConfigForWebsite($websiteId): array { return [ 'api_key' => $this->scopeConfig->getValue( 'tajo/general/api_key', ScopeInterface::SCOPE_WEBSITE, $websiteId ), 'loyalty_program' => $this->scopeConfig->getValue( 'tajo/loyalty/program_id', ScopeInterface::SCOPE_WEBSITE, $websiteId ) ]; }}Importation initiale des données
Importez les données existantes via CLI :
# Importer tous les clientsbin/magento tajo:sync:customers --all
# Importer les commandes des 90 derniers joursbin/magento tajo:sync:orders --from="90 days ago"
# Importer le catalogue produitsbin/magento tajo:sync:products --all
# Synchronisation complète avec barre de progressionbin/magento tajo:sync:full --verboseOu de manière programmatique :
<?phpnamespace Tajo\Sync\Console\Command;
use Magento\Customer\Api\CustomerRepositoryInterface;use Tajo\Core\Api\CustomerSyncInterface;
class SyncCustomersCommand extends Command{ public function execute(InputInterface $input, OutputInterface $output) { $searchCriteria = $this->searchCriteriaBuilder->create(); $customers = $this->customerRepository->getList($searchCriteria);
foreach ($customers->getItems() as $customer) { $this->customerSync->sync($customer); $output->writeln("Synchronisé : " . $customer->getEmail()); } }}Étape 3 : Configurer le programme de fidélité
Configurer le système de points
Configurez dans Boutiques → Configuration → Tajo → Fidélité :
<?php// Configuration de la fidélité$pointsConfig = [ // Points par unité monétaire dépensée 'purchase_points' => [ 'enabled' => true, 'rate' => 1, // 1 point par $1 'rounding_mode' => 'floor', 'include_tax' => false, 'include_shipping' => false ],
// Actions bonus 'bonus_points' => [ 'account_creation' => 100, 'first_purchase' => 200, 'review_submitted' => 50, 'referral_made' => 500, 'birthday_bonus' => 100, 'newsletter_signup' => 25, 'wishlist_share' => 15 ],
// Multiplicateurs par groupe client 'group_multipliers' => [ 'General' => 1.0, 'Wholesale' => 0.5, 'Retailer' => 0.75, 'VIP' => 2.0 ]];Bloc de fidélité dans les templates
Ajoutez des widgets de fidélité à votre thème :
<!-- Dans votre template .phtml --><?php/** @var \Tajo\Loyalty\Block\Customer\Points $block */?>
<div class="tajo-loyalty-widget"> <h3><?= __('Vos récompenses') ?></h3>
<div class="points-balance"> <span class="label"><?= __('Solde de points :') ?></span> <span class="value"><?= $block->getPointsBalance() ?></span> </div>
<div class="loyalty-tier"> <span class="label"><?= __('Votre niveau :') ?></span> <span class="value tier-<?= strtolower($block->getCurrentTier()) ?>"> <?= $block->getCurrentTier() ?> </span> </div>
<div class="points-to-next-tier"> <?= __('%1 points jusqu\'à %2', $block->getPointsToNextTier(), $block->getNextTier()) ?> </div></div>Niveaux de fidélité
<?php$loyaltyTiers = [ [ 'name' => 'Bronze', 'min_points' => 0, 'customer_group' => 'General', 'benefits' => [ '1 point par $1 dépensé', 'Points bonus d\'anniversaire', 'Promotions réservées aux membres' ] ], [ 'name' => 'Silver', 'min_points' => 1000, 'customer_group' => 'Silver Members', 'benefits' => [ 'Multiplicateur de points x1,25', 'Livraison gratuite pour les commandes de $50+', 'Accès anticipé aux ventes' ] ], [ 'name' => 'Gold', 'min_points' => 5000, 'customer_group' => 'Gold Members', 'benefits' => [ 'Multiplicateur de points x1,5', 'Livraison gratuite sur toutes les commandes', 'Accès exclusif aux produits', 'Support prioritaire' ] ], [ 'name' => 'Platinum', 'min_points' => 15000, 'customer_group' => 'VIP', 'benefits' => [ 'Multiplicateur de points x2', 'Livraison express gratuite', 'Personal shopper', 'Cadeau annuel' ] ]];Récompenses sous forme de règles de prix panier
<?php// Créer une récompense sous forme de règle de prix panier Magentonamespace Tajo\Loyalty\Model\Reward;
class RewardGenerator{ public function createRewardCoupon( int $customerId, string $rewardType, float $value ): string { $rule = $this->ruleFactory->create(); $rule->setName('Loyalty Reward - ' . $rewardType) ->setIsActive(true) ->setCustomerGroupIds([0, 1, 2, 3]) ->setWebsiteIds([1]) ->setCouponType(Rule::COUPON_TYPE_SPECIFIC) ->setUsesPerCoupon(1) ->setUsesPerCustomer(1) ->setSimpleAction($this->getActionType($rewardType)) ->setDiscountAmount($value) ->setStopRulesProcessing(false);
$this->ruleRepository->save($rule);
// Générer un code coupon unique $coupon = $this->couponFactory->create(); $coupon->setRuleId($rule->getRuleId()) ->setCode($this->generateCouponCode($customerId)) ->setUsageLimit(1) ->setUsagePerCustomer(1) ->setType(Coupon::TYPE_GENERATED);
$this->couponRepository->save($coupon);
return $coupon->getCode(); }}Étape 4 : Récupération de panier abandonné
Observateur de suivi du panier
<?phpnamespace Tajo\Sync\Observer;
use Magento\Framework\Event\Observer;use Magento\Framework\Event\ObserverInterface;
class CartSaveObserver implements ObserverInterface{ public function execute(Observer $observer) { /** @var \Magento\Quote\Model\Quote $quote */ $quote = $observer->getEvent()->getQuote();
if ($quote->getItemsCount() === 0) { return; }
$customerEmail = $quote->getCustomerEmail(); if (!$customerEmail) { return; }
$cartItems = []; foreach ($quote->getAllVisibleItems() as $item) { $cartItems[] = [ 'productId' => $item->getProductId(), 'sku' => $item->getSku(), 'name' => $item->getName(), 'quantity' => $item->getQty(), 'price' => $item->getPrice(), 'rowTotal' => $item->getRowTotal(), 'image' => $this->getProductImage($item->getProduct()) ]; }
$this->tajoApi->trackCart([ 'email' => $customerEmail, 'quoteId' => $quote->getId(), 'items' => $cartItems, 'subtotal' => $quote->getSubtotal(), 'grandTotal' => $quote->getGrandTotal(), 'currency' => $quote->getQuoteCurrencyCode(), 'checkoutUrl' => $this->urlBuilder->getUrl('checkout') ]); }}Modèles d’email de récupération
<template id="tajo_cart_recovery_1" label="Cart Recovery - First Reminder" file="Tajo_Sync::email/cart_recovery_1.html"/><template id="tajo_cart_recovery_2" label="Cart Recovery - With Discount" file="Tajo_Sync::email/cart_recovery_2.html"/>Étape 5 : Automatisation du marketing
Segments clients
<?php// Créer des segments basés sur les données Magento$magentoSegments = [ // Comportement d'achat [ 'name' => 'Premiers acheteurs', 'conditions' => [ 'orders_count' => 1 ] ], [ 'name' => 'Clients réguliers', 'conditions' => [ 'orders_count' => ['$gte' => 2] ] ], [ 'name' => 'Clients à haute valeur', 'conditions' => [ 'lifetime_sales' => ['$gte' => 1000] ] ],
// Groupes clients [ 'name' => 'Clients grossistes', 'conditions' => [ 'group_id' => 2 // Groupe Wholesale ] ],
// Spécifique à la boutique/au site [ 'name' => 'Clients de la boutique US', 'conditions' => [ 'website_id' => 1 ] ]];Automatisation des événements de commande
<?phpnamespace Tajo\Sync\Observer;
class OrderPlaceAfterObserver implements ObserverInterface{ public function execute(Observer $observer) { /** @var \Magento\Sales\Model\Order $order */ $order = $observer->getEvent()->getOrder(); $customer = $this->getCustomerData($order);
// Attribuer des points de fidélité $pointsEarned = $this->loyaltyCalculator->calculate($order, $customer); $this->tajoApi->awardPoints($customer['id'], $pointsEarned, [ 'reason' => 'purchase', 'orderId' => $order->getIncrementId() ]);
// Envoyer à Brevo pour les campagnes $this->brevoApi->trackEvent($customer['email'], 'order_placed', [ 'order_id' => $order->getIncrementId(), 'order_total' => $order->getGrandTotal(), 'points_earned' => $pointsEarned, 'loyalty_tier' => $customer['loyaltyTier'], 'products' => $this->getOrderProducts($order), 'store_id' => $order->getStoreId() ]);
// Vérifier la montée en niveau $this->loyaltyService->checkTierUpgrade($customer['id']); }}Étape 6 : Recommandations de produits
Configurer le moteur de recommandations
<?php$recommendationConfig = [ 'algorithms' => [ [ 'name' => 'frequently_bought_together', 'weight' => 0.3, 'source' => 'magento_related' ], [ 'name' => 'similar_products', 'weight' => 0.25, 'source' => 'category_based' ], [ 'name' => 'customer_also_viewed', 'weight' => 0.2, 'source' => 'reports_viewed' ], [ 'name' => 'upsell_products', 'weight' => 0.15, 'source' => 'magento_upsell' ], [ 'name' => 'personalized', 'weight' => 0.1, 'source' => 'tajo_ml' ] ], 'filters' => [ 'exclude_purchased' => true, 'in_stock_only' => true, 'same_website' => true ]];Widget de recommandations
<referenceContainer name="content.aside"> <block class="Tajo\Recommendations\Block\Product\Recommendations" name="tajo.product.recommendations" template="Tajo_Recommendations::product/recommendations.phtml"> <arguments> <argument name="algorithm" xsi:type="string">frequently_bought_together</argument> <argument name="limit" xsi:type="number">4</argument> </arguments> </block></referenceContainer>Étape 7 : Commandes CLI
Tajo fournit ces commandes CLI :
# Commandes de synchronisationbin/magento tajo:sync:customers [--all] [--from="date"]bin/magento tajo:sync:orders [--all] [--from="date"]bin/magento tajo:sync:products [--all]bin/magento tajo:sync:full
# Commandes de fidélitébin/magento tajo:loyalty:recalculate [--customer-id=ID]bin/magento tajo:loyalty:award --customer-id=ID --points=100 --reason="Manual"bin/magento tajo:loyalty:tiers:update
# Commandes de débogagebin/magento tajo:test:connectionDépannage
Problèmes courants
Conflits d’extension
# Vérifier les conflitsbin/magento module:status | grep -i tajobin/magento setup:db:status
# Vider les cachesbin/magento cache:cleanbin/magento cache:flushrm -rf generated/* var/cache/* var/page_cache/*Problèmes de synchronisation
<?php// Activer la journalisation de débogage// Dans app/etc/env.php'tajo' => [ 'debug_mode' => true, 'log_level' => 'debug']
// Vérifier les journaux// var/log/tajo.log// var/log/tajo_sync.logOptimisation des performances
<?php// Utiliser la synchronisation asynchrone pour les grands catalogues<type name="Tajo\Sync\Model\Queue\Publisher"> <arguments> <argument name="async" xsi:type="boolean">true</argument> <argument name="batchSize" xsi:type="number">100</argument> </arguments></type>Prochaines étapes
- Configurer l’intégration Brevo pour les campagnes email/SMS
- Configurer les webhooks pour les événements en temps réel
- Créer des segments clients pour le marketing ciblé
- Créer des modèles email pour les campagnes automatisées
Support
- Support intégration : [email protected]
- Documentation Magento : developer.adobe.com/commerce
- Référence API : docs.tajo.io/api
- Forum communautaire : community.tajo.io