Conectar n8n con Supabase (Español)

Conectar n8n con Supabase: Base de Datos, Triggers en Tiempo Real y Gestión de Usuarios

Cuando descubrí Supabase hace un par de años, sentí que finalmente tenía el backend que siempre quise: PostgreSQL potente, autenticación lista para usar, almacenamiento de archivos y APIs en tiempo real, todo en una plataforma open source. Pero el momento en que las cosas realmente despegaron fue cuando conecté Supabase con n8n.

Esa combinación se convirtió en la columna vertebral de prácticamente todos los proyectos que manejo en Trinico Ventures. En esta guía te voy a mostrar exactamente cómo integrar n8n con Supabase, con ejemplos reales de pipelines de datos que uso en producción.

Por qué Supabase y n8n son la combinación perfecta

Supabase te da la base de datos y las APIs. n8n te da la lógica de automatización entre esa base de datos y el resto de tus herramientas. Juntos, cubren un espacio que normalmente requeriría un equipo de desarrollo dedicado.

Pensalo así: Supabase maneja tus datos y tu autenticación, y n8n se encarga de todo lo que pasa alrededor de esos datos. Un nuevo usuario se registra? n8n le envía un email de bienvenida, lo agrega a tu CRM y notifica al equipo por Slack. Un pedido cambia de estado en la base de datos? n8n actualiza el tracking, envía la notificación al cliente y registra la métrica en tu dashboard.

Lo que más me gusta de esta combinación es que ambas herramientas son open source. No estás atado a un vendor. Si mañana querés migrar, tus datos y tus workflows son tuyos.

Requisitos previos

Para seguir este tutorial necesitás:

Una cuenta de Supabase. El plan gratuito es más que suficiente para empezar. Te da 500 MB de base de datos, 1 GB de almacenamiento y 50.000 solicitudes mensuales a la API.

Una instancia de n8n funcionando. Puede ser la versión cloud o self-hosted. Si todavía no tenés una, podés empezar con n8n acá y tener tu instancia corriendo en minutos.

Conocimientos básicos de SQL. No necesitás ser un experto, pero sí entender lo básico de tablas, columnas y consultas.

Configurando la conexión entre n8n y Supabase

Paso 1: Obtener las credenciales de Supabase

Entrá a tu proyecto en Supabase y andá a Settings, luego a la sección API. Ahí vas a encontrar tres datos que necesitás:

La Project URL, que se ve algo como `https://tuproyecto.supabase.co`. La anon public key, que es la llave pública para operaciones del lado del cliente. Y la service_role key, que tiene acceso completo y es la que vamos a usar en n8n para operaciones del backend.

Importante: la service_role key tiene permisos totales sobre tu base de datos. Nunca la expongas en el frontend ni la compartas públicamente.

Paso 2: Configurar las credenciales en n8n

En n8n, andá a Settings y después a Credentials. Creá una nueva credencial de tipo “Supabase API”. Completá los campos con la Project URL y la service_role key que obtuviste en el paso anterior. Guardá y probá la conexión para asegurarte de que funciona.

Si n8n te muestra un check verde, estás listo para empezar a crear workflows.

Paso 3: Método alternativo con HTTP Request

n8n tiene un nodo nativo de Supabase, pero a veces necesitás más flexibilidad. En esos casos, podés usar el nodo HTTP Request con la API REST de Supabase directamente.

Creá una credencial de tipo “Header Auth” con el nombre `apikey` y el valor de tu service_role key. Además, agregá un header `Authorization` con el valor `Bearer` seguido de tu service_role key.

Esto te permite acceder a cualquier endpoint de la API de Supabase, incluyendo funciones RPC, Edge Functions y operaciones avanzadas que el nodo nativo no cubre.

Ejemplo práctico 1: Pipeline de gestión de leads

Este es un flujo que uso con varios clientes. Cuando un potencial cliente completa un formulario en el sitio web, el pipeline hace todo esto automáticamente:

La tabla en Supabase

Primero, creá una tabla llamada `leads` en Supabase con estas columnas: `id` de tipo uuid con valor por defecto `gen_random_uuid()` como primary key, `created_at` de tipo timestamptz con valor por defecto `now()`, `email` de tipo text y que no sea nulo, `nombre` de tipo text, `empresa` de tipo text, `fuente` de tipo text con valor por defecto `’website’`, `estado` de tipo text con valor por defecto `’nuevo’`, y `notas` de tipo text.

Podés crear la tabla desde el editor SQL de Supabase o desde el Table Editor visual.

El workflow en n8n

El workflow tiene estos nodos:

Trigger (Webhook): Configurá un nodo Webhook que reciba los datos del formulario por POST. La URL del webhook es la que vas a poner en el action de tu formulario web.

Nodo Supabase (Insert): Conectá el webhook a un nodo Supabase configurado para insertar en la tabla `leads`. Mapeá los campos del formulario a las columnas de la tabla: `email` con el valor de `body.email`, `nombre` con `body.nombre`, `empresa` con `body.empresa`.

Nodo IF (Validación): Antes de insertar, agregá un nodo IF que verifique que el email no esté vacío y que tenga un formato válido. Usá la condición de tipo string “contains” con el valor “@” para una validación básica.

Nodo Email (Notificación): Después de la inserción exitosa, enviá un email al equipo de ventas con los datos del nuevo lead. Configurá un nodo de Email Send con el asunto “Nuevo lead: ” seguido del nombre, y en el cuerpo incluí todos los datos relevantes.

Nodo Slack (Alerta): En paralelo al email, enviá un mensaje a tu canal de Slack de ventas con la información del lead. Usá el nodo de Slack configurado con el canal apropiado y un mensaje formateado.

Nodo Supabase (Update): Finalmente, actualizá el estado del lead a “notificado” para llevar el tracking de qué leads ya fueron procesados.

Este pipeline corre en producción con varios de mis clientes y procesa entre 50 y 200 leads por semana sin intervención manual.

Ejemplo práctico 2: Triggers en tiempo real con Supabase

Esta es probablemente la funcionalidad más poderosa de la combinación n8n y Supabase. Supabase tiene un sistema de cambios en tiempo real basado en los WAL (Write-Ahead Logs) de PostgreSQL, y podemos aprovecharlo en n8n.

Configurando Database Webhooks en Supabase

Supabase permite configurar webhooks que se disparan cuando hay cambios en una tabla. Andá a Database, luego a Webhooks en tu proyecto de Supabase.

Creá un nuevo webhook con estas configuraciones: nombre descriptivo como `notificar_cambio_pedido`, seleccioná la tabla que querés monitorear (por ejemplo `pedidos`), elegí los eventos que te interesan (INSERT, UPDATE, DELETE o una combinación), y en la URL del webhook poné la URL del nodo Webhook de tu workflow en n8n.

Supabase va a enviar un POST a tu n8n cada vez que ocurra el evento seleccionado en esa tabla. El payload incluye el registro anterior (old_record), el nuevo registro (record), el tipo de evento y la tabla afectada.

Workflow para procesar cambios en tiempo real

Creá un nuevo workflow en n8n con un nodo Webhook como trigger. Cuando Supabase envíe el evento, el payload va a tener esta estructura: un campo `type` que puede ser INSERT, UPDATE o DELETE, un campo `table` con el nombre de la tabla, un campo `record` con los datos actuales, y un campo `old_record` con los datos anteriores al cambio.

Usá un nodo Switch para manejar cada tipo de evento por separado. Por ejemplo, para un sistema de pedidos:

Si el tipo es INSERT, enviá una confirmación de pedido al cliente por email y registrá el pedido en tu sistema de fulfillment.

Si el tipo es UPDATE y el campo `estado` cambió de “preparando” a “enviado”, enviá la notificación de envío al cliente con el número de tracking.

Si el tipo es UPDATE y el campo `estado` cambió a “entregado”, enviá una encuesta de satisfacción al cliente después de un delay de 24 horas.

Alternativa: Polling con el nodo Supabase

Si no querés o no podés configurar webhooks (por ejemplo, porque tu instancia de n8n no tiene una URL pública), podés usar el enfoque de polling. Configurá un nodo Schedule Trigger que se ejecute cada minuto o cada 5 minutos, seguido de un nodo Supabase que consulte los registros modificados desde la última ejecución.

Para esto, usá un query que filtre por `updated_at` mayor al timestamp de la última ejecución. Guardá ese timestamp en un nodo Set al final del workflow para usarlo en la siguiente iteración.

El polling es menos eficiente que los webhooks, pero funciona en cualquier escenario y no requiere que tu n8n sea accesible desde internet.

Ejemplo práctico 3: Gestión de usuarios y onboarding automatizado

Este es mi favorito. Supabase Auth maneja el registro y login de usuarios, y n8n se encarga de todo el proceso de onboarding.

El flujo completo

Cuando un usuario se registra en tu aplicación a través de Supabase Auth, podés configurar un webhook en Supabase que notifique a n8n. El workflow de onboarding que yo uso tiene estos pasos:

Paso 1 – Enriquecer el perfil: Tomá el email del nuevo usuario y usá un servicio como Clearbit o Hunter.io (ambos tienen nodos en n8n) para obtener información adicional: nombre de la empresa, cargo, tamaño de la organización, redes sociales.

Paso 2 – Guardar en Supabase: Actualizá la tabla de perfiles en Supabase con la información enriquecida. Usá un nodo Supabase con la operación Update, filtrando por el user_id.

Paso 3 – Segmentar: Según los datos enriquecidos, asigná el usuario a un segmento. Si la empresa tiene más de 50 empleados, es un lead enterprise. Si tiene menos de 10, es una startup. Esta lógica la manejo con nodos IF encadenados.

Paso 4 – Secuencia de emails: Dispará una secuencia de emails de onboa

🚀 ¿Listo para automatizar?

Comienza tu prueba gratuita de n8n.

Prueba n8n Gratis →