Статьи · по докладу

База клиентов на российском сервере: Prodamus.XL → n8n → Grist и нейросеть для работы с таблицами

Контакты школы лежат в CRM, а вести базу в Google Таблицах всё рискованнее. Данила Самарин за полчаса собрал на глазах у зала связку «CRM → n8n → Grist»: контакт сам попадает в таблицу на российском сервере, а нейросеть для работы с таблицами пишет формулы вместо тебя. Разбираем метод по шагам и добавляем то, что в докладе уложилось в одну минуту, — закон о персональных данных.

// Интеллект-карта статьи развернуть

🎧 Саундтрек статьи

НейроБаза — Твой Умный Помощник
песня к докладу · Данила Самарин · NeyroSummit 13 — включи и читай дальше
Плеер Suno загрузится по нажатию — до этого сторонних скриптов на странице нет.

По выступлению на NeyroSummit 13Редактор — Андрей Плешков

Опубликовано Проверено Чтение ≈ 16 мин

Сведения из доклада — на дату выступления, ; дополнения редакции — на дату проверки, 25 октября 2026

Выпуск № 13 «Рутина на автопилоте» · Вайбкодинг и автоматизации · 4 из 12

В TelegramВКонтактеВ MAX

// Коротко

Что получишь
Работающая цепочка «событие в CRM → webhook → n8n → строка в Grist» с проверкой кода 200, боевым адресом и формулой, которую написала нейросеть, плюс список проверок по закону и безопасности до запуска.
Задача
Как автоматически переносить контакты из CRM школы в свою базу на сервере в России и не вести её вручную в Google Таблицах. Материал — владельцам онлайн-школ и малого бизнеса, кураторам и автоматизаторам, у которых база клиентов живёт в CRM и таблицах, а свой сервер поднять не страшно.
Ограничения
  • Это метод для тех, кто готов поставить n8n и Grist на свой сервер: установку доклад не показывал, в статье — только ссылки на документацию.
  • Интерфейсы Prodamus.XL, n8n и Grist — на декабрь 2025. Названия узлов и переменных перед запуском сверь со справкой сервисов.
  • Юридическая часть — наша сверка с текстом закона, а не слова спикера и не консультация юриста: схему сбора согласия и хранения данных проверь у специалиста.
  • Тестовые данные можно показывать нейросети, реальные персональные данные клиентов — нет.

Зачем уходить из Google Таблиц и что на самом деле говорит закон

Нейросеть для работы с таблицами — только последний шаг этой истории. Начинается она с базы клиентов. Данила Самарин — инженер-проектировщик по вентиляции, автоматизацией занимается с 2019 года, ведёт онлайн-школу на Prodamus.XL. На NeyroSummit 13 он объяснил, зачем всё это затеял. По его словам, в мае закон о персональных данных «всех поднакрыл», штрафы выросли, а базу надо держать на серверах в России: «Google таблицы нельзя». В его CRM, по его же словам, 36 000 контактов, и перенести их вручную невозможно — нужна автоматизация.

Позицию спикера мы оставляем его: он выбрал решение, которое замыкает цепочку внутри России. А вот формулировку «нельзя» закон не подтверждает, поэтому разберём её сразу — подробности и ссылки в «Дополнении редакции» ниже.

Общую часть — согласия на рассылки, локализацию и права агента — мы уже разбирали в статье про автоворонку с ИИ-агентом; здесь не повторяем её, а показываем техническую сторону: как устроить хранение так, чтобы данные не уходили за границу.

n8n — что это и из чего состоит связка

Самарин собирает цепочку из трёх звеньев:

  1. CRM — у него Prodamus.XL. Она знает контакт и событие: добавили тег, оплатили, заполнили форму.
  2. Шлюз — n8n. Это сервис автоматизаций: принимает запрос от одной системы и пересылает данные другой. Что такое n8n в двух словах: конструктор цепочек из «узлов», где каждый узел — один шаг.
  3. База — Grist. Снаружи это таблица, похожая на Excel, а внутри — база данных.

