WooCommerce Integration Guide

This comprehensive guide walks you through integrating Tajo with your WooCommerce store to unlock powerful customer engagement, loyalty programs, and marketing automation capabilities.

Overview

The Tajo-WooCommerce integration enables you to:

  • Sync customer data automatically from your WooCommerce store
  • Track orders and products for personalized marketing
  • Run loyalty programs with points, tiers, and rewards
  • Automate marketing campaigns via Brevo (email, SMS, WhatsApp)
  • Segment customers by purchase behavior and engagement
  • Recover abandoned carts with automated sequences

Prerequisites

Before starting the integration, ensure you have:

  • WordPress site with WooCommerce installed (version 7.0+)
  • Tajo account with an active subscription
  • Brevo account (optional, for marketing automation)
  • Admin access to your WordPress site
  • PHP 7.4+ and WordPress 6.0+

Step 1: Install the Tajo Plugin

From WordPress Plugin Directory

  1. Go to your WordPress admin dashboard
  2. Navigate to Plugins → Add New
  3. Search for “Tajo for WooCommerce”
  4. Click Install Now then Activate
  5. Go to WooCommerce → Tajo to configure

Manual Installation

If you prefer manual setup:

Terminal window
# Download the plugin
cd wp-content/plugins
wget https://downloads.tajo.io/woocommerce/tajo-woocommerce-latest.zip
# Unzip and install
unzip tajo-woocommerce-latest.zip

Then activate from WordPress admin:

  1. Go to Plugins → Installed Plugins
  2. Find “Tajo for WooCommerce”
  3. Click Activate

Configuration

Navigate to WooCommerce → Tajo → Settings and enter your credentials:

// These settings are configured via the admin panel
// or can be added to wp-config.php for advanced setups
define('TAJO_API_KEY', 'your_tajo_api_key');
define('TAJO_API_SECRET', 'your_tajo_api_secret');
define('BREVO_API_KEY', 'your_brevo_api_key'); // Optional

Step 2: Configure Data Sync

Customer Sync Settings

In your Tajo dashboard, configure which customer data to sync:

{
"sync_settings": {
"customers": {
"enabled": true,
"sync_frequency": "real-time",
"fields": [
"email",
"first_name",
"last_name",
"billing_phone",
"accepts_marketing",
"total_spent",
"order_count",
"date_created",
"billing_address",
"shipping_address"
]
},
"orders": {
"enabled": true,
"sync_frequency": "real-time",
"include_line_items": true,
"include_shipping": true
},
"products": {
"enabled": true,
"sync_frequency": "hourly",
"include_variations": true,
"include_images": true
}
}
}

WooCommerce Hooks

Tajo automatically hooks into these WooCommerce actions:

HookPurpose
woocommerce_created_customerSync new customers to Tajo & Brevo
woocommerce_update_customerKeep customer profiles current
woocommerce_new_orderTrack purchases, award loyalty points
woocommerce_order_status_completedTrigger post-purchase campaigns
woocommerce_order_status_processingSend order confirmation
woocommerce_cart_updatedTrack cart for abandonment
woocommerce_update_productKeep product catalog synced

Initial Data Import

For existing stores, import historical data:

<?php
// Import existing customers to Tajo
function tajo_import_existing_customers() {
$customers = get_users([
'role' => 'customer',
'number' => -1
]);
foreach ($customers as $customer) {
$customer_data = new WC_Customer($customer->ID);
tajo_sync_customer([
'email' => $customer_data->get_email(),
'firstName' => $customer_data->get_first_name(),
'lastName' => $customer_data->get_last_name(),
'phone' => $customer_data->get_billing_phone(),
'totalSpent' => $customer_data->get_total_spent(),
'ordersCount' => $customer_data->get_order_count(),
'source' => 'woocommerce',
'externalId' => $customer->ID
]);
}
}
// Run import
tajo_import_existing_customers();

Step 3: Set Up Loyalty Program

Configure Points System

Define how customers earn points in WooCommerce → Tajo → Loyalty:

