Половина операторов рассылок теряет контакты ещё на этапе заливки - не из-за бана, а из-за неверно собранного файла или прямого тапа по VCF на iPhone. Тема кажется технически простой, но «залить 50 000 контактов и сразу начать рассылку» - это заблуждение, которое убивает и аккаунт, и базу. После этой статьи у вас будет рабочий алгоритм подготовки, конвертации и побатчевого импорта под обе платформы.
VCF (Virtual Contact File, он же vCard) - обычный текстовый файл. Каждый контакт оборачивается в блок:
BEGIN:VCARD
VERSION:3.0
FN:Иван Клиент
TEL;TYPE=CELL:+79161234567
END:VCARD
Критичные детали:
3.0 или 4.0. Версия 2.1 не поддерживает UTF-8 в стандарте, и при импорте кириллические имена превращаются в иероглифы. Причина - конфликт кодировок Windows-1251 и UTF-8 без явного тега CHARSET=UTF-8.+, затем код страны, до 15 цифр. Формат 8 (916) 123-45-67 vCard сохранит как есть - WhatsApp его не распознает, рассылка по таким записям не пойдёт.FN (Full Name) - обязательно. Без имени контакт может не импортироваться или создастся пустая запись.Минимальная структура таблицы перед конвертацией:
| Имя | Номер (E.164) | Префикс (опционально) |
|---|---|---|
| Иван Клиент | +79161234567 | Lead_01 |
| Мария Базова | +79031234568 | Lead_02 |
Зачем префикс. Если добавить к имени уникальный маркер - например, Lead_23_ - после кампании всю заливку можно найти в поиске адресной книги одним запросом и удалить разом. Без префикса придётся вычищать вручную из тысяч записей.
Перед конвертацией: убери пустые строки, лишние столбцы, проверь формат каждого номера. Пакетная замена 8 → +7 - через Ctrl+H в Excel или формулой ="+7"&RIGHT(A2,10).
Три рабочих способа:
1. Макрос Excel (VBA). Генерирует VCF прямо из таблицы, полностью под контролем. Подходит, если базы регулярные и нужен повторяемый процесс. Готовых примеров на GitHub достаточно.
2. Python + библиотека vobject. Даёт полный контроль над полями, кодировкой, версией. Оптимально для операторов с объёмными базами или нестандартными полями (группы, теги, примечания).
3. Онлайн-конвертеры (tovcf.com и аналоги). Самый быстрый способ для разовой задачи - загрузил Excel, скачал VCF. Удобно, но есть существенное ограничение: загружая клиентскую базу на сторонний сервис, вы передаёте номера третьей стороне. Для чужих клиентских данных это нарушение политики конфиденциальности и требований к персональным данным в вашей юрисдикции. Используй онлайн-конвертеры только для своих тестовых баз или там, где это явно допустимо.
В любом случае проверь первые 10–20 строк сгенерированного VCF вручную в текстовом редакторе - до импорта.
Android читает VCF нативно через приложение «Контакты». Алгоритм:
Куда сохранять - спорный вопрос. Часть практиков предпочитает локальную память: меньше риск срабатывания антифрода Google при заливке тысяч контактов за раз. Другие считают, что синхронизация с Google выглядит «естественнее» для алгоритмов WhatsApp. Однозначных данных нет - выбирай исходя из масштаба задачи и допустимого риска.
Важно для бюджетных Android (< 6–8 GB ОЗУ): при импорте файла с 30 000+ контактов фоновый процесс android.process.acore и служба синхронизации WhatsApp могут уйти в Out-of-Memory crash. Устройство начинает греться, циклически перезагружает процесс. Лечение одно - дробить базу до импорта, не после.
Распространённое заблуждение: «скинул VCF в Telegram, тапнул - все 20 000 контактов сохранились». Это не так. iOS при открытии мультиконтактного VCF из мессенджера или почты показывает карточку только первого контакта в файле. Остальные тысячи записей система просто игнорирует.
Рабочие способы для iPhone:
Через iCloud (рекомендую как основной):
Через AirDrop: отправь VCF с Mac или другого iPhone → подтверди добавление контактов. Работает для небольших пакетов.
Через почту: вложи VCF в письмо → на iPhone открой вложение → «Добавить все контакты». Опция «Добавить все» появляется только при корректном формате vCard 3.0.
Официальный лимит iCloud - 50 000 контактов. На практике одним файлом это не загрузить.
Что происходит при попытке залить 30 000 контактов одним файлом через iCloud.com: браузер зависает на 10+ минут, затем таймаут - контакты не сохраняются. Стандартное решение из практики: разбить базу на 6 файлов по 5 000 записей, импортировать поочерёдно с паузой ~10 минут между пакетами.
Рекомендуемый размер пакета:
| Платформа | Рекомендуемый пакет | Причина |
|---|---|---|
| Android (флагман) | до 10 000 | Нативный импорт стабилен |
| Android (бюджет, < 6 GB RAM) | 3 000–5 000 | OOM-краш при больших объёмах |
| iPhone / iCloud.com | 2 000–5 000 | Таймаут браузера при > 10 000 |
Разбивку VCF-файла делают вручную в текстовом редакторе по тегу BEGIN:VCARD или скриптом. Каждый выходной файл должен заканчиваться полным блоком END:VCARD.
Когда контакты появляются в телефонной книге, и WhatsApp имеет доступ к контактам, приложение запускает фоновый Contact Discovery - хеширует номера и сверяет с базой Meta. Это штатная механика.
Что важно учитывать:
Согласно наблюдениям практиков (официальных данных Meta не публикует), система отслеживает не только факт отправки сообщений, но и аномальную скорость изменения адресной книги. Аккаунт, у которого исторически было 50 контактов, а за один цикл синхронизации приобрёл 40 000 новых - получает статус жёсткой премодерации (Sandbox). В этом режиме защитные свойства адресной книги (видимость как «своего» отправителя) нивелируются, даже если рассылка ещё не началась.
Практическое правило: не начинай рассылку сразу после импорта большой базы - особенно на новом аккаунте. Дай аккаунту «переварить» синхронизацию. Идеальный вариант - побатчевый импорт растянуть на несколько часов, а первые сообщения отправлять не раньше чем через сутки.
Номера без +: WhatsApp не распознаёт контакты без кода страны в E.164. Запись 9161234567 в телефонной книге - невидима для рассылки. Проверяй базу до конвертации, не после.
«Кракозябры» вместо имён. Причина - vCard 2.1 без явного CHARSET=UTF-8. Решение: всегда генерировать в версии 3.0 или 4.0.
Контакты не появились после импорта на iPhone. Причина - открытие VCF через мессенджер, iOS сохранил только первый. Решение: импорт через iCloud.com или AirDrop.
WhatsApp не видит контакты после импорта. Причина - номера без кода страны или в нестандартном формате. Решение: нормализация в Excel до конвертации.
Таймаут при импорте в iCloud. Причина - файл слишком большой. Решение: разбить на пакеты по 2 000–5 000, пауза 10 минут между пакетами.
OOM-краш на Android. Причина - объём ОЗУ < 6–8 GB, файл > 30 000 записей. Решение: пакеты по 3 000–5 000.
Подготовь шаблон Excel с тремя столбцами (имя, E.164, префикс), настрой один из методов конвертации и прогони тестовую базу в 500 контактов через полный цикл - от Excel до проверки в WhatsApp. Это займёт 20 минут и закроет все вопросы к технике до начала реальной кампании.
Практическое правило:
Один VCF на тысячи контактов - это не один импорт, а десяток последовательных, с паузами и проверкой после каждого.