Conectando a Klaviyo e o Redshift

read
Last updated at:

Advanced Klaviyo Data Platform não está incluída no aplicativo de marketing padrão da Klaviyo, e é necessária uma assinatura para acessar a funcionalidade associada. Acesse nosso guia de cobrança para saber como comprar este plano.

Screenshot 2025-11-09 at 12.41.47 PM.png

Visão geral

Este guia orienta administradores do Redshift a preparar o Amazon Redshift para o Klaviyo, conceder o acesso mínimo necessário e concluir a conexão para que você possa importar dados de perfil em uma programação. Você vai aprender como:

  1. Crie os esquemas KLAVIYO_TMP e KLAVIYO_IMPORT_FROM_DWH
  2. Crie um usuário de serviço dedicado para o Klaviyo
  3. Conceda permissões de privilégio mínimo
  4. (Opcional) Validar permissões e conectividade
  5. Conecte o Redshift à Klaviyo e comece a criar sincronizações

Para ter um contexto sobre como o Data Warehouse Import funciona — incluindo objetos compatíveis e práticas recomendadas para a estrutura das tabelas — consulte Entendendo o Data Warehouse Import no Klaviyo.

Crie os esquemas obrigatórios

Crie dois esquemas no banco de dados que o Redshift usará para o 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 – Coloque aqui suas tabelas ou visualizações finais, prontas para sincronizar. Durante a configuração, a Klaviyo lista os objetos nesse esquema para você escolher, então inclua apenas as tabelas que você planeja importar.
  • KLAVIYO_TMP – Usado exclusivamente pela Klaviyo para tabelas temporárias/de preparação durante trabalhos de sincronização. Não modifique os dados aqui — a Klaviyo gerencia e limpa esse esquema automaticamente.

Crie o usuário de serviço do Klaviyo Service

Crie um usuário de banco de dados dedicado para o Klaviyo com uma senha forte que você possa alternar de forma independente.

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

Crie uma função para gerenciar concessões para o usuário do serviço:

CREATE ROLE klaviyo_data_transfer_role;
GRANT ROLE klaviyo_data_transfer_role TO klaviyo_data_transfer_user;

Armazene o nome de usuário e a senha com segurança — você vai usá-los ao conectar o Klaviyo ao Redshift.

Conceda as permissões necessárias (menor privilégio)

-- 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) Verifique sua configuração

Execute algumas verificações rápidas como usuário do Klaviyo para confirmar que as concessões estão corretas.

-- 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;

Acesso à rede

A Klaviyo precisa conseguir alcançar seu ponto de extremidade do Redshift.

  • Ponto de extremidade público do Redshift: adicione os IPs estáticos da Klaviyo à lista de permissões no seu firewall ou grupo de segurança.
  • Ponto de extremidade privado (por exemplo, PrivateLink): garanta a conectividade por meio do caminho da sua rede interna e das políticas de segurança.

Se você estiver usando grupos de segurança, permita o acesso de entrada na sua porta do Redshift (padrão 5439) para os intervalos de IP do 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

Prepare suas tabelas de importação (estrutura e desempenho)

Garanta que todas as tabelas que você planeja importar sigam estas convenções para sincronizações incrementais precisas e eficientes:

  • Coluna de carimbo de data/hora: Inclua um carimbo de data/hora de criação ou última atualização por linha (por exemplo, inserted_at, updated_at, modified_at).
  • Atualizações monotônicas: o carimbo de data/hora deve aumentar sempre que uma linha for alterada.
  • Fuso horário: Use UTC ou inclua informações de fuso horário. Se estiver ausente, a Klaviyo presume UTC.
  • Identificadores consistentes: use os mesmos identificadores de perfil (email, phone, external_id etc.) nas tabelas de importação para evitar duplicatas.
  • Formatos de consentimento: ao sincronizar dados de consentimento, siga os mesmos valores/formatos válidos usados em uploads de arquivo ou SFTP.
  • Desempenho: considere chaves de classificação ou de distribuição na sua coluna de carimbo de data/hora para leituras incrementais eficientes.
  • Visualizações: Você pode importar de tabelas ou visualizações, desde que um SELECT simples funcione para o usuário da Klaviyo.

Conectar o Redshift à Klaviyo

  1. No Klaviyo, abra a barra lateral esquerda e vá para Avançado → Sincronização.
  2. Clique em Criar sincronização.
  3. Selecione Importe dados do seu data warehouse.
  4. Escolha Redshift.
  5. Clique em Conectar ao Redshift e insira os seguintes detalhes de conexão:
Campo Descrição
Host Seu ponto de extremidade do Redshift (por exemplo, example-cluster.abc123.us-east-1.redshift.amazonaws.com)
Porta 5439 (ou sua porta personalizada)
Banco de dados O banco de dados que contém klaviyo_tmp e klaviyo_import_from_dwh
Nome de usuário/Senha As credenciais de usuário do Klaviyo Service

Após a conexão, o Klaviyo testará suas credenciais e a conectividade de rede. Depois da verificação, você pode criar sincronizações e selecionar tabelas ou visualizações de klaviyo_import_from_dwh.

Dicas para solucionar problemas

O teste de conexão falha

  • Verifique se as regras do firewall ou do grupo de segurança permitem que os IPs da Klaviyo alcancem o ponto de extremidade do Redshift na porta correta.
  • Confirme as configurações de SSL e se você está usando o ponto de extremidade correto (cluster vs. workgroup), a região e a porta.

    As tabelas não aparecem

  • Garanta que as tabelas estejam em klaviyo_import_from_dwh.
  • Confirme se o usuário da Klaviyo tem USAGE no esquema e SELECT nas tabelas ou visualizações.

    Nenhuma nova linha sincronizando

  • Verifique se sua coluna de carimbo de data/hora é atualizada em alterações de linha e usa UTC ou inclui informações de fuso horário.

    Erros de permissão no tempo de execução

  • Execute novamente o SQL de validação como o usuário do Klaviyo.
  • Reaplique concessões ou privilégios padrão, se necessário.

Segurança e manutenção

  • Altere a senha do usuário de serviço com regularidade e após mudanças na equipe.
  • Limite o usuário da Klaviyo aos dois esquemas acima e conceda USAGE apenas quando necessário.
  • Mantenha um runbook simples documentando suas instruções GRANT exatas e os intervalos de IP que você colocou na allowlist.

Perguntas frequentes

Posso importar de vários bancos de dados do Redshift? Sim. Crie os 2 esquemas em cada banco de dados e conecte objetos de cada um como sincronizações separadas.

Posso usar visualizações materializadas? Sim. Conceda SELECT na visualização materializada para o usuário da Klaviyo.

Apêndice: exemplo de DDL para uma tabela de importação simples

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
Esse artigo foi útil?
Usuários que acharam isso útil: 0 de 0