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.
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:
- Crie os esquemas
KLAVIYO_TMPeKLAVIYO_IMPORT_FROM_DWH - Crie um usuário de serviço dedicado para o Klaviyo
- Conceda permissões de privilégio mínimo
- (Opcional) Validar permissões e conectividade
- 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_idetc.) 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
SELECTsimples funcione para o usuário da Klaviyo.
Conectar o Redshift à Klaviyo
- No Klaviyo, abra a barra lateral esquerda e vá para Avançado → Sincronização.
- Clique em Criar sincronização.
- Selecione Importe dados do seu data warehouse.
- Escolha Redshift.
- 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
USAGEno esquema eSELECTnas 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
USAGEapenas quando necessário. - Mantenha um runbook simples documentando suas instruções
GRANTexatas 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)