موصل Shopify
موصل Shopify
اربط متجر Shopify الخاص بك بـ Brevo لمزامنة كاملة لبيانات العملاء، واستعادة السلال المهجورة، والحملات التسويقية الآلية.
نظرة عامة
| الخاصية | القيمة |
|---|---|
| المنصة | Shopify |
| الفئة | التجارة الإلكترونية |
| تعقيد الإعداد | سهل |
| تكامل رسمي | نعم |
| البيانات المتزامنة | العملاء، الطلبات، المنتجات، السلال، الأحداث |
| المهارات المتاحة | 12 |
الميزات
- مزامنة العملاء في الوقت الفعلي - تُزامن بيانات العملاء فورًا إلى جهات اتصال Brevo
- تتبع الطلبات - أحداث الطلبات لتدفقات ما بعد الشراء
- مزامنة كتالوج المنتجات - منتجات متاحة للتوصيات
- هجر سلة الشراء - تتبع واستعادة السلال المهجورة
- سلوك التصفح - تتبع مشاهدة الصفحات واهتمام المنتجات
- دعم متعدد المتاجر - اربط متاجر Shopify متعددة
المتطلبات المسبقة
قبل أن تبدأ، تأكد من توفر ما يلي:
- متجر Shopify مع صلاحيات مسؤول
- حساب Brevo مع وصول API
- حساب Tajo
التثبيت
الخيار 1: Shopify App Store (موصى به)
- قم بزيارة تطبيق Tajo في Shopify App Store
- انقر على “Add app”
- امنح الأذونات المطلوبة
- اربط حساب Brevo الخاص بك
الخيار 2: التثبيت اليدوي
الخطوة 1: إنشاء تطبيق Shopify
- اذهب إلى Shopify admin → Settings → Apps and sales channels
- انقر على “Develop apps” → “Create an app”
- سمّه “Tajo Integration”
الخطوة 2: ضبط نطاقات API
فعّل هذه النطاقات:
read_customerswrite_customersread_ordersread_productsread_checkoutswrite_script_tagsالخطوة 3: تثبيت التطبيق
# Using Tajo CLItajo connectors install shopify \ --shop-url your-store.myshopify.com \ --api-key $SHOPIFY_API_KEY \ --api-secret $SHOPIFY_API_SECRETالخطوة 4: ضبط Webhooks
يسجل Tajo هذه webhooks تلقائيًا:
| Webhook | الغرض |
|---|---|
customers/create | مزامنة عميل جديد |
customers/update | تغييرات بيانات العميل |
customers/delete | إزالة العميل |
orders/create | أحداث إنشاء الطلب |
orders/updated | تغييرات حالة الطلب |
checkouts/create | إنشاء سلة |
checkouts/update | تحديث السلة |
الإعداد
الإعداد الأساسي
connectors: shopify: enabled: true shop_url: "your-store.myshopify.com" api_version: "2024-01"
# Data sync options sync: customers: true orders: true products: true carts: true inventory: false # Optional
# List assignment lists: all_customers: 5 buyers: 6 abandoned_cart: 7ربط الحقول
اربط حقول Shopify بسمات جهات اتصال Brevo:
التعيينات الافتراضية
| Parameter | Type | Description |
|---|---|---|
email required | string | بريد العميل الإلكتروني (معرف فريد) |
first_name optional | string | يُربط بسمة FIRSTNAME |
last_name optional | string | يُربط بسمة LASTNAME |
phone optional | string | يُربط بسمة SMS للمراسلة عبر WhatsApp/SMS |
accepts_marketing optional | boolean | يتحكم في حالة الاشتراك |
orders_count optional | integer | إجمالي عدد الطلبات |
total_spent optional | number | قيمة العميل مدى الحياة |
tags optional | array | علامات العميل من Shopify |
ربط السمات المخصصة
field_mapping: # Standard fields email: email first_name: FIRSTNAME last_name: LASTNAME phone: SMS
# E-commerce metrics orders_count: ORDER_COUNT total_spent: TOTAL_SPENT last_order_date: LAST_ORDER_DATE
# Custom fields customer_type: CUSTOMER_TYPE preferred_language: LANGUAGE loyalty_tier: VIP_TIER
# Computed fields average_order_value: AOV days_since_last_order: RECENCYمزامنة المنتجات
زامن المنتجات لتوصيات البريد الإلكتروني:
sync: products: enabled: true include_variants: true include_images: true categories_as_tags: true
# Filter products filter: status: active exclude_tags: ["hidden", "wholesale-only"]تتبع المخزون
فعّل مزامنة مستوى المخزون:
sync: inventory: enabled: true low_stock_threshold: 10 out_of_stock_events: trueالأحداث
أحداث العملاء
| الحدث | المشغل | حالة الاستخدام |
|---|---|---|
customer_created | تسجيل عميل جديد | سلسلة الترحيب |
customer_updated | تغييرات الملف الشخصي | مزامنة البيانات |
customer_tags_added | تعيين العلامات | تحديثات القطاعات |
أحداث الطلبات
| الحدث | المشغل | حالة الاستخدام |
|---|---|---|
order_placed | اكتمال الدفع | تأكيد الطلب |
order_fulfilled | شحن الطلب | إشعار الشحن |
order_cancelled | إلغاء الطلب | بريد إلكتروني للإلغاء |
order_refunded | معالجة استرداد | تأكيد الاسترداد |
أحداث السلة
| الحدث | المشغل | حالة الاستخدام |
|---|---|---|
cart_created | إضافة عناصر إلى السلة | تتبع التصفح |
cart_updated | تعديل السلة | تتبع قيمة السلة |
cart_abandoned | لا دفع خلال 30 دقيقة | رسائل الاستعادة |
المهارات الممكَّنة
يُمكّن موصل Shopify هذه المهارات:
| المهارة | الوصف |
|---|---|
| مزامنة العملاء | مزامنة العملاء في الوقت الفعلي |
| أحداث الطلبات | تتبع دورة حياة الطلب |
| السلة المهجورة | رسائل استعادة السلة |
| سلسلة الترحيب | تأهيل العملاء الجدد |
| ما بعد الشراء | متابعة الطلب |
| استعادة العملاء | إعادة تفاعل العملاء غير النشطين |
| هجر التصفح | متابعة اهتمام المنتج |
| إعادة التعبئة | تذكيرات إعادة الطلب |
أمثلة البرمجة
تهيئة الموصل
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connect Shopify storeawait tajo.connectors.connect('shopify', { shopUrl: 'your-store.myshopify.com', apiKey: process.env.SHOPIFY_API_KEY, apiSecret: process.env.SHOPIFY_API_SECRET});تشغيل المزامنة الأولية
// Full historical syncawait tajo.connectors.sync('shopify', { type: 'full', resources: ['customers', 'orders', 'products'], since: '2023-01-01'});
// Check sync statusconst status = await tajo.connectors.status('shopify');console.log(status);// {// connected: true,// lastSync: '2024-01-15T10:30:00Z',// customersCount: 15420,// ordersCount: 8234,// productsCount: 342// }تتبع أحداث السلة
أضف سكربت Tajo إلى قالب Shopify الخاص بك:
<!-- Add to theme.liquid before </head> -->{% if customer %}<script> window.tajoConfig = { customerId: "{{ customer.id }}", customerEmail: "{{ customer.email }}", customerName: "{{ customer.first_name }}" };</script>{% endif %}<script src="https://cdn.tajo.io/shopify.js"></script>معالج Webhook مخصص
// Handle Shopify webhooks manuallyapp.post('/webhooks/shopify', async (req, res) => { const hmac = req.get('X-Shopify-Hmac-SHA256');
// Verify webhook signature if (!verifyShopifyWebhook(req.body, hmac)) { return res.status(401).send('Unauthorized'); }
const topic = req.get('X-Shopify-Topic');
// Forward to Tajo await tajo.connectors.handleWebhook('shopify', { topic, payload: req.body });
res.status(200).send('OK');});المراقبة
مقاييس لوحة التحكم
راقب اتصال Shopify الخاص بك في لوحة تحكم Tajo:
- حالة المزامنة: صحة الاتصال في الوقت الفعلي
- العملاء المُزامنون: إجمالي جهات الاتصال من Shopify
- الطلبات المتتبعة: أحداث الطلبات المعالجة
- استعادة السلة: أداء السلة المهجورة
- معدل الأخطاء: محاولات المزامنة الفاشلة
سجلات Webhook
اعرض حالة تسليم webhook:
tajo connectors logs shopify --type webhook --last 24hتاريخ المزامنة
تحقق من عمليات المزامنة التاريخية:
tajo connectors history shopify --limit 10استكشاف الأخطاء
المشكلات الشائعة
حدود معدل API
يمتلك Shopify حدود معدل API من 2 طلب/ثانية. استخدم مزامنة الدُفعات للواردات التاريخية الكبيرة.
| المشكلة | السبب | الحل |
|---|---|---|
| Webhook لم يُستلم | أذونات التطبيق | أعد تثبيت التطبيق بالنطاقات الصحيحة |
| العميل لم يُزامن | بريد إلكتروني مفقود | يتطلب Shopify بريدًا إلكترونيًا للعملاء |
| منتجات مفقودة | حالة المنتج | تحقق من أن المنتج بحالة “active” |
| السلة لا تُتبع | السكربت لم يُحمَّل | تحقق من السكربت في theme.liquid |
وضع التصحيح
فعّل تسجيلًا مفصلاً:
connectors: shopify: debug: true log_level: verbose log_webhooks: trueاختبار الاتصال
tajo connectors test shopify# ✓ API connection successful# ✓ Webhooks registered# ✓ Products accessible# ✓ Customers readable# ✓ Orders readableأفضل الممارسات
- ابدأ بمتجر تجريبي - استخدم متجر تطوير أولاً
- شغّل المزامنة الأولية خارج ساعات العمل - المزامنات الكبيرة قد تكون بطيئة
- اربط السمات المخصصة - لا تعتمد على التعيينات الافتراضية فقط
- فعّل تتبع السلة - مهم لاستعادة السلال المهجورة
- راقب صحة webhook - أعدّ تنبيهات للتسليمات الفاشلة
- استخدم الواردات المجمعة - للبيانات التاريخية التي تتجاوز 10,000 سجل
الأمان
- OAuth 2.0 - مصادقة آمنة قائمة على الرمز
- التحقق من webhook - التحقق من توقيع HMAC
- التخزين المشفر - بيانات اعتماد API مشفرة في حالة السكون
- وصول محدد النطاق - الحد الأدنى من الأذونات المطلوبة فقط