11 min de lecturaIntegraciones

Integración de Notion con el acortador de URL: OAuth + sincronización bidireccional de bases de datos

Conecta Notion mediante OAuth, sincroniza los enlaces cortos de Elido en una base de datos de Notion y recupera las ediciones de destino. Mapa de campos, permisos y resolución de problemas.

Ana Kowalska
Marketing solutions engineering
Filas de una base de datos de Notion sincronizadas con enlaces cortos de Elido con recuentos de clics en vivo, ilustrando la integración de Notion con el acortador de URL

La integración de Notion con el acortador de URL pasó de Beta a Live el 4 de junio de 2026 para la conexión en sí: un clic de OAuth, sin secretos que pegar. La sincronización de base de datos construida encima está planeada y todavía no disponible. Cuando se publique, Elido leerá las URL de cualquier base de datos que elijas, generará enlaces cortos de marca en tu dominio, los escribirá de vuelta en la tabla y vigilará las ediciones del destino, con el mapa de campos configurable por base de datos.

Este artículo cubre el paso de conexión OAuth, que ya está publicado, y después la estructura planeada de seis columnas y el flujo de edición bidireccional con resolución de conflictos. Si leíste el anterior tutorial de enlaces cortos en Notion, este es el corte más profundo.

OAuth de un clic: qué ocurre de verdad al pulsar Connect

Los antiguos flujos de pegar un token pedían generar un token de integración interna de Notion, pegarlo y luego compartir cada base de datos con la integración a mano. Eso desapareció. El flujo nuevo son tres clics: Connect en Elido, elegir espacio de trabajo y bases de datos en la pantalla de consentimiento de Notion, listo. El baile de OAuth sigue el estándar de la documentación de autenticación de la API de Notion. Notion no admite PKCE, así que el intercambio es un flujo de código de autorización plano protegido por un parámetro state.

Notion no tiene selección de permisos por ámbito en el momento de autorizar; las capacidades se configuran en el lado de Elido de la integración, y tú eliges qué páginas y bases de datos puede ver. Las capacidades son deliberadamente reducidas:

  • read_content - lee las propiedades Destination, Tags y Title de las bases de datos que elegiste.
  • insert_content - crea filas nuevas cuando le pides a Elido que genere un enlace desde una fuente externa (un Zap, un webhook, un CSV).
  • update_content - escribe de vuelta las propiedades Short URL, Clicks, QR y Last Synced.

Elido nunca pide lectura de todo el espacio de trabajo ni de páginas que no marcaste. Notion también lo impone del lado del servidor: una consulta contra una base de datos fuera de la concesión devuelve un 403. La referencia de la API de Notion para operaciones de base de datos cubre los verbos que usa la integración.

Cuando completas el consentimiento, tu navegador llega a api.elido.app/v1/oauth/notion/callback con el código de autorización. api-core intercambia el código por un token de acceso, cifra el token (según ADR-0036) y lo guarda en external_oauth_connections. El token en texto plano nunca toca el disco ni los registros. También se añade una fila al registro de auditoría para que un administrador pueda ver quién conectó qué espacio de trabajo de Notion, y cuándo.

Intercambio OAuth entre Elido y Notion: el usuario pulsa Connect, el navegador redirige a notion.com/install, el usuario elige espacio de trabajo y bases de datos, la devolución de llamada a api.elido.app guarda el token cifrado

El botón de conexión vive en la pestaña Integrations de cada espacio de trabajo, igual que cualquier otro proveedor del catálogo de integraciones. La página de integración de Notion tiene una captura de la pantalla de consentimiento. Los permisos se pueden revocar desde el panel Settings, Connections de Notion; Disconnect en Elido marca la conexión como revocada en el lado de Elido.

Dos modos: adjuntar o crear

En modo adjuntar, apuntas a Elido hacia una base de datos existente con una propiedad de tipo URL. Elido añade las columnas que necesita (y solo esas), sin renombrar nada. En modo crear, Elido aprovisiona una base de datos nueva "Elido Links" dentro de la página que elijas. La mayoría de equipos elige adjuntar porque su tabla de campañas ya existe con trimestres de historial. En cualquier caso, el esquema de abajo es idéntico.

Mapa de campos: las seis columnas y por qué son así