Главная мысль доклада шире конкретных сервисов. Дословно: это вопрос «не Prodamus или Google таблицы», а любых сервисов, к которым можно подключиться по API: «вам нужно найти шлюз». n8n он выбрал потому, что его можно поставить на свой сервер в России — тогда «контакт пределы РФ не покидает».

Схема из доклада:

Звено Что делает Где стоит у спикера
Prodamus.XL хранит контакты, запускает сценарий по событию серверы сервиса в России (по словам спикера)
n8n принимает webhook, пишет строку в таблицу свой сервер в России
Grist хранит базу, считает формулы свой сервер в России, отдельный от n8n

Спикер сам не рекомендует ставить n8n и Grist на одну машину, хотя технически это возможно. Установку на сервер он в докладе не показывал: переехал к другому провайдеру за два дня до эфира и подключался «по IP». Как поднять self-hosted n8n и Grist, смотри в документации — ссылки в дополнении ниже.

Сценарий в Prodamus.XL и webhook в n8n: ждём код 200

Начинай с самой простой версии: имя, фамилия, почта. Остальные поля добавишь, когда цепочка заработает.

Сразу про границу метода. В демо новый контакт попадает в базу по событию (в примере — добавили тег). Уже накопленные 36 000 контактов этим сценарием не переносятся: для них нужна разовая выгрузка из CRM и загрузка файла в Grist — проверь возможности обоих сервисов по их справке. В демо каждое повторное срабатывание добавляло новую строку, а защиты от дублей спикер не показывал — в эту инструкцию она не входит. Если она нужна, передавай ID контакта (в Prodamus есть такая переменная) в отдельный столбец Grist: он позволит найти дубли; а проверку «такой ID уже есть» перед записью добавь в поток n8n сам, по документации узла Grist.

Шаг 1. Создай сценарий. В Prodamus.XL открой «Сценарии» и создай новый. Сценарий — это механика, на которой работают и чат-боты, и автоворонки. Выбери триггер — событие, которое его запускает. В демо — «добавлен тег контакта» (чуть позже к нему вернёмся).

Шаг 2. Добавь уведомление себе в Telegram. Это отладочный приём спикера: узел «уведомление» присылает тебе сообщение «контакт улетел» и подтверждает, что сценарий вообще сработал. Когда всё заработает, узел можно убрать.

Шаг 3. Добавь узел «Запустить вебхук». Webhook, по определению Самарина, — «команда из одной системы в другую, чтобы передать информацию». В узле:

  • метод запроса — POST. В n8n в узле Webhook тоже выставь «HTTP Method → POST»: по умолчанию там стоит GET, и запрос Prodamus не примется;
  • заголовки — спикер называет их обязательными и «стандартными»; для JSON это Content-Type: application/json;
  • адрес — тот, который даст n8n (см. ниже);
  • тело запроса — простой JSON: ключи со значениями-переменными из списка Prodamus. Переменная подставится сама.

Пример тела по демо Самарина (имена ключей — латиницей, переменные Prodamus подставь из выпадающего списка в узле, их там сотни — имя, фамилия, почта, ID контакта и так далее):

{
  "email": "<переменная Prodamus: почта>",
  "name": "<переменная Prodamus: имя>",
  "surname": "<переменная Prodamus: фамилия>"
}

Шаг 4. Создай рабочий поток в n8n с узлом Webhook. Он выдаст адрес — его и вставляешь в узел Prodamus. Включи «слушать тестовое событие».

Шаг 5. Проверь связь. В Prodamus нажми «тестовый запрос». Нужен код ответа 200. В n8n сразу видно пришедшие данные — в демо это были «test first name», «test last name» и «example mail». Видишь их — первое звено работает.

Grist: документ, таблица, столбцы латиницей

Grist — выбор самого Самарина. По его словам, он три дня сравнивал решения «со всеми нейросетями»; сомневался между Grist и другой похожей табличной базой, которая «попроще, но возможностей меньше». Название второго сервиса спикер в эфире не назвал — не гадаем. Это его выбор, а не рекомендация журнала: альтернативы сравни по документации сам.

