Дубли заявок в n8n: как не записывать одного клиента дважды

· 3 мин чтения · Редакция Skill Unit

Типичная история: форма на сайте шлёт заявку в n8n, n8n пишет её в Google Таблицу и присылает уведомление в Telegram. Через неделю в таблице по три строки на одного клиента, а менеджер звонит одному человеку дважды. Разберём, откуда берутся дубли и как от них избавиться.

Откуда берутся дубли

  • Человек нажал «Отправить» два раза или отправил форму ещё раз через день.
  • Сервис формы повторил запрос, потому что n8n ответил слишком медленно: многие формы так делают, если не получили ответ за несколько секунд.
  • Сценарий упал на середине, вы запустили его вручную ещё раз — и первая часть выполнилась повторно.
  • Сценарий по расписанию забирает «все новые записи» и не помнит, какие уже обработал.

Шаг 1. Выберите ключ

Ключ — то, по чему вы считаете две заявки одной. Чаще всего это телефон или почта. Телефон сначала приведите к одному виду: уберите пробелы, скобки и дефисы, замените ведущую 8 на 7. Иначе «8 (999) 123-45-67» и «+79991234567» окажутся разными клиентами.

Выражение n8n
{{ $json.phone.replace(/\D/g, '').replace(/^8/, '7') }}

Это выражение оставляет только цифры и меняет первую восьмёрку на семёрку. Положите результат в отдельное поле, например phone_key, нодой Edit Fields (Set).

Шаг 2. Уберите дубли внутри одной пачки

Если сценарий получает сразу много записей (например, раз в час забирает выгрузку), добавьте ноду Remove Duplicates. В режиме сравнения по выбранным полям укажите phone_key — из пачки останется по одной записи на каждый телефон.

В новых версиях у этой ноды есть режим, который помнит записи из прошлых запусков. Он удобен для сценариев по расписанию: n8n сам запоминает, какие ключи уже видел, и пропускает их в следующий раз.

Шаг 3. Проверьте, нет ли клиента в таблице

Для заявок с сайта надёжнее проверять по самой таблице, ведь именно она — ваша база клиентов.

  • Google Sheets → операция поиска строк (Get Row(s)) с фильтром по столбцу phone_key.
  • В настройках ноды включите вывод данных, даже если ничего не найдено (Always Output Data), иначе сценарий остановится на пустом результате.
  • Нода If: если строка нашлась — это повторная заявка, если нет — новая.
  • Ветка «новая»: добавить строку и прислать уведомление «Новая заявка».
  • Ветка «повтор»: обновить дату последнего обращения и прислать менеджеру «Клиент написал повторно» — это тоже полезный сигнал, просто другой.

Шаг 4. Быстро отвечайте форме

Чтобы сервис формы не повторял запрос, ответьте ему сразу: в ноде Webhook выберите ответ немедленно (Immediately), а тяжёлую работу — таблицы, ИИ, письма — делайте после. Тогда форма получает ответ за доли секунды и не шлёт заявку второй раз.

Как проверить, что всё работает

  • Отправьте одну и ту же тестовую заявку три раза с разным написанием телефона.
  • В таблице должна появиться одна строка, а в Telegram — одно «новая» и два «повтор».
  • Посмотрите историю запусков (Executions): все три должны завершиться без ошибок.

Тестируйте на своём номере или на выдуманных данных, а не на реальных клиентах. В курсе «Автоматизация без кода на n8n» собираем сценарий заявок целиком: форма, таблица, Telegram, проверка ошибок. Первый урок бесплатный.

Хотите пройти путь на практике?

Курс «Автоматизация без кода на n8n»: короткие уроки, практические задания и проверка ответов. Первый урок бесплатно.

Смотреть курс