مستندات n8n
74+ نود
🛒

شاپیفای

Shopify

اتوماسیون فروشگاه Shopify: مدیریت سفارش، محصول، مشتری، موجودی و ارسال

فروشگاهی
متوسط
۰ بازدید
n8n 1.0+

نمای کلی

نود Shopify یکی از مهم‌ترین نودهای n8n برای اتوماسیون تجارت الکترونیک است. Shopify بزرگ‌ترین پلتفرم فروشگاه‌ساز SaaS جهان با بیش از ۴ میلیون فروشگاه فعال است.

قابلیت‌های کلیدی:

  • مدیریت سفارشات: دریافت، به‌روزرسانی، بستن و لغو سفارش
  • مدیریت محصولات: ایجاد، ویرایش، حذف و لیست محصولات
  • مدیریت مشتریان: ایجاد، ویرایش، حذف و جستجوی مشتریان
  • مدیریت موجودی: بررسی، تنظیم و تغییر موجودی انبار
  • مدیریت ارسال (Fulfillment): ایجاد، به‌روزرسانی و لغو ارسال
  • مدیریت مجموعه‌ها (Collections): دسته‌بندی محصولات
  • مدیریت تنوع‌ها (Variants): قیمت، سایز، رنگ و...
  • مدیریت تصاویر محصول
  • کدهای تخفیف (Discount Codes)
  • پیش‌نویس سفارش (Draft Orders)
  • تراکنش‌های مالی

Shopify Trigger:

  • دریافت رویداد سفارش جدید (orders/create)
  • به‌روزرسانی محصول (products/update)
  • مشتری جدید (customers/create)
  • پرداخت انجام شده (orders/paid)
  • ارسال انجام شده (fulfillments/create)
  • و بیش از ۵۰ رویداد webhook دیگر

اهمیت برای فروشندگان ایرانی:

Shopify یکی از بهترین گزینه‌ها برای فروش بین‌المللی فروشندگان ایرانی است. با n8n می‌توانید فروشگاه Shopify خود را با سیستم‌های داخلی، تلگرام، حسابداری و لجستیک ایرانی یکپارچه کنید. مقایسه با WooCommerce: Shopify مدیریت سرور نمی‌خواهد، سریع‌تر setup می‌شود و Payment gateway‌های بین‌المللی دارد.

احراز هویت

احراز هویت Shopify

روش ۱: Custom App (توصیه شده)

#### مرحله ۱: ایجاد Custom App

  1. 1به Shopify Admin > Settings > Apps and sales channels بروید
  2. 2روی Develop apps کلیک کنید
  3. 3اگر برای بار اول است، Allow custom app development را فعال کنید
  4. 4روی Create an app کلیک کنید
  5. 5نام اپلیکیشن: مثلاً "n8n Automation"

#### مرحله ۲: تنظیم API Scopes

  1. 1در تب Configuration روی Configure Admin API scopes کلیک کنید
  2. 2Scopes مورد نیاز را فعال کنید:
code
read_orders, write_orders         → مدیریت سفارشات
   read_products, write_products     → مدیریت محصولات
   read_customers, write_customers   → مدیریت مشتریان
   read_inventory, write_inventory   → مدیریت موجودی
   read_fulfillments, write_fulfillments → مدیریت ارسال
   read_draft_orders, write_draft_orders → پیش‌نویس سفارش
   read_price_rules, write_price_rules   → کدهای تخفیف
   read_shipping, write_shipping     → تنظیمات ارسال
  1. 1Save کنید

#### مرحله ۳: نصب و دریافت Token

  1. 1روی Install app کلیک کنید
  2. 2Admin API access token را کپی کنید

⚠️ این توکن فقط یکبار نمایش داده می‌شود!

  1. 1API key و API secret key را نیز یادداشت کنید

#### مرحله ۴: تنظیم در n8n

  1. 1در n8n به Credentials > Shopify API بروید
  2. 2اطلاعات را وارد کنید:
code
Shop Subdomain: your-store (بدون .myshopify.com)
   Access Token: shpat_xxxxxxxxxxxxx
  1. 1Test Connection بزنید

روش ۲: OAuth2

  1. 1یک Shopify Partner Account بسازید
  2. 2App جدید در Partner Dashboard ایجاد کنید
  3. 3Client ID و Client Secret را در n8n وارد کنید
  4. 4Redirect URL:
code
https://your-n8n.com/rest/oauth2-credential/callback
  1. 1Connect بزنید و دسترسی بدهید

