8 мин чтенияИнтеграции

Интеграция сокращателя URL с Notion: OAuth + двусторонняя синхронизация базы данных

Подключите Notion через OAuth, синхронизируйте короткие ссылки Elido с базой данных Notion и получайте обратно изменения целевых URL. Сопоставление полей, разрешения, устранение неполадок.

Ana Kowalska
Marketing solutions engineering
Строки базы данных Notion, синхронизированные с короткими ссылками Elido с живыми счётчиками кликов, иллюстрирующие интеграцию сокращателя URL с Notion

Интеграция сокращателя URL с Notion перешла из бета-версии в статус Live 4 июня 2026 года. Если вы используете Notion как центр управления кампаниями, Elido читает URL из любой выбранной базы данных, создаёт брендированные короткие ссылки на вашем домене, записывает их обратно в таблицу и отслеживает изменения целевых адресов. Один клик через OAuth, никакого копирования токенов вручную, а сопоставление полей настраивается отдельно для каждой базы данных.

В этой статье рассматривается шаг подключения через OAuth с разрешениями, структура из шести столбцов и двусторонний поток редактирования с разрешением конфликтов. Если вы читали более раннее введение в короткие ссылки с Notion, перед вами - детальное погружение в тему.

OAuth в один клик: что на самом деле происходит при нажатии «Подключить»

Прежние процессы на основе вставки токенов требовали вручную создать внутренний токен интеграции Notion, вставить его, а затем отдельно поделиться каждой базой данных с интеграцией. Это осталось в прошлом. Новый процесс - три клика: «Подключить» в Elido, выбрать рабочее пространство и базы данных на экране подтверждения Notion, готово. Обмен OAuth следует стандарту из документации по аутентификации API Notion с использованием PKCE при обмене кода авторизации.

Запрашиваемые разрешения намеренно ограничены:

  • read_content - чтение свойств Destination, Tags и Title в выбранных базах данных.
  • insert_content - создание новых строк, когда вы просите Elido создать ссылку из внешнего источника (Zap, webhook, CSV).
  • update_content - обратная запись свойств Short URL, Clicks, QR и Last Synced.

Elido никогда не запрашивает доступ на чтение всего рабочего пространства и не запрашивает страницы, которые вы не отметили. Notion также проверяет это на стороне сервера: запрос к базе данных вне области разрешений возвращает 403. В справочнике API Notion по операциям с базами данных описаны методы, используемые интеграцией.

После завершения подтверждения браузер обращается к api.elido.app/v1/oauth/notion/callback с кодом авторизации. api-core обменивает код на токен доступа, шифрует токен ключом KMS рабочего пространства (согласно ADR-0036) и сохраняет его в integration_credentials. Токен в открытом виде никогда не попадает на диск или в логи. В журнал аудита также добавляется запись, чтобы администратор мог видеть, кто и когда подключил то или иное рабочее пространство Notion.

Процесс OAuth между Elido и Notion: пользователь нажимает «Подключить», браузер переходит на notion.com/install, пользователь выбирает рабочее пространство и базы данных, callback на api.elido.app сохраняет зашифрованный токен

Кнопка подключения находится во вкладке «Интеграции» каждого рабочего пространства - так же, как и у любого другого поставщика в каталоге интеграций. На странице интеграции с Notion есть скриншот экрана подтверждения. Разрешения можно отозвать в Настройках Notion, раздел «Подключения» - отзыв там запускает webhook, который удаляет токен на стороне Elido в течение 60 секунд.

Два режима: подключить или создать

В режиме подключения вы указываете Elido на существующую базу данных со свойством URL. Elido добавляет только необходимые столбцы, не переименовывая ничего. В режиме создания Elido создаёт новую базу данных «Elido Links» внутри выбранной страницы. Большинство команд выбирают режим подключения, поскольку их таблица кампаний уже существует с историей за несколько кварталов. В обоих случаях схема одинакова.

