CRM в Google Таблицах — рабочий вариант для малого бизнеса, пока заявки ведут один-два человека. Сама таблица не напомнит о звонке, не сохранит переписку и не спрячет от менеджера чужих клиентов. Часть этого закрывают правила ведения и небольшой скрипт, остальное не закрывается никак. Если нужен шаблон таблицы для учёта клиентов, ниже он целиком: листы, колонки, списки и формула подсветки.
Пределы ниже — из документации Google на 28 сентября 2026 года. Квоты Apps Script, как пишет сам Google, могут поменяться без предупреждения.
Когда таблицы хватает вместо CRM
CRM — это прежде всего привычки: каждая заявка записана, у неё есть ответственный и следующий шаг с датой, а руководитель видит, где что зависло. Программа помогает эти привычки не нарушать. Таблица помогает слабее, но помогает.
| Что нужно от CRM | Таблица сама | Как закрыть |
|---|---|---|
| Список заявок и клиентов | Да | Листы «Заявки» и «Клиенты» |
| Статус и следующий шаг | Да | Выпадающие списки и дата шага |
| Напоминание о шаге | Нет | Подсветка просроченного и утренняя сводка скриптом |
| Заявки с сайта | Нет | Google Форма или веб-приложение на Apps Script |
| История переписки | Нет | Не закрывается: переписка остаётся в мессенджере |
| Менеджер видит только своих | Нет | Не закрывается: доступ даётся на файл целиком |
| Журнал звонков | Нет | Не закрывается без телефонии |
Такой мини-CRM для малого бизнеса хватает, когда заявки принимают и ведут до сделки одни и те же один-два человека. Утренний просмотр списка должен занимать минуты, клиенты пишут в один-два канала, и никто не спорит, чей клиент.
Учёт заявок в Excel устроен так же, структура ниже переносится один в один. Главная разница — в автоматизации: скрипты ниже написаны на Apps Script и работают только с Google Таблицами.
Шаблон CRM в Google Таблицах: три листа
Лист «Заявки». Одна строка — одно обращение. Буквы колонок важны: на них ссылаются формула и скрипт ниже.
| Колонка | Что писать | Зачем |
|---|---|---|
| A. Дата | Дату обращения, а не «вчера» | Считать, сколько заявка ждала |
| B. Клиент | Имя и телефон в одном формате: +998 XX XXX-XX-XX | Находить повторные обращения и дубли |
| C. Источник | Из списка: сайт, Telegram, Instagram, звонок, рекомендация | Понимать, какой канал приводит клиентов |
| D. Запрос | Что хочет, одной фразой | Не перечитывать переписку перед звонком |
| E. Статус | Из списка: новая, в работе, КП отправлено, оплата, выиграна, проиграна | Видеть воронку |
| F. Следующий шаг | Глагол: позвонить, отправить КП, напомнить об оплате | Заявка без шага теряется |
| G. Дата шага | Дату | Подсветка просроченного и утренняя сводка |
| H. Менеджер | Из списка | Кто отвечает |
| I. Сумма | Число, без «тыс.» и валюты в ячейке | Сумма воронки |
| J. Причина отказа | Из списка | Через месяц видно, почему проигрываете |
Лист «Клиенты». Одна строка — один клиент: телефон, имя, компания, дата первого обращения, число обращений. Число считает формула по листу «Заявки». Повторная заявка — новая строка в «Заявках», а клиент остаётся тем же.
Лист «Справочники». Списки статусов, источников, менеджеров и причин отказа, каждый в своей колонке. Поменяли список здесь — поменялись варианты во всех выпадающих списках.
Главное правило шаблона: у каждой заявки, кроме выигранных и проигранных, заполнены «Следующий шаг» и «Дата шага». В CRM это называется задачей. Без неё таблица превращается в архив.
Как создать CRM в Google Таблицах: пошагово
- Задайте типы колонок. Проще всего выделить колонки A–J и выбрать Формат → Преобразовать в таблицу. Для каждого столбца выбирается тип: дата, раскрывающийся список, флажок. Если в столбец с датой напишут текст, появится предупреждение (справка Google). Если заявки будет дописывать скрипт (о нём ниже), проверьте на пробной заявке, что новая строка легла внутрь таблицы.
- Сделайте списки из «Справочников». Данные → Настроить проверку данных → «Раскрывающийся список из диапазона», диапазон — колонка на листе «Справочники». Значение не из списка Таблица отклонит, при желании это можно смягчить до предупреждения (справка).
- Поставьте свой регион и часовой пояс. Файл → Настройки таблицы. От них зависят формат дат, чисел и валюты по умолчанию (справка).
- Подсветите просроченное. Выделите A2:J, откройте Формат → Условное форматирование и выберите «Ваша формула» (справка). Формула красит строку, если дата шага прошла, а заявка не закрыта:
=AND($G2<>"";$G2<TODAY();$E2<>"выиграна";$E2<>"проиграна")Названия функций по умолчанию английские. Аргументы в русском регионе файла разделяют точкой с запятой, в английском — запятой. - Дайте каждому менеджеру свой вид. Обычный фильтр видят все, кто открыл таблицу, и менять его могут все редакторы. Сохранённый режим фильтрации («мои заявки, не закрытые, по дате шага») чужой вид не трогает (справка).
- Соберите сводку на отдельном листе. Например, число выигранных заявок из Telegram:
=COUNTIFS('Заявки'!C:C;"Telegram";'Заявки'!E:E;"выиграна")Таких ячеек хватает на простую воронку по источникам и статусам. - Защитите справочники и заголовки. Данные → Защитить листы и диапазоны. Это защита от случайной правки, а не от утечки: копировать таблицу могут даже те, у кого доступ только на просмотр (справка).
Автоматизация без программиста: заявки с сайта и сводка в Telegram
«Без программиста» здесь значит без сервера и без подписки. Несколько десятков строк кода скопировать всё-таки придётся.
Самый простой путь для заявок — Google Форма: её ответы можно сразу сохранять в таблицу (справка). Если форма должна быть частью вашего сайта, нужен приёмник на Apps Script.
Заявка с сайта — строка в таблице
Откройте редактор из самой таблицы: Расширения → Apps Script. Функция doPost срабатывает, когда на адрес веб-приложения приходит POST-запрос, а текст запроса лежит в e.postData.contents (документация Apps Script).
Дальше скрипт разворачивают как веб-приложение: Развернуть → Новое развертывание (в английском интерфейсе Deploy → New deployment), тип «Веб-приложение». Выполнять — от вашего имени, доступ — всем, включая тех, кто не вошёл в Google. В манифесте это значение называется ANYONE_ANONYMOUS (документация), без него форма на сайте не пройдёт. Обратная сторона: адрес виден в коде страницы, и писать в таблицу может любой, кто его нашёл. Поэтому скрипт выше проверяет хотя бы телефон.
После каждой правки кода нужна новая версия. Её создают и выбирают в меню Развернуть → Управление развертываниями, иначе прежний адрес продолжит отдавать старый код (документация).
Подводный камень, на котором легко застрять. Если сайт отправляет заявку с заголовком Content-Type: application/json, браузер сначала шлёт проверочный запрос OPTIONS. Документация описывает у веб-приложения Apps Script только два обработчика, doGet и doPost, и отвечать на OPTIONS нечему. Выход — отправлять тот же JSON как text/plain. Такие запросы браузер отправляет без предварительной проверки (MDN), а doPost читает их из e.postData.contents точно так же.
Утренняя сводка в Telegram
- Создайте бота через @BotFather и получите токен.
- Напишите боту сами: первым начать разговор бот не может (Telegram). Номер своего чата узнайте методом getUpdates.
- Токен и номер чата положите в свойства скрипта: Настройки проекта → Свойства скрипта (документация). В коде им не место.
Функцию setup запускают один раз вручную; если вы не в Узбекистане, замените в ней часовой пояс на свой. Три оговорки. Триггер «на 9 утра» сработает в какой-то момент между 9 и 10 и дальше будет держать это время (триггеры). Работает он от аккаунта того, кто его создал: если этот человек уходит из компании, триггер пересоздают от другого аккаунта, иначе сводка может перестать приходить. Сообщение в Telegram ограничено 4 096 знаками, поэтому длинный список обрезается (sendMessage).
Историю статусов тоже можно вести скриптом. Простой триггер onEdit может записывать на отдельный лист, когда и на что поменяли статус: в событии есть прежнее значение, если правили одну ячейку (документация). Но строки, которые добавил сам скрипт, onEdit не видит (ограничения). Встроенная история изменений ячейки не показывает добавленные и удалённые строки (справка). Полноценным журналом ни то ни другое не станет.
Пределы: что говорит документация Google
Объём. Одна таблица — до 20 млн ячеек или 100 МБ (справка Google Диска, на английском). Русская версия той же страницы на 28 сентября 2026 года всё ещё пишет про 10 млн ячеек: похоже, перевод отстал от оригинала. Для учёта заявок малого бизнеса упереться в этот предел трудно. Упираются раньше и в другое.
Скрипты. По странице квот Apps Script (обновлена 3 сентября 2026 года):
- один запуск скрипта — не дольше 6 минут;
- все триггеры вместе — 90 минут работы в сутки у аккаунта gmail.com и 6 часов у Google Workspace;
- не больше 20 триггеров на одного пользователя в одном скрипте;
- внешних запросов, например в Telegram, — 20 000 в сутки у gmail.com и 100 000 у Workspace;
- писем из скрипта — 100 получателей в сутки у gmail.com и 1 500 у Workspace.
Квоты считаются на пользователя и сбрасываются через 24 часа после первого запроса. Google прямо пишет, что любую из них может убрать, уменьшить или изменить без предупреждения. Утренней сводке раз в сутки эти пределы не грозят. Упираются в них сценарии, которые раз в минуту перебирают большую таблицу.
Чего нет вовсе. Это уже не квоты, а устройство таблицы.
- Задач с напоминанием. Дата шага и подсветка работают, только если человек открыл файл.
- Прав на строки. Роль — читатель, комментатор или редактор — выдаётся на файл целиком. Защита диапазонов ограничивает правку, но не просмотр. Скачивать файл по умолчанию может любая роль; читателю и комментатору владелец может это запретить, редактору — нет (справка Google Диска). Менеджер, который уходит, может унести копию базы.
- Журнала звонков и переписки. Звонки и сообщения остаются в телефоне и мессенджере. В таблицу попадает только то, что кто-то не поленился переписать.
Шесть признаков, что пора переходить в CRM
Ни один из них не про объём данных. С людьми таблица перестаёт справляться раньше, чем с ячейками.
- Пришёл третий менеджер. Каждому нужны свой вид, свои напоминания и правило, кому достаётся новая заявка. В таблице это устные договорённости, в CRM — настройки.
- Повторные контакты пропускают. Дата шага стоит, строка подсвечена, но в тот день в таблицу никто не заглянул. CRM ставит задачу конкретному человеку и показывает её, пока её не закроют.
- Спорят, чей клиент. Один и тот же телефон стоит в двух строках у двух менеджеров. В CRM ответственный — поле карточки, и спор решает правило распределения, а не память.
- Нужна история переписки. Клиенты пишут в Telegram, Instagram и WhatsApp, и перед звонком менеджер листает три приложения. В CRM с подключёнными каналами переписка лежит в карточке клиента.
- Нужно знать скорость ответа. Время первого ответа в таблицу записывают руками, то есть не записывают. Почему эта цифра важна и что о ней известно на самом деле, мы разбирали в статье «Сколько живёт заявка». Как отвечать на заявку сразу и передавать её менеджеру готовой карточкой, описано на странице «Автоматизация продаж с помощью ИИ».
- Отчёт собирают руками. Если по пятницам кто-то сводит цифры из таблицы, за учёт уже платят, только не за CRM, а временем этого человека. Как собрать такой отчёт без ручной работы — в статье «Автоматизация отчётов».
Одного признака для переезда мало. Два-три одновременно — повод.
Как перейти из таблицы в CRM и не потерять историю
- Назначьте день переезда. До него заявки идут в таблицу, после — только в CRM. Если вести обе системы параллельно, они быстро перестают совпадать.
- Почистите данные. Сначала приведите телефоны к одному формату, потом удалите повторы: Данные → Очистка данных → Удалить повторы (справка). Порядок важен: «+998 90…» и «90…» Таблица повторами не считает.
- Сопоставьте колонки с полями CRM. Статус станет этапом воронки, менеджер — ответственным, источник и причина отказа — полями карточки. Всё, что в поля не легло, склейте в одну колонку «История из таблицы» и загрузите в текстовое поле сделки.
- Загружайте в правильном порядке. Лист выгружается в CSV или XLSX через Файл → Скачать. Битрикс24 принимает импорт в CSV и связывает сделки с контактами и компаниями по точному совпадению названий и имён. Поэтому порядок такой: компании, затем контакты, затем сделки. При загрузке проверьте поле «Разделитель столбцов»: оно должно совпадать с символом в файле, иначе поля не распознаются (справка Битрикс24). amoCRM в своей PDF-инструкции 2022 года называет форматы xls, xlsx, ods и csv: файл до 2 МБ, до 100 столбцов и до 10 000 строк. Большую базу грузят частями (инструкция amoCRM, PDF).
- Сначала пробный файл. Загрузите десяток строк и проверьте карточки глазами, потом загружайте всё.
- Переключите входящие. Форма на сайте,
doPost, Google Форма — всё, что писало в таблицу, теперь должно писать в CRM. Иначе через неделю новые заявки окажутся в старом файле. - Отправьте таблицу в архив. Всем, кроме владельца, оставьте доступ только на просмотр.
Если переезд хотите отдать подрядчику, так выглядит наше внедрение CRM под ключ: сначала разбор процесса, потом amoCRM или Битрикс24 под него.
Честно о том, где тут мы
Заявки с этого сайта попадают в Google Таблицу. Анкета отправляет их веб-приложению на Apps Script, скрипт пишет строку и ставит заявке приоритет от 0 до 100. Запрос уходит как text/plain — по той самой причине с OPTIONS, что описана выше. Заявок с сайта у нас пока немного, и таблицы для них хватает.
Valli, наш ИИ-автоответчик в Telegram (сейчас в пилоте), умеет брать каталог товаров из Google Таблицы владельца: раз в 6 часов, по ссылке с доступом на чтение. Если каталог поправили в самом боте, следующая синхронизация перезапишет правку. Источник правды остаётся в таблице.
Коробочной CRM на продажу у нас нет. Для CRM-проектов мы внедряем amoCRM и Битрикс24, лицензии клиент оплачивает вендору напрямую. Списки клиентов есть внутри наших продуктов: у Valli — стадии диалога от нового клиента до покупки или отказа, у CorpVisor — заказы, оплаты и долги производственной компании в Самарканде. Но это части ботов под конкретный процесс, а не замена универсальной CRM. Замеров того, как переезд из таблицы в CRM меняет продажи, у нас нет, поэтому наших цифр в статье нет.
Если не уверены, хватит ли вам таблицы или пора в CRM, опишите процесс в анкете на главной или напишите в Telegram. Разбор одного процесса — за 48 часов, бесплатно.