روش ۳: API Key + Password (Legacy)

⚠️ این روش deprecated شده و برای اپ‌های جدید توصیه نمی‌شود.

code
API Key: your-api-key
Password: your-api-password
Shop: your-store.myshopify.com

تنظیم Webhook برای Shopify Trigger:

  1. 1در n8n یک Shopify Trigger node اضافه کنید
  2. 2Topic مورد نظر را انتخاب کنید (مثل orders/create)
  3. 3Workflow را Activate کنید
  4. 4n8n به صورت خودکار webhook را در Shopify ثبت می‌کند

نکات امنیتی:

  • Access Token را به اشتراک نگذارید
  • حداقل Scope لازم را فعال کنید
  • از Webhook secret استفاده کنید
  • دسترسی‌ها را مرتب بازبینی کنید
  • از IP Whitelisting در صورت امکان استفاده کنید

عملیات‌های موجود

1

order-get

دریافت اطلاعات کامل یک سفارش با شماره سفارش یا ID

2

order-list

دریافت لیست سفارشات با فیلترهای مختلف

3

order-update

ویرایش اطلاعات سفارش مانند note، tags و shipping address

4

order-close

بستن سفارش (Close) پس از تکمیل

5

order-cancel

لغو سفارش با امکان Refund و Restock

6

product-create

ایجاد محصول جدید با عنوان، توضیحات، قیمت و تصاویر

7

product-get

دریافت اطلاعات کامل یک محصول

8

product-update

ویرایش اطلاعات محصول موجود

9

product-delete

حذف کامل محصول از فروشگاه

10

product-list

دریافت لیست محصولات با فیلتر و صفحه‌بندی

11

customer-create

ایجاد مشتری جدید در فروشگاه

12

customer-get

دریافت اطلاعات کامل یک مشتری

13

customer-update

ویرایش اطلاعات مشتری

14

customer-delete

حذف مشتری از فروشگاه

15

inventory-get

بررسی موجودی یک آیتم در لوکیشن‌های مختلف

16

inventory-adjust

افزایش یا کاهش موجودی آیتم

17

inventory-set

تنظیم مقدار دقیق موجودی آیتم

18

fulfillment-create

ثبت ارسال سفارش با کد رهگیری

19

fulfillment-update

به‌روزرسانی اطلاعات رهگیری ارسال

20

fulfillment-cancel

لغو ارسال ثبت شده

کاربردهای متداول

کاربردهای رایج

۱. اعلان سفارش جدید در تلگرام

هر بار که سفارش جدیدی ثبت شود، پیام کاملی با جزئیات به گروه تلگرام مدیران ارسال شود.

code
Shopify Trigger (orders/create)
  → Code (فرمت فارسی)
  → Telegram (sendMessage)
    ChatId: @my_shop_orders
    ParseMode: HTML
    Text:
      <b>سفارش جدید #{{$json.order_number}}</b>

      مشتری: {{$json.customer.first_name}} {{$json.customer.last_name}}
      ایمیل: {{$json.email}}
      مبلغ: {{$json.total_price}} {{$json.currency}}
      تعداد آیتم: {{$json.line_items.length}}

      محصولات:
      {{$json.line_items.map(i => '- ' + i.title + ' x' + i.quantity).join('\n')}}

۲. همگام‌سازی موجودی با سیستم داخلی

هر بار که موجودی محصول در سیستم داخلی تغییر کند، در Shopify هم به‌روزرسانی شود.

code
Webhook (تغییر موجودی انبار)
  → Shopify (inventory-adjust)
    inventory_item_id: {{$json.shopify_item_id}}
    location_id: {{$json.location_id}}
    available_adjustment: {{$json.quantity_change}}
  → IF (موجودی < 5)
    → Telegram (هشدار موجودی کم)

۳. ثبت خودکار ارسال با کد رهگیری

وقتی مرسوله در سیستم لجستیک ثبت شد، ارسال در Shopify ثبت شود.

code
Webhook (ثبت بارنامه از لجستیک)
  → Shopify (fulfillment-create)
    orderId: {{$json.shopify_order_id}}
    tracking_number: {{$json.tracking_code}}
    tracking_company: "پست پیشتاز"
    tracking_url: {{$json.tracking_url}}
    notify_customer: true
  → Telegram (تایید ارسال)

۴. پردازش خودکار سفارشات پرخطر (Fraud Detection)

بررسی سفارشات مشکوک و اعلان به تیم بررسی.