Сопоставление полей: шесть столбцов и логика их устройства

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

СтолбецТип в NotionНаправлениеПримечания
Short URLURLElido записываетТолько для чтения со стороны пользователя; редактирование не даёт эффекта.
DestinationURLNotion записываетЦелевой адрес, на который указывает короткая ссылка. Редактируемый.
TagsМультивыборДвустороннийТеги объединяются через объединение множеств при конфликте.
ClicksЧислоElido записываетОпрашивается каждые 5 минут. Только для чтения.
QRФайлыElido записываетPNG размером 1024px с QR-кодом для короткой ссылки.
Last SyncedДатаElido записываетВременная метка UTC последней синхронизации.

Несколько решений заслуживают отдельного объяснения.

Clicks намеренно не обновляется в реальном времени. В Notion нет потоковых примитивов, а обращение к их эндпоинту при каждом клике быстро исчерпает лимит запросов. Пять минут соответствует актуальности, необходимой большинству операционных команд. Для реального времени запустите webhook на события кликов по ссылкам и направьте его в собственный дашборд. Notion - это представление кампании; webhook - это непрерывный поток данных.

QR - это свойство типа «Файлы», а не URL. Notion не отображает внешние URL изображений в таблицах, но прикреплённые файлы отображаются как миниатюры. Elido загружает PNG при первой синхронизации и повторно загружает его только при изменении короткой ссылки. Смотрите страницу функции QR-кодов и руководство по QR GS1.

Tags - двусторонний с объединением множеств. Единственный столбец, в который записывают обе стороны. Добавьте тег «launch-2026» к строке в Notion, у Elido есть «winter-promo» из Zap - при следующей синхронизации оба тега существуют с обеих сторон. Удаления тоже распространяются. Журнал аудита фиксирует каждое изменение.

Для UTM-параметров руководство по шаблонам UTM позволяет привязать шаблон к папке, чтобы каждая ссылка наследовала нужный utm_source. Столбец Destination остаётся чистым, а Elido добавляет параметры в момент разрешения клика через правила умных ссылок.

Двусторонний поток редактирования: кто побеждает, когда Notion и Elido расходятся

Именно этот раздел больше всего интересует команды, ведь у инструментов синхронизации есть история скрытых перезаписей. Вот условия контракта.

Воркер внутри api-core опрашивает каждую подключённую базу данных каждые пять минут в поисках изменений с момента последнего водяного знака last_edited_time. При изменении свойства он загружает сопоставление полей и определяет владельца. Правила фиксированы:

  • Notion владеет: Destination, Tags (сторона записи), Title.
  • Elido владеет: Short URL, Clicks, QR, Last Synced.
  • Общее: Tags (сторона чтения; обе стороны видят объединённый набор).

Если принадлежащее Notion поле изменилось в Notion, Elido обновляет внутреннее состояние и генерирует событие integration.notion.sync. Если принадлежащее Elido поле изменилось (обновление счётчика кликов), Elido записывает его обратно при следующей синхронизации.

Интересный случай - коллизия. Допустим, вы изменили Destination в Notion в 14:02:10, а Zap записал новый Destination в Elido в 14:02:30, в том же пятиминутном окне. Destination принадлежит Notion, значит, побеждает Notion. Elido отбрасывает запись Zap, добавляет комментарий к строке («Конфликт Destination в 14:02:30, сохранено значение Notion, смотрите журнал аудита») и генерирует событие конфликта, на которое можно подписаться через webhooks. Zap слушает и решает, повторить попытку или отправить уведомление.

Таблица базы данных Notion со столбцами Short URL, Destination, Tags, Clicks, QR и Last Synced с тремя примерами строк и иконками статуса синхронизации

Нигде нет скрытых перезаписей. Каждая запись фиксируется. Каждый конфликт получает комментарий к строке. Для постоянной записи направьте поток аудита в хранилище данных через руководство по экспорту в ClickHouse или обращайтесь напрямую к GraphQL API.

