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é)

Terminal window
# Ajouter le dépôt Tajo
composer config repositories.tajo composer https://packages.tajo.io
# Installer l'extension
composer require tajo/module-magento:^2.0
# Activer le module
bin/magento module:enable Tajo_Core Tajo_Sync Tajo_Loyalty
# Lancer la configuration
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:flush

Installation manuelle

Terminal window
# Télécharger et extraire dans app/code
mkdir -p app/code/Tajo
cd app/code/Tajo
wget https://downloads.tajo.io/magento/tajo-magento-latest.zip
unzip tajo-magento-latest.zip
# Activer et configurer
bin/magento module:enable Tajo_Core Tajo_Sync Tajo_Loyalty
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:flush

Configuration

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énementObjectif
customer_save_afterSynchroniser les mises à jour client vers Tajo & Brevo
customer_register_successSynchroniser les nouveaux clients, attribuer des points d’inscription
sales_order_place_afterSuivre les achats, attribuer des points de fidélité
sales_order_save_afterMettre à jour le statut de commande, déclencher des campagnes
checkout_cart_save_afterSuivre le panier pour l’abandon
catalog_product_save_afterMaintenir le catalogue produits synchronisé

Configuration multi-site

Pour les configurations Magento multi-site :

<?php
// di.xml - Configurer les paramètres par site
namespace 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 :

Terminal window
# Importer tous les clients
bin/magento tajo:sync:customers --all
# Importer les commandes des 90 derniers jours
bin/magento tajo:sync:orders --from="90 days ago"
# Importer le catalogue produits
bin/magento tajo:sync:products --all
# Synchronisation complète avec barre de progression
bin/magento tajo:sync:full --verbose

Ou de manière programmatique :

<?php
namespace 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 Magento
namespace 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

<?php
namespace 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

email_templates.xml
<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

<?php
namespace 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

catalog_product_view.xml
<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 :

Terminal window
# Commandes de synchronisation
bin/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ébogage
bin/magento tajo:test:connection
bin/magento tajo:debug:customer --email="[email protected]"

Dépannage

Problèmes courants

Conflits d’extension

Terminal window
# Vérifier les conflits
bin/magento module:status | grep -i tajo
bin/magento setup:db:status
# Vider les caches
bin/magento cache:clean
bin/magento cache:flush
rm -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.log

Optimisation des performances

di.xml
<?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

  1. Configurer l’intégration Brevo pour les campagnes email/SMS
  2. Configurer les webhooks pour les événements en temps réel
  3. Créer des segments clients pour le marketing ciblé
  4. Créer des modèles email pour les campagnes automatisées

Support

Assistant AI

Bonjour ! Posez-moi vos questions sur la documentation.

Commencez gratuitement avec Brevo