ขอสิทธิ์ใช้งานล่วงหน้า

กรอกชื่อพร้อมอีเมลหรือหมายเลขโทรศัพท์ แล้วเราจะติดต่อกลับพร้อมรายละเอียดการเข้าใช้งาน Tajo

ในหน้านี้

คู่มือการเชื่อมต่อ Tajo กับ Brevo

คู่มือฉบับสมบูรณ์นี้จะพาคุณเชื่อมต่อแพลตฟอร์มสะสมคะแนน Tajo เข้ากับ Brevo ทีละขั้นตอน เพื่อสร้างแคมเปญสร้างการมีส่วนร่วมกับลูกค้าแบบอัตโนมัติที่ทรงพลัง

ภาพรวม

การเชื่อมต่อ Tajo กับ Brevo ช่วยให้คุณ

  • ซิงค์ข้อมูลลูกค้า ระหว่างสองแพลตฟอร์มแบบเรียลไทม์
  • ทำแคมเปญสะสมคะแนนอัตโนมัติ ตามพฤติกรรมของลูกค้า
  • ติดตามการมีส่วนร่วม ทั้งทางอีเมล SMS และ WhatsApp
  • แบ่งกลุ่มลูกค้า ตามระดับสมาชิกและพฤติกรรมการซื้อ
  • ส่งข้อความเฉพาะบุคคล เมื่อเกิดเหตุการณ์สำคัญของโปรแกรมสะสมคะแนน

สิ่งที่ต้องเตรียม

ก่อนเริ่มเชื่อมต่อ ตรวจสอบให้แน่ใจว่าคุณมีสิ่งเหล่านี้

  • บัญชี Tajo ที่ตั้งค่าโปรแกรมสะสมคะแนนไว้แล้ว
  • บัญชี Brevo ที่เข้าถึง API ได้
  • API key ที่ใช้งานได้ ของทั้งสองแพลตฟอร์ม
  • Webhook endpoint ที่ตั้งค่าไว้สำหรับการซิงค์แบบเรียลไทม์
  • ใบรับรอง SSL สำหรับการรับส่งข้อมูลอย่างปลอดภัย

ขั้นตอนที่ 1: ตั้งค่าการยืนยันตัวตน

สร้าง Brevo API key

  1. เข้าสู่ระบบบัญชี Brevo ของคุณ
  2. ไปที่ Account & Plan > API Keys
  3. คลิก Generate a new API key
  4. ตั้งชื่อว่า “Tajo Integration”
  5. คัดลอกและเก็บคีย์ไว้อย่างปลอดภัย
Terminal window
# Store in environment variables
export BREVO_API_KEY="xkeysib-your-api-key-here"
export TAJO_WEBHOOK_SECRET="your-webhook-secret"

ตั้งค่าการเชื่อมต่อใน Tajo

ในแดชบอร์ด Tajo ของคุณ

  1. ไปที่ Settings > Integrations
  2. เลือก Brevo จากรายการ
  3. กรอก Brevo API key ของคุณ
  4. ตั้งค่าการซิงค์ข้อมูล
{
"brevo_api_key": "xkeysib-your-api-key-here",
"sync_frequency": "real-time",
"sync_contacts": true,
"sync_orders": true,
"sync_events": true,
"loyalty_attributes": [
"LOYALTY_POINTS",
"LOYALTY_TIER",
"TOTAL_SPENT",
"LAST_PURCHASE"
]
}

ขั้นตอนที่ 2: การซิงค์ข้อมูลลูกค้า

ตั้งค่าการซิงค์ผู้ติดต่อ

ตั้งค่าการซิงค์ผู้ติดต่อโดยอัตโนมัติ เพื่อให้ข้อมูลลูกค้าเป็นปัจจุบันอยู่เสมอ

