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

میل‌چیمپ

Mailchimp

اتوماسیون ایمیل مارکتینگ، مدیریت Audience، کمپین‌های ایمیلی، Segmentation و گزارش‌گیری در Mailchimp

بازاریابی
متوسط
۰ بازدید
n8n 1.0+

نمای کلی

نود Mailchimp چیست؟

نود Mailchimp امکان اتصال و خودکارسازی فرآیندهای ایمیل مارکتینگ و بازاریابی را در n8n فراهم می‌کند. Mailchimp یک پلتفرم جامع بازاریابی است که شامل Email Marketing، Audience Management، Campaign Builder، Automation، Landing Pages و Analytics می‌شود.

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

  • مدیریت Audiences/Lists: ایجاد، ویرایش، حذف و لیست Audienceها (لیست مخاطبین)
  • مدیریت Members: افزودن، به‌روزرسانی، حذف و جستجوی اعضای لیست
  • مدیریت Campaigns: ایجاد، ارسال، زمان‌بندی و حذف کمپین‌های ایمیلی
  • Tags: مدیریت تگ‌ها برای دسته‌بندی مخاطبین
  • Segments: ایجاد و مدیریت سگمنت‌ها برای هدف‌گیری دقیق
  • Templates: مدیریت قالب‌های ایمیل
  • Reports: دریافت گزارش‌ عملکرد کمپین‌ها
  • Automations: مدیریت اتوماسیون‌های بازاریابی
  • Merge Fields: مدیریت فیلدهای سفارشی Audience
  • A/B Testing: ایجاد و مدیریت تست‌های A/B

Mailchimp Trigger:

  • دریافت webhook هنگام subscribe/unsubscribe شدن مخاطب
  • Trigger بر اساس تغییر پروفایل مخاطب
  • دریافت رویدادهای مربوط به Campaign (ارسال، باز شدن، کلیک)
  • Trigger بر اساس email bounced یا cleaned

محدودیت‌های API:

  • همه پلن‌ها: حداکثر ۱۰ درخواست همزمان
  • Rate Limit: حداکثر ۱۰ درخواست در ثانیه
  • Batch Operations: حداکثر ۵۰۰ عملیات در هر batch
  • Export: حداکثر ۲۰ درخواست export در روز
  • List Size: بسته به پلن Mailchimp (Free: تا ۵۰۰ مخاطب)

احراز هویت

احراز هویت Mailchimp

روش ۱: API Key (توصیه شده برای سادگی)

API Key ساده‌ترین و رایج‌ترین روش اتصال به Mailchimp است.

#### مراحل دریافت API Key:

  1. 1به اکانت Mailchimp خود وارد شوید
  2. 2روی آیکون پروفایل کلیک کنید → Account & billing
  3. 3به بخش Extras > API keys بروید
  4. 4روی Create A Key کلیک کنید
  5. 5نام API Key را تنظیم کنید (مثل: "n8n Integration")
  6. 6API Key را کپی کنید

#### فرمت API Key:

code
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-usXX

**نکته مهم**: بخش انتهایی (-usXX) نشان‌دهنده Data Center شماست. مثلاً -us21 یعنی سرور شما us21 است.

#### تنظیم در n8n:

  1. 1Credentials > Mailchimp API
  2. 2API Key را وارد کنید
  3. 3Test Connection بزنید
  4. 4اگر اتصال موفق بود، لیست Audienceها نمایش داده می‌شود

روش ۲: OAuth2

OAuth2 برای اپلیکیشن‌هایی که به نمایندگی از کاربران مختلف عمل می‌کنند مناسب‌تر است.

#### مراحل تنظیم OAuth2:

  1. 1به **Mailchimp Developer Portal** بروید: developer.mailchimp.com
  2. 2روی Register An App کلیک کنید
  3. 3اطلاعات App را تنظیم کنید:
  • App Name: نام اپلیکیشن
  • App Description: توضیحات
  • Redirect URL: آدرس callback n8n
  1. 1Client ID و Client Secret را کپی کنید

#### تنظیم در n8n:

  1. 1Credentials > Mailchimp OAuth2 API
  2. 2Client ID و Client Secret را وارد کنید
  3. 3روی Connect کلیک کنید
  4. 4در پنجره باز شده، اکانت Mailchimp خود را تایید کنید

Data Center (سرور):

Mailchimp API URL شامل Data Center است:

code
https://<dc>.api.mailchimp.com/3.0/

