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)

Terminal window
# Tajo-Repository hinzufügen
composer config repositories.tajo composer https://packages.tajo.io
# Erweiterung installieren
composer require tajo/module-magento:^2.0
# Modul aktivieren
bin/magento module:enable Tajo_Core Tajo_Sync Tajo_Loyalty
# Setup ausführen
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:flush

Manuelle Installation

Terminal window
# Herunterladen und nach app/code entpacken
mkdir -p app/code/Tajo
cd app/code/Tajo
wget https://downloads.tajo.io/magento/tajo-magento-latest.zip
unzip tajo-magento-latest.zip
# Aktivieren und einrichten
bin/magento module:enable Tajo_Core Tajo_Sync Tajo_Loyalty
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:flush

Konfiguration

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:

EventZweck
customer_save_afterKunden-Updates zu Tajo & Brevo synchronisieren
customer_register_successNeue Kunden synchronisieren, Signup-Punkte vergeben
sales_order_place_afterKäufe erfassen, Loyalty-Punkte vergeben
sales_order_save_afterBestellstatus aktualisieren, Kampagnen auslösen
checkout_cart_save_afterWarenkorb für Abandonment verfolgen
catalog_product_save_afterProduktkatalog synchron halten

Multi-Website-Konfiguration

Für Magento-Setups mit mehreren Websites:

<?php
// di.xml – Einstellungen pro Website konfigurieren
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
)
];
}
}

Initialer Datenimport

Importiere bestehende Daten über die CLI:

Terminal window
# Alle Kunden importieren
bin/magento tajo:sync:customers --all
# Bestellungen der letzten 90 Tage importieren
bin/magento tajo:sync:orders --from="90 days ago"
# Produktkatalog importieren
bin/magento tajo:sync:products --all
# Voll-Sync mit Fortschrittsanzeige
bin/magento tajo:sync:full --verbose

Oder programmatisch:

<?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("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 anlegen
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);
// 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

<?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')
]);
}
}

E-Mail-Templates für die Wiedergewinnung

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"/>

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

<?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);
// 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

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>

Schritt 7: CLI-Befehle

Tajo stellt folgende CLI-Befehle bereit:

Terminal window
# Sync-Befehle
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
# Loyalty-Befehle
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
# Debug-Befehle
bin/magento tajo:test:connection
bin/magento tajo:debug:customer --email="[email protected]"

Fehlersuche

Häufige Probleme

Erweiterungs-Konflikte

Terminal window
# Auf Konflikte prüfen
bin/magento module:status | grep -i tajo
bin/magento setup:db:status
# Caches leeren
bin/magento cache:clean
bin/magento cache:flush
rm -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.log

Performance-Optimierung

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

  1. Brevo-Integration konfigurieren für E-Mail-/SMS-Kampagnen
  2. Webhooks einrichten für Echtzeit-Events
  3. Kundensegmente erstellen für gezieltes Marketing
  4. E-Mail-Templates bauen für automatisierte Kampagnen

Support

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI-Assistent

Hallo! Fragen Sie mich alles über die Dokumentation.