EmailVerify LogoEmailVerify

Mailchimp Email Verification

Email checker for Mailchimp. Clean your email list before sending campaigns.

Поддерживайте чистоту списков Mailchimp, улучшайте доставляемость и снижайте расходы, проверяя email подписчиков с помощью EmailVerify.

Зачем проверять списки Mailchimp?

ПроблемаВлияниеРешение
Невалидные emailВысокий показатель отказовПроверяйте перед отправкой
Одноразовые emailНизкая вовлеченностьФильтруйте при подписке
Устаревшие спискиПоврежденная репутацияПериодическая очистка
Спам-ловушкиРиск попадания в черный списокВыявляйте рискованные адреса

Методы интеграции

МетодСценарий использованияАвтоматизация
API-интеграцияВерификация в реальном времениПолная
ZapierАвтоматизация без кодаПолная
Экспорт/ИмпортМассовая очистка списковРучная
WebhookВерификация новых подписчиковПолная

Метод 1: Интеграция через Zapier (Рекомендуется)

Самый простой способ автоматически проверять подписчиков Mailchimp.

Верификация новых подписчиков

Trigger: Mailchimp → New Subscriber

Action: EmailVerify → Verify Email

Filter: Based on verification result

Action: Mailchimp → Update subscriber / Unsubscribe

Шаги настройки:

  1. Создайте новый Zap в Zapier
  2. Trigger: Mailchimp - New Subscriber
  3. Action: Webhooks - POST на https://api.emailverify.ai/v1/verify
  4. Filter: Продолжить только если status = "valid"
  5. Action: Mailchimp - Update Subscriber с тегами

Конфигурация:

Webhook Settings:
  URL: https://api.emailverify.ai/v1/verify
  Method: POST
  Headers:
    Authorization: Bearer YOUR_API_KEY
    Content-Type: application/json
  Body: {"email": "{{email}}"}

Теггирование подписчиков по качеству

Добавляйте теги на основе результатов верификации:

If status = "valid" AND disposable = false
  → Add tag: "verified"

If disposable = true
  → Add tag: "disposable"
  → Update: Marketing permissions = false

If status = "invalid"
  → Unsubscribe member
  → Add tag: "invalid_email"

Метод 2: Прямая API-интеграция

Для пользовательских приложений интегрируйтесь напрямую с обоими API.

Пример на Node.js

const mailchimp = require('@mailchimp/mailchimp_marketing');
const { EmailVerify } = require('@emailverify/node');

// Initialize clients
mailchimp.setConfig({
  apiKey: process.env.MAILCHIMP_API_KEY,
  server: 'us1', // Your server prefix
});

const emailVerify = new EmailVerify({
  apiKey: process.env.EMAILVERIFY_API_KEY,
});

// Verify a subscriber
async function verifySubscriber(listId, email) {
  // Get verification result
  const result = await emailVerify.verify(email);

  // Get subscriber hash (MD5 of lowercase email)
  const subscriberHash = crypto
    .createHash('md5')
    .update(email.toLowerCase())
    .digest('hex');

  // Update subscriber based on result
  if (result.status === 'invalid') {
    // Unsubscribe invalid emails
    await mailchimp.lists.updateListMember(listId, subscriberHash, {
      status: 'unsubscribed',
    });

    // Add tag
    await mailchimp.lists.updateListMemberTags(listId, subscriberHash, {
      tags: [{ name: 'invalid_email', status: 'active' }],
    });
  } else if (result.status === 'valid') {
    // Tag as verified
    const tags = [{ name: 'verified', status: 'active' }];

    if (result.result.disposable) {
      tags.push({ name: 'disposable', status: 'active' });
    }

    await mailchimp.lists.updateListMemberTags(listId, subscriberHash, { tags });
  }

  return result;
}

Пример на Python

import mailchimp_marketing as mailchimp
from emailverify import Client as EmailVerify
import hashlib
import os

# Initialize clients
mailchimp_client = mailchimp.Client()
mailchimp_client.set_config({
    "api_key": os.environ["MAILCHIMP_API_KEY"],
    "server": "us1"
})

bv_client = EmailVerify(api_key=os.environ["EMAILVERIFY_API_KEY"])