Data Center از انتهای API Key شما استخراج می‌شود:

  • API Key: abc123-us21 → Data Center: us21
  • API URL: https://us21.api.mailchimp.com/3.0/

نکات امنیتی:

  • API Key را در جایی امن نگهداری کنید
  • از API Key فقط برای یک integration استفاده کنید
  • API Keyهای استفاده نشده را غیرفعال کنید
  • هرگز API Key را در کد یا Repository قرار ندهید
  • برای دسترسی محدود، از OAuth2 با scopes مشخص استفاده کنید
  • به صورت دوره‌ای API Keyها را rotate کنید

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

1

audience-get

دریافت اطلاعات کامل یک Audience (لیست مخاطبین) شامل نام، آمار اعضا، تنظیمات Campaign و اطلاعات Contact. هر اکانت Mailchimp می‌تواند چندین Audience داشته باشد.

2

audience-list

دریافت لیست تمام Audienceها (لیست‌های مخاطبین) در اکانت. شامل آمار کلی هر Audience مانند تعداد اعضا، نرخ باز شدن و کلیک.

3

member-add

افزودن مخاطب جدید به یک Audience. شامل تنظیم وضعیت اشتراک (subscribed, unsubscribed, pending, cleaned)، Merge Fields سفارشی، تگ‌ها و تنظیمات زبان.

4

member-update

ویرایش اطلاعات یک مخاطب موجود در Audience. می‌توانید Merge Fields، وضعیت اشتراک، تگ‌ها و سایر اطلاعات را به‌روزرسانی کنید. از MD5 hash ایمیل به عنوان شناسه استفاده می‌شود.

5

member-remove

حذف دائمی یک مخاطب از Audience. این عملیات برگشت‌ناپذیر است. برای لغو اشتراک بدون حذف، از Update Member با status: unsubscribed استفاده کنید.

6

campaign-create

ایجاد کمپین ایمیلی جدید. انواع کمپین: Regular (معمولی)، Plaintext (متنی ساده)، Absplit (تست A/B) و RSS (خوراک RSS). شامل تنظیمات Audience هدف، موضوع، فرستنده و ردیابی.

7

campaign-send

ارسال فوری یک کمپین آماده به Audience هدف. کمپین باید قبلاً ایجاد شده و محتوای آن تکمیل شده باشد. پس از ارسال، کمپین قابل ویرایش نیست.

8

campaign-get

دریافت اطلاعات کامل یک کمپین شامل تنظیمات، وضعیت، آمار و محتوا. مفید برای بررسی وضعیت کمپین قبل از ارسال یا دریافت آمار پس از ارسال.

9

campaign-list

دریافت لیست کمپین‌ها با امکان فیلتر بر اساس نوع، وضعیت، تاریخ و Audience. شامل صفحه‌بندی و مرتب‌سازی.

10

campaign-delete

حذف دائمی یک کمپین. فقط کمپین‌هایی که هنوز ارسال نشده‌اند (وضعیت save یا paused) قابل حذف هستند. کمپین‌های ارسال شده قابل حذف نیستند.

11

campaign-schedule

زمان‌بندی ارسال کمپین در تاریخ و ساعت مشخص. امکان استفاده از Send Time Optimization (بهترین زمان ارسال بر اساس رفتار مخاطب) و Timewarp (ارسال بر اساس منطقه زمانی مخاطب).

12

tag-manage

افزودن یا حذف تگ‌ها از یک مخاطب. تگ‌ها برای دسته‌بندی و سگمنت‌بندی مخاطبین استفاده می‌شوند. می‌توانید چندین تگ را همزمان مدیریت کنید.

13

segment-create

ایجاد Segment جدید در یک Audience برای هدف‌گیری گروه خاصی از مخاطبین. Segmentها می‌توانند استاتیک (لیست ثابت) یا داینامیک (بر اساس شرایط) باشند.

14

segment-list

دریافت لیست Segmentهای یک Audience شامل نام، نوع (static/saved)، تعداد اعضا و شرایط فیلتر.

15

template-list

دریافت لیست قالب‌های ایمیل موجود در اکانت. شامل Template‌های سفارشی و Template‌های آماده Mailchimp. هر Template شامل نام، نوع، تاریخ ایجاد و تصویر پیش‌نمایش است.

16

report-get

دریافت گزارش کامل عملکرد یک کمپین ارسال شده شامل نرخ باز شدن (Open Rate)، نرخ کلیک (Click Rate)، Bounceها، Unsubscribeها، آمار لینک‌ها و مقایسه با میانگین صنعت.

