Блог

Как избавиться от дублей в Zoho CRM при работе с Facebook Leads? Рассказываем, как контролировать заявки по любому полю

Когда бизнес получает заявки из 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. Два сценария

  1. Контакт не найден → лид конвертируется в нового контакта, и сразу создаётся сделка со стадией Qualification.
  2. Контакт найден → лид конвертируется в пользу существующего контакта, а для него создаётся сделка, куда переносятся все рекламные и UTM-данные.

Шаг 4. Сохранение аналитики

Даже повторная заявка фиксируется как новая сделка, где отражены:
  • рекламная кампания,
  • объявление,
  • источник трафика (utm_source, utm_medium, utm_campaign).

Преимущества для работы с Facebook Leads

  • Нет дублей — база чистая, контакты не дублируются.
  • Сохраняется маркетинговая аналитика — можно видеть, какая кампания привела к сделке.
  • Сделки создаются всегда — менеджеры работают с каждой заявкой, маркетинг получает данные для отчётности.

Кейс: пример работы решения

1) Клиент оставляет заявку в Facebook-форме.
2) Скрипт проверяет: есть ли уже контакт с таким телефоном или e-mail?
Если нет — создаётся новый контакт и сделка.
Если есть — лид конвертируется в существующий контакт, и создаётся сделка с рекламными данными.
3) В CRM всегда чистая база, а аналитика отражает реальную эффективность рекламы.

Подводные камни при реализации


  • Пустые значения: убедитесь, что телефон или e-mail не пустые, иначе фильтр поиска может быть некорректным.
  • Результаты поиска: searchRecords возвращает список, поэтому ID нужно получать как Contact.get(0).get("id").
  • Синтаксис условий: используйте ==, а не =.
  • Перенос Description: если нужно описание из лида, его стоит забирать явно.
  • Гибкая проверка: список полей для поиска дублей лучше вынести в массив и итерировать.

Результаты внедрения

  • Убираем дубли при обработке Facebook-заявок.
  • Сохраняем полные рекламные данные в сделках.
  • Повышаем прозрачность аналитики и эффективность работы менеджеров.

Вывод

Если вы используете Facebook Leads и хотите:

  • исключить дубли в Zoho CRM,
  • сохранить все рекламные данные и UTM-метки,
  • видеть сквозную аналитику,

то стандартного функционала Zoho CRM будет недостаточно. Оптимальное решение — кастомный скрипт на Deluge.

В Business Lab мы внедряем Zoho CRM под реальные бизнес-задачи: от контроля дублей до интеграции с рекламными платформами и построения сквозной аналитики.