def verify_subscriber(list_id: str, email: str):
    # Verify email
    result = bv_client.verify(email)

    # Get subscriber hash
    subscriber_hash = hashlib.md5(email.lower().encode()).hexdigest()

    if result.status == "invalid":
        # Unsubscribe invalid emails
        mailchimp_client.lists.update_list_member(
            list_id,
            subscriber_hash,
            {"status": "unsubscribed"}
        )

        # Add tag
        mailchimp_client.lists.update_list_member_tags(
            list_id,
            subscriber_hash,
            {"tags": [{"name": "invalid_email", "status": "active"}]}
        )

    elif result.status == "valid":
        tags = [{"name": "verified", "status": "active"}]

        if result.result.disposable:
            tags.append({"name": "disposable", "status": "active"})

        mailchimp_client.lists.update_list_member_tags(
            list_id,
            subscriber_hash,
            {"tags": tags}
        )

    return result


# Bulk verify entire list
def clean_list(list_id: str):
    # Get all subscribers
    members = mailchimp_client.lists.get_list_members_info(
        list_id,
        count=1000,
        status="subscribed"
    )

    results = {"valid": 0, "invalid": 0, "unknown": 0}

    for member in members["members"]:
        result = verify_subscriber(list_id, member["email_address"])
        results[result.status] = results.get(result.status, 0) + 1

    return results

Метод 3: Массовая очистка списков

Для больших списков экспортируйте и используйте массовую верификацию EmailVerify.

Шаг 1: Экспорт из Mailchimp

  1. Перейдите в AudienceAll contacts
  2. Нажмите Export Audience
  3. Скачайте CSV-файл

Шаг 2: Верификация в EmailVerify

Через дашборд:

  1. Войдите в EmailVerify
  2. Перейдите в Bulk Verification
  3. Загрузите ваш CSV-файл
  4. Дождитесь обработки
  5. Скачайте результаты

Через API:

const fs = require('fs');
const { EmailVerify } = require('@emailverify/node');

const client = new EmailVerify({
  apiKey: process.env.EMAILVERIFY_API_KEY,
});

async function cleanMailchimpExport(csvPath) {
  // Read CSV and extract emails
  const csv = fs.readFileSync(csvPath, 'utf-8');
  const lines = csv.split('\n');
  const emails = lines
    .slice(1) // Skip header
    .map((line) => line.split(',')[0]) // First column is email
    .filter((email) => email);

  // Submit bulk job
  const job = await client.verifyBulk(emails);
  console.log(`Job ID: ${job.job_id}`);

  // Wait for completion (poll or use webhook)
  let status;
  do {
    await new Promise((r) => setTimeout(r, 10000)); // Wait 10s
    status = await client.getBulkJobStatus(job.job_id);
    console.log(`Progress: ${status.progress_percent}%`);
  } while (status.status !== 'completed');

  // Get results
  const results = await client.getBulkJobResults(job.job_id);

  // Separate by status
  const valid = results.results.filter((r) => r.status === 'valid');
  const invalid = results.results.filter((r) => r.status === 'invalid');

  console.log(`Valid: ${valid.length}, Invalid: ${invalid.length}`);

  return { valid, invalid };
}

Шаг 3: Импорт результатов обратно

Создайте CSV для импорта в Mailchimp:

function createMailchimpImportCSV(verificationResults) {
  const header = 'Email Address,Tags\n';

  const validRows = verificationResults.valid
    .map((r) => {
      const tags = ['verified'];
      if (r.result.disposable) tags.push('disposable');
      return `${r.email},"${tags.join(',')}"`;
    })
    .join('\n');

  const invalidRows = verificationResults.invalid
    .map((r) => `${r.email},"invalid_email,unsubscribe"`)
    .join('\n');

  return header + validRows + '\n' + invalidRows;
}

Шаги импорта:

  1. Перейдите в AudienceImport contacts
  2. Загрузите CSV
  3. Сопоставьте поля: Email Address и Tags
  4. Выберите Update existing contacts
  5. Завершите импорт

Интеграция через Webhook

Получайте уведомления о завершении верификации:

Настройка Webhook в EmailVerify

// Create webhook
const webhook = await client.webhooks.create({
  url: 'https://your-server.com/api/emailverify-webhook',
  events: ['verification.completed'],
  secret: 'your-webhook-secret',
});

Обработка Webhook

