Magento / Adobe Commerce Integrationsleitfaden
Dieser Leitfaden führt dich durch die Integration von Tajo mit Magento Open Source oder Adobe Commerce, um Kundenengagement, Loyalty-Programme und Marketing-Automatisierung freizuschalten.
Überblick
Mit der Tajo-Magento-Integration kannst du:
- Kundendaten automatisch aus deinem Magento-Shop synchronisieren
- Bestellungen und Produkte für personalisiertes Marketing verfolgen
- Loyalty-Programme mit Punkten, Tiers und Prämien betreiben
- Marketing-Kampagnen automatisieren über Brevo (E-Mail, SMS, WhatsApp)
- Multi-Website- und Multi-Store-Konfigurationen unterstützen
- Komplexe Produktkataloge mit konfigurierbaren Produkten abbilden
Voraussetzungen
Bevor du mit der Integration startest, stelle sicher, dass du Folgendes hast:
- Magento 2.4+ oder Adobe Commerce (Cloud oder On-Premise)
- Tajo-Konto mit aktivem Abonnement
- Brevo-Konto (optional, für Marketing-Automatisierung)
- Admin-Zugang zu deiner Magento-Instanz
- Composer für das Dependency-Management
- PHP 8.1+ mit den erforderlichen Erweiterungen
Schritt 1: Tajo-Erweiterung installieren
Über Composer (empfohlen)
# Tajo-Repository hinzufügencomposer config repositories.tajo composer https://packages.tajo.io
# Erweiterung installierencomposer require tajo/module-magento:^2.0
# Modul aktivierenbin/magento module:enable Tajo_Core Tajo_Sync Tajo_Loyalty
# Setup ausführenbin/magento setup:upgradebin/magento setup:di:compilebin/magento cache:flushManuelle Installation
# Herunterladen und nach app/code entpackenmkdir -p app/code/Tajocd app/code/Tajowget https://downloads.tajo.io/magento/tajo-magento-latest.zipunzip tajo-magento-latest.zip
# Aktivieren und einrichtenbin/magento module:enable Tajo_Core Tajo_Sync Tajo_Loyaltybin/magento setup:upgradebin/magento setup:di:compilebin/magento cache:flushKonfiguration
Navigiere zu Stores → Configuration → Tajo → General Settings:
<!-- app/etc/env.php oder über das Admin-Panel -->'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']Schritt 2: Datensynchronisation konfigurieren
Einstellungen für die Kundensynchronisation
Konfiguriere unter Stores → Configuration → Tajo → Data Sync:
{ "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 } }}Event-Observer
Tajo beobachtet folgende Magento-Events:
| Event | Zweck |
|---|---|
customer_save_after | Kunden-Updates zu Tajo & Brevo synchronisieren |
customer_register_success | Neue Kunden synchronisieren, Signup-Punkte vergeben |
sales_order_place_after | Käufe erfassen, Loyalty-Punkte vergeben |
sales_order_save_after | Bestellstatus aktualisieren, Kampagnen auslösen |
checkout_cart_save_after | Warenkorb für Abandonment verfolgen |
catalog_product_save_after | Produktkatalog synchron halten |
Multi-Website-Konfiguration
Für Magento-Setups mit mehreren Websites:
<?php// di.xml – Einstellungen pro Website konfigurierennamespace 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 ) ]; }}Initialer Datenimport
Importiere bestehende Daten über die CLI:
# Alle Kunden importierenbin/magento tajo:sync:customers --all
# Bestellungen der letzten 90 Tage importierenbin/magento tajo:sync:orders --from="90 days ago"
# Produktkatalog importierenbin/magento tajo:sync:products --all
# Voll-Sync mit Fortschrittsanzeigebin/magento tajo:sync:full --verboseOder programmatisch:
<?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("Synced: " . $customer->getEmail()); } }}Schritt 3: Loyalty-Programm einrichten
Punktesystem konfigurieren
Konfiguriere unter Stores → Configuration → Tajo → Loyalty:
<?php// Loyalty-Konfiguration$pointsConfig = [ // Punkte je ausgegebener Währungseinheit 'purchase_points' => [ 'enabled' => true, 'rate' => 1, // 1 Punkt je 1 $ 'rounding_mode' => 'floor', 'include_tax' => false, 'include_shipping' => false ],
// Bonus-Aktionen 'bonus_points' => [ 'account_creation' => 100, 'first_purchase' => 200, 'review_submitted' => 50, 'referral_made' => 500, 'birthday_bonus' => 100, 'newsletter_signup' => 25, 'wishlist_share' => 15 ],
// Multiplikatoren je Kundengruppe 'group_multipliers' => [ 'General' => 1.0, 'Wholesale' => 0.5, 'Retailer' => 0.75, 'VIP' => 2.0 ]];Loyalty-Block in Templates
Füge Loyalty-Widgets in dein Theme ein:
<!-- In deinem .phtml-Template --><?php/** @var \Tajo\Loyalty\Block\Customer\Points $block */?>
<div class="tajo-loyalty-widget"> <h3><?= __('Your Rewards') ?></h3>
<div class="points-balance"> <span class="label"><?= __('Points Balance:') ?></span> <span class="value"><?= $block->getPointsBalance() ?></span> </div>
<div class="loyalty-tier"> <span class="label"><?= __('Your Tier:') ?></span> <span class="value tier-<?= strtolower($block->getCurrentTier()) ?>"> <?= $block->getCurrentTier() ?> </span> </div>
<div class="points-to-next-tier"> <?= __('%1 points until %2', $block->getPointsToNextTier(), $block->getNextTier()) ?> </div></div>Loyalty-Tiers
<?php$loyaltyTiers = [ [ 'name' => 'Bronze', 'min_points' => 0, 'customer_group' => 'General', 'benefits' => [ '1 point per $1 spent', 'Birthday bonus points', 'Member-only promotions' ] ], [ 'name' => 'Silver', 'min_points' => 1000, 'customer_group' => 'Silver Members', 'benefits' => [ '1.25x points multiplier', 'Free shipping on orders $50+', 'Early access to sales' ] ], [ 'name' => 'Gold', 'min_points' => 5000, 'customer_group' => 'Gold Members', 'benefits' => [ '1.5x points multiplier', 'Free shipping on all orders', 'Exclusive product access', 'Priority support' ] ], [ 'name' => 'Platinum', 'min_points' => 15000, 'customer_group' => 'VIP', 'benefits' => [ '2x points multiplier', 'Free express shipping', 'Personal shopper', 'Annual gift' ] ]];Prämien als Cart Price Rules
<?php// Prämie als Magento-Cart-Price-Rule anlegennamespace 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);
// Eindeutigen Coupon-Code generieren $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(); }}Schritt 4: Warenkorbabbruch-Wiedergewinnung
Warenkorb-Tracking-Observer
<?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') ]); }}E-Mail-Templates für die Wiedergewinnung
<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"/>Schritt 5: Marketing-Automatisierung
Kundensegmente
<?php// Segmente auf Basis der Magento-Daten anlegen$magentoSegments = [ // Kaufverhalten [ 'name' => 'First-Time Buyers', 'conditions' => [ 'orders_count' => 1 ] ], [ 'name' => 'Repeat Customers', 'conditions' => [ 'orders_count' => ['$gte' => 2] ] ], [ 'name' => 'High-Value Customers', 'conditions' => [ 'lifetime_sales' => ['$gte' => 1000] ] ],
// Kundengruppen [ 'name' => 'Wholesale Customers', 'conditions' => [ 'group_id' => 2 // Wholesale-Gruppe ] ],
// Store/Website-spezifisch [ 'name' => 'US Store Customers', 'conditions' => [ 'website_id' => 1 ] ]];Order-Event-Automatisierung
<?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);
// Loyalty-Punkte vergeben $pointsEarned = $this->loyaltyCalculator->calculate($order, $customer); $this->tajoApi->awardPoints($customer['id'], $pointsEarned, [ 'reason' => 'purchase', 'orderId' => $order->getIncrementId() ]);
// An Brevo für Kampagnen senden $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() ]);
// Tier-Upgrade prüfen $this->loyaltyService->checkTierUpgrade($customer['id']); }}Schritt 6: Produktempfehlungen
Empfehlungs-Engine konfigurieren
<?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 ]];Empfehlungs-Widget
<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>Schritt 7: CLI-Befehle
Tajo stellt folgende CLI-Befehle bereit:
# Sync-Befehlebin/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
# Loyalty-Befehlebin/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
# Debug-Befehlebin/magento tajo:test:connectionFehlersuche
Häufige Probleme
Erweiterungs-Konflikte
# Auf Konflikte prüfenbin/magento module:status | grep -i tajobin/magento setup:db:status
# Caches leerenbin/magento cache:cleanbin/magento cache:flushrm -rf generated/* var/cache/* var/page_cache/*Sync-Probleme
<?php// Debug-Logging aktivieren// In app/etc/env.php'tajo' => [ 'debug_mode' => true, 'log_level' => 'debug']
// Logs prüfen// var/log/tajo.log// var/log/tajo_sync.logPerformance-Optimierung
<?php// Async-Sync für große Kataloge nutzen<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>Nächste Schritte
- Brevo-Integration konfigurieren für E-Mail-/SMS-Kampagnen
- Webhooks einrichten für Echtzeit-Events
- Kundensegmente erstellen für gezieltes Marketing
- E-Mail-Templates bauen für automatisierte Kampagnen
Support
- Integrations-Support: [email protected]
- Magento-Dokumentation: developer.adobe.com/commerce
- API-Referenz: docs.tajo.io/api
- Community-Forum: community.tajo.io