Conectando o Klaviyo e o Redshift
A Advanced Klaviyo Data Platform não está incluída no aplicativo de marketing padrão do Klaviyo, e é necessária uma assinatura para acessar a funcionalidade associada. Acesse nosso guia de faturamento para saber como adquirir esse plano.
Visão geral
Este guia orienta os administradores do Redshift na preparação do Amazon Redshift para o Klaviyo, concedendo o acesso mínimo necessário e concluindo a conexão para que você possa importar dados de perfil em uma programação. Você aprenderá a:
- Criar os esquemas
KLAVIYO_TMPeKLAVIYO_IMPORT_FROM_DWH - Criar um usuário de serviço dedicado para o Klaviyo
- Conceder permissões de menor privilégio
- (Opcional) Valide as permissões e a conectividade
- Conecte o Redshift ao Klaviyo e comece a criar sincronizações
Para saber como funciona a importação do Data Warehouse, incluindo os objetos suportados e as práticas recomendadas para a estrutura da tabela, consulte Entendendo a importação do Data Warehouse em Klaviyo.
Criar os esquemas necessáriosCriar os esquemas necessários
Crie dois esquemas no banco de dados que o Redshift usará para o Klaviyo:
-- Execute como um administrador do Redshift DB ou uma função com 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 exibições finais, prontas para sincronização. Durante a configuração, o Klaviyo lista os objetos desse esquema para você escolher, portanto, inclua apenas as tabelas que pretende importar. -
KLAVIYO_TMP- Usado exclusivamente pelo Klaviyo para tabelas temporárias/de preparação durante os trabalhos de sincronização. Não modifique os dados aqui - o Klaviyo gerencia e limpa esse esquema automaticamente.
Crie o usuário do serviço Klaviyo
Crie um usuário de banco de dados dedicado para o Klaviyo com uma senha forte que você possa alternar de forma independente.
-- Substitua por seus próprios nomes e uma senha forte 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 de forma segura - você os usará ao conectar o Klaviyo ao Redshift.
Conceder as permissões necessárias (privilégio mínimo)Conceder as permissões necessárias (privilégio mínimo)
-- 1) Permitir tabelas temporárias GRANT TEMPORARY ON DATABASE your_database TO ROLE klaviyo_data_transfer_role; -- 2) Permissões no esquema de preparação que a Klaviyo gerencia 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) Acesso somente de leitura ao esquema de importação 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; -- Lembre-se de conceder acesso a novas tabelas no futuro -- 3a) Conceda SELECT em exibições específicas (repita conforme necessário) GRANT SELECT ON VIEW klaviyo_import_from_dwh.example_view_name TO ROLE klaviyo_data_transfer_role;(Opcional) Verifique sua configuração
(Opcional) Verifique sua configuração
Faça algumas verificações rápidas como usuário do Klaviyo para confirmar se as concessões estão corretas.
-- Alternar para o banco de dados de destino SET search_path TO klaviyo_tmp; -- 4.1 Validar a criação/leitura em 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 Confirme a visibilidade das tabelas de importação SET search_path TO klaviyo_import_from_dwh; SELECT tablename FROM pg_table_def WHERE schemaname = 'klaviyo_import_from_dwh' LIMIT 25; -- 4.3 Confirme o SELECT em uma tabela ou visualiza ção de origem SELECT * FROM klaviyo_import_from_dwh.EXAMPLE_TABLE;Acesso à rede
Acesso à rede
O Klaviyo deve ser capaz de acessar o ponto de extremidade do Redshift.
- Public Redshift ponto de extremidade: lista de permissões Klaviyo's static IPs in your firewall or security group.
- Ponto de extremidade privado (por exemplo, PrivateLink): garanta a conectividade por meio de seu caminho de rede interna e políticas de segurança.
Se você estiver usando grupos de segurança, permita o acesso de entrada na 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/32Prepare suas tabelas de importação (estrutura & performance)
Prepare suas tabelas de importação (estrutura & performance)
Certifique-se de que todas as tabelas que você planeja importar sigam essas convenções para obter sincronizações incrementais precisas e eficientes:
-
Coluna de registro de data e hora: Inclua um carimbo de data/hora de criação ou de última atualização por linha (por exemplo,
inserted_at,updated_at,modified_at). - Atualizações monotônicas: O registro de data e hora deve aumentar sempre que uma linha for alterada.
- Fuso horário: Use UTC ou inclua informações de fuso horário. Se estiver faltando, o Klaviyo assume o UTC.
-
Identificadores consistentes: Use os mesmos identificadores de perfil
(e-mail,telefone,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 arquivos ou SFTP.
- Desempenho: Considere chaves de classificação ou dist em sua coluna de carimbo de data/hora para obter leituras incrementais eficientes.
-
Visualizações: Você pode importar de tabelas ou visualizações, desde que um simples
SELECTfuncione para o usuário do Klaviyo.
Conectar o Redshift ao Klaviyo
- No Klaviyo, abra a barra lateral esquerda e vá para Advanced → Syncing (Avançado → Sincronização).
- Clique em Criar sincronização.
- Selecione Importar 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 o klaviyo_tmp e o klaviyo_import_from_dwh
|
| Nome de usuário / senha | As credenciais de usuário do serviço Klaviyo |
Depois que você se conectar, o Klaviyo testará suas credenciais e a conectividade da rede. Depois de verificado, você pode criar sincronizações e selecionar tabelas ou exibições do klaviyo_import_from_dwh.
Dicas para solucionar problemas
Falha no teste de conexão
- Verifique se as regras do firewall ou do grupo de segurança permitem que os IPs do Klaviyocheguem ao Redshift ponto de extremidade na porta correta.
- Confirme as configurações de SSL e se você está usando o ponto de extremidade (cluster vs. grupo de trabalho), a região e a porta corretos.
As tabelas não são exibidas
- Verifique se as tabelas estão em
klaviyo_import_from_dwh. - Confirme se o usuário do Klaviyo tem
USAGEno esquema eSELECTnas tabelas ou exibições.
Não há sincronização de novas linhas
- Verifique se sua coluna de carimbo de data/hora é atualizada nas alterações de linha e usa UTC ou inclui informações de fuso horário.
Erros de permissão em tempo de execução
- Execute novamente o SQL de validação como o usuário do Klaviyo.
- Reaplique as concessões ou os privilégios padrão, se necessário.
Segurança e manutenção
- Altere a senha do usuário de serviço regularmente e após mudanças de funcionários.
- Limite o usuário do Klaviyo aos dois esquemas acima e conceda
USAGEsomente quando necessário. - Mantenha um runbook simples documentando suas instruções
GRANTexatas e os intervalos de IP que você permitiu.
Perguntas frequentes
Posso importar de vários bancos de dados do Redshift?
Sim. Crie os dois esquemas em cada banco de dados e conecte os objetos de cada um deles como sincronizações separadas.
Posso usar visualizações materializadas?
Sim. Conceda SELECT na visualização materializada ao usuário do 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 ); -- garanta o aumento monotônico do registro de data e hora nas inserções/atualizações -- (use seu ETL/ELT para definir inserted_at = GETDATE() no momento do carregamento)