Todo lo que va desde aquí hasta el tutorial de configuración describe la sincronización planeada, no lo que está disponible hoy. Hoy la conexión permite a Elido listar tus bases de datos compartidas y crear filas en ellas a través del cliente de la API.

Aquí está la disposición de columnas que usa la integración. Los nombres son los predeterminados, puedes renombrarlos por base de datos en Settings, Notion, Field map.

ColumnaTipo en NotionDirecciónNotas
Short URLURLEscribe ElidoDe solo lectura desde el lado del usuario; editarla no hace nada.
DestinationURLEscribe NotionEl destino al que apunta el enlace corto. Editable.
TagsMulti-selectBidireccionalLas etiquetas se combinan por unión de conjuntos en caso de conflicto.
ClicksNúmeroEscribe ElidoSe consulta cada 5 minutos. De solo lectura.
QRArchivosEscribe ElidoUn PNG de 1024 px del QR de la URL corta.
Last SyncedFechaEscribe ElidoMarca de tiempo UTC del último toque de sincronización.

Vale la pena destacar un par de decisiones.

Clicks no es en vivo a propósito. Notion no tiene ninguna primitiva de streaming, y machacar su endpoint por cada clic agotaría el límite de tasa. Cinco minutos coincide con la frescura que necesita la mayoría de equipos de operaciones. Para tiempo real, un evento de webhook por clic está en la hoja de ruta; hasta que se publique, extrae los clics desde la API de analítica. Notion es la vista de campaña; el feed de analítica es la manguera a presión.

QR es una propiedad Files, no una URL. Notion no renderiza URL de imágenes externas en las tablas, pero sí renderiza los archivos adjuntos como miniaturas. Elido sube el PNG en la primera sincronización y solo lo vuelve a subir si cambia la URL corta. Consulta la página de la función de códigos QR y la guía de QR GS1.

Tags es bidireccional con unión de conjuntos. Es la única columna donde escriben ambos lados. Etiqueta una fila con "launch-2026" en Notion, Elido tiene "winter-promo" procedente de un Zap, en la siguiente sincronización ambas etiquetas existen en los dos lados. Las eliminaciones se propagan. El registro de auditoría anota cada cambio.

Para los parámetros UTM, la guía de plantillas UTM adjunta una plantilla a una carpeta para que cada enlace herede el utm_source correcto. La columna Destination se mantiene limpia, y Elido añade los parámetros en el momento de resolver el clic mediante reglas de enlaces inteligentes.

El flujo de edición bidireccional: quién gana cuando Notion y Elido no coinciden

Esta es la parte que más le importa a los equipos, porque las herramientas de sincronización tienen un historial de sobrescrituras silenciosas. Este es el contrato.

El worker planeado dentro de api-core consulta cada base de datos conectada cada cinco minutos en busca de cambios desde la última marca de agua last_edited_time. Ante un cambio de propiedad, carga el mapa de campos y decide la propiedad del dato. Las reglas son fijas:

  • Notion es propietario de: Destination, Tags (lado de escritura), Title.
  • Elido es propietario de: Short URL, Clicks, QR, Last Synced.
  • Compartido: Tags (lado de lectura, ambos lados ven el conjunto combinado).

Si un campo propiedad de Notion cambió en Notion, Elido actualiza su estado interno y emite un evento integration.notion.sync. Si un campo propiedad de Elido cambió (un incremento del recuento de clics), Elido lo escribe de vuelta en la siguiente sincronización.

El caso interesante es la colisión. Supongamos que cambias Destination en Notion a las 14:02:10 y un Zap escribe un Destination nuevo en Elido a las 14:02:30, dentro de la misma ventana de cinco minutos. Notion es propietario de Destination, así que gana Notion. Elido descarta la escritura del Zap, publica un comentario en la fila ("Conflicto en Destination a las 14:02:30, se mantuvo el valor de Notion, ver registro de auditoría") y emite un evento de conflicto al que se puede suscribir mediante webhooks. El Zap lo escucha y decide si reintentar o alertar.

Maqueta de una tabla de base de datos de Notion con las columnas Short URL, Destination, Tags, Clicks, QR y Last Synced, mostrando tres filas de ejemplo e iconos de estado de sincronización

No hay sobrescrituras silenciosas en ningún sitio. Cada escritura queda registrada. Cada conflicto recibe un comentario en la fila. Para un registro permanente, canaliza el flujo de auditoría hacia tu almacén de datos mediante la guía de exportación a ClickHouse o accede directamente a la API de GraphQL.

Cuando el cambio de destino NO debería propagarse

A veces editas un Destination a modo de borrador. Dos patrones ayudan.

Una propiedad de estado como guardián. Añade un Select llamado "Sync" con Draft, Live, Paused. La integración solo sincroniza las filas donde Sync = Live. Prepara en Draft, cambia a Live, y en el siguiente ciclo se recoge. La mayoría de equipos de marketing terminan usando esto.

Pausar toda la base de datos. Settings, Notion, pausa por base de datos. Útil durante una migración o ediciones masivas.

Tutorial de configuración: de cero a la primera fila sincronizada en 4 minutos

El paso 1 funciona hoy. Los pasos 2 a 5 llegan con la sincronización planeada.

  1. Conecta Notion. Workspace settings, Integrations, Notion, Connect. Elige el espacio de trabajo, marca las bases de datos, Allow.
  2. Elige una base de datos. Settings, Notion, "Add database." El desplegable lista todas las bases de datos que concediste. Elige una.
  3. Mapea los campos. Confirma Destination, Title y el resto. ¿Faltan propiedades? Elido se ofrece a crearlas.
  4. Elige un dominio. Selecciona un dominio de marca para los enlaces cortos. ¿Todavía no tienes un dominio personalizado? Elige el predeterminado; la migración es un clic más tarde.
  5. Guarda y rellena hacia atrás. Elido lee cada fila, genera un enlace corto para cualquiera que tenga Destination pero no Short URL, y lo escribe de vuelta. Las Short URL existentes no se tocan.

El tiempo real es de unos 4 minutos para 200 filas. Los rellenos más grandes chocan con el límite de tres peticiones por segundo de Notion en los espacios de trabajo gratuitos. Una base de datos de 5000 filas se rellena en unos 30 minutos; el worker agrupa en lotes y se reanuda solo si se topa con el límite de tasa.

Cuándo usar esto frente a Zapier o la API directamente

Existen tres caminos, no mutuamente excluyentes.

La integración nativa es la opción correcta por defecto si Notion es donde ocurre el trabajo. OAuth, resolución de conflictos, registro de auditoría, mapa de campos, sin código.

Un Zap es adecuado para flujos de trabajo de varios pasos ("cuando se añade una fila Y llega una reacción de Slack, entonces crea un enlace"). Para un mapeo uno a uno entre fila y enlace, la integración nativa es más rápida y más barata. Consulta el artículo de automatización con Zapier.

La API REST es adecuada si estás construyendo un flujo de trabajo personalizado sobre Elido. Para los desarrolladores que construyen integraciones de producto, el código fuente en services/api-core/internal/integrations/notion/ es lo bastante pequeño como para leerlo de una sentada.

Comparado con Bitly o Rebrandly: ninguno de los dos tiene una integración nativa con Notion a fecha de esta publicación. Ambos requieren Zapier o un script personalizado. Consulta la página frente a Bitly para ver la diferencia y la página de precios para saber qué planes incluyen bases de datos de Notion ilimitadas.

Resolución de problemas: los cuatro problemas que tuvimos en Beta

Durante la Beta aparecieron cuatro tipos de problemas. Varios afectan a la sincronización planeada más que a la conexión ya publicada, pero conviene saber qué buscar.

"Database not found" tras renombrar el espacio de trabajo. Si un administrador de Notion renombra el espacio de trabajo, el ID del espacio de trabajo se mantiene estable, pero los metadatos cacheados en nuestro lado quedan obsoletos hasta una hora. Solución alternativa: pulsa "Force re-sync" en Settings, Notion. El TTL de la caché está fijado en 15 minutos en producción, así que esto es sobre todo un artefacto de la Beta.

Límite de tasa durante un relleno grande. El límite de Notion por integración es de tres peticiones por segundo. Una base de datos de 5000 filas lo golpea con fuerza durante el relleno inicial. El worker aplica una espera exponencial (250 ms, 500 ms, 1 s, 2 s, con tope en 8 s) y se reanuda. Verás "Throttled by Notion, resuming" en el registro de actividad; esto es normal.

Desajuste de tipo de propiedad. El fallo más frecuente de la Beta. Un usuario eligió una columna de Notion de tipo "Text" para Destination en lugar de "URL." El validador del mapa de campos ahora lo detecta al guardar y se niega a continuar. Si ves "Destination must be a URL property", cambia primero el tipo de columna en Notion.

Usuario en varios espacios de trabajo con bases de datos compartidas. Si la misma persona es miembro de dos espacios de trabajo de Notion y ambos quieren conectar Elido, cada espacio de trabajo necesita su propia concesión de OAuth. El token es por espacio de trabajo, no por usuario. El flujo de conexión lo gestiona correctamente; simplemente espera tener que pulsar Connect dos veces.

Para cualquier cosa que no esté en esta lista, la página de contacto llega directamente al equipo de integraciones. Ahí vemos los problemas más rápido que en el soporte genérico.

Qué llega a continuación

Dos continuaciones en la hoja de ruta. Una receta "de formulario de Notion a enlace corto" para que el envío de un formulario genere un enlace rastreado. Y sincronización bidireccional sobre una propiedad Workspace para que un enlace pueda seguir el rastro cuando mueves una fila entre bases de datos. Ambas van encaminadas para el tercer trimestre; las anotaremos en el registro de cambios.

Para medir el impacto, la introducción a la analítica de enlaces cortos cubre qué métricas importan de verdad y cómo configurar las filas del panel de Notion para que respondan a las preguntas correctas.

Preguntas frecuentes

¿Qué permisos solicita la integración de Notion?

Elido solicita insert_content, update_content y read_content sobre las páginas o bases de datos que selecciones durante el paso de consentimiento de OAuth. Eso basta para añadir filas nuevas, escribir de vuelta las URL cortas y los recuentos de clics, y leer las ediciones del destino. Elido nunca pide acceso a todo el espacio de trabajo, y la concesión queda limitada a lo que marcaste en la interfaz de consentimiento de Notion.

¿Puedo editar la URL de destino dentro de Notion y que Elido lo siga?

Ese es el comportamiento planeado, todavía no está publicado: un vigilante de campo consultará cada cinco minutos si hay cambios en la propiedad Destination. Si la URL cambia, Elido actualiza el destino del enlace en api-core, escribe una fila nueva en el registro de auditoría y dispara un webhook para que los sistemas posteriores se enteren. La URL corta en sí nunca cambia, así que los códigos QR existentes y los materiales impresos siguen funcionando.

¿Cómo funciona la resolución de conflictos cuando ambos lados editan a la vez?

Estas son las reglas de sincronización planeadas. Notion es la fuente de verdad para Destination, Tags y Title. Elido es la fuente de verdad para Short URL, Clicks, QR y Last Synced. Si una propiedad entra en conflicto durante una ventana de sincronización, gana el lado que es dueño del campo, y el que pierde recibe un comentario en la fila explicando lo ocurrido. No hay ninguna sobrescritura silenciosa.

¿Funciona la integración con el plan gratuito de Notion?

Sí, con dos salvedades. Los espacios de trabajo gratuitos de Notion tienen un límite de tasa de API de tres peticiones por segundo, así que las bases de datos muy grandes (5000 filas o más) se sincronizan en lotes de 100 con una pequeña espera progresiva. Segundo, la integración necesita que un administrador del espacio de trabajo de Notion apruebe la concesión de OAuth la primera vez. Después de eso, cualquiera con derechos de edición sobre la base de datos puede disparar una resincronización manual.

¿Qué pasa si desconecto la integración?

Elido marca la conexión como revocada en su lado; Notion no tiene un endpoint de revocación de tokens, así que además hay que eliminar la conexión de Elido en Settings, Connections dentro de Notion. Las filas existentes se quedan en la base de datos con sus URL cortas intactas, pero Clicks y Last Synced dejan de actualizarse. Volver a conectar más tarde retoma donde lo dejó y rellena con retraso los recuentos de clics acumulados mientras estabas desconectado.

Prueba Elido

Pega una URL, obtén un enlace corto

Sin registro. El enlace vive 30 días. Crea una cuenta para conservarlo.

Gratis, sin registro · 2 por día

Prueba Elido

Acortador de URL alojado en la UE: dominios personalizados, análisis profundo y API abierta. Plan gratuito - sin tarjeta de crédito.

Etiquetas
notion url shortener integration
notion link tracking
notion oauth integration
notion database sync
short link notion table

Seguir leyendo