Что нужно знать о Grist, чтобы не запутаться в терминах:

  • то, что в Excel называется «книгой», в Grist — документ, а «лист» — таблица;
  • заголовки не заводятся отдельной строкой: имя столбца задаёшь прямо в столбце;
  • имена столбцов — латиницей. Спикер объясняет: это переменные для формул на Python. Точнее, по справке Grist, нелатинские символы допустимы в видимом названии столбца, но не в его идентификаторе (ID), по которому формулы к нему обращаются. Проще всего сразу назвать столбцы латиницей;
  • в ячейках можно писать код на Python. Единственное ограничение, о котором говорит спикер: прямо из формул нельзя запускать внешние приложения — поэтому он возвращает событие «в обратную сторону» через n8n.

Создай документ, переименуй таблицу, заведи три столбца: email, name, surname. Это и будет приёмник для данных из webhook.

Create rows и боевой режим: n8n на своём сервере

Шаг 6. Добавь в n8n узел Grist. Операция — «Create rows in a table» (есть и обычный HTTP-запрос: часть операций Самарин делает только им). Укажи адрес своего сервера Grist и ключ доступа (API key): в Grist он создаётся в «Account settings» → «Developer» (справка Grist). Дальше выбери документ и таблицу. Когда подключение заработает, n8n сам подтянет столбцы таблицы.

Шаг 7. Сопоставь поля. В «данные для отправки» перетащи каждую пришедшую переменную в свой столбец. Заполненное сопоставление для демо выглядит так:

Столбец Grist Что подставляем из webhook
email поле email из тела запроса
name поле name
surname поле surname

Шаг 8. Проверь. Нажми «протестировать». Если ошибок нет — в Grist появилась строка. Каждое новое нажатие — ещё одна строка. Если строка не появилась, открой запуск потока в n8n и найди шаг с ошибкой: чаще всего это неверный адрес или ключ Grist либо столбец, которого нет в таблице.

Шаг 9. Переведи поток в боевой режим. Самое частое место, где всё ломается:

  1. Сделай рабочий поток n8n активным и сохрани.
  2. В узле Webhook возьми production URL вместо test URL и скопируй.
  3. Вставь его в узел «Запустить вебхук» в Prodamus и сохрани.

Тестовый адрес работает только пока ты «слушаешь» событие в редакторе. Боевой — всегда, но данные в редакторе не показывает: итоги ищи во вкладке запусков потока.

Шаг 10. Запусти живой триггер. Добавь тег контакту в Prodamus — через секунды контакт появился в Grist. В демо Самарин делал это на своей личной карточке: тестируй на себе, а не на чужих клиентах. Дальше значения из ячеек можно брать в сообщения и в другие потоки n8n. Передавать их в зарубежную нейросеть вместе с персональными данными нельзя — об этом в разделе ниже.

Нейросеть для работы с таблицами: формулы Grist без знания Python

Нейросеть в докладе — помощник для формул. Самарин честно говорит: «я правда не знаю, как писать на Python». Задача: из столбцов name и surname получить полное имя, чтобы потом обращаться к клиенту по имени и фамилии. Формула в Grist — это Python, поэтому он открывает ИИ-ассистента, показывает таблицу и просит составить формулу.

Что получилось на эфире: первая формула не подошла, Grist ответил ошибкой. Помогла вторая просьба — «посмотри ошибку и исправь формулу». В итоге формула сработала, хотя ассистент «полез» не туда, а решение оказалось проще, чем хотел спикер. Вывод для метода: результат нейросети проверяют, а ошибку возвращают ей же.

Ассистент в демо — встроенный в браузер Comet; спикер сам остался недоволен тем, как он себя вёл. Подойдёт любая нейросеть, дело не в ней.

Здесь важная оговорка, которой в докладе нет. Ассистент в браузере «видит таблицу на экране» — а значит, всё, что в ней открыто, попадает в облачную модель. В демо данные были тестовые. С реальной базой клиентов так делать нельзя: это уже передача персональных данных за пределы России. Лучше описать нейросети столбцы словами и попросить формулу, не показывая ни одной настоящей строки. Шаблоны — ниже.

Формула для Grist по описанию столбцов/formula [столбцы]
Я работаю в Grist. Формулы в ячейках пишутся на Python, имена столбцов — переменные, написанные латиницей.

Мои столбцы (только технические ID, как они пишутся в формулах): [список ID, например email, name, surname].
Пример вымышленной строки: [например name = Анна, surname = Иванова].

