Когда бизнес получает заявки из Facebook, часто один и тот же человек оставляет контакты несколько раз: в разных кампаниях, с разных форм или устройств. В Zoho CRM это приводит к дублям лидов.
Какие проблемы создают дубли:
- менеджеры тратят время на повторную обработку,
- маркетинговая аналитика искажается,
- база клиентов «засоряется».
Ограничения стандартного дубли-чека в Zoho CRM
- Проверка работает только по ограниченному набору полей (обычно e-mail).
- Нельзя настроить каскадные правила (например, «сначала телефон, потом e-mail»).
- При конвертации Facebook-лидов в существующие контакты часто теряются данные рекламных кампаний и UTM-метки.
Решение: кастомный контроль дублей для Facebook-заявок в Zoho CRM
Мы разработали скрипт на Deluge, который:
- проверяет лиды по любым полям (телефон, e-mail, кастомные),
- сохраняет рекламные данные Facebook и UTM-метки,
- конвертирует лид либо в нового, либо в существующего контакта без создания дубля,
- всегда создаёт сделку, чтобы ни одна заявка не потерялась.
info LeadID;
// Get Lead
lead = zoho.crm.getRecordById("Leads",LeadID);
info lead;
Phone = lead.get("Phone");
info Phone;
Email = lead.get("Email");
info Email;
Name = lead.get("Full_Name");
info Name;
City = lead.get("City");
info City;
Ad_Account = lead.get("Ad_Account");
Ad_Account_ID = lead.get("Ad_Account_ID");
Ad_Campaign = lead.get("Ad_Campaign");
Ad_Campaign_ID = lead.get("Ad_Campaign_ID");
Ad_ID = lead.get("Ad_ID");
Ad_Set = lead.get("Ad_Set");
Ad_Set_ID = lead.get("Ad_Set_ID");
Ads = lead.get("Ads");
Facebook_Page = lead.get("Facebook_Page");
Facebook_Page_ID = lead.get("Facebook_Page_ID");
form_name = lead.get("form_name");
Lead_Source = lead.get("Lead_Source");
utm_campaign = lead.get("utm_campaign");
utm_content = lead.get("utm_content");
utm_medium = lead.get("utm_medium");
utm_source = lead.get("utm_source");
utm_term = lead.get("utm_term");
Language = lead.get("Language");
Description = lead.get("Description");
// check contact
Param = "(Phone:equals:" + Phone + ")";
Contact = zoho.crm.searchRecords("Contacts",Param);
info Contact;
ValueRep = Contact.isEmpty();
info ValueRep;
if(ValueRep == true)
{
Param = "(Email:equals:" + Email + ")";
Contact = zoho.crm.searchRecords("Contacts",Param);
info Contact;
Value = Contact.isEmpty();
info ValueRep;
}
if(Contact.isEmpty() = true)
{
deal_values = Map();
deal_values.put("Deal_Name",Name);
deal_values.put("Stage","Qualification");
ConvertLead = zoho.crm.convertLead(LeadID,{"Deals":deal_values});
info ConvertLead;
}
else
{
Contact = Contact.toString();
ContactID = Contact.get("id");
info ContactID;
values_map = Map();
values_map.put("overwrite",true);
values_map.put("Contacts",ContactID);
response = zoho.crm.convertLead(LeadID,values_map);
info response;
// Create Deal
values_map.put("Deal_Name",Name);
values_map.put("Stage","Qualification");
values_map.put("Amount","0");
values_map.put("Contact_Name",ContactID);
values_map.put("Ad_Account",Ad_Account);
values_map.put("Ad_Account_ID",Ad_Account_ID);
values_map.put("Ad_Campaign",Ad_Campaign);
values_map.put("Ad_Campaign_ID",Ad_Campaign_ID);
values_map.put("Ad_ID",Ad_ID);
values_map.put("Ad_Set",Ad_Set);
values_map.put("Ad_Set_ID",Ad_Set_ID);
values_map.put("Ads",Ads);
values_map.put("Facebook_Page",Facebook_Page);
values_map.put("Facebook_Page_ID",Facebook_Page_ID);
values_map.put("form_name",form_name);
values_map.put("Lead_Source",Lead_Source);
values_map.put("utm_campaign",utm_campaign);
values_map.put("utm_content",utm_content);
values_map.put("utm_medium",utm_medium);
values_map.put("utm_source",utm_source);
values_map.put("utm_term",utm_term);
values_map.put("Type","Existing Business");
values_map.put("Language",Language);
values_map.put("Phone",Phone);
values_map.put("Description",Description);
values_map.put("City",City);
response = zoho.crm.createRecord("Deals",values_map,{"trigger":{"workflow"}});
info response;
}Как работает кастомный скрипт в Zoho CRM
Шаг 1. Получение лида
Из Facebook-заявки в Zoho CRM выгружаются контактные данные (Phone, Email, Full_Name, City) и рекламные метки (Ad_Account, Ad_Campaign, Ad_Set, Ad_ID, Facebook_Page, form_name, utm_*, Language).
Шаг 2. Проверка дублей
- Сначала поиск по телефону.
- Если контакт не найден — поиск по e-mail.
- Можно расширить проверку на кастомные поля (например, ИНН, паспорт, ID клиента).
Шаг 3. Два сценария
- Контакт не найден → лид конвертируется в нового контакта, и сразу создаётся сделка со стадией Qualification.
- Контакт найден → лид конвертируется в пользу существующего контакта, а для него создаётся сделка, куда переносятся все рекламные и UTM-данные.
Шаг 4. Сохранение аналитики
Даже повторная заявка фиксируется как новая сделка, где отражены:
- рекламная кампания,
- объявление,
- источник трафика (utm_source, utm_medium, utm_campaign).
Преимущества для работы с Facebook Leads
- Нет дублей — база чистая, контакты не дублируются.
- Сохраняется маркетинговая аналитика — можно видеть, какая кампания привела к сделке.
- Сделки создаются всегда — менеджеры работают с каждой заявкой, маркетинг получает данные для отчётности.
Кейс: пример работы решения
1) Клиент оставляет заявку в Facebook-форме.
2) Скрипт проверяет: есть ли уже контакт с таким телефоном или e-mail?
Если нет — создаётся новый контакт и сделка.
Если есть — лид конвертируется в существующий контакт, и создаётся сделка с рекламными данными.
3) В CRM всегда чистая база, а аналитика отражает реальную эффективность рекламы.
2) Скрипт проверяет: есть ли уже контакт с таким телефоном или e-mail?
Если нет — создаётся новый контакт и сделка.
Если есть — лид конвертируется в существующий контакт, и создаётся сделка с рекламными данными.
3) В CRM всегда чистая база, а аналитика отражает реальную эффективность рекламы.
Подводные камни при реализации
- Пустые значения: убедитесь, что телефон или e-mail не пустые, иначе фильтр поиска может быть некорректным.
- Результаты поиска: searchRecords возвращает список, поэтому ID нужно получать как Contact.get(0).get("id").
- Синтаксис условий: используйте ==, а не =.
- Перенос Description: если нужно описание из лида, его стоит забирать явно.
- Гибкая проверка: список полей для поиска дублей лучше вынести в массив и итерировать.
Результаты внедрения
- Убираем дубли при обработке Facebook-заявок.
- Сохраняем полные рекламные данные в сделках.
- Повышаем прозрачность аналитики и эффективность работы менеджеров.
Вывод
Если вы используете Facebook Leads и хотите:
то стандартного функционала Zoho CRM будет недостаточно. Оптимальное решение — кастомный скрипт на Deluge.
В Business Lab мы внедряем Zoho CRM под реальные бизнес-задачи: от контроля дублей до интеграции с рекламными платформами и построения сквозной аналитики.
- исключить дубли в Zoho CRM,
- сохранить все рекламные данные и UTM-метки,
- видеть сквозную аналитику,
то стандартного функционала Zoho CRM будет недостаточно. Оптимальное решение — кастомный скрипт на Deluge.
В Business Lab мы внедряем Zoho CRM под реальные бизнес-задачи: от контроля дублей до интеграции с рекламными платформами и построения сквозной аналитики.