code
Shopify Trigger (orders/create)
  → IF (risk_level == 'high' OR total > 500)
    → Shopify (order-update) tags: "needs-review"
    → Telegram (هشدار سفارش مشکوک به ادمین)
    → Gmail (ارسال ایمیل به تیم بررسی)
  → Else
    → Shopify (order-update) tags: "auto-approved"

۵. گزارش فروش روزانه

ارسال آمار فروش هر شب به گروه مدیران.

code
Schedule (هر شب ساعت ۲۳)
  → Shopify (order-list)
    created_at_min: {{$today.toISO()}}
    status: any
  → Code (محاسبه آمار)
    const orders = $input.all().map(i => i.json);
    const total = orders.reduce((s, o) => s + parseFloat(o.total_price), 0);
    const paid = orders.filter(o => o.financial_status === 'paid');
  → Telegram (sendMessage)
    Text:
      گزارش فروش امروز:
      تعداد سفارش: {{$json.count}}
      مبلغ کل: {{$json.total}} USD
      پرداخت شده: {{$json.paidCount}}
      بالاترین سفارش: {{$json.maxOrder}}

۶. ایجاد خودکار محصول از Google Sheets

وقتی محصول جدیدی در اسپردشیت اضافه شود، در Shopify ایجاد شود.

code
Google Sheets Trigger (ردیف جدید)
  → Shopify (product-create)
    title: {{$json.title}}
    body_html: {{$json.description}}
    vendor: {{$json.brand}}
    product_type: {{$json.category}}
    variants: [{
      price: {{$json.price}},
      sku: {{$json.sku}},
      inventory_quantity: {{$json.stock}}
    }]
    images: [{src: {{$json.image_url}}}]
    status: "active"
  → Google Sheets (به‌روزرسانی ستون shopify_id)

۷. همگام‌سازی مشتریان با CRM

وقتی مشتری جدیدی در Shopify ثبت شود، در CRM هم ایجاد شود.

code
Shopify Trigger (customers/create)
  → HTTP Request (POST به CRM)
    Body: {
      name: {{$json.first_name}} {{$json.last_name}},
      email: {{$json.email}},
      phone: {{$json.phone}},
      source: "Shopify",
      tags: ["shopify-customer"]
    }
  → MySQL (ذخیره mapping ID)

۸. مدیریت خودکار تخفیف‌ها

ایجاد کد تخفیف برای مشتریان VIP.

code
Schedule (اول هر ماه)
  → Shopify (customer-list) tags: "vip"
  → Loop
    → HTTP Request (Shopify API: ایجاد discount code)
      POST /admin/api/2024-01/price_rules/{id}/discount_codes.json
      Body: {"discount_code": {"code": "VIP-{{$json.id}}-{{$now.month}}"}}
    → Gmail (ارسال کد تخفیف به مشتری)

۹. پشتیبان‌گیری از محصولات

ذخیره لیست کامل محصولات به صورت هفتگی.

code
Schedule (هر یکشنبه)
  → Shopify (product-list) limit: 250
  → Code (تبدیل به CSV)
  → Google Drive (Upload)
    Name: shopify_products_{{$now.toFormat('yyyy-MM-dd')}}.csv
    Folder: Backups/Shopify
  → Telegram (گزارش بک‌آپ)

۱۰. سیستم بازگشت خودکار (Returns)

وقتی مشتری درخواست بازگشت دهد، سفارش بررسی و پردازش شود.

code
Webhook (درخواست بازگشت)
  → Shopify (order-get) orderId: {{$json.order_id}}
  → IF (order.created_at > 30 days ago)
    → Telegram (رد درخواست - خارج از مهلت)
  → Else
    → Shopify (order-update) tags: "return-requested"
    → Gmail (ارسال فرم بازگشت به مشتری)
    → Telegram (اعلان به تیم پشتیبانی)

۱۱. فروش چند کاناله (Multi-channel)

همگام‌سازی محصولات بین Shopify و سایت فارسی.

code
Shopify Trigger (products/update)
  → HTTP Request (به‌روزرسانی در سایت فارسی)
    PUT /api/products/{{$json.sku}}
    Body: {
      title_fa: {{$json.metafield_title_fa}},
      price_toman: {{$json.price * exchange_rate}},
      stock: {{$json.inventory_quantity}}
    }

۱۲. هشدار محصول تمام شده

وقتی موجودی به صفر برسد اعلان ارسال شود.