<?php
// Points configuration
$points_config = [
// Points per dollar spent
'purchase_points' => [
'enabled' => true,
'rate' => 1, // 1 point per $1
'rounding_mode' => 'floor'
],
// Bonus actions
'bonus_points' => [
'account_creation' => 100,
'first_purchase' => 200,
'review_submitted' => 50,
'referral_made' => 500,
'birthday_bonus' => 100,
'newsletter_signup' => 25
],
// Tier multipliers
'tier_multipliers' => [
'Bronze' => 1.0,
'Silver' => 1.25,
'Gold' => 1.5,
'Platinum' => 2.0
]
];

Loyalty Widget Shortcodes

Display loyalty information on your site:

// Customer points balance
[tajo_points_balance]
// Points history
[tajo_points_history limit="10"]
// Current tier status
[tajo_loyalty_tier]
// Available rewards
[tajo_rewards_catalog]
// Referral link
[tajo_referral_link]

Define Loyalty Tiers

<?php
$loyalty_tiers = [
[
'name' => 'Bronze',
'min_points' => 0,
'benefits' => [
'1 point per $1 spent',
'Birthday bonus points',
'Member-only promotions'
]
],
[
'name' => 'Silver',
'min_points' => 1000,
'benefits' => [
'1.25x points multiplier',
'Free shipping on orders $50+',
'Early access to sales'
]
],
[
'name' => 'Gold',
'min_points' => 5000,
'benefits' => [
'1.5x points multiplier',
'Free shipping on all orders',
'Exclusive product access',
'Priority customer support'
]
],
[
'name' => 'Platinum',
'min_points' => 15000,
'benefits' => [
'2x points multiplier',
'Free express shipping',
'VIP experiences',
'Personal shopping assistant',
'Annual gift'
]
]
];

Create Rewards Catalog

<?php
$rewards = [
[
'id' => 'discount_5',
'name' => '$5 Off',
'points_cost' => 500,
'type' => 'fixed_cart',
'value' => 5,
'min_purchase' => 25
],
[
'id' => 'discount_10',
'name' => '$10 Off',
'points_cost' => 900,
'type' => 'fixed_cart',
'value' => 10,
'min_purchase' => 50
],
[
'id' => 'percent_10',
'name' => '10% Off',
'points_cost' => 750,
'type' => 'percent',
'value' => 10,
'max_discount' => 50
],
[
'id' => 'free_shipping',
'name' => 'Free Shipping',
'points_cost' => 300,
'type' => 'free_shipping'
]
];

Step 4: Abandoned Cart Recovery

Configure Cart Tracking

<?php
// Track cart updates
add_action('woocommerce_cart_updated', 'tajo_track_cart');
function tajo_track_cart() {
if (!is_user_logged_in() && !WC()->session->get('tajo_guest_email')) {
return; // Need email for tracking
}
$cart = WC()->cart;
if ($cart->is_empty()) {
return;
}
$customer_email = is_user_logged_in()
? wp_get_current_user()->user_email
: WC()->session->get('tajo_guest_email');
$cart_items = [];
foreach ($cart->get_cart() as $item) {
$product = $item['data'];
$cart_items[] = [
'productId' => $item['product_id'],
'variantId' => $item['variation_id'] ?: null,
'title' => $product->get_name(),
'quantity' => $item['quantity'],
'price' => $product->get_price(),
'image' => wp_get_attachment_url($product->get_image_id())
];
}
tajo_api_call('carts/track', [
'email' => $customer_email,
'cartToken' => WC()->session->get_customer_id(),
'items' => $cart_items,
'totalPrice' => $cart->get_total('edit'),
'currency' => get_woocommerce_currency(),
'checkoutUrl' => wc_get_checkout_url()
]);
}

Capture Guest Email