Когда изменение целевого адреса НЕ должно распространяться

Иногда вы редактируете целевой адрес как черновик. Два паттерна помогают в этом случае.

Свойство «Статус» как защитник. Добавьте поле типа «Выбор» с названием «Sync» со значениями Draft, Live, Paused. Интеграция синхронизирует только строки, где Sync = Live. Работайте в Draft, переключайтесь на Live - следующий тик подберёт изменение. Большинство маркетинговых команд в итоге используют именно этот подход.

Приостановить всю базу данных. Настройки, Notion, пауза для конкретной базы данных. Удобно во время миграции или массового редактирования.

Пошаговая настройка: от нуля до первой синхронизированной строки за 4 минуты

  1. Подключить Notion. Настройки рабочего пространства, Интеграции, Notion, Подключить. Выберите рабочее пространство, отметьте базы данных, Разрешить.
  2. Выбрать базу данных. Настройки, Notion, «Добавить базу данных». В выпадающем списке отображаются все разрешённые базы данных. Выберите одну.
  3. Сопоставить поля. Подтвердите Destination, Title и остальное. Не хватает свойств? Elido предложит их создать.
  4. Выбрать домен. Выберите брендированный домен для коротких ссылок. Ещё нет собственного домена? Выберите стандартный - миграция будет доступна одним кликом позже.
  5. Сохранить и заполнить. Elido читает каждую строку, генерирует короткую ссылку для строк с Destination, но без Short URL, и записывает результаты обратно. Существующие Short URL остаются без изменений.

Реальное время - около 4 минут для 200 строк. При более объёмном заполнении срабатывает ограничение Notion в три запроса в секунду для бесплатных рабочих пространств. База данных из 5000 строк заполняется примерно за 30 минут; воркер обрабатывает пакетами и самостоятельно возобновляет работу при ограничении скорости.

Когда использовать это вместо Zapier или прямого API

Существуют три варианта, не исключающие друг друга.

Нативная интеграция - правильный выбор по умолчанию, если Notion является рабочей площадкой. OAuth, разрешение конфликтов, журнал аудита, сопоставление полей, без написания кода.

Zap подходит для многошаговых рабочих процессов («когда добавляется строка И приходит реакция в Slack, создать ссылку»). Для прямого сопоставления строки с ссылкой нативная интеграция быстрее и дешевле. Смотрите статью об автоматизации с Zapier.

REST API подходит для построения собственного рабочего процесса поверх Elido. Для разработчиков, создающих продуктовые интеграции, исходный код в services/api-core/internal/integrations/notion/ достаточно компактен, чтобы прочитать его за одну сессию.

В сравнении с Bitly или Rebrandly: на момент написания ни у одного из них нет нативной интеграции с Notion. Оба требуют Zapier или собственного скрипта. Смотрите страницу vs Bitly для сравнения и страницу тарифов для информации о том, в каких планах включены неограниченные базы данных Notion.

Устранение неполадок: четыре проблемы из периода бета-тестирования

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

«База данных не найдена» после переименования рабочего пространства. Если администратор Notion переименовывает рабочее пространство, его ID остаётся стабильным, но кешированные метаданные устаревают на нашей стороне на срок до часа. Обходной путь: нажмите «Принудительная повторная синхронизация» в Настройки, Notion. TTL кеша в production составляет 15 минут, поэтому это преимущественно артефакт бета-версии.

Ограничение скорости при большом заполнении. Лимит Notion на одну интеграцию - три запроса в секунду. База данных из 5000 строк сильно упирается в этот лимит при первоначальном заполнении. Воркер применяет экспоненциальный backoff (250 мс, 500 мс, 1 с, 2 с, максимум 8 с) и возобновляет работу. В журнале активности появится «Throttled by Notion, resuming» - это нормально.