// Sync customer on registration
async function syncCustomerToBrevo(customer) {
const brevoData = {
email: customer.email,
attributes: {
FIRSTNAME: customer.firstName,
LASTNAME: customer.lastName,
PHONE: customer.phone,
LOYALTY_ID: customer.loyaltyId,
LOYALTY_POINTS: customer.points,
LOYALTY_TIER: customer.tier,
SIGNUP_DATE: customer.createdAt,
TOTAL_SPENT: customer.totalSpent,
PREFERRED_CATEGORIES: customer.categories,
BIRTHDAY: customer.birthday
},
listIds: [getListForTier(customer.tier)]
};
const response = await fetch('https://api.brevo.com/v3/contacts', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'api-key': process.env.BREVO_API_KEY
},
body: JSON.stringify(brevoData)
});
return response.json();
}

การซิงค์อีเวนต์การซื้อ

ซิงค์การซื้อโดยอัตโนมัติเพื่อกระตุ้นแคมเปญสะสมคะแนน

// Sync order completion
async function syncOrderToBrevo(order, customer) {
// Create order in Brevo
const orderData = {
id: order.id,
email: customer.email,
products: order.items.map(item => ({
id: item.productId,
name: item.name,
quantity: item.quantity,
price: item.price,
category: item.category
})),
revenue: order.total,
date: order.createdAt
};
await fetch('https://api.brevo.com/v3/ecommerce/orders', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'api-key': process.env.BREVO_API_KEY
},
body: JSON.stringify(orderData)
});
// Create loyalty event
const eventData = {
email: customer.email,
event: 'Purchase Completed',
properties: {
order_id: order.id,
amount: order.total,
points_earned: order.pointsEarned,
loyalty_tier: customer.tier,
tier_upgraded: order.tierUpgraded,
products: order.items.map(i => i.name).join(', ')
}
};
await fetch('https://api.brevo.com/v3/events', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'api-key': process.env.BREVO_API_KEY
},
body: JSON.stringify(eventData)
});
}

ขั้นตอนที่ 3: ตั้งค่าแคมเปญอัตโนมัติ

แคมเปญต้อนรับลูกค้าใหม่

สร้างลำดับอีเมลต้อนรับอัตโนมัติสำหรับสมาชิกโปรแกรมสะสมคะแนนรายใหม่

{
"campaign_name": "Tajo Loyalty Welcome Series",
"trigger": {
"event": "Contact Created",
"conditions": {
"LOYALTY_ID": "exists",
"SIGNUP_DATE": "today"
}
},
"emails": [
{
"delay": "immediate",
"template_id": 101,
"subject": "Welcome to Tajo Loyalty! Here's your {{params.welcome_bonus}} points bonus",
"params": {
"welcome_bonus": "500",
"loyalty_tier": "Bronze",
"next_tier_points": "1000"
}
},
{
"delay": "3 days",
"template_id": 102,
"subject": "Don't forget to use your {{params.welcome_bonus}} bonus points!"
},
{
"delay": "1 week",
"template_id": 103,
"subject": "Here's how to earn points faster with Tajo"
}
]
}

แคมเปญเลื่อนระดับสมาชิก

แสดงความยินดีกับการเลื่อนระดับสมาชิกโดยอัตโนมัติ

// Webhook handler for tier upgrades
app.post('/webhook/tier-upgrade', (req, res) => {
const { customer, previousTier, newTier } = req.body;
const campaignData = {
email: customer.email,
template_id: getTierUpgradeTemplate(newTier),
params: {
customer_name: customer.firstName,
new_tier: newTier,
previous_tier: previousTier,
new_benefits: getTierBenefits(newTier),
points_balance: customer.points
}
};
// Send congratulations email
sendBrevoEmail(campaignData);
// Add to tier-specific list
addToBrevoList(customer.email, getTierListId(newTier));
res.status(200).json({ success: true });
});

ขั้นตอนที่ 4: ติดตามอีเวนต์ของโปรแกรมสะสมคะแนน

อีเวนต์สำคัญที่ควรติดตาม

ตั้งค่าการติดตามอีเวนต์สำคัญของโปรแกรมสะสมคะแนนเหล่านี้