Нужна формула для нового столбца: [что получить, например полное имя из name и surname через пробел].

Дай одну формулу без пояснений и скажи, что она вернёт для примера выше. Данных клиентов у меня в этом чате нет, и я их не отправлю.

Открыть вClaude ↗ChatGPT ↗

Составлено редакцией по приёму спикера: ассистенту показывают таблицу и просят формулу

Ожидаемый результат для демо (пример редакции): в Grist к столбцу обращаются через $, поэтому формула полного имени выглядит как $name + " " + $surname и для строки «Анна / Иванова» вернёт «Анна Иванова». Чтобы вставить её, выбери столбец, нажми «Set formula» (как в демо) и вставь формулу; сравни результат с вымышленной строкой. Если нейросеть дала другую запись — это нормально, важно, чтобы итог совпал.

Если формула дала ошибку, повтори запрос спикера почти дословно:

Исправить формулу после ошибки/formulafix [ошибка]
Формула, которую ты дал, в Grist выдала ошибку: [текст ошибки из Grist].
Посмотри ошибку и исправь формулу. Ответ — одна исправленная формула и короткое объяснение, что было не так.

Открыть вClaude ↗ChatGPT ↗

Реконструкция по методологии спикера: он просил «посмотри ошибку и исправь формулу»

Согласие на обработку данных: что показал спикер и что проверить

В конце доклада Самарин отвечает на вопрос, который сам задал в названии, — «как без штрафов». Он напоминает: нужна политика конфиденциальности и разрешение на обработку данных. Пример из эфира: человек заходит в Telegram-бота, получает сообщение «Согласен?» со ссылками на политики, нажимает кнопку «Согласен» — запускается сценарий, запись остаётся в логах Prodamus. Бота можно настроить так, чтобы это сообщение приходило первым. Спикер уверен, что так «всё по закону».

Механику мы оставляем — «бот → кнопка → запись в базу». А вот вывод «всё по закону» не повторяем: к форме согласия с 1 сентября 2025 года есть отдельное требование.

Минимум, который ты можешь сделать сам: собирай только нужные поля (в демо это имя, фамилия и почта — разумный образец), не клади в базу лишнего и заведи в таблице столбец «дата согласия».

Что проверить до запуска

Самарин в эфире говорит о защите вскользь, но для базы клиентов это не мелочь. Вот что стоит проверить, прежде чем отдать цепочке реальных людей.

Защита webhook. Адрес n8n принимает запросы от любого, кто его знает. В демо у запроса не было ни ключа, ни подписи, и спикер называл это «стандартной историей». Боевой адрес нельзя публиковать. У узла Webhook в n8n есть встроенная проверка: Basic auth, заголовок-ключ (Header auth) или JWT — включи любую и добавь тот же заголовок в узел «Запустить вебхук» в Prodamus.

Права и доступ. Grist на своём сервере по умолчанию доступен только владельцу установки; чтобы пускать других, настрой вход. Доступ к базе открывай только тем, кому он нужен.

Копии и сервер. База клиентов — твоя ответственность: бэкапы, шифрование диска, закрытые порты. Сервер должен быть в России; провайдера в докладе спикер не назвал, и мы не называем.

Уведомления. Если ты собираешь данные клиентов, у тебя могут быть обязанности перед Роскомнадзором (уведомление об обработке, об утечках). Они зависят от твоей ситуации — спроси юриста или сверься с текстом закона.

Не нейросети с реальными данными. Повторим: показывать нейросети структуру столбцов можно, настоящих клиентов — нет.

Как применить метод к другому сервису

Из доклада можно унести главное: цепочка не про Prodamus. Любой сервис, у которого есть открытый API или webhook, можно связать с таблицей. Самарин приводит пример из своей отрасли — выгрузки из программ для проектировщиков в таблицу с последующей обработкой. Рецепт тот же: событие в одном сервисе → webhook → n8n → запись в базу → дальше, например, нейросеть.

