Klaviyo en Redshift verbinden
Advanced Klaviyo Data Platform is niet inbegrepen in Klaviyo's standaard marketingapplicatie en er is een abonnement nodig om toegang te krijgen tot de bijbehorende functionaliteit. Ga naar onze factureringsgids voor meer informatie over hoe je dit plan kunt aanschaffen.
Overzicht
Deze handleiding leidt Redshift beheerders door Amazon Redshift voor te bereiden op Klaviyo, de minimaal vereiste toegang te verlenen en de verbinding te voltooien zodat je profielgegevens volgens een schema kunt importeren. Je leert hoe je:
- Maak de
KLAVIYO_TMPenKLAVIYO_IMPORT_FROM_DWHschema's aan - Maak een speciale servicegebruiker voor Klaviyo
- Rechten met laagste privilege toekennen
- (Optioneel) Valideer machtigingen en connectiviteit
- Verbind Redshift met Klaviyo en begin met het maken van syncs
Voor achtergrondinformatie over hoe import uit datawarehouse werkt - inclusief ondersteunde objecten en best practices voor tabelstructuur - zie Inzicht in import uit datawarehouse in Klaviyo.
Vereiste schema's makenVereiste schema's maken
Maak twee schema's in de database die Redshift zal gebruiken voor Klaviyo:
-- Uitvoeren als Redshift DB admin of een rol met CREATE SCHEMA CREATE SCHEMA IF NOT EXISTS klaviyo_import_from_dwh; CREATE SCHEMA IF NOT EXISTS klaviyo_tmp;
-
KLAVIYO_IMPORT_FROM_DWH- Plaats hier je definitieve, ready-to-sync tabellen of views. Tijdens het instellen geeft Klaviyo een lijst met objecten in dit schema waaruit je kunt kiezen, dus neem alleen de tabellen op die je van plan bent te importeren. -
KLAVIYO_TMP- Uitsluitend gebruikt door Klaviyo voor tijdelijke/stagetabellen tijdens synchronisatietaken. Wijzig hier geen gegevens-Klaviyo beheert en schoont dit schema automatisch op.
Maak de Klaviyo servicegebruiker aan
Maak een speciale databasegebruiker voor Klaviyo met een sterk wachtwoord dat je onafhankelijk kunt draaien.
-- Vervang door je eigen namen en een sterk wachtwoord CREATE USER klaviyo_data_transfer_user WITH PASSWORD 'REPLACE_WITH_STRONG_PASSWORD';
Maak een rol aan om subsidies voor de gebruiker te beheren:
CREËER ROLE klaviyo_data_transfer_role; GRANT ROLE klaviyo_data_transfer_role TO klaviyo_data_transfer_user;
Sla de gebruikersnaam en het wachtwoord veilig op - je zult ze gebruiken bij het verbinden van Klaviyo met Redshift.
Vereiste rechten toekennen (minste privilege)Vereiste rechten toekennen (minste privilege)
-- 1) Sta tijdelijke tabellen toe GRANT TEMPORARY ON DATABASE your_database TO ROLE klaviyo_data_transfer_role; -- 2) Rechten op het staging schema Klaviyo beheert 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) Alleen-lezen toegang tot je importschema 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; -- Vergeet niet om in de toekomst toegang te verlenen tot nieuwe tabellen -- 3a) Verleen SELECT op specifieke views (herhaal indien nodig) GRANT SELECT OP VIEW klaviyo_import_from_dwh.example_view_name TO ROLE klaviyo_data_transfer_role;(Optioneel) Controleer je instellingen
(Optioneel) Controleer je instellingen
Voer een paar snelle controles uit als de Klaviyo gebruiker om te bevestigen dat de subsidies correct zijn.
-- Schakel over naar de doeldatabase SET search_path TO klaviyo_tmp; -- 4.1 Valideer aanmaken/lezen 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. TABLE-import_from_dwh; 2 Bevestig de zichtbaarheid van importeertabellen SET search_path TO klaviyo_import_from_dwh; SELECT tablename FROM pg_table_def WHERE schemaname = 'klaviyo_import_from_dwh' LIMIT 25; -- 4.3 Bevestig SELECT op een brontabel of view SELECT * FROM klaviyo_import_from_dwh.EXAMPLE_TABLE;Netwerk toegang
Netwerk toegang
Klaviyo moet je Redshift eindpunt kunnen bereiken.
- Openbaar Redshift eindpunt: positieve lijst Klaviyo's statische IP's in je firewall of beveiligingsgroep.
- Privé eindpunt (bijv. PrivateLink): zorg voor connectiviteit via je interne netwerkpad en beveiligingsbeleid.
Als je beveiligingsgroepen gebruikt, sta dan inkomende toegang toe op je Redshift poort (standaard 5439) voor de IP bereiken van 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/32Bereid je importtabellen voor (structuur & prestaties)
Bereid je importtabellen voor (structuur & prestaties)
Zorg ervoor dat alle tabellen die je wilt importeren deze conventies volgen voor nauwkeurige, efficiënte incrementele synchronisaties:
-
Kolom met tijdstempel: Neem een aanmaak- of laatste-bijwerkingstijdstempel per rij op (bijv.
inserted_at,updated_at,modified_at). - Monotone updates: De tijdstempel moet toenemen wanneer een rij verandert.
- Tijdzone: Gebruik UTC of voeg tijdzone-informatie toe. Als deze ontbreekt, neemt Klaviyo UTC aan.
-
Consistente identifiers: Gebruik dezelfde profielidentifiers
(e-mail,telefoon,extern_id, etc.) in verschillende importeertabellen om duplicaten te voorkomen. - Formaten voor toestemming: Houd bij het synchroniseren van toestemmingsgegevens dezelfde geldige waarden/formaten aan als bij het uploaden van bestanden of SFTP.
- Prestaties: Overweeg sorteer- of dist-toetsen op je tijdstempelkolom voor efficiënte incrementele lezingen.
-
Views: Je kunt importeren vanuit tabellen of views, zolang een eenvoudige
SELECTmaar werkt voor de Klaviyo gebruiker.
Redshift verbinden met Klaviyo
- Open in Klaviyo de linker zijbalk en ga naar Geavanceerd → Synchroniseren.
- Klik op Synchronisatie maken.
- Selecteer Gegevens importeren uit je datawarehouse.
- Kies Redshift.
- Klik op Verbinden met Redshift en voer de volgende verbindingsgegevens in:
| Veld | Beschrijving |
|---|---|
| Host | Je Redshift eindpunt (bijv. voorbeeld-cluster.abc123.us-east-1.redshift.amazonaws.com) |
| Poort | 5439 (of jouw aangepaste poort) |
| Database | De database met klaviyo_tmp en klaviyo_import_from_dwh
|
| Gebruikersnaam / Wachtwoord | De gebruikersreferenties voor de Klaviyo service |
Nadat u verbinding hebt gemaakt, zal Klaviyo uw referenties en netwerkverbinding testen. Eenmaal geverifieerd, kun je syncs maken en tabellen of views selecteren vanuit klaviyo_import_from_dwh.
Tips voor probleemoplossing
Verbindingstest mislukt
- Controleer of de firewall of beveiligingsgroep regels Klaviyo's IP's toestaan om je Redshift eindpunt op de juiste poort te bereiken.
- Bevestig SSL-instellingen en dat je het juiste eindpunt (cluster vs. werkgroep), regio en poort gebruikt.
Tabellen verschijnen niet
- Zorg ervoor dat tabellen in
klaviyo_import_from_dwhstaan. - Controleer of de Klaviyo gebruiker
USAGEheeft op het schema enSELECTop de tabellen of views.
Geen nieuwe rijen synchroniseren
- Controleer of je tijdstempelkolom wordt bijgewerkt bij rijveranderingen en UTC gebruikt of tijdzone-info bevat.
Toestemmingsfouten tijdens runtime
- Voer de SQL-validatie opnieuw uit als de Klaviyo gebruiker.
- Pas indien nodig opnieuw toekenningen of standaardprivileges toe.
Veiligheid en onderhoud
- Draai het gebruikerswachtwoord regelmatig en na personeelswisselingen.
- Beperk de Klaviyo gebruiker tot de twee bovenstaande schema's en verleen alleen
USAGEwaar nodig. - Houd een eenvoudig runbook bij waarin je je exacte
GRANTverklaringen en de IP bereiken die je hebt toegestaan documenteert.
Veelgestelde vragen
Kan ik importeren uit meerdere Redshift databases?
Ja. Maak de twee schema's in elke database en verbind objecten van elk als aparte syncs.
Kan ik gematerialiseerde weergaven gebruiken?
Ja. Geef SELECT op de materialized view aan de Klaviyo gebruiker.
Appendix: Voorbeeld DDL voor een eenvoudige importeertabel
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 ); -- zorg voor een monotoon stijgende tijdstempel bij inserts/updates -- (gebruik je ETL/ELT om inserted_at = GETDATE() in te stellen bij het laden)