<?php
// Capture email at checkout for guest recovery
add_action('woocommerce_after_checkout_billing_form', 'tajo_capture_guest_email_js');
function tajo_capture_guest_email_js() {
?>
<script>
jQuery(function($) {
$('#billing_email').on('blur', function() {
var email = $(this).val();
if (email && email.includes('@')) {
$.post('<?php echo admin_url('admin-ajax.php'); ?>', {
action: 'tajo_capture_email',
email: email,
nonce: '<?php echo wp_create_nonce('tajo_email_capture'); ?>'
});
}
});
});
</script>
<?php
}
add_action('wp_ajax_nopriv_tajo_capture_email', 'tajo_capture_email_handler');
function tajo_capture_email_handler() {
check_ajax_referer('tajo_email_capture', 'nonce');
WC()->session->set('tajo_guest_email', sanitize_email($_POST['email']));
wp_die();
}

Set Up Recovery Sequence

{
"abandoned_cart_sequence": {
"trigger": {
"event": "cart_abandoned",
"delay": "1 hour"
},
"messages": [
{
"delay": "1 hour",
"channel": "email",
"template": "cart_reminder_1",
"subject": "You left something behind!"
},
{
"delay": "24 hours",
"channel": "email",
"template": "cart_reminder_2",
"subject": "Your cart is waiting - 10% off inside"
},
{
"delay": "72 hours",
"channel": "sms",
"template": "cart_sms_final",
"message": "Last chance! Your cart expires soon. Complete your order: {{checkout_url}}"
}
],
"exit_conditions": [
"order_completed",
"cart_emptied",
"unsubscribed"
]
}
}

Step 5: Marketing Automation with Brevo

Customer Segments

Create segments based on WooCommerce data:

<?php
$woo_segments = [
// Purchase behavior
[
'name' => 'First-Time Buyers',
'conditions' => ['order_count' => 1]
],
[
'name' => 'Repeat Customers',
'conditions' => ['order_count' => ['$gte' => 2]]
],
[
'name' => 'VIP Customers',
'conditions' => ['total_spent' => ['$gte' => 500]]
],
[
'name' => 'At-Risk Customers',
'conditions' => [
'last_order_date' => ['$lt' => '-90 days'],
'order_count' => ['$gte' => 2]
]
],
// Product interest
[
'name' => 'Category: Electronics',
'conditions' => ['purchased_categories' => ['$contains' => 'Electronics']]
],
// Engagement
[
'name' => 'Abandoned Cart',
'conditions' => ['has_abandoned_cart' => true]
]
];

Automated Campaign Triggers

<?php
// Order completed - award points and trigger campaigns
add_action('woocommerce_order_status_completed', 'tajo_order_completed', 10, 1);
function tajo_order_completed($order_id) {
$order = wc_get_order($order_id);
$customer_email = $order->get_billing_email();
// Get or create customer in Tajo
$customer = tajo_get_customer($customer_email);
// Calculate and award points
$points_earned = tajo_calculate_points($order, $customer);
tajo_award_points($customer['id'], $points_earned, [
'reason' => 'purchase',
'orderId' => $order_id
]);
// Send to Brevo for campaigns
brevo_track_event($customer_email, 'order_completed', [
'order_id' => $order_id,
'order_total' => $order->get_total(),
'points_earned' => $points_earned,
'loyalty_tier' => $customer['loyaltyTier'],
'products' => array_map(function($item) {
return $item->get_name();
}, $order->get_items())
]);
}
// Post-purchase review request
$review_request_campaign = [
'trigger' => 'order_completed',
'delay' => '14 days', // Give time for delivery
'template' => 'review_request',
'conditions' => [
'customer_opted_in' => true
]
];
// Win-back campaign
$win_back_campaign = [
'trigger' => 'customer_inactive',
'conditions' => [
'last_order_date' => '-90 days',
'order_count' => ['$gte' => 1]
],
'sequence' => [
['delay' => '0', 'template' => 'we_miss_you', 'offer' => '15% off'],
['delay' => '7 days', 'template' => 'win_back_2', 'offer' => '20% off'],
['delay' => '14 days', 'template' => 'final_offer', 'offer' => '25% off']
]
];

Step 6: Product Recommendations

Configure Recommendation Engine

<?php
$recommendation_config = [
'algorithms' => [
[
'name' => 'frequently_bought_together',
'weight' => 0.3
],
[
'name' => 'similar_products',
'weight' => 0.25
],
[
'name' => 'customer_also_viewed',
'weight' => 0.2
],
[
'name' => 'trending_in_category',
'weight' => 0.15
],
[
'name' => 'personalized_for_you',
'weight' => 0.1
]
],
'filters' => [
'exclude_purchased' => true,
'exclude_out_of_stock' => true,
'min_rating' => 3.5
]
];