Если из таблицы нужно запустить что-то внешнее, спикер возвращает событие в n8n — запускать приложения из формул Grist не умеет. Сообщать внешнему адресу о новых строках Grist при этом может сам: у него есть webhooks, они отправляют изменённые строки на заданный адрес. Как n8n работает с Telegram-ботом и другими сервисами, показано в статье про ИИ-фотосессию для маркетплейсов, а как управлять рассылками школы на Prodamus.XL из Claude Code — в статье про рассылки школы через ИИ-агента.

От себя спикер оставил мысль, которую мы приводим как его позицию, а не вывод журнала. Он не стал бросать проектирование ради «чистой автоматизации», а связал одно с другим: курсы по нейросетям для проектировщиков, по его словам, вызвали больший отклик, чем всё, что он делал за три года онлайн-академии. Его совет: нейросети усиливают экспертность, и думать стоит в эту сторону.

С чего начать сегодня

  1. Реши, что хранишьТри поля: почта, имя, фамилия. Остальное добавишь, когда цепочка заработает. Лишних данных в базе не держи.
  2. Поставь n8n и Grist на сервер в РоссииПо документации обоих сервисов; на разных машинах — как советует спикер. Закрой порты и включи вход в Grist.
  3. Собери webhook и дождись кода 200Сценарий в CRM → узел «Запустить вебхук» с JSON → узел Webhook в n8n. Тестовый запрос, код 200, данные в n8n.
  4. Запиши в Grist и переведи поток в боевой режимУзел Grist «Create rows», столбцы латиницей, потом production URL и активный поток. Проверь на своей карточке.
  5. Закрой webhook и проверь согласиеВключи аутентификацию в узле Webhook и разберись, как у тебя оформлено отдельное согласие и где записана дата.
  6. Формулы — с нейросетью, но без клиентовОпиши столбцы словами, подставь вымышленную строку, проверь формулу, а ошибку верни нейросети.

Вопросы и ответы

Q1Зачем уходить из Google Таблиц и что на самом деле требует закон о локализации?Кратко: Закон требует вести первичную базу персональных данных граждан РФ в России; Google Таблицы как продукт никто не запрещал, но хранить в них базу клиентов рискованно.

Самарин в докладе говорит, что Google Таблицы «нельзя». Точнее так: при сборе персональных данных граждан РФ их запись и хранение должны идти в базах на территории России (ч. 5 ст. 18 закона № 152-ФЗ), а штраф за нарушение для юрлица — от 1 до 6 млн рублей, при повторе — от 6 до 18 млн (ч. 8 и 9 ст. 13.11 КоАП). Подробнее и со ссылками — в «Дополнении редакции» в начале статьи.

Q2Из чего состоит связка: CRM, n8n и Grist?Кратко: CRM даёт событие, n8n принимает webhook и пересылает данные, Grist хранит их как таблицу-базу; n8n и Grist стоят на твоём сервере в России.

Три звена: Prodamus.XL (событие — например, добавлен тег), n8n как шлюз и Grist как база. Спикер ставил n8n и Grist на отдельные машины в России, так что контакт «пределы России не покидает». Принцип подходит к любому сервису с API.

Q3Как настроить webhook из Prodamus.XL в n8n и проверить код 200?Кратко: Создай поток с узлом Webhook в n8n, вставь его адрес в узел «Запустить вебхук» (POST, JSON), нажми «слушать» в n8n и «тестовый запрос» в Prodamus — ждёшь код 200.

В Prodamus.XL: «Сценарии» → узел «Запустить вебхук», метод POST, заголовки, тело — JSON с ключами email, name, surname и переменными Prodamus. В n8n: узел Webhook, «слушать тестовое событие». Код ответа 200 и данные в n8n означают, что связь есть. Дальше — узел Grist.

Q4Как записывать контакты в Grist узлом Create rows?Кратко: В n8n добавь узел Grist с операцией «Create rows in a table», укажи документ и ID таблицы и сопоставь поля webhook со столбцами Grist, названными латиницей.

Идентификаторы столбцов в Grist — латиницей: по ним обращаются формулы. После подключения n8n подтянет их сам, и ты перетаскиваешь в каждый нужную переменную из webhook. Каждый тест добавляет новую строку, поэтому для боевой базы продумай защиту от дублей: спикер её не показывал.