// Express.js endpoint
app.post('/api/emailverify-webhook', express.json(), async (req, res) => {
  const { event, data } = req.body;

  if (event === 'verification.completed') {
    const { email, status, result } = data;

    // Update Mailchimp subscriber
    await updateMailchimpSubscriber(email, status, result);
  }

  res.status(200).send('OK');
});

async function updateMailchimpSubscriber(email, status, result) {
  const subscriberHash = crypto
    .createHash('md5')
    .update(email.toLowerCase())
    .digest('hex');

  const tags = [];

  if (status === 'valid') {
    tags.push({ name: 'verified', status: 'active' });
  } else if (status === 'invalid') {
    tags.push({ name: 'invalid_email', status: 'active' });
  }

  if (result.disposable) {
    tags.push({ name: 'disposable', status: 'active' });
  }

  await mailchimp.lists.updateListMemberTags(
    process.env.MAILCHIMP_LIST_ID,
    subscriberHash,
    { tags }
  );
}

Лучшие практики

1. Проверяйте перед добавлением

Проверяйте email перед добавлением в Mailchimp:

async function addSubscriber(listId, email, firstName, lastName) {
  // Verify first
  const verification = await emailVerify.verify(email);

  if (verification.status === 'invalid') {
    throw new Error('Invalid email address');
  }

  if (verification.result.disposable) {
    throw new Error('Disposable emails not allowed');
  }

  // Add to Mailchimp
  await mailchimp.lists.addListMember(listId, {
    email_address: email,
    status: 'subscribed',
    merge_fields: {
      FNAME: firstName,
      LNAME: lastName,
    },
    tags: ['verified'],
  });
}

2. Регулярно очищайте списки

Планируйте ежемесячную очистку списков:

// Cron job example (monthly)
const cron = require('node-cron');

cron.schedule('0 0 1 * *', async () => {
  console.log('Starting monthly list cleaning...');

  const lists = await mailchimp.lists.getAllLists();

  for (const list of lists.lists) {
    await cleanList(list.id);
  }

  console.log('List cleaning complete');
});

3. Сегментируйте по качеству email

Создавайте сегменты для таргетинга:

Сегмент высокого качества:

{
  "name": "High Quality Subscribers",
  "conditions": {
    "match": "all",
    "conditions": [
      {
        "field": "tag",
        "op": "contains",
        "value": "verified"
      },
      {
        "field": "tag",
        "op": "notcontain",
        "value": "disposable"
      }
    ]
  }
}

4. Используйте теги эффективно

Внедрите стратегию теггирования:

ТегЗначениеДействие
verifiedEmail валиденВключать в кампании
disposableВременный emailОграничить отправку
invalid_emailEmail отказалИсключить из кампаний
role_basedinfo@, support@Рассмотреть исключение
needs_reverifyПоследняя проверка >90 днейПерепроверить

5. Мониторьте метрики

Отслеживайте эти метрики после внедрения:

  • Показатель отказов: Должен значительно снизиться
  • Показатель открытий: Должен улучшиться
  • Оценка доставляемости: Должна вырасти
  • Качество роста списка: Отслеживайте проверенные vs непроверенные подписки

Калькулятор экономии

Оцените вашу экономию от очистки списков:

МетрикаДо очисткиПосле очистки
Размер списка100 00085 000
Невалидные email15%Менее 1%
Показатель отказов8%Менее 2%
Ежемесячная стоимость ESP$250$212
Годовая экономия-$456

Меньшие, чистые списки часто имеют более высокие показатели вовлеченности, улучшая вашу репутацию отправителя и доставляемость.

Устранение неполадок

Высокий показатель отказов после очистки

  • Убедитесь, что процесс очистки завершился успешно
  • Проверьте недавно добавленных непроверенных подписчиков
  • Перепроверьте email, показанные как валидные, но отказывающие

Теги не применяются

  • Проверьте, что разрешения API включают управление тегами
  • Проверьте статус подписчика (архивированные участники не могут быть помечены тегами)
  • Убедитесь, что имена тегов не превышают лимит символов

Ограничение скорости

И Mailchimp, и EmailVerify имеют ограничения скорости:

СервисЛимит
Mailchimp Marketing API10 запросов/секунду
EmailVerifyВ зависимости от плана

Внедрите задержки для массовых операций:

async function processWithDelay(items, processFn, delayMs = 100) {
  for (const item of items) {
    await processFn(item);
    await new Promise((r) => setTimeout(r, delayMs));
  }
}

Связанные ресурсы

On this page