Connessione tra Klaviyo e Redshift
Advanced Klaviyo Data Platform non è incluso nell'applicazione di marketing standard di Klaviyo e per accedere alle funzionalità associate è necessario un abbonamento. Visita la nostra guida alla fatturazione per scoprire come acquistare questo piano.
Panoramica
Questa guida accompagna gli amministratori di Redshift nella preparazione di Amazon Redshift per Klaviyo, nella concessione dell'accesso minimo necessario e nel completamento della connessione, così puoi importare i dati del profilo in base a una pianificazione. Scoprirai come:
- Crea gli schemi
KLAVIYO_TMPeKLAVIYO_IMPORT_FROM_DWH - Crea un utente di servizio dedicato per Klaviyo
- Concedi autorizzazioni con il minimo privilegio
- (Facoltativo) Convalida autorizzazioni e connettività
- Collega Redshift a Klaviyo e inizia a creare sincronizzazioni
Per maggiori informazioni su come funziona l'importazione del magazzino dati, inclusi gli oggetti supportati e le best practice per la struttura delle tabelle, consulta Comprendere l'importazione del magazzino dati in Klaviyo.
Crea schemi obbligatori
Crea due schemi nel database che Redshift userà per 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– Inserisci qui le tabelle o le viste finali, pronte per la sincronizzazione. Durante la configurazione, Klaviyo elenca gli oggetti in questo schema tra cui puoi scegliere, quindi includi solo le tabelle che intendi importare.KLAVIYO_TMP– Utilizzato esclusivamente da Klaviyo per tabelle temporanee/di staging durante i processi di sincronizzazione. Non modificare i dati qui: Klaviyo gestisce e ripulisce automaticamente questo schema.
Crea l’utente Klaviyo Service
Crea un utente database dedicato per Klaviyo con una password sicura che puoi ruotare in modo indipendente.
-- Replace with your own names and a strong password
CREATE USER klaviyo_data_transfer_user WITH PASSWORD 'REPLACE_WITH_STRONG_PASSWORD'; Crea un ruolo per gestire le autorizzazioni per l'utente del servizio:
CREATE ROLE klaviyo_data_transfer_role;
GRANT ROLE klaviyo_data_transfer_role TO klaviyo_data_transfer_user; Conserva nome utente e password in modo sicuro: li userai quando collegherai Klaviyo a Redshift.
Concedi le autorizzazioni necessarie (privilegio minimo)
-- 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; (Facoltativo) Verifica la configurazione
Esegui alcuni rapidi controlli come utente Klaviyo per confermare che le autorizzazioni siano corrette.
-- 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; Accesso alla rete
Klaviyo deve poter raggiungere il tuo endpoint Redshift.
- Endpoint Redshift pubblico: inserisci nella lista consentita gli IP statici di Klaviyo nel firewall o nel gruppo di sicurezza.
- Endpoint privato (ad es., PrivateLink): assicurati della connettività tramite il percorso di rete interno e i criteri di sicurezza.
Se utilizzi gruppi di sicurezza, consenti l'accesso in entrata sulla tua porta Redshift (impostazione predefinita 5439) per gli intervalli IP di 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 le tue tabelle di importazione (struttura e prestazioni)
Assicurati che tutte le tabelle che intendi importare rispettino queste convenzioni per sincronizzazioni incrementali accurate ed efficienti:
- Colonna timestamp: includi un timestamp di creazione o dell’ultimo aggiornamento per riga (ad es.
inserted_at,updated_at,modified_at). - Aggiornamenti monotoni: la marca temporale dovrebbe aumentare ogni volta che una riga cambia.
- Fuso orario: usa UTC o includi le informazioni sul fuso orario. Se mancano, Klaviyo presume UTC.
- Identificatori coerenti: utilizza gli stessi identificatori del profilo (
email,phone,external_ide così via) nelle tabelle di importazione per evitare duplicati. - Formati di consenso: quando sincronizzi i dati di consenso, segui gli stessi valori/formati validi usati nei caricamenti di file o SFTP.
- Prestazioni: prendi in considerazione le chiavi sort o dist nella colonna timestamp per letture incrementali efficienti.
- Viste: puoi importare da tabelle o viste, purché per l’utente Klaviyo funzioni un semplice
SELECT.
Collega Redshift a Klaviyo
- In Klaviyo, apri la barra laterale sinistra e vai su Avanzate → Sincronizzazione.
- Clicca su Crea sincronizzazione.
- Seleziona Importa i dati dal tuo magazzino dati.
- Scegli Redshift.
- Fai clic su Collega a Redshift e inserisci i seguenti dettagli di connessione:
Campo | Descrizione |
|---|---|
Host | Il tuo endpoint Redshift (ad es., |
Porta | 5439 (o la tua porta personalizzata) |
Database | Il database contenente |
Nome utente/Password | Le credenziali utente del Klaviyo Service |
Dopo la connessione, Klaviyo testerà le tue credenziali e la connettività di rete. Una volta verificato, puoi creare sincronizzazioni e selezionare tabelle o viste da klaviyo_import_from_dwh.
Suggerimenti per la risoluzione dei problemi
Il test di connessione non riesce
- Verifica che le regole del firewall o del gruppo di sicurezza consentano agli IP di Klaviyo di raggiungere l'endpoint Redshift sulla porta corretta.
- Conferma le impostazioni SSL e che stai usando l’endpoint corretto (cluster vs. workgroup), l’area geografica e la porta.
Le tabelle non vengono visualizzate
- Assicurati che le tabelle siano in
klaviyo_import_from_dwh. - Conferma che l’utente Klaviyo disponga di
USAGEnello schema e diSELECTnelle tabelle o nelle viste.
Nessuna nuova riga in sincronizzazione
- Verifica che la colonna del timestamp si aggiorni quando cambiano le righe e che usi UTC o includa informazioni sul fuso orario.
Errori di autorizzazione in fase di esecuzione
- Esegui di nuovo l’SQL di convalida come utente Klaviyo.
- Se necessario, applica di nuovo le autorizzazioni o i privilegi predefiniti.
Sicurezza e manutenzione
- Ruota regolarmente la password dell’utente di servizio e dopo i cambiamenti del personale.
- Limita l'utente Klaviyo ai due schemi sopra e concedi
USAGEsolo dove richiesto. - Mantieni un runbook semplice che documenti le tue esatte istruzioni
GRANTe gli intervalli IP che hai inserito nell'allowlist.
Domande frequenti
Posso importare da più database Redshift?
Sì. Crea i due schemi in ogni database e collega gli oggetti di ciascuno come sincronizzazioni separate.
Posso usare le viste materializzate?
Sì. Concedi SELECT sulla vista materializzata all'utente Klaviyo.
Appendice: esempio di DDL per una semplice tabella di importazione
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)