Почему я собираю лидов в Airtable

—

от автора

Я долго выбирал, какую базу использовать как базу для сбора информации по лидам — форму, которую будет удобно заполнять и было удобно обрабатывать CRM я веду у себя в базе, а сама форма сбора информации, откуда данные потом интегрируются в нее — это был вопрос. Пять лет назад для этого я выбрал Airtable.

Что я вообще собираю

После всех моих встреч и посещения конференций, я собираю данные. Разные данные. Потому что с разными лидами мы будем выстраивать разные отношения. И особенно важно, чтобы они сами писали, какие роли, какие функции готовы на себя брать. У меня анкета из шестнадцати полей:

  1. Имя

  2. Telegram

  3. LinkedIn

  4. X

  5. Роли, мультивыбор из нескольких

  6. Области экспертизы, мультивыбор из девятнадцати

  7. Университет

  8. Бизнес-школа

  9. Компания или фонд

  10. Должность

  11. Сколько времени готов уделять: ноль, до часа, один-три часа, больше трёх

  12. Чем могу быть полезен, длинный текст

  13. Достижения

  14. Кто порекомендовал

  15. Страна и язык

  16. Дата подачи

Роли. Человек сам отмечает, в какой роли ему бы хотелось сотрудничать или взаимодействовать со мной или с моим инкубатором и фондом: инвестор, адвайзер лаборатории, ментор проектов, судья на демо-днях, участник синдиката, кофаундер, участник созвонов. Мультивыбор, возможность выбирать несколько ролей. Для меня это очень удобно — это же освобождает меня от последующего тегирования.

Сколько времени готов уделять. Этот раздел мне нужен, чтобы понимать, на кого и как можно рассчитывать.

Чем могу быть полезен. Тут возможность написать о себе то, что лиды сами считают нужным.

Почему именно таблица 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/