avatar
2 хвилин читати

Боремося з дублями заявок в нутрі/товарці

Боремося з дублями заявок в нутрі/товарці

Неодноразово до мене звертались баєри з запитами вирішити проблему з дублями. І зазвичай все зводилось до банальних рішень: робота з куками, блок кнопки відправки форми після першого натискання, одним словом все те, що працює на рівні фронт частини ленда. І скажу відверто, такі рішення були дуже сумнівними, адже всеодно ліди умудрялись прокидати дублі заявок. 

Ще тоді в мене виникла ідея зробити якийсь універсальний інструмент, з допомогою якого буде можливість практично на 100% позбутись даної проблеми.
І ось, не минуло  й "овердофіга" часу, як я все таки добрався до реалізації такого "продукту", і здається вийшло щось не погане.

Єдиним логічним рішенням, яке я побачив на даний момент було наступне: зберігати всі нові заявки (а саме номери телефонів) в свою імпровізовану "базу", і на основі цієї бази робити пеевірку (якщо номер, який юзер намагається залишити в заявці вже присутній в базі - скрипт блокує відправку, повідомляючи користувача про те, що за цим номером вже залишали заявку). Чому база імпровізована? Бо не хотілось ускладнювати всю цю історію піднімаючи реальну БД, та і потреби в цьому не бачу, дане рішення націлене на соло байєрів або невеликі тіми, у великих я впевнений такі питання вже давно мають свої рішення, тому так.

Тепер до справи, як воно працює на практиці:
1. на сервері створюємо довільну папку поза всіма лендами (наприклад папка dublic) в яку завантажуємо наступні файли 

файли перевірки на боці клієнта та сервера
файли перевірки на боці клієнта та сервера

2. в нашому ленді потрібно зробити підключення цих файлів, і так як нас цікавить масова перевірка з декількох лендів одночасно (через що і виносилась папка поза всі ленди), то підключати краще абсолютним шляхом (замість https://mysite.com прописується айпі сервера або домен, який прив'язано до нього).

Параметр offerId слугує для сегментації баз під різні офери. Прописуємо сюди назву офера, або будь-що інше довільне для своєї зручності, і на тих лендах, де підключено скрипт саме з цим айді, всі номери буде зберігати в файл з такою ж назвою (як на мене зручно розприділяти по оферах/гео). В папці зі скриптами згенерується додаткова папка storage, яка міститиме в собі всі файли з базами номерів, які будуть створюватись в майбутньому

3. Номер може записуватись в форму в будь-якому форматі (з пробілами 38 066.., з дужками 38 (066).., з тире 38-066-.., це ніяк не впливає на перевірку, все це буде рахуватись як один номер, тому що скриптом проводиться нормалізація, прибираються всі пробіли та спец символи, і номер записується в базу в такому вигляді:

Коли все вірно підключено, пробуємо залишити заявку. Першу ми відправимо без проблем, а ось при спробі відправки повторної з тим же номером, нам покажеться ось таке повідомлення:

текст повідомлення виводиться різними мовами, залежно яка мова у вас в <html lang="uk">, або ж мову можна прописати вручну при підключенні скрипта <script src="duplicate_check.js"  data-lang="uk">.
текст повідомлення виводиться різними мовами, залежно яка мова у вас в <html lang="uk">, або ж мову можна прописати вручну при підключенні скрипта <script src="duplicate_check.js"  data-lang="uk">.

На цьому наче все. Можливо в подальшому буду якось розширювати функціонал, але на даний момент можна відтестити такий варіант. Кого б зацікавило таке рішення - пишіть мені в особисті TraffCoder_adm , домовимось за установку)

З вас реакція на статтю - мені приємно 🖤
Ну і підписуйтесь на тг - TraffCoder 🤝🏼


0 Коментар