Как подключить Instagram к CRM
Чтобы подключить Instagram к CRM, нужны пять вещей: профессиональный аккаунт (Business или Creator), приложение Meta с нужными разрешениями, поток OAuth, HTTPS-endpoint для вебхуков и код, который записывает события в CRM. Страница Facebook обязательна только для входа через Facebook и для Lead Ads. Ниже — каждый этап с практическими деталями.
Опубликовано: Обновлено:
Короткий ответ
Выберите путь входа: Instagram Login (без страницы, instagram_business_manage_messages) или Facebook Login с привязанной страницей (instagram_manage_messages, для Lead Ads — leads_retrieval). Постройте OAuth, подпишитесь на вебхуки и подайте App Review с видеозаписью. После этого каждое новое сообщение Direct и заявка приходят на ваш endpoint событием, а ваш код записывает их в CRM.
Пошагово
Подготовьте аккаунт
Переведите аккаунт Instagram в тип Business или Creator — личные аккаунты не поддерживаются. Страницу Facebook привязывайте, если используете вход через Facebook или нужны Lead Ads.
Создайте приложение Meta
Заведите приложение в Meta for Developers, добавьте продукты Instagram и Webhooks, надёжно сохраните app secret.
Запросите разрешения
Для диалогов — instagram_manage_messages (или instagram_business_manage_messages при Instagram Login); для заявок — leads_retrieval, pages_manage_ads и ads_management; для страниц и вебхуков — pages_show_list, pages_read_engagement и pages_manage_metadata. Просите только то, что используете.
Напишите поток OAuth
Кнопка «Подключить Instagram» в CRM ведёт на выбранное окно входа (Facebook или Instagram). Полученный код меняете на токен на сервере: при Facebook Login сохраняете страницы и ID привязанного Instagram-аккаунта, при Instagram Login — ID пользователя Instagram.
Подключите вебхук
Откройте HTTPS-endpoint с валидным сертификатом, отвечайте на проверку hub.challenge (verify_challenge), сверяйте X-Hub-Signature-256 по сырому телу (verify_request) и подпишите каждую страницу на приложение (fb.subscribe_page). Для вебхуков комментариев нужны Advanced Access и режим Live.
Сопоставьте события
Новый диалог → контакт и сделка; лид-форма → лид; комментарий → задача. Проставляйте метку источника на каждую запись.
Замкните поток ответа
Пусть менеджер отвечает прямо из CRM. Это работает внутри 24-часового окна — показывайте окно в интерфейсе. За пределами окна тег human_agent позволяет ответить до 7 дней (нужна функция Human Agent); ig.send_message() тег не ставит.
OAuth-callback — страницы и Instagram-аккаунты
Путь Facebook Login: код меняется на токен, и каждая страница сохраняется вместе с привязанным Instagram-аккаунтом.
import asyncio
from socialift import Facebook
async def main(code: str):
# FACEBOOK_APP_ID, FACEBOOK_APP_SECRET, SOCIALIFT_LICENSE_KEY — env
async with Facebook.from_env() as fb:
token = await fb.exchange_code(code, redirect_uri="https://ваш-домен/cb")
for page in await fb.pages(token.access_token):
# страница, её токен (храните зашифрованным) и привязанный Instagram
crm.save_connection(page.id, page.access_token, page.instagram_id)
asyncio.run(main("CODE_FROM_CALLBACK"))Превращаем диалоги в контакты CRM
import asyncio, os
from socialift import Instagram
async def main():
async with Instagram.via_facebook(app_secret=os.environ["FACEBOOK_APP_SECRET"]) as ig:
chats = await ig.conversations(page_token, page_id=PAGE_ID, ig_user_id=IG_USER_ID)
for chat in chats["data"]:
c = chat["contact"]
if not c:
continue
crm.upsert_contact(external_id=c["id"], name=c.get("name") or c.get("username"),
source="instagram_direct", followers=c.get("follower_count"),
is_follower=c.get("is_user_follow_business"))
asyncio.run(main())Поля профиля приходят не всегда (например, если пользователь вас заблокировал), поэтому используется c.get(...).
Самые частые ошибки
- Аккаунт остался личным (не Business и не Creator) — API не работает вообще.
- Не пройден App Review: то, что работало на аккаунтах с ролью в приложении, не работает у других клиентов.
- Приложение не переведено в Live или страница не подписана на приложение — вебхуки не приходят.
- Подпись вебхука посчитана по повторно сериализованному JSON.
- Нет дедупликации событий — в CRM появились дублирующиеся сделки.
- Не учтено 24-часовое окно — ответ вернулся неотправленным.
- Не отслеживается срок токена — интеграция тихо остановилась.
Сколько это занимает
Техническая часть — OAuth, вебхук и сопоставление событий — зависит от вашей CRM. Дольше всего обычно тянется App Review: срок рассмотрения в Meta от вас не зависит.
Поэтому правильный порядок: разработать и проверить интеграцию на аккаунтах с ролью в приложении (Standard Access), записать видео, затем подать App Review на Advanced Access.
Частые вопросы
Нужен ли разработчик, чтобы подключить Instagram к CRM?
Да. Процесс требует приложения Meta, OAuth и endpoint'а для вебхуков — без технических знаний это не сделать. Исключение — случаи, когда для вашей CRM есть готовый плагин.
Можно ли подключить несколько аккаунтов Instagram к одной CRM?
Да. При Facebook Login каждый аккаунт подключается через свою страницу и токен страницы, при Instagram Login — через свой токен пользователя Instagram. На стороне CRM храните их как отдельные подключения.
Отдаёт ли Instagram историю переписки?
С ограничениями: ig.conversations() читает диалоги, ig.messages() — сообщения, но Meta отдаёт детали только 20 последних сообщений диалога, а неактивные более 30 дней диалоги из папки Requests не возвращаются.
Что выбрать: Instagram Login или Facebook Login?
Если нужны только Direct и комментарии, хватит Instagram Login — страница Facebook не нужна. Если нужны ещё заявки Lead Ads или аккаунты клиентов уже привязаны к страницам, выбирайте Facebook Login: событие leadgen и leads_retrieval работают через страницу.
Открывает ли пробный токен Socialift всю эту интеграцию?
Да, в первые 30 дней: пробный токен открывает все возможности SDK — Direct, Lead Ads, статистику, публикацию и помощники вебхуков. Дальше токен продлевается 30-дневными периодами с баланса, и возможности зависят от плана токена — точный список показывает «Tekshirish va muhitlar» (проверка и окружения) в разделе «Tokenlar» (токены) кабинета. Playground в кабинете работает независимо от плана.