Shopify انٹیگریشن گائیڈ
یہ جامع گائیڈ آپ کو مرحلہ وار بتاتی ہے کہ Tajo کو اپنے Shopify اسٹور کے ساتھ کیسے جوڑا جائے تاکہ گاہکوں کی مصروفیت، لائلٹی پروگرامز اور مارکیٹنگ آٹومیشن کی طاقتور صلاحیتیں کھل جائیں۔
جائزہ
Tajo-Shopify انٹیگریشن آپ کو یہ سہولت دیتی ہے:
- اپنے Shopify اسٹور سے گاہک کا ڈیٹا خودکار طور پر سنک کریں
- ذاتی نوعیت کی مارکیٹنگ کے لیے آرڈرز اور پروڈکٹس کا سراغ رکھیں
- پوائنٹس، درجوں اور انعامات کے ساتھ لائلٹی پروگرامز چلائیں
- Brevo کے ذریعے (ای میل، ایس ایم ایس، واٹس ایپ) مارکیٹنگ مہمات خودکار بنائیں
- خریداری کے رویے اور مصروفیت کے مطابق گاہکوں کو سیگمنٹ کریں
- خودکار سلسلوں کے ذریعے چھوڑے گئے کارٹس واپس لائیں
پیشگی شرائط
انٹیگریشن شروع کرنے سے پہلے یقینی بنائیں کہ آپ کے پاس یہ موجود ہیں:
- کسی بھی پلان (Basic، Shopify، Advanced یا Plus) پر Shopify اسٹور
- فعال سبسکرپشن کے ساتھ Tajo اکاؤنٹ
- Brevo اکاؤنٹ (اختیاری، مارکیٹنگ آٹومیشن کے لیے)
- اپنے Shopify اسٹور تک ایڈمن رسائی
مرحلہ 1: Tajo ایپ انسٹال کریں
Shopify App Store سے
- Shopify App Store پر جائیں
- “Tajo” تلاش کریں
- Add app پر کلک کریں
- اجازتوں کا جائزہ لیں اور Install app پر کلک کریں
- آپ کو Tajo کے سیٹ اپ وزرڈ کی طرف بھیج دیا جائے گا
دستی تنصیب
اگر آپ دستی سیٹ اپ کو ترجیح دیتے ہیں:
# Clone the Tajo Shopify appgit clone https://github.com/tajo/shopify-app.git
# Install dependenciescd shopify-appnpm install
# Configure environmentcp .env.example .envاپنی .env فائل کنفیگر کریں:
SHOPIFY_API_KEY=your_api_keySHOPIFY_API_SECRET=your_api_secretSHOPIFY_SCOPES=read_customers,write_customers,read_orders,read_productsTAJO_API_KEY=your_tajo_api_keyBREVO_API_KEY=your_brevo_api_keyمرحلہ 2: ڈیٹا سنک کنفیگر کریں
گاہک کے سنک کی سیٹنگز
اپنے Tajo ڈیش بورڈ میں یہ کنفیگر کریں کہ گاہک کا کون سا ڈیٹا سنک ہو:
{ "sync_settings": { "customers": { "enabled": true, "sync_frequency": "real-time", "fields": [ "email", "first_name", "last_name", "phone", "accepts_marketing", "tags", "total_spent", "orders_count", "created_at", "addresses" ] }, "orders": { "enabled": true, "sync_frequency": "real-time", "include_line_items": true, "include_fulfillments": true }, "products": { "enabled": true, "sync_frequency": "hourly", "include_variants": true, "include_images": true } }}ویب ہک کنفیگریشن
Tajo یہ Shopify ویب ہکس خودکار طور پر رجسٹر کرتا ہے:
| ویب ہک | مقصد |
|---|---|
customers/create | نئے گاہکوں کو Tajo اور Brevo میں سنک کرتا ہے |
customers/update | گاہکوں کی پروفائلز تازہ رکھتا ہے |
orders/create | خریداریوں کا سراغ رکھتا ہے، لائلٹی پوائنٹس دیتا ہے |
orders/paid | خریداری کے بعد کی مہمات چلاتا ہے |
orders/fulfilled | شپنگ کی اطلاعات بھیجتا ہے |
carts/create | چھوڑے گئے کارٹ کا ڈیٹا محفوظ کرتا ہے |
carts/update | کارٹ چھوڑنے کے سلسلے اپ ڈیٹ کرتا ہے |
products/update | پروڈکٹ کیٹلاگ کو سنک رکھتا ہے |
ابتدائی ڈیٹا امپورٹ
موجودہ اسٹورز کے لیے پرانا ڈیٹا امپورٹ کریں:
// Import existing customersasync function importShopifyCustomers() { const shopify = new Shopify({ shopName: process.env.SHOP_NAME, apiKey: process.env.SHOPIFY_API_KEY, password: process.env.SHOPIFY_PASSWORD });
let customers = []; let params = { limit: 250 };
do { const batch = await shopify.customer.list(params); customers = customers.concat(batch); params = batch.nextPageParameters; } while (params);
// Sync to Tajo for (const customer of customers) { await tajo.customers.upsert({ email: customer.email, firstName: customer.first_name, lastName: customer.last_name, phone: customer.phone, totalSpent: customer.total_spent, ordersCount: customer.orders_count, tags: customer.tags, source: 'shopify', externalId: customer.id }); }
console.log(`Imported ${customers.length} customers`);}مرحلہ 3: لائلٹی پروگرام ترتیب دیں
پوائنٹس کا نظام کنفیگر کریں
یہ متعین کریں کہ گاہک پوائنٹس کیسے کمائیں گے:
const pointsConfig = { // Points per dollar spent purchasePoints: { enabled: true, rate: 1, // 1 point per $1 roundingMode: 'floor' },
// Bonus actions bonusPoints: { accountCreation: 100, firstPurchase: 200, reviewSubmitted: 50, referralMade: 500, birthdayBonus: 100, socialShare: 25 },
// Tier multipliers tierMultipliers: { Bronze: 1.0, Silver: 1.25, Gold: 1.5, Platinum: 2.0 }};لائلٹی درجے متعین کریں
const loyaltyTiers = [ { name: 'Bronze', minPoints: 0, benefits: [ '1 point per $1 spent', 'Birthday bonus points', 'Member-only promotions' ] }, { name: 'Silver', minPoints: 1000, benefits: [ '1.25x points multiplier', 'Free shipping on orders $50+', 'Early access to sales' ] }, { name: 'Gold', minPoints: 5000, benefits: [ '1.5x points multiplier', 'Free shipping on all orders', 'Exclusive product access', 'Priority customer support' ] }, { name: 'Platinum', minPoints: 15000, benefits: [ '2x points multiplier', 'Free express shipping', 'VIP experiences', 'Personal shopping assistant', 'Annual gift' ] }];انعامات کا کیٹلاگ بنائیں
const rewards = [ { id: 'discount_5', name: '$5 Off', pointsCost: 500, type: 'fixed_discount', value: 5, minPurchase: 25 }, { id: 'discount_10', name: '$10 Off', pointsCost: 900, type: 'fixed_discount', value: 10, minPurchase: 50 }, { id: 'percent_10', name: '10% Off', pointsCost: 750, type: 'percentage_discount', value: 10, maxDiscount: 50 }, { id: 'free_shipping', name: 'Free Shipping', pointsCost: 300, type: 'free_shipping' }, { id: 'free_product', name: 'Free Gift', pointsCost: 2000, type: 'free_product', productId: 'gid://shopify/Product/123456' }];مرحلہ 4: چھوڑے گئے کارٹ کی بازیابی
کارٹ ٹریکنگ کنفیگر کریں
// Track cart updatesshopify.webhooks.on('carts/update', async (cart) => { if (cart.line_items.length === 0) return;
const customer = await getCustomerByCart(cart); if (!customer?.email) return;
await tajo.carts.track({ customerId: customer.id, cartToken: cart.token, items: cart.line_items.map(item => ({ productId: item.product_id, variantId: item.variant_id, title: item.title, quantity: item.quantity, price: item.price, image: item.image })), totalPrice: cart.total_price, currency: cart.currency, checkoutUrl: cart.checkout_url });});بازیابی کا سلسلہ ترتیب دیں
{ "abandoned_cart_sequence": { "trigger": { "event": "cart_abandoned", "delay": "1 hour" }, "emails": [ { "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" ] }}مرحلہ 5: Brevo کے ساتھ مارکیٹنگ آٹومیشن
گاہکوں کے سیگمنٹس
Shopify کے ڈیٹا کی بنیاد پر طاقتور سیگمنٹس بنائیں:
const shopifySegments = [ // Purchase behavior { name: 'First-Time Buyers', conditions: { orders_count: 1 } }, { name: 'Repeat Customers', conditions: { orders_count: { $gte: 2 } } }, { name: 'VIP Customers', conditions: { total_spent: { $gte: 500 } } }, { name: 'At-Risk Customers', conditions: { last_order_date: { $lt: '90 days ago' }, orders_count: { $gte: 2 } } },
// Product interest { name: 'Category: Electronics', conditions: { purchased_categories: { $contains: 'Electronics' } } },
// Engagement { name: 'Abandoned Cart', conditions: { has_abandoned_cart: true } }, { name: 'Browse Abandoners', conditions: { viewed_products: { $gte: 3 }, orders_count: 0 } }];خودکار مہم کے ٹریگرز
// Order confirmation + upsellshopify.webhooks.on('orders/paid', async (order) => { const customer = await tajo.customers.get(order.customer.id);
// Update customer stats await tajo.customers.update(customer.id, { totalSpent: customer.totalSpent + order.total_price, ordersCount: customer.ordersCount + 1, lastOrderDate: order.created_at });
// Award loyalty points const pointsEarned = calculatePoints(order, customer); await tajo.loyalty.awardPoints(customer.id, pointsEarned, { reason: 'purchase', orderId: order.id });
// Send to Brevo for campaigns await brevo.trackEvent(customer.email, 'order_completed', { order_id: order.id, order_total: order.total_price, points_earned: pointsEarned, loyalty_tier: customer.loyaltyTier, products: order.line_items.map(i => i.title).join(', ') });});
// Post-purchase review requestconst reviewRequestCampaign = { trigger: 'order_delivered', delay: '7 days', template: 'review_request', conditions: { customer_tags: { $not: { $contains: 'no-review-request' } } }};
// Win-back campaignconst winBackCampaign = { trigger: 'customer_inactive', conditions: { last_order_date: '90 days ago', orders_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' } ]};مرحلہ 6: پروڈکٹ کی تجاویز
تجاویز کا انجن کنفیگر کریں
const recommendationConfig = { 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 }};
// Get recommendations for emailasync function getEmailRecommendations(customerId, limit = 4) { const customer = await tajo.customers.get(customerId); const recentOrders = await tajo.orders.list({ customerId, limit: 5 });
return await tajo.recommendations.get({ customerId, purchaseHistory: recentOrders, browsingHistory: customer.recentlyViewed, limit, algorithms: recommendationConfig.algorithms });}مرحلہ 7: اینالٹکس اور رپورٹنگ
اہم پیمانوں کا ڈیش بورڈ
const dashboardMetrics = { // Customer metrics customers: { total: await tajo.analytics.count('customers'), new_this_month: await tajo.analytics.count('customers', { created_at: { $gte: 'this_month' } }), returning_rate: await tajo.analytics.returningCustomerRate() },
// Revenue metrics revenue: { total: await tajo.analytics.sum('orders.total'), average_order_value: await tajo.analytics.avg('orders.total'), revenue_per_customer: await tajo.analytics.revenuePerCustomer() },
// Loyalty metrics loyalty: { active_members: await tajo.analytics.count('loyalty_members', { status: 'active' }), points_issued: await tajo.analytics.sum('points.awarded'), points_redeemed: await tajo.analytics.sum('points.redeemed'), redemption_rate: await tajo.analytics.pointsRedemptionRate() },
// Campaign metrics campaigns: { emails_sent: await brevo.analytics.emailsSent('this_month'), open_rate: await brevo.analytics.openRate('this_month'), click_rate: await brevo.analytics.clickRate('this_month'), revenue_attributed: await tajo.analytics.campaignRevenue('this_month') }};مسائل کا حل
عام مسائل
ویب ہک ڈیلیوری کی ناکامیاں
// Verify webhook signaturefunction verifyShopifyWebhook(req) { const hmac = req.headers['x-shopify-hmac-sha256']; const body = req.rawBody; const hash = crypto .createHmac('sha256', process.env.SHOPIFY_WEBHOOK_SECRET) .update(body) .digest('base64');
return crypto.timingSafeEqual( Buffer.from(hash), Buffer.from(hmac) );}سنک کے تصادم
// Handle duplicate customersasync function resolveCustomerConflict(shopifyCustomer, tajoCustomer) { // Merge data, preferring most recent updates const merged = { ...tajoCustomer, email: shopifyCustomer.email, firstName: shopifyCustomer.first_name || tajoCustomer.firstName, lastName: shopifyCustomer.last_name || tajoCustomer.lastName, phone: shopifyCustomer.phone || tajoCustomer.phone, // Keep Tajo loyalty data loyaltyPoints: tajoCustomer.loyaltyPoints, loyaltyTier: tajoCustomer.loyaltyTier };
return await tajo.customers.update(tajoCustomer.id, merged);}ریٹ لمٹنگ
// Implement exponential backoffasync function shopifyApiCall(fn, retries = 3) { for (let i = 0; i < retries; i++) { try { return await fn(); } catch (error) { if (error.code === 429 && i < retries - 1) { const delay = Math.pow(2, i) * 1000; await new Promise(r => setTimeout(r, delay)); continue; } throw error; } }}اگلے اقدامات
- ای میل اور ایس ایم ایس مہمات کے لیے Brevo انٹیگریشن کنفیگر کریں
- حقیقی وقت کے ایونٹس کے لیے ویب ہکس ترتیب دیں
- ہدف بند مارکیٹنگ کے لیے گاہکوں کے سیگمنٹس بنائیں
- خودکار مہمات کے لیے ای میل ٹیمپلیٹس بنائیں
سپورٹ
- انٹیگریشن سپورٹ: [email protected]
- Shopify دستاویزات: shopify.dev
- API حوالہ: docs.tajo.io/api
- سپورٹ سے رابطہ کریں: /ur/contact