code
Shopify Trigger (inventory_levels/update)
  → IF (available <= 0)
    → Shopify (product-get)
    → Telegram (sendMessage)
      Text: "محصول {{$json.title}} تمام شد! SKU: {{$json.sku}}"
    → Google Sheets (ثبت در لیست سفارش مجدد)

نکات حرفه‌ای

نکات حرفه‌ای

۱. از Shopify Trigger بجای Polling استفاده کنید

Shopify Trigger (webhook) بسیار سریع‌تر و بهینه‌تر از Schedule + API call است. Webhook در لحظه رویداد fire می‌شود.

۲. Rate Limit Management

Shopify محدودیت ۲ درخواست در ثانیه دارد. بین درخواست‌ها Wait اضافه کنید:

code
Loop → Shopify API → Wait (600ms) → Next Item

Header X-Shopify-Shop-Api-Call-Limit تعداد باقیمانده را نشان می‌دهد.

۳. استفاده از Tags برای مدیریت Workflow

Tags در Shopify بسیار قدرتمند هستند. از آنها برای مدیریت وضعیت‌ها استفاده کنید:

code
auto-approved, needs-review, vip-customer,
exported-to-erp, fulfilled-partial, return-requested

۴. Webhook Topics پرکاربرد

code
orders/create          → سفارش جدید
orders/paid            → پرداخت موفق
orders/fulfilled       → ارسال کامل
orders/cancelled       → لغو سفارش
products/create        → محصول جدید
products/update        → تغییر محصول
customers/create       → مشتری جدید
inventory_levels/update → تغییر موجودی
refunds/create         → بازگشت وجه
fulfillments/create    → ثبت ارسال
app/uninstalled        → حذف اپلیکیشن

۵. Pagination برای دریافت همه داده‌ها

Shopify حداکثر ۲۵۰ آیتم در هر صفحه برمی‌گرداند. از cursor-based pagination استفاده کنید:

code
HTTP Request (GET)
  URL: /admin/api/2024-01/products.json?limit=250
  → بررسی Link header برای صفحه بعدی
  → page_info parameter برای cursor pagination

۶. Metafields برای داده‌های سفارشی

از Metafields برای ذخیره داده‌های اضافی فارسی استفاده کنید:

code
Metafield:
  namespace: "custom"
  key: "title_fa"
  value: "عنوان فارسی محصول"
  type: "single_line_text_field"

۷. Bulk Operations برای عملیات بزرگ

برای به‌روزرسانی صدها محصول، از Shopify GraphQL Bulk Operations استفاده کنید. بسیار سریع‌تر از API REST است.

۸. یکپارچه‌سازی با لجستیک ایرانی

برای فروشندگانی که از ایران ارسال می‌کنند:

code
Shopify (order/create)
  → Code (تبدیل آدرس)
  → HTTP Request (ثبت در پست پیشتاز / تیپاکس / اسنپ‌اکسپرس)
  → Shopify (fulfillment-create) tracking_number + tracking_url

۹. مقایسه با WooCommerce

  • Shopify: بدون نیاز به سرور، سریع‌تر، payment بین‌المللی
  • WooCommerce: کنترل بیشتر، هزینه کمتر، سفارشی‌سازی بالاتر
  • برای فروش بین‌المللی: Shopify توصیه می‌شود
  • برای بازار داخلی ایران: WooCommerce با درگاه‌های ایرانی

۱۰. Error Handling حرفه‌ای

همیشه Error handling داشته باشید:

code
Shopify Node → Error Workflow:
  → Log Error (MySQL/MongoDB)
  → Telegram (هشدار به ادمین)
  → Retry (برای خطاهای موقت 429, 500, 503)

۱۱. تبدیل ارز برای بازار ایران

code
Shopify (order/create)
  → HTTP Request (نرخ ارز لحظه‌ای)
  → Code:
    const priceUSD = parseFloat(order.total_price);
    const rate = exchangeRate.USD_IRR;
    const priceToman = Math.round(priceUSD * rate / 10);
    // ذخیره در سیستم حسابداری ایرانی

۱۲. Multi-location Inventory

اگر چند انبار دارید، موجودی هر لوکیشن را جداگانه مدیریت کنید:

code
GET /admin/api/2024-01/locations.json → لیست انبارها
GET /admin/api/2024-01/inventory_levels.json?location_ids=xxx

۱۳. Draft Orders برای سفارشات دستی

برای سفارشات تلفنی یا خاص:

code
Telegram (دریافت سفارش تلفنی)
  → Shopify (Draft Order Create)
  → Shopify (Draft Order Complete) → تبدیل به سفارش واقعی

۱۴. Shopify API Versioning

Shopify هر ۳ ماه نسخه جدید API منتشر می‌کند. از آخرین نسخه stable استفاده کنید:

code
2024-01, 2024-04, 2024-07, 2024-10

نسخه‌های قدیمی‌تر از ۱ سال deprecated می‌شوند.

۱۵. Monitoring و Analytics

code
Schedule (هر ساعت)
  → Shopify (order-list) created_at_min: 1h ago
  → Code (محاسبه KPIs)
  → Google Sheets (ذخیره آمار)
  → IF (فروش < threshold)
    → Telegram (هشدار کاهش فروش)

۱۶. استفاده از GraphQL Admin API

برای کوئری‌های پیچیده، GraphQL بسیار بهینه‌تر است:

code
HTTP Request (POST)
  URL: https://store.myshopify.com/admin/api/2024-01/graphql.json
  Body: {
    "query": "{ orders(first: 50, query: \"financial_status:paid\") { edges { node { id name totalPrice } } } }"
  }

رفع مشکلات

رفع مشکلات رایج

❌ خطای 401 Unauthorized

علت: Access Token نامعتبر یا منقضی شده

راه‌حل

  • Access Token را بررسی و در صورت نیاز regenerate کنید
  • مطمئن شوید توکن با shpat_ شروع می‌شود
  • اگر از OAuth استفاده می‌کنید، credential را reconnect کنید
  • Shop subdomain را بدون .myshopify.com وارد کنید

❌ خطای 403 Forbidden

علت: دسترسی API کافی نیست

راه‌حل

  • API Scopes اپلیکیشن را بررسی کنید
  • برای سفارشات: read_orders و write_orders لازم است
  • برای محصولات: read_products و write_products لازم است
  • پس از تغییر scopes، اپ را دوباره install کنید

❌ خطای 404 Not Found

علت: Resource پیدا نشد

راه‌حل

  • شناسه سفارش/محصول/مشتری را بررسی کنید
  • API version اشتباه نباشد (مثل 2024-01 vs 2024-04)
  • محصول حذف یا archived نشده باشد
  • Shop subdomain صحیح وارد شده باشد

❌ خطای 422 Unprocessable Entity

علت: داده‌های ارسالی نامعتبر

راه‌حل

  • فیلدهای required را بررسی کنید
  • فرمت ایمیل معتبر باشد
  • قیمت عدد مثبت باشد
  • SKU تکراری نباشد
  • وزن محصول عددی باشد
  • از JSON Validator استفاده کنید

❌ خطای 429 Too Many Requests

علت: محدودیت Rate Limit

راه‌حل

  • Shopify Rate Limit: ۲ درخواست/ثانیه (REST API)
  • GraphQL: ۱۰۰۰ cost points/ثانیه
  • از Wait Node بین درخواست‌ها استفاده کنید:
code
Loop → Shopify → Wait (600ms) → Next
  • header Retry-After را بررسی کنید
  • از Bulk Operations برای عملیات بزرگ استفاده کنید

❌ خطای "Webhook creation failed"

علت: n8n نتوانسته webhook ثبت کند

راه‌حل

  • مطمئن شوید n8n از اینترنت قابل دسترس است (public URL)
  • Webhook URL نباید localhost باشد
  • SSL معتبر لازم است (HTTPS)
  • تعداد webhookها محدود است (حداکثر ۵ در هر topic)
  • webhookهای قدیمی را پاک کنید

❌ مشکل Inventory Location

علت: Location ID اشتباه

راه‌حل

  • لیست locations را بگیرید:

GET /admin/api/2024-01/locations.json

  • هر فروشگاه حداقل یک location دارد
  • برای Shopify Plus، چند location پشتیبانی می‌شود
  • مطمئن شوید inventory tracking فعال است

❌ تصاویر محصول آپلود نمی‌شوند

علت: URL تصویر نامعتبر یا دسترسی‌پذیر نیست

راه‌حل

  • URL تصویر باید public و HTTPS باشد
  • فرمت‌های مجاز: JPEG, PNG, GIF, WebP
  • حداکثر حجم: ۲۰ مگابایت
  • از CDN معتبر استفاده کنید
  • تصویر را ابتدا در سرویس ابری آپلود کنید
اشتراک‌گذاری:

آیا این مستندات مفید بود؟