Я долго выбирал, какую базу использовать как базу для сбора информации по лидам — форму, которую будет удобно заполнять и было удобно обрабатывать CRM я веду у себя в базе, а сама форма сбора информации, откуда данные потом интегрируются в нее — это был вопрос. Пять лет назад для этого я выбрал Airtable.
Что я вообще собираю
После всех моих встреч и посещения конференций, я собираю данные. Разные данные. Потому что с разными лидами мы будем выстраивать разные отношения. И особенно важно, чтобы они сами писали, какие роли, какие функции готовы на себя брать. У меня анкета из шестнадцати полей:
-
Имя
-
Telegram
-
LinkedIn
-
X
-
Роли, мультивыбор из нескольких
-
Области экспертизы, мультивыбор из девятнадцати
-
Университет
-
Бизнес-школа
-
Компания или фонд
-
Должность
-
Сколько времени готов уделять: ноль, до часа, один-три часа, больше трёх
-
Чем могу быть полезен, длинный текст
-
Достижения
-
Кто порекомендовал
-
Страна и язык
-
Дата подачи
Роли. Человек сам отмечает, в какой роли ему бы хотелось сотрудничать или взаимодействовать со мной или с моим инкубатором и фондом: инвестор, адвайзер лаборатории, ментор проектов, судья на демо-днях, участник синдиката, кофаундер, участник созвонов. Мультивыбор, возможность выбирать несколько ролей. Для меня это очень удобно — это же освобождает меня от последующего тегирования.
Сколько времени готов уделять. Этот раздел мне нужен, чтобы понимать, на кого и как можно рассчитывать.
Чем могу быть полезен. Тут возможность написать о себе то, что лиды сами считают нужным.
Почему именно таблица Airtable
-
Ноль инфраструктуры. Форма это всего лишь ссылка, открывается с любого устройства, без хостинга, бэкенда и приёма данных на своей стороне.
-
Структура задаётся на входе. Типы полей и мультивыбор, данные приходят уже размеченными, и постфактум тегировать не нужно.
-
Автоматизации встроены: 25 000 прогонов в месяц на Team, 100 000 на Business, 500 000 на Enterprise Scale (но это — кому нужно)
-
Открытый REST API и personal access tokens, выгрузка одной командой; на Business ещё и двусторонняя синхронизация.
-
Interfaces: витрина и портал поверх той же базы без кода, то есть одна база и для сбора, и для показа.
-
Низкий порог для сотрудников. Формы и базы люди делают сами, без разработчика, все просто и достаточно удобно.
Сколько там накопилось
Когда я провел инвентаризацию и стал делать итоговые выгрузки, у меня оказалось:
|
что |
сколько |
|---|---|
|
баз видит мой токен |
61 |
|
из них настоящих, не копий и черновиков |
25 |
|
таблиц |
161 |
|
строк |
1 072 574 |
|
объём выгрузки |
около гигабайта |
Мои сотрудники легко справлялись с созданием форм и ссылок сами, без меня, поэтому копий и накопилось. Дубли потом быстро убрал. Но то, что они были, в моем случае свидетельство того, что Airtable user friendly.
Ограничения, с которыми я столкнулся
Скорость запросов. API отдаёт данные с потолком в пять запросов в секунду на базу. Превысил: 429 и тридцать секунд ожидания. И есть второй потолок, про который я узнал позже: пятьдесят запросов в секунду на всё, что идёт одним моим токеном. То есть разложить работу на двадцать пять баз и качать их параллельно по пять тоже не выйдет. На гигабайте данных это означает, что выгрузка идёт долго и её нельзя просто запустить в цикле. Ограниченное количество строк в зависимости от тарифа В одной моей базе накопилось 31 949 записей, и форма перестала принимать ответы. На месте анкеты появилась красная полоса: эта форма больше не принимает ответы, потому что база превысила лимит записей. И мне это не сразу стало заметно, что очень неудобно. Надо следить здесь.
Что я с этим сделал
Платный тариф я перестал в дальнейшем брать. Просто создал отдельную пустую базу под одну задачу, а старую оставил архивом. Перешел на прицип работы, когда одна задача сбора, одна база, и в неё не складывается ничего постороннего.
Как я забираю данные к себе
Таблица снаружи это просто форма для входа данных. Всё, что в неё упало, уезжает ко мне, в базу, где все в дальнейшем хранится
Три шага:
Первый: выгрузка. Нужен personal access token с правами на чтение записей и схемы. Дальше обход всех баз, контроль заполненности страниц и тд
Второй: загрузка в мою базу. Из каждой записи вынимаются имя, почта, телеграм, компания, статус, а всё остальное кладётся одним полем целиком, чтобы ничего не потерять.
CREATE TABLE IF NOT EXISTS airtable_records (base_id TEXT NOT NULL,tbl TEXT NOT NULL,record_id TEXT NOT NULL,name TEXT,telegram TEXT,linkedin TEXT,company TEXT,roles TEXT,status TEXT,fields_json TEXT,run TEXT NOT NULL,PRIMARY KEY (base_id, tbl, record_id));
Третий: проверка. Отдельная проверка смотрит, появилась ли выгрузка свежее той, что уже загружена, и если да, запускает загрузку. Ноль обращений к моделям, ноль сети, просто сравнение дат.
Что бы я сделал иначе с самого начала?
Настроил бы дисциплину выгрузки данных в базу. Анкета должна жить в маленькой базе, которую не жалко, а весь архив у меня дома. Надо было сразу предусмотреть частотность или параметры, при которых идет выгрузка из формы в базу
Так почему всё-таки Airtable
Потому что для приёма данных важны три вещи: человеку должно быть удобно заполнять; ссылку на форму легко можно дать в подписи поста; данные забираются одной командой. Попробуйте, рекомендую
ссылка на оригинал статьи https://habr.com/ru/articles/1098102/