17

automation-list

دریافت لیست اتوماسیون‌های تنظیم شده در Mailchimp. شامل Welcome Series، Abandoned Cart، Birthday Emails و سایر اتوماسیون‌ها با وضعیت فعال/غیرفعال.

18

merge-field-list

دریافت لیست Merge Fields (فیلدهای سفارشی) تعریف شده در یک Audience. Merge Fields برای ذخیره اطلاعات اضافی مخاطبین مانند نام، شماره تلفن، آدرس و فیلدهای سفارشی کسب‌وکار استفاده می‌شوند.

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

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

۱. خبرنامه خودکار با محتوای داینامیک

ارسال خبرنامه هفتگی با محتوای جدید سایت به صورت کاملاً خودکار.

code
Schedule (هر هفته شنبه ساعت 10:00)
  -> HTTP Request (دریافت آخرین مقالات از API سایت)
  -> Code (ساخت محتوای HTML ایمیل)
    title: "خبرنامه هفتگی - هفته {{$now.weekNumber}}"
    articles: [آخرین 5 مقاله]
  -> Mailchimp (campaign-create)
    type: regular
    listId: "abc123"
    subject: "خبرنامه هفتگی: ${articles[0].title}"
    fromName: "تیم محتوا"
  -> HTTP Request (تنظیم محتوای HTML کمپین)
    PUT /campaigns/{{$json.id}}/content
    html: {{$json.newsletterHTML}}
  -> Mailchimp (campaign-send)
    campaignId: {{$json.id}}
  -> Telegram (اعلان: خبرنامه ارسال شد)

۲. ثبت خودکار Lead از فرم وب‌سایت

هر بار که فرمی در سایت پر شود، مخاطب جدید در Mailchimp اضافه و در لیست مناسب دسته‌بندی شود.

code
Webhook (فرم تماس سایت)
  -> IF (email exists in Mailchimp)
    -> Mailchimp (member-update)
      mergeFields: {FNAME: "{{$json.name}}", PHONE: "{{$json.phone}}"}
      tags: [{name: "Website Lead", status: "active"}]
  -> Else
    -> Mailchimp (member-add)
      listId: "main-list"
      email: {{$json.email}}
      status: "pending"  // double opt-in
      mergeFields: {FNAME: "{{$json.name}}", PHONE: "{{$json.phone}}"}
      tags: ["Website Lead", "{{$json.source}}"]
  -> Telegram (اعلان: Lead جدید از سایت)

۳. Lead Nurturing اتوماتیک (پرورش سرنخ)

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

code
Mailchimp Trigger (subscribe جدید)
  -> Mailchimp (tag-manage)
    tags: [{name: "Nurture-Step-1", status: "active"}]
  -> Wait (3 روز)
  -> Mailchimp (campaign-create + send)
    subject: "آشنایی با محصولات ما"
    segment: "Nurture-Step-1"
  -> Mailchimp (tag-manage)
    tags: [{name: "Nurture-Step-1", status: "inactive"},
           {name: "Nurture-Step-2", status: "active"}]
  -> Wait (5 روز)
  -> Mailchimp (campaign-create + send)
    subject: "داستان موفقیت مشتریان ما"
  -> Wait (7 روز)
  -> Mailchimp (campaign-create + send)
    subject: "پیشنهاد ویژه برای شما"
    // شامل کد تخفیف اختصاصی

۴. ایمیل سبد خرید رها شده (Abandoned Cart)

وقتی مشتری سبد خرید را بدون پرداخت رها می‌کند، ایمیل یادآوری ارسال شود.

code
Webhook (سبد خرید رها شده - از فروشگاه)
  -> Wait (1 ساعت)
  -> HTTP Request (بررسی: آیا پرداخت انجام شده؟)
  -> IF (پرداخت نشده)
    -> Mailchimp (member-update)
      mergeFields: {CART_ITEMS: "{{$json.items}}", CART_TOTAL: "{{$json.total}}"}
      tags: [{name: "Abandoned Cart", status: "active"}]
    -> Mailchimp (campaign-create)
      subject: "سبد خرید شما منتظر شماست!"
      previewText: "محصولات انتخابی شما هنوز موجود هستند"
    -> Mailchimp (campaign-send)
    -> Wait (24 ساعت)
    -> IF (هنوز پرداخت نشده)
      -> Mailchimp (campaign-create + send)
        subject: "۱۰٪ تخفیف ویژه برای تکمیل خرید شما"