Q5Чем тестовый адрес webhook отличается от боевого?Кратко: Тестовый работает, пока ты слушаешь событие в редакторе n8n, боевой — всегда, когда поток опубликован; в Prodamus нужно вставить боевой.

Если оставить в Prodamus тестовый адрес, всё сработает на демо, а потом перестанет: тестовый адрес живёт, только пока ты «слушаешь» событие. Сделай поток активным, возьми production URL и вставь его в узел «Запустить вебхук».

Q6Как нейросеть помогает писать формулы в Grist и что ей нельзя показывать?Кратко: Опиши ей названия столбцов и вымышленную строку и попроси формулу на Python; реальные данные клиентов и открытую таблицу с ними показывать нельзя.

В докладе ассистент в браузере писал формулу для столбца «полное имя»; первая версия дала ошибку, вторая — после просьбы «посмотри ошибку и исправь» — заработала. С реальными клиентами так делать нельзя: данные уйдут в облачную модель. Дай нейросети структуру столбцов и вымышленный пример.

Q7Что проверить до запуска: защита webhook, права доступа, уведомление РКН?Кратко: Закрой webhook аутентификацией, проверь вход в Grist и бэкапы, оформи отдельное согласие и узнай у юриста, нужно ли уведомление Роскомнадзора.

В демо адрес webhook был без защиты — в n8n включается Basic, Header или JWT-аутентификация. Grist после установки доступен только владельцу; пускай других осознанно. Согласие с 01.09.2025 — отдельным документом, доказывать его получение должен оператор. Нужно ли уведомление РКН, зависит от твоего случая — это вопрос к юристу.

♥ Промптов в статье: 2 — забирай на полку у каждого или открой все промпты статьи в библиотеке →

// Полезно? Сохрани — так я вижу, что писать дальше. Или отправь коллеге

В TelegramВКонтактеВ MAX

// Дальше в выпуске № 13 · 5 из 12

Вайбкодинг и автоматизации · Алексей УльяновКак создать своего ИИ-агента в n8n с памятью: команда «запомни» вместо промпта на пять страницКак создать своего ИИ-агента в n8n: Telegram, Supabase и команда «запомни», которая пишет правила в векторную базу вместо длинного промпта. Схема, SQL, проверки.Читать дальше →

← Можно ли заработать на нейросетях, если курсы пройдены, а денег нет: четыре ловушкиВесь выпуск № 13 →

// Прочитать с ИИ

Скопируй промпт и вставь в свой ассистент — ChatGPT, Claude, GigaChat, Алису, DeepSeek. Он откроет материал по ссылке, перескажет суть и адаптирует приёмы под твою задачу.

или сразу в ChatGPT ↗ · Claude ↗откроется в новой вкладке, промпт уже вставлен

Что в промпте
Разбери материал журнала «Нейрохакер» «База клиентов на российском сервере: Prodamus.XL → n8n → Grist и нейросеть для работы с таблицами»: https://neyrohacker.com/baza-klientov-prodamus-n8n-grist-rossiyskiy-server/

1. Перескажи главную мысль в трёх предложениях.
2. Выпиши приёмы, которые можно применить сразу, — по шагам.
3. Задай мне три вопроса о моей задаче и адаптируй метод под мои ответы.

// Обсудить

Есть вопрос к спикеру или по материалу? Задай его в открытом NeyroCommunity — там обсуждаем доклады саммита, отвечаем на вопросы к спикерам и разбираем материалы журнала.

9 000+ участников в чате сообщества

  • вопросы спикерам саммита
  • обсуждение докладов и материалов журнала
  • общаться и помогать другим
Войти в NeyroCommunity ↗

бесплатно · откроется бот в Telegram, он пришлёт приглашение в чат

// Нейрохакер+

Готовые скиллы и нейрогайды под такие задачи

Промпты и скиллы, которые запускаются сразу, и нейрогайды по докладам саммита

Оформить подписку1 990 ₽, далее 990 ₽/мес

Библиотека скиллов и нейрогайдов регулярно пополняется.

Подписка с автопродлением. Отменить — в один клик в личном кабинете, без объяснений.

Подписка уже есть? Войти в кабинет →

// По теме — из других выпусков