Display Recommendations

// Shortcode for product recommendations
[tajo_recommendations limit="4" algorithm="frequently_bought_together"]
// Or use in templates
<?php
$recommendations = tajo_get_recommendations([
'customer_id' => get_current_user_id(),
'limit' => 4,
'context' => 'product_page',
'current_product' => get_the_ID()
]);
foreach ($recommendations as $product_id) {
$product = wc_get_product($product_id);
// Display product
}
?>

Step 7: Analytics & Reporting

Key Metrics Dashboard

Access analytics at WooCommerce → Tajo → Analytics or via API:

<?php
$dashboard_metrics = [
// Customer metrics
'customers' => [
'total' => tajo_analytics_count('customers'),
'new_this_month' => tajo_analytics_count('customers', [
'created_at' => ['$gte' => 'this_month']
]),
'returning_rate' => tajo_analytics_returning_customer_rate()
],
// Revenue metrics
'revenue' => [
'total' => tajo_analytics_sum('orders.total'),
'average_order_value' => tajo_analytics_avg('orders.total'),
'revenue_per_customer' => tajo_analytics_revenue_per_customer()
],
// Loyalty metrics
'loyalty' => [
'active_members' => tajo_analytics_count('loyalty_members', [
'status' => 'active'
]),
'points_issued' => tajo_analytics_sum('points.awarded'),
'points_redeemed' => tajo_analytics_sum('points.redeemed'),
'redemption_rate' => tajo_analytics_points_redemption_rate()
],
// Campaign metrics
'campaigns' => [
'emails_sent' => brevo_analytics_emails_sent('this_month'),
'open_rate' => brevo_analytics_open_rate('this_month'),
'click_rate' => brevo_analytics_click_rate('this_month'),
'revenue_attributed' => tajo_analytics_campaign_revenue('this_month')
]
];

Troubleshooting

Common Issues

Plugin Conflicts

<?php
// Check for conflicting plugins
function tajo_check_conflicts() {
$conflicts = [];
$problematic_plugins = [
'some-caching-plugin/plugin.php',
'aggressive-minifier/plugin.php'
];
foreach ($problematic_plugins as $plugin) {
if (is_plugin_active($plugin)) {
$conflicts[] = $plugin;
}
}
return $conflicts;
}

Webhook Verification

<?php
// Verify webhook signature from Tajo
function tajo_verify_webhook($payload, $signature) {
$expected = hash_hmac(
'sha256',
$payload,
get_option('tajo_webhook_secret')
);
return hash_equals($expected, $signature);
}

Sync Issues

<?php
// Debug sync issues
function tajo_debug_sync($customer_id) {
$customer = new WC_Customer($customer_id);
error_log('Tajo Sync Debug for Customer ' . $customer_id);
error_log('Email: ' . $customer->get_email());
error_log('Total Spent: ' . $customer->get_total_spent());
error_log('Order Count: ' . $customer->get_order_count());
// Test API connection
$response = tajo_api_call('ping');
error_log('API Response: ' . print_r($response, true));
}

Rate Limiting

<?php
// Implement rate limiting for API calls
function tajo_rate_limited_call($endpoint, $data, $retries = 3) {
for ($i = 0; $i < $retries; $i++) {
$response = tajo_api_call($endpoint, $data);
if (!is_wp_error($response)) {
return $response;
}
if ($response->get_error_code() === 'rate_limited') {
$delay = pow(2, $i) * 1000000; // Exponential backoff in microseconds
usleep($delay);
continue;
}
break;
}
return $response;
}

Next Steps

  1. Configure Brevo Integration for email/SMS campaigns
  2. Set Up Webhooks for real-time events
  3. Create Customer Segments for targeted marketing
  4. Build Email Templates for automated campaigns

Support

AI асистент

Здравейте! Попитайте ме за документацията.

Започнете безплатно с Brevo