۵. Welcome Series (سریال خوش‌آمدگویی)

مجموعه ایمیل‌های خوش‌آمدگویی برای اعضای جدید.

code
Mailchimp Trigger (new subscriber)
  -> Mailchimp (tag-manage)
    tags: [{name: "Welcome Series", status: "active"}]
  -> Mailchimp (campaign-create + send)
    subject: "به خانواده ما خوش آمدید! *|FNAME|*"
    template: welcome-email-template
  -> Wait (2 روز)
  -> Mailchimp (campaign-create + send)
    subject: "راهنمای شروع سریع"
  -> Wait (4 روز)
  -> Mailchimp (campaign-create + send)
    subject: "آیا سوالی دارید؟ ما اینجاییم"
  -> Wait (7 روز)
  -> Mailchimp (report-get)
    // بررسی آیا ایمیل‌ها باز شده‌اند
  -> IF (هیچ ایمیلی باز نشده)
    -> Mailchimp (member-update)
      tags: [{name: "Inactive New", status: "active"}]

۶. Segmentation هوشمند بر اساس رفتار خرید

دسته‌بندی خودکار مخاطبین بر اساس تاریخچه خرید.

code
Schedule (هر روز ساعت 6:00)
  -> Database (مشتریان با خرید در 30 روز اخیر)
  -> Loop
    -> IF (totalPurchases > 10,000,000)
      -> Mailchimp (tag-manage)
        tags: [{name: "VIP Customer", status: "active"},
               {name: "High Value", status: "active"}]
    -> ELSE IF (totalPurchases > 2,000,000)
      -> Mailchimp (tag-manage)
        tags: [{name: "Regular Customer", status: "active"}]
    -> ELSE IF (lastPurchase < 90 days ago)
      -> Mailchimp (tag-manage)
        tags: [{name: "At Risk", status: "active"}]
    -> Mailchimp (member-update)
      mergeFields: {LAST_BUY: "{{$json.lastPurchaseDate}}", TOTAL: "{{$json.totalSpent}}"}
    -> Wait (200ms)

۷. A/B Testing خودکار

اجرای تست A/B و انتخاب خودکار برنده.

code
Schedule (شروع کمپین)
  -> Mailchimp (campaign-create)
    type: "absplit"
    listId: "main-list"
    // تنظیمات A/B:
    // Version A: subject "تخفیف ویژه برای شما"
    // Version B: subject "فرصت محدود: ۲۰٪ تخفیف"
    // Winner criteria: open_rate
    // Test size: 20% (هر گروه 10%)
    // Wait time: 4 hours
  -> Mailchimp (campaign-send)
  -> Wait (6 ساعت)
  -> Mailchimp (report-get)
  -> Code (تحلیل نتایج)
    winnerSubject, openRateA, openRateB
  -> Telegram (گزارش: "نتیجه A/B: Version {{winner}} برنده شد")
  -> Google Sheets (ذخیره نتایج A/B برای تحلیل آینده)

۸. همگام‌سازی CRM با Mailchimp

مخاطبین CRM را با Mailchimp هماهنگ نگه دارید.

code
Schedule (هر ساعت)
  -> HubSpot/Database (مخاطبین تغییر یافته)
  -> Loop
    -> IF (مخاطب در Mailchimp وجود دارد)
      -> Mailchimp (member-update)
        mergeFields: {FNAME, LNAME, COMPANY, PHONE}
        tags: بر اساس lifecycle stage
    -> Else
      -> Mailchimp (member-add)
        status: subscribed
        mergeFields: {FNAME, LNAME, COMPANY}
        tags: ["CRM Sync", "{{$json.source}}"]
    -> Wait (100ms)  // رعایت Rate Limit

۹. تحلیل و گزارش عملکرد کمپین‌ها

گزارش هفتگی عملکرد ایمیل مارکتینگ.

