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

กรอกชื่อและที่อยู่อีเมลที่ทำงานของคุณ เราจะส่งลิงก์เพื่อยืนยันคำขอเข้าใช้งาน Tajo ทางอีเมล

ในหน้านี้

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

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

ภาพรวม

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

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

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

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

  • บัญชี Tajo ที่ตั้งค่าโปรแกรมสะสมคะแนนไว้แล้ว
  • บัญชี Brevo ที่เข้าถึง API ได้
  • API key ที่ใช้งานได้ ของทั้งสองแพลตฟอร์ม
  • ใบรับรอง 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 สำหรับ Shopify ภายในหน้าผู้ดูแลระบบ Shopify ของคุณ

  1. เปิด Settings
  2. ในส่วน Connect Your Brevo Account ให้เลือก Configure API Key
  3. วางคีย์ของคุณลงใน Brevo API Key แล้วบันทึก แอปจะตรวจสอบคีย์กับ Brevo ก่อนนำไปใช้
{
"brevo_api_key": "xkeysib-your-api-key-here",
"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: อีเวนต์ Webhook ของ Brevo ไปถึงปลายทางของคุณ

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

// 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 เพื่อรับอีเวนต์อีเมลและผู้ติดต่อจาก Brevo
  2. สร้างเทมเพลตอีเมล สำหรับแคมเปญสะสมคะแนน
  3. ตั้งค่าระบบอัตโนมัติของ SMS สำหรับการแจ้งเตือนเร่งด่วน
  4. ตั้งค่าการวิเคราะห์ข้อมูล เพื่อติดตามประสิทธิภาพ

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

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

กรอกชื่อและที่อยู่อีเมลที่ทำงานของคุณ เราจะส่งลิงก์เพื่อยืนยันคำขอเข้าใช้งาน Tajo ทางอีเมล

ผู้ช่วย AI

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

หน้านี้ในรูปแบบ Markdown: tajo-brevo-integration.md

กำลังโหลด Markdown…
เปิดใน Claude เปิดใน ChatGPT