Несовпадение типа свойства. Самая распространённая проблема в бете. Пользователь выбрал для Destination столбец Notion типа «Текст» вместо «URL». Валидатор сопоставления полей теперь фиксирует это при сохранении и отказывается продолжать. Если вы видите «Destination должен быть свойством URL», сначала измените тип столбца в Notion.

Пользователь нескольких рабочих пространств с общими базами данных. Если один и тот же человек является участником двух рабочих пространств Notion и оба хотят подключить Elido, каждому рабочему пространству нужно собственное разрешение OAuth. Токен привязан к рабочему пространству, а не к пользователю. Процесс подключения обрабатывает это корректно; просто ожидайте необходимости нажать «Подключить» дважды.

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

Что будет дальше

В дорожной карте два пункта. Рецепт «форма Notion в короткую ссылку», чтобы отправка формы создавала отслеживаемую ссылку. И двусторонняя синхронизация свойства Workspace, чтобы ссылка могла следовать при перемещении строки между базами данных. Оба запланированы на Q3; отметим их в changelog.

Для измерения результатов вводное руководство по аналитике коротких ссылок объясняет, какие метрики действительно важны и как настроить строки дашборда Notion, чтобы они отвечали на правильные вопросы.

Частые вопросы

Какие разрешения запрашивает интеграция с Notion?

Elido запрашивает insert_content, update_content и read_content для страниц или баз данных, выбранных на этапе подтверждения OAuth. Этого достаточно для добавления новых строк, обратной записи коротких URL и счётчиков кликов, а также чтения изменений целевых адресов. Elido никогда не запрашивает доступ ко всему рабочему пространству, и разрешение ограничено тем, что вы отметили в интерфейсе подтверждения Notion.

Могу ли я редактировать целевой URL в Notion и получать обновление в Elido?

Да. Наблюдатель полей опрашивает изменения свойства Destination каждые пять минут. Если URL изменился, Elido обновляет целевой адрес ссылки в api-core, записывает новую строку в журнал аудита и отправляет webhook, чтобы уведомить системы-получатели. Сама короткая ссылка никогда не меняется, поэтому существующие QR-коды и печатные материалы продолжают работать.

Как работает разрешение конфликтов, когда обе стороны редактируют одновременно?

Notion является источником истины для Destination, Tags и Title. Elido является источником истины для Short URL, Clicks, QR и Last Synced. Если свойство конфликтует в течение окна синхронизации, побеждает сторона, которой принадлежит поле, а проигравшая получает комментарий к строке с объяснением произошедшего. Скрытых перезаписей не бывает.

Работает ли интеграция с бесплатным планом Notion?

Да, с двумя оговорками. Бесплатные рабочие пространства Notion имеют ограничение API в три запроса в секунду, поэтому очень большие базы данных (более 5000 строк) синхронизируются пакетами по 100 с небольшой задержкой. Кроме того, при первом подключении администратор рабочего пространства Notion должен одобрить разрешение OAuth. После этого любой пользователь с правами редактирования базы данных может запустить ручную повторную синхронизацию.

Что произойдёт, если я отключу интеграцию?

OAuth-токен будет отозван, а зашифрованная копия в api-core удалена в течение 60 секунд. Существующие строки останутся в базе данных с нетронутыми короткими ссылками, но Clicks и Last Synced перестанут обновляться. При повторном подключении интеграция возобновится с того места, где остановилась, и дополнит счётчики кликов, накопленные в период отключения.

Попробуйте Elido

Вставьте URL - получите короткую ссылку

Без регистрации. Ссылка живёт 30 дней. Зарегистрируйтесь, чтобы оставить её навсегда.

Бесплатно, без регистрации · 2 в день

Попробуйте Elido

URL-сокращатель с хостингом в ЕС: собственные домены, глубокая аналитика, открытый API. Бесплатный тариф - без банковской карты.

Теги
notion url shortener integration
notion link tracking
notion oauth integration
notion database sync
short link notion table

Читать дальше