code
Schedule (هر یکشنبه ساعت 20:00)
  -> Mailchimp (campaign-list)
    status: sent
    sortField: send_time
    sortDir: DESC
    count: 10
  -> Loop
    -> Mailchimp (report-get)
      campaignId: {{$json.id}}
  -> Code (تحلیل و خلاصه‌سازی)
    totalSent, avgOpenRate, avgClickRate
    bestCampaign, worstCampaign
    unsubscribeRate, bounceRate
  -> Slack (ارسال گزارش به #marketing)
    "گزارش هفتگی ایمیل مارکتینگ:
     ایمیل‌های ارسالی: {{totalSent}}
     نرخ باز شدن: {{avgOpenRate}}%
     نرخ کلیک: {{avgClickRate}}%
     بهترین کمپین: {{bestCampaign}}"
  -> Google Sheets (ذخیره آمار هفتگی)

۱۰. ایمیل تولد و مناسبت‌ها

ارسال ایمیل تبریک تولد با کد تخفیف اختصاصی.

code
Schedule (هر روز ساعت 8:00)
  -> Mailchimp (segment-create)
    conditions: {
      match: "all",
      conditions: [{
        field: "BIRTHDAY",
        op: "is",
        value: "{{$today.format('MM/DD')}}"
      }]
    }
  -> Mailchimp (campaign-create)
    subject: "تولدت مبارک *|FNAME|*! هدیه ویژه برای تو"
    previewText: "کد تخفیف ۲۵٪ مخصوص روز تولدت"
    segmentId: {{$json.segmentId}}
  -> Mailchimp (campaign-send)
  -> Database (ثبت کد تخفیف تولد)

۱۱. پاکسازی لیست و بهبود Deliverability

پاکسازی دوره‌ای مخاطبین غیرفعال برای بهبود نرخ تحویل ایمیل.

code
Schedule (هر ماه)
  -> Mailchimp (segment-create)
    name: "Inactive 6 Months"
    conditions: {
      match: "all",
      conditions: [
        {field: "last_open", op: "greater", value: "180"},
        {field: "last_click", op: "greater", value: "180"}
      ]
    }
  -> Mailchimp (campaign-create + send)
    subject: "دلمان برایتان تنگ شده! آیا هنوز علاقه‌مندید؟"
    segment: "Inactive 6 Months"
  -> Wait (14 روز)
  -> Code (بررسی: چه کسانی ایمیل را باز نکردند)
  -> Loop (مخاطبین بی‌پاسخ)
    -> Mailchimp (member-update)
      status: "unsubscribed"
      tags: [{name: "Cleaned - Inactive", status: "active"}]
  -> Telegram (گزارش: "{{count}} مخاطب غیرفعال پاکسازی شد")

۱۲. ایمیل‌های E-commerce خودکار

ایمیل‌های خودکار بر اساس رویدادهای فروشگاهی.

code
Webhook (رویداد فروشگاه)
  -> Switch (نوع رویداد)
    Case "order_completed":
      -> Mailchimp (member-update)
        mergeFields: {LAST_ORDER: "{{$json.orderId}}", ORDER_TOTAL: "{{$json.total}}"}
        tags: [{name: "Customer", status: "active"}, {name: "Lead", status: "inactive"}]
      -> Wait (7 روز)
      -> Mailchimp (campaign-create + send)
        subject: "نظر شما درباره خرید اخیرتان"

    Case "product_viewed":
      -> Mailchimp (member-update)
        mergeFields: {VIEWED_ITEM: "{{$json.productName}}"}
      -> Wait (24 ساعت)
      -> IF (خرید انجام نشده)
        -> Mailchimp (campaign-create + send)
          subject: "محصولی که بررسی کردید هنوز موجود است"

    Case "review_submitted":
      -> Mailchimp (tag-manage)
        tags: [{name: "Reviewer", status: "active"}]
      -> Mailchimp (campaign-create + send)
        subject: "ممنون از نظرتان! کد تخفیف بعدی شما"

نکات حرفه‌ای

نکات حرفه‌ای

۱. از Merge Tags برای شخصی‌سازی استفاده کنید

Merge Tags محتوای ایمیل را برای هر مخاطب شخصی‌سازی می‌کنند:

code
*|FNAME|*         -> نام مخاطب
*|LNAME|*         -> نام خانوادگی
*|EMAIL|*         -> آدرس ایمیل
*|LIST:NAME|*     -> نام Audience
*|DATE:d/m/Y|*    -> تاریخ امروز
*|UNSUB|*         -> لینک لغو اشتراک (الزامی)
*|LIST:ADDRESS|*  -> آدرس فیزیکی (الزامی)
*|ARCHIVE|*       -> لینک نسخه وب

نکته: همیشه fallback تعیین کنید: *|FNAME|fallback:دوست عزیز|*

۲. MD5 Hash برای شناسایی Member

Mailchimp API از MD5 hash ایمیل (lowercase) به عنوان subscriber_hash استفاده می‌کند:

javascript
// در Code node:
const crypto = require('crypto');
const email = items[0].json.email.toLowerCase().trim();
const subscriberHash = crypto.createHash('md5').update(email).digest('hex');
// استفاده: /lists/{listId}/members/{subscriberHash}

۳. از Upsert (PUT) بجای Create (POST) استفاده کنید

PUT endpoint همزمان create و update انجام می‌دهد و خطای Member Exists نمی‌دهد:

code
PUT /lists/{listId}/members/{subscriberHash}
Body: {
  email_address: "user@example.com",
  status_if_new: "subscribed",  // وضعیت اگر مخاطب جدید باشد
  merge_fields: {FNAME: "Ali"}
}

۴. Segmentation بر اساس Engagement

مخاطبین فعال و غیرفعال را جدا کنید:

json
{
  "match": "all",
  "conditions": [
    {
      "condition_type": "Aim",
      "field": "aim-open",
      "op": "open",
      "value": "last_campaign_5"
    }
  ]
}

سگمنت‌های مفید:

  • باز کرده ۳ کمپین اخیر: Engaged
  • باز نکرده ۵ کمپین اخیر: Disengaged
  • کلیک کرده: High Intent
  • هرگز باز نکرده: Inactive

۵. بهترین زمان ارسال ایمیل

Mailchimp Send Time Optimization بهترین زمان را تعیین می‌کند:

code
// فعال‌سازی Timewarp:
campaign-schedule
  timewarp: true
  scheduleTime: "2024-03-15T10:00:00Z"
  // ایمیل ساعت 10 صبح محلی هر مخاطب ارسال می‌شود

بهترین ساعات ارسال (به وقت ایران):

  • B2B: ساعت ۱۰-۱۱ صبح، سه‌شنبه و چهارشنبه
  • B2C: ساعت ۲۰-۲۱، پنج‌شنبه و جمعه
  • خبرنامه: ساعت ۸-۹ صبح، شنبه

۶. A/B Testing موثر

عناصر قابل تست:

code
Subject Line:    "تخفیف ۲۰٪" vs "فرصت محدود"
From Name:       "نام شرکت" vs "نام شخص"
Send Time:       صبح vs عصر
Content:         طولانی vs خلاصه
CTA Button:      "خرید کنید" vs "مشاهده محصولات"
Preview Text:    با preview vs بدون preview

قوانین A/B Testing:

  • فقط یک متغیر را تغییر دهید
  • حجم نمونه کافی (حداقل ۱۰۰۰ مخاطب در هر گروه)
  • زمان کافی برای نتیجه‌گیری (حداقل ۴ ساعت)

۷. Tags vs Segments vs Groups

code
Tags:
  - برای دسته‌بندی داخلی توسط تیم
  - مخاطب نمی‌بیند
  - مناسب: "VIP", "Lead Source: Google", "Campaign: Summer"

Segments:
  - فیلتر داینامیک بر اساس شرایط
  - به‌روزرسانی خودکار
  - مناسب: "خرید بالای ۵ میلیون", "فعال در ۳۰ روز اخیر"

Groups:
  - دسته‌بندی توسط مخاطب
  - مخاطب خودش انتخاب می‌کند
  - مناسب: "علاقه‌مند به فناوری", "خبرنامه هفتگی"

۸. بهبود Deliverability (نرخ تحویل)

code
1. از Double Opt-in استفاده کنید:
   status: "pending" بجای "subscribed"

2. لیست را منظم پاکسازی کنید:
   - حذف bounced emails
   - حذف مخاطبین ۶ ماه غیرفعال

3. SPF, DKIM و DMARC را تنظیم کنید

4. از دامنه ایمیل حرفه‌ای استفاده کنید:
   بهتر: info@yourdomain.com
   بدتر: yourbrand@gmail.com

5. Subject Line spam trigger نداشته باشد:
   اجتناب: "رایگان!", "فوری!", "!!!!", "همه حروف بزرگ"

۹. Batch Operations برای عملیات حجیم

بجای درخواست تک‌تک، از Batch API استفاده کنید:

code
POST /batches
Body: {
  operations: [
    {
      method: "PUT",
      path: "/lists/{listId}/members/{hash1}",
      body: "{...}"
    },
    {
      method: "PUT",
      path: "/lists/{listId}/members/{hash2}",
      body: "{...}"
    }
    // تا 500 عملیات در هر batch
  ]
}

نکات:

  • حداکثر ۵۰۰ عملیات در هر batch
  • نتیجه را با GET /batches/{batchId} بررسی کنید
  • برای import هزاران مخاطب ایده‌آل است

۱۰. Content Template با متغیرهای داینامیک

ساخت Template با محتوای متغیر:

html
<h1>سلام *|FNAME|fallback:دوست عزیز|*!</h1>

*|IF:MEMBERSHIP="premium"|*
  <p>محتوای ویژه اعضای Premium</p>
*|ELSE:|*
  <p>برای مشاهده محتوای کامل، عضو Premium شوید</p>
*|END:IF|*

*|IF:BIRTHDAY|*
  <p>تولدت مبارک!</p>
*|END:IF|*

۱۱. Campaign Content تنظیم کردن

بعد از ایجاد کمپین، محتوا را جداگانه تنظیم کنید:

code
// روش 1: HTML مستقیم
PUT /campaigns/{campaignId}/content
Body: {
  html: "<html>محتوای ایمیل</html>"
}

// روش 2: استفاده از Template
PUT /campaigns/{campaignId}/content
Body: {
  template: {
    id: 12345,
    sections: {
      "body_content": "<p>محتوای سفارشی</p>"
    }
  }
}

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

code
Mailchimp (member-add)
  -> Success: ادامه Workflow
  -> Error 400 (Member Exists):
    -> Mailchimp (member-update)  // بجای add، update کن
  -> Error 429 (Rate Limit):
    -> Wait (5s) -> Retry
  -> Error 401 (Unauthorized):
    -> Telegram Alert (مشکل API Key!)
  -> Error 400 (Compliance):
    -> Log (مخاطب compliance state - skip)

۱۳. Webhook Events Mailchimp

رویدادهای قابل Subscribe:

code
subscribe    -> مخاطب جدید subscribe شد
unsubscribe  -> مخاطب لغو اشتراک کرد
profile      -> پروفایل مخاطب تغییر کرد
cleaned      -> ایمیل cleaned شد (bounce سخت)
upemail      -> آدرس ایمیل تغییر کرد
campaign     -> کمپین ارسال شد

۱۴. محدودیت‌های مهم Mailchimp

code
API Rate Limit:      10 درخواست همزمان / 10 req/sec
Batch Operations:    500 عملیات هر batch
Audience (Free):     حداکثر 500 مخاطب
Audience (Standard): حداکثر 100,000 مخاطب
Subject Line:        حداکثر 150 کاراکتر
Preview Text:        حداکثر 150 کاراکتر
Campaign Name:       حداکثر 100 کاراکتر
Tags per member:     نامحدود
Segments per list:   تا 500
Merge Fields:        حداکثر 80 فیلد سفارشی
Template HTML:       حداکثر 500KB

۱۵. Compliance و قوانین ایمیل مارکتینگ

code
1. همیشه لینک Unsubscribe داشته باشید (*|UNSUB|*)
2. آدرس فیزیکی شرکت الزامی است (*|LIST:ADDRESS|*)
3. از Double Opt-in استفاده کنید
4. لیست خریداری شده Import نکنید
5. به درخواست Unsubscribe فوراً عمل کنید
6. اطلاعات فرستنده (From) واقعی باشد
7. Subject Line گمراه‌کننده نباشد
8. قوانین GDPR و CAN-SPAM را رعایت کنید

۱۶. Google Analytics Tracking

ردیابی کمپین‌ها در Google Analytics:

code
campaign-create:
  tracking: {
    google_analytics: "summer_sale_2024"
  }
// لینک‌ها با UTM parameter اضافه می‌شوند:
// ?utm_source=mailchimp&utm_medium=email&utm_campaign=summer_sale_2024

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

Mailchimp pagination با offset و count:

code
Set (offset = 0, allMembers = [])
  -> Loop
    -> Mailchimp API (GET /lists/{id}/members?count=100&offset={{offset}})
    -> Code (اضافه به allMembers)
    -> IF (total_items > offset + 100)
      -> Set (offset += 100)
      -> Back to Loop
    -> Else: خروج

رفع مشکلات

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

خطای 401 Unauthorized

علت: API Key نامعتبر یا Data Center اشتباه

راه‌حل

  • API Key را مجدداً از Mailchimp کپی کنید
  • مطمئن شوید پسوند Data Center صحیح است (مثل -us21)
  • API Key را در Account > Extras > API Keys بررسی کنید
  • اگر API Key غیرفعال شده، یک Key جدید بسازید
  • در n8n، Credential را ویرایش و مجدداً Test کنید

خطای 400 Bad Request - Invalid Resource

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

راه‌حل

  • فرمت ایمیل را بررسی کنید (باید معتبر باشد)
  • Merge Field نام‌ها باید دقیقاً مطابق تعریف در Audience باشند
  • مقادیر فیلدها باید با نوع تعریف شده مطابقت داشته باشند
  • برای فیلدهای DATE فرمت MM/DD/YYYY استفاده کنید
  • برای ADDRESS فیلد، فرمت صحیح: {addr1, city, state, zip, country}

خطای 400 - Member Exists

علت: ایمیل قبلاً در Audience وجود دارد

راه‌حل

  • ابتدا بررسی کنید آیا مخاطب وجود دارد:
code
GET /lists/{listId}/members/{md5(email)}
  • اگر وجود دارد از member-update استفاده کنید
  • یا از PUT (upsert) بجای POST استفاده کنید:
code
PUT /lists/{listId}/members/{md5(email)}
  // اگر وجود دارد update و اگر نه create می‌کند

خطای 400 - Compliance: Member in Compliance State

علت: مخاطب قبلاً unsubscribe کرده و طبق قوانین نمی‌توان resubscribe کرد

راه‌حل

  • مخاطبی که خودش unsubscribe کرده را نمی‌توانید با API دوباره subscribe کنید
  • این محدودیت قانونی CAN-SPAM و GDPR است
  • مخاطب باید خودش از طریق فرم مجدداً subscribe کند
  • از status: "pending" استفاده کنید تا double opt-in ارسال شود
  • مخاطبین cleaned هم قابل resubscribe نیستند

خطای 429 Too Many Requests

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

راه‌حل

  • Mailchimp اجازه حداکثر ۱۰ درخواست همزمان می‌دهد
  • Wait node بین درخواست‌ها اضافه کنید (حداقل 200ms)
  • از Batch Operations برای عملیات حجیم استفاده کنید
  • header Retry-After را بررسی و رعایت کنید
  • در حلقه‌ها:
code
Loop -> Mailchimp -> Wait (300ms) -> Next

خطای 404 Resource Not Found

علت: شناسه Audience، Campaign یا Member اشتباه است

راه‌حل

  • List ID (Audience ID) را از Audience > Settings بررسی کنید
  • Campaign ID را از URL کمپین در Mailchimp بخوانید
  • برای Member، شناسه MD5 hash ایمیل (lowercase) است:
javascript
const md5Hash = require('crypto').createHash('md5')
    .update(email.toLowerCase()).digest('hex');
  • Audience حذف یا آرشیو نشده باشد

کمپین ارسال نمی‌شود (Campaign cannot be sent)

علت: کمپین ناقص است

راه‌حل

  • محتوای HTML یا Template حتماً تنظیم شده باشد
  • فیلدهای الزامی: subject, from_name, reply_to
  • Audience هدف باید حداقل یک subscriber داشته باشد
  • لینک Unsubscribe (*|UNSUB|*) باید در محتوا وجود داشته باشد
  • آدرس فیزیکی شرکت (*|LIST:ADDRESS|*) باید تنظیم شده باشد
  • از Checklist API استفاده کنید:
code
GET /campaigns/{id}/send-checklist

Merge Tags کار نمی‌کنند

علت: نام Merge Field اشتباه یا تعریف نشده

راه‌حل

  • لیست Merge Fields را بررسی کنید:
code
GET /lists/{listId}/merge-fields
  • نام Merge Tag دقیقاً مطابق تعریف باشد (حساس به حروف بزرگ/کوچک)
  • Merge Tagها در محتوا با فرمت *|TAG_NAME|* استفاده می‌شوند
  • برای Merge Field سفارشی ابتدا آن را در Audience Settings تعریف کنید
  • مقدار فیلد باید قبل از ارسال کمپین تنظیم شده باشد

Webhook/Trigger دریافت نمی‌شود

علت: تنظیمات Webhook نادرست

راه‌حل

  • در Mailchimp به Audience > Settings > Webhooks بروید
  • مطمئن شوید URL n8n webhook صحیح و publicly accessible است
  • رویدادهای مورد نظر را تیک بزنید:
  • Subscribes, Unsubscribes, Profile Updates, Email Changed, Cleaned
  • آدرس webhook باید HTTPS باشد
  • Webhook URL n8n باید در حالت Production (نه Test) فعال باشد
اشتراک‌گذاری:

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