const loyaltyEvents = {
// Account Events
'Account Created': {
properties: ['signup_source', 'referral_code', 'welcome_bonus']
},
'Profile Updated': {
properties: ['updated_fields', 'marketing_consent']
},
// Purchase Events
'Purchase Completed': {
properties: ['order_total', 'points_earned', 'loyalty_tier', 'products']
},
'Product Returned': {
properties: ['return_reason', 'points_deducted', 'refund_amount']
},
// Loyalty Events
'Points Earned': {
properties: ['points_amount', 'earning_reason', 'total_balance']
},
'Points Redeemed': {
properties: ['points_used', 'reward_type', 'remaining_balance']
},
'Tier Upgraded': {
properties: ['previous_tier', 'new_tier', 'upgrade_benefits']
},
// Engagement Events
'Email Opened': {
properties: ['campaign_type', 'subject_line', 'device']
},
'Reward Browsed': {
properties: ['reward_category', 'reward_name', 'points_required']
},
'Referral Made': {
properties: ['referral_method', 'referee_email', 'referral_bonus']
}
};

การนำการติดตามอีเวนต์ไปใช้งาน

class TajoBrevoEventTracker {
constructor(apiKey) {
this.apiKey = apiKey;
this.baseUrl = 'https://api.brevo.com/v3';
}
async trackEvent(customerEmail, eventName, properties = {}) {
const eventData = {
email: customerEmail,
event: eventName,
properties: {
timestamp: new Date().toISOString(),
source: 'tajo_platform',
...properties
}
};
try {
const response = await fetch(`${this.baseUrl}/events`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'api-key': this.apiKey
},
body: JSON.stringify(eventData)
});
if (!response.ok) {
throw new Error(`Event tracking failed: ${response.statusText}`);
}
return await response.json();
} catch (error) {
console.error('Brevo event tracking error:', error);
throw error;
}
}
// Convenience methods for common events
async trackPurchase(customer, order) {
return this.trackEvent(customer.email, 'Purchase Completed', {
order_id: order.id,
order_total: order.total,
currency: order.currency,
points_earned: order.pointsEarned,
loyalty_tier: customer.tier,
items_count: order.items.length,
first_purchase: customer.orderCount === 1
});
}
async trackTierUpgrade(customer, previousTier) {
return this.trackEvent(customer.email, 'Tier Upgraded', {
previous_tier: previousTier,
new_tier: customer.tier,
points_balance: customer.points,
benefits_unlocked: getTierBenefits(customer.tier),
upgrade_date: new Date().toISOString()
});
}
}

ขั้นตอนที่ 5: กลยุทธ์การแบ่งกลุ่มลูกค้า

กลุ่มลูกค้า

สร้างเซกเมนต์แบบเจาะจงใน Brevo สำหรับแคมเปญเฉพาะบุคคล

const loyaltySegments = [
// Tier-based segments
{
name: "Bronze Members",
conditions: { LOYALTY_TIER: "Bronze" },
campaigns: ["tier_upgrade_promotion", "engagement_boost"]
},
{
name: "Silver Members",
conditions: { LOYALTY_TIER: "Silver" },
campaigns: ["premium_offers", "early_access"]
},
{
name: "Gold Members",
conditions: { LOYALTY_TIER: "Gold" },
campaigns: ["vip_treatment", "exclusive_rewards"]
},
{
name: "Platinum Members",
conditions: { LOYALTY_TIER: "Platinum" },
campaigns: ["luxury_experiences", "personal_offers"]
},
// Behavior-based segments
{
name: "High Spenders",
conditions: { TOTAL_SPENT: ">1000" },
campaigns: ["luxury_catalog", "big_spender_rewards"]
},
{
name: "Frequent Shoppers",
conditions: { PURCHASE_FREQUENCY: "weekly" },
campaigns: ["convenience_offers", "bulk_discounts"]
},
{
name: "At-Risk Customers",
conditions: { LAST_PURCHASE: ">90 days" },
campaigns: ["win_back", "special_incentives"]
},
{
name: "Birthday Month",
conditions: { BIRTHDAY: "this_month" },
campaigns: ["birthday_specials", "bonus_points"]
}
];

ขั้นตอนที่ 6: การทดสอบและการเฝ้าติดตาม

รายการตรวจสอบการทดสอบการเชื่อมต่อ

  • การซิงค์ผู้ติดต่อ: ลูกค้าใหม่ปรากฏใน Brevo
  • การซิงค์คำสั่งซื้อ: การซื้อกระตุ้นอีเวนต์ได้อย่างถูกต้อง
  • การติดตามอีเวนต์: อีเวนต์ของโปรแกรมสะสมคะแนนถูกบันทึกครบทุกรายการ
  • ทริกเกอร์แคมเปญ: อีเมลอัตโนมัติถูกส่งอย่างถูกต้อง
  • การแบ่งกลุ่ม: ลูกค้าย้ายระหว่างลิสต์ได้อย่างถูกต้อง
  • การส่ง Webhook: การซิงค์แบบเรียลไทม์ทำงานได้อย่างเสถียร

การตั้งค่าการเฝ้าติดตาม

// Health check endpoint
app.get('/integration/health', async (req, res) => {
const checks = {
brevo_api: await checkBrevoConnection(),
webhook_delivery: await checkWebhookDelivery(),
event_tracking: await checkEventTracking(),
campaign_triggers: await checkCampaignTriggers()
};
const allHealthy = Object.values(checks).every(check => check.status === 'ok');
res.status(allHealthy ? 200 : 503).json({
status: allHealthy ? 'healthy' : 'degraded',
checks,
timestamp: new Date().toISOString()
});
});

การแก้ปัญหาที่พบบ่อย

ขีดจำกัดอัตราการเรียกใช้ API

Brevo มีขีดจำกัดอัตราการเรียกใช้ ให้เพิ่มตรรกะสำหรับลองส่งคำขอใหม่

async function makeBrevoRequest(url, options, retries = 3) {
try {
const response = await fetch(url, options);
if (response.status === 429) {
const retryAfter = response.headers.get('Retry-After') || 60;
await new Promise(resolve => setTimeout(resolve, retryAfter * 1000));
return makeBrevoRequest(url, options, retries - 1);
}
return response;
} catch (error) {
if (retries > 0) {
await new Promise(resolve => setTimeout(resolve, 5000));
return makeBrevoRequest(url, options, retries - 1);
}
throw error;
}
}

ปัญหาการซิงค์ข้อมูล

เฝ้าติดตามและแก้ไขความขัดแย้งของการซิงค์

// Sync conflict resolution
async function resolveSyncConflict(tajoData, brevoData) {
// Use most recent timestamp as source of truth
const tajoUpdated = new Date(tajoData.updatedAt);
const brevoUpdated = new Date(brevoData.modifiedAt);
if (tajoUpdated > brevoUpdated) {
// Update Brevo with Tajo data
await updateBrevoContact(brevoData.id, tajoData);
} else {
// Update Tajo with Brevo data
await updateTajoCustomer(tajoData.id, brevoData);
}
}

ขั้นตอนถัดไป

  1. ตั้งค่า Webhook สำหรับการซิงค์แบบเรียลไทม์
  2. สร้างเทมเพลตอีเมล สำหรับแคมเปญสะสมคะแนน
  3. ตั้งค่าระบบอัตโนมัติของ SMS สำหรับการแจ้งเตือนเร่งด่วน
  4. ตั้งค่าการวิเคราะห์ข้อมูล เพื่อติดตามประสิทธิภาพ

การสนับสนุนและแหล่งข้อมูล

ขอสิทธิ์ใช้งานล่วงหน้า

กรอกชื่อพร้อมอีเมลหรือหมายเลขโทรศัพท์ แล้วเราจะติดต่อกลับพร้อมรายละเอียดการเข้าใช้งาน Tajo

ตรวจจับอัตโนมัติ
ผู้ช่วย AI

สวัสดี! ถามฉันเกี่ยวกับเอกสารได้เลย