Conectar Klaviyo y Redshift

read
Last updated at:

Advanced Klaviyo Data Platform no está incluido en la aplicación de marketing estándar de Klaviyo, y se requiere una suscripción para acceder a la funcionalidad asociada. Visita nuestra guía de facturación para saber cómo contratar este plan.

Screenshot 2025-11-09 at 12.41.47 PM.png

Resumen

Esta guía orienta a los administradores de Redshift para preparar Amazon Redshift para Klaviyo, otorgar el acceso mínimo requerido y completar la conexión para que puedas importar datos de perfil según un calendario. Aprenderás a:

  1. Crea los esquemas KLAVIYO_TMP y KLAVIYO_IMPORT_FROM_DWH
  2. Crea un usuario de servicio dedicado para Klaviyo
  3. Otorga permisos de privilegio mínimo
  4. (Opcional) Validar permisos y conectividad
  5. Conecta Redshift con Klaviyo y empieza a crear sincronizaciones

Para obtener información general sobre cómo funciona la Importación desde almacén de datos, incluidos los objetos compatibles y las prácticas recomendadas para la estructura de tablas, consulta Comprender la importación desde almacén de datos en Klaviyo.

Crear esquemas requeridos

Crea dos esquemas en la base de datos que Redshift usará para Klaviyo:

-- Run as a Redshift DB admin or a role with CREATE SCHEMA
CREATE SCHEMA IF NOT EXISTS klaviyo_import_from_dwh;
CREATE SCHEMA IF NOT EXISTS klaviyo_tmp;
  • KLAVIYO_IMPORT_FROM_DWH – Coloca aquí tus tablas o vistas finales, listas para sincronizar. Durante la configuración, Klaviyo enumera los objetos en este esquema para que elijas, así que incluye solo las tablas que planeas importar.
  • KLAVIYO_TMP – Se usa exclusivamente por Klaviyo para tablas temporales/de staging durante trabajos de sincronización. No modifiques los datos aquí: Klaviyo administra y limpia este esquema automáticamente.

Crear el usuario de servicio de Klaviyo

Crea un usuario de base de datos dedicado para Klaviyo con una contraseña segura que puedas rotar de forma independiente.

-- Replace with your own names and a strong password
CREATE USER klaviyo_data_transfer_user WITH PASSWORD 'REPLACE_WITH_STRONG_PASSWORD';

Crea un rol para administrar concesiones para el usuario de servicio:

CREATE ROLE klaviyo_data_transfer_role;
GRANT ROLE klaviyo_data_transfer_role TO klaviyo_data_transfer_user;

Guarda el nombre de usuario y la contraseña de forma segura; los usarás cuando conectes Klaviyo con Redshift.

Otorga los permisos necesarios (principio de privilegio mínimo)

-- 1) Allow temporary tables
GRANT TEMPORARY ON DATABASE your_database TO ROLE klaviyo_data_transfer_role;

-- 2) Permissions on the staging schema Klaviyo manages
GRANT USAGE  ON SCHEMA klaviyo_tmp TO ROLE klaviyo_data_transfer_role;
GRANT CREATE ON SCHEMA klaviyo_tmp TO ROLE klaviyo_data_transfer_role;

-- 3) Read-only access to your import schema
GRANT USAGE ON SCHEMA klaviyo_import_from_dwh TO ROLE klaviyo_data_transfer_role;
GRANT SELECT ON ALL TABLES IN SCHEMA klaviyo_import_from_dwh TO ROLE klaviyo_data_transfer_role;
-- Remember to grant access to new tables in the future

-- 3a) Grant SELECT on specific views (repeat as needed)
GRANT SELECT ON VIEW klaviyo_import_from_dwh.example_view_name TO ROLE klaviyo_data_transfer_role;

(Opcional) Verifica la configuración

Ejecuta algunas verificaciones rápidas como usuario de Klaviyo para confirmar que las autorizaciones sean correctas.

-- Switch to the target database
SET search_path TO klaviyo_tmp;

-- 4.1 Validate create/read in KLAVIYO_TMP
CREATE TABLE IF NOT EXISTS permission_check (id INT);
INSERT INTO permission_check VALUES (1);
SELECT COUNT(*) FROM permission_check;  -- expect 1
DROP TABLE permission_check;

-- 4.2 Confirm visibility of import tables
SET search_path TO klaviyo_import_from_dwh;
SELECT tablename FROM pg_table_def
WHERE schemaname = 'klaviyo_import_from_dwh'
LIMIT 25;

-- 4.3 Confirm SELECT on a source table or view
SELECT * FROM klaviyo_import_from_dwh.EXAMPLE_TABLE;

Acceso a la red

Klaviyo debe poder acceder a tu punto de conexión de Redshift.

  • Punto de conexión público de Redshift: agrega las IP estáticas de Klaviyo a la lista de (entes, sitios, etc.) permitidos en tu firewall o grupo de seguridad.
  • Punto de conexión privado (p. ej., PrivateLink): asegúrate de tener conectividad mediante la ruta de tu red interna y las políticas de seguridad.

Si usas grupos de seguridad, permite el acceso entrante en el puerto de Redshift (predeterminado 5439) para los rangos de IP de Klaviyo:

184.72.183.187/32
52.206.71.52/32
3.227.146.32/32
44.198.39.11/32
35.172.58.121/32
3.228.37.244/32
54.88.219.8/32
3.214.211.176/32

Prepara tus tablas de importación (estructura y rendimiento)

Asegúrate de que todas las tablas que planeas importar sigan estas convenciones para obtener sincronizaciones incrementales precisas y eficientes:

  • Columna de marca de tiempo: Incluye una marca de tiempo de creación o de última actualización por fila (p. ej., inserted_at, updated_at, modified_at).
  • Actualizaciones monotónicas: La marca de tiempo debe aumentar cada vez que cambia una fila.
  • Zona horaria: Usa UTC o incluye información de la zona horaria. Si falta, Klaviyo supone que es UTC.
  • Identificadores coherentes: Usa los mismos identificadores de perfil (email, phone, external_id, etc.) en todas las tablas de importación para evitar duplicados.
  • Formatos de consentimiento: Al sincronizar datos de consentimiento, sigue los mismos valores/formatos válidos que se usan en las cargas de archivos o por SFTP.
  • Rendimiento: Considera usar claves de ordenación o distribución en la columna de marca de tiempo para lecturas incrementales eficientes.
  • Visualizaciones: Puedes importar desde tablas o vistas, siempre y cuando una SELECT simple funcione para el usuario de Klaviyo.

Conectar Redshift a Klaviyo

  1. En Klaviyo, abre la barra lateral izquierda y ve a Avanzado → Sincronización.
  2. Haz clic en Crear sincronización.
  3. Selecciona Importar datos de tu almacén de datos.
  4. Elige Redshift.
  5. Haz clic en Conectar a Redshift e ingresa los siguientes detalles de conexión:
Campo Descripción
Host Tu punto de conexión de Redshift (p. ej., example-cluster.abc123.us-east-1.redshift.amazonaws.com)
Puerto 5439 (o tu puerto personalizado)
Base de datos La base de datos que contiene klaviyo_tmp y klaviyo_import_from_dwh
Nombre de usuario/Contraseña Las credenciales de usuario de Klaviyo Service

Después de conectarte, Klaviyo probará tus credenciales y la conectividad de red. Una vez verificado, puedes crear sincronizaciones y seleccionar tablas o vistas de klaviyo_import_from_dwh.

Consejos de solución de problemas

La prueba de conexión falla

  • Verifica que las reglas del firewall o del grupo de seguridad permitan que las IP de Klaviyo lleguen a tu punto de conexión de Redshift en el puerto correcto.
  • Confirma la configuración de SSL y que estés usando el punto de conexión correcto (cluster vs. workgroup), la región y el puerto.

    Las tablas no aparecen

  • Asegúrate de que las tablas estén en klaviyo_import_from_dwh.
  • Confirma que el usuario de Klaviyo tenga USAGE en el esquema y SELECT en las tablas o vistas.

    No se sincronizan filas nuevas

  • Verifica que la columna de marca de tiempo se actualice cuando cambien las filas y que use UTC o incluya información de zona horaria.

    Errores de permisos en tiempo de ejecución

  • Vuelve a ejecutar el SQL de validación como el usuario de Klaviyo.
  • Vuelve a aplicar los permisos o los privilegios predeterminados, si es necesario.

Seguridad y mantenimiento

  • Rota la contraseña del usuario de servicio con regularidad y después de los cambios de personal.
  • Limita al usuario de Klaviyo a los dos esquemas anteriores y otorga USAGE solo donde sea necesario.
  • Mantén un runbook sencillo que documente tus declaraciones GRANT exactas y los rangos de IP que permitiste en la lista de autorizados.

Preguntas frecuentes

¿Puedo importar desde varias bases de datos de Redshift? Sí. Crea los dos esquemas en cada base de datos y conecta objetos de cada uno como sincronizaciones independientes.

¿Puedo usar vistas materializadas? Sí. Otorga SELECT en la vista materializada al usuario de Klaviyo.

Apéndice: ejemplo de DDL para una tabla de importación simple

CREATE TABLE klaviyo_import_from_dwh.profile_base (
  external_id   VARCHAR(128),
  email         VARCHAR(320),
  phone         VARCHAR(32),
  first_name    VARCHAR(128),
  last_name     VARCHAR(128),
  country       VARCHAR(64),
  inserted_at   TIMESTAMP
);

-- ensure monotonically increasing timestamp on inserts/updates
-- (use your ETL/ELT to set inserted_at = GETDATE() at load time)
x
¿Fue útil este artículo?
Usuarios a los que les pareció útil: 0 de 0