Connexion de Klaviyo et de Redshift
Advanced Klaviyo Data Platform n’est pas inclus dans l’application marketing standard de Klaviyo, et un abonnement est nécessaire pour accéder aux fonctionnalités associées. Consultez notre guide de facturation pour savoir comment acheter cet abonnement.
Vue d’ensemble
Ce guide accompagne les administrateurs Redshift dans la préparation d’Amazon Redshift pour Klaviyo, l’octroi des accès minimum requis et la finalisation de la connexion afin que vous puissiez importer des données de profils selon un calendrier. Vous découvrirez comment :
- Créer les schémas
KLAVIYO_TMPetKLAVIYO_IMPORT_FROM_DWH - Créez un utilisateur de service dédié pour Klaviyo
- Accorder des autorisations basées sur le principe du moindre privilège
- (Facultatif) Validez les autorisations et la connectivité
- Connecter Redshift à Klaviyo et commencer à créer des synchronisations
Pour en savoir plus sur le fonctionnement de l’importation depuis un entrepôt de données — y compris les objets pris en charge et les bonnes pratiques relatives à la structure des tables —, consultez Comprendre l’importation depuis un entrepôt de données dans Klaviyo.
Créer les schémas requis
Créez deux schémas dans la base de données que Redshift utilisera pour 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– Placez ici vos tables ou vues finales, prêtes à être synchronisées. Lors de la configuration, Klaviyo répertorie les objets de ce schéma afin que vous puissiez choisir parmi eux ; n’incluez donc que les tables que vous prévoyez d’importer.KLAVIYO_TMP– Utilisé exclusivement par Klaviyo pour les tables temporaires/de préproduction pendant les tâches de synchronisation. Ne modifiez pas les données ici : Klaviyo gère et nettoie automatiquement ce schéma.
Créer l’utilisateur de service Klaviyo
Créez un utilisateur de base de données dédié pour Klaviyo, avec un mot de passe robuste que vous pouvez faire tourner indépendamment.
-- Replace with your own names and a strong password
CREATE USER klaviyo_data_transfer_user WITH PASSWORD 'REPLACE_WITH_STRONG_PASSWORD'; Créez un rôle pour gérer les autorisations pour l’utilisateur de service :
CREATE ROLE klaviyo_data_transfer_role;
GRANT ROLE klaviyo_data_transfer_role TO klaviyo_data_transfer_user; Stockez le nom d’utilisateur et le mot de passe en toute sécurité : vous en aurez besoin lors de la connexion de Klaviyo à Redshift.
Accordez les autorisations requises (principe du moindre privilège)
-- 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; (Facultatif) Vérifiez votre configuration
Effectuez quelques vérifications rapides en tant qu’utilisateur Klaviyo pour confirmer que les autorisations sont correctes.
-- 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; Accès au réseau
Klaviyo doit pouvoir atteindre le point de terminaison Redshift.
- Point de terminaison Redshift public : ajoutez les adresses IP statiques de Klaviyo à la liste d’autorisation dans votre pare-feu ou votre groupe de sécurité.
- Points de terminaison privé (p. ex., PrivateLink) : assurez la connectivité via le chemin de votre réseau interne et vos règles de sécurité.
Si vous utilisez des groupes de sécurité, autorisez l’accès entrant sur votre port Redshift (par défaut 5439) pour les plages d’adresses IP de 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 Préparez vos tableaux d’importation (structure et performances)
Assurez-vous que tous les tableaux que vous prévoyez d’importer respectent ces conventions pour des synchronisations incrémentielles précises et efficaces :
- Colonne d’horodatage : incluez, pour chaque ligne, un horodatage de création ou de dernière mise à jour (p. ex.,
inserted_at,updated_at,modified_at). - Mises à jour monotones : l’horodatage doit augmenter chaque fois qu’une ligne change.
- Fuseau horaire : utilisez UTC ou incluez des informations sur le fuseau horaire. Si ce paramètre est manquant, Klaviyo suppose UTC.
- Identifiants cohérents : utilisez les mêmes identifiants de profil (
email,phone,external_id, etc.) dans l’ensemble des tableaux d’importation afin d’éviter les doublons. - Formats de consentement : Lors de la synchronisation des données de consentement, suivez les mêmes valeurs/formats valides que ceux utilisés dans les chargements de fichiers ou SFTP.
- Performances : envisagez des clés de tri ou de distribution sur votre colonne d’horodatage pour des lectures incrémentielles efficaces.
- Vues: Vous pouvez importer à partir de tableaux ou de vues, tant qu’un simple
SELECTfonctionne pour l’utilisateur Klaviyo.
Connecter Redshift à Klaviyo
- Dans Klaviyo, ouvrez la barre latérale gauche et accédez à Avancé → Synchronisation.
- Cliquez sur Créer une synchronisation.
- Sélectionnez Importer les données depuis votre entrepôt de données.
- Choisissez Redshift.
- Cliquez sur Se connecter à Redshift et saisissez les informations de connexion suivantes :
Champ | Description |
|---|---|
Hôte | Votre point de terminaison Redshift (p. ex., |
Port | 5439 (ou votre port personnalisé) |
Base de données | La base de données contenant |
Nom d’utilisateur/Mot de passe | Les identifiants d’utilisateur du Klaviyo Service |
Après vous être connecté, Klaviyo testera vos identifiants et la connectivité du réseau. Une fois la vérification effectuée, vous pouvez créer des synchronisations et sélectionner des tables ou des vues depuis klaviyo_import_from_dwh.
Résolution de problèmes
Échec du test de connexion
- Vérifiez que les règles de pare-feu ou de groupe de sécurité autorisent les IP de Klaviyo à atteindre vos points de terminaison Redshift sur le bon port.
- Confirmez les paramètres SSL et que vous utilisez le bon points de terminaison (cluster vs workgroup), la région et le port.
Les tableaux n’apparaissent pas
- Assurez-vous que les tableaux sont dans
klaviyo_import_from_dwh. - Vérifiez que l’utilisateur Klaviyo dispose de
USAGEsur le schéma et deSELECTsur les tableaux ou les vues.
Aucune nouvelle ligne en cours de synchronisation
- Vérifiez que votre colonne d’horodatage se met à jour lors des modifications de ligne et qu’elle utilise l’UTC ou inclut les informations de fuseau horaire.
Erreurs d’autorisation au moment de l’exécution
- Réexécutez la validation SQL en tant qu’utilisateur Klaviyo.
- Réappliquez les autorisations ou les privilèges par défaut si nécessaire.
Sécurité et maintenance
- Faites régulièrement tourner le mot de passe de l’utilisateur de service et après les changements de personnel.
- Limitez l’utilisateur Klaviyo aux deux schémas ci-dessus, et accordez
USAGEuniquement lorsque cela est nécessaire. - Conservez un runbook simple documentant vos instructions
GRANTexactes et les plages d’IP que vous avez ajoutées à la liste d’autorisation.
FAQ
Puis-je importer depuis plusieurs bases de données Redshift ?
Oui. Créez les deux schémas dans chaque base de données et connectez des objets depuis chacune d’elles en tant que synchronisations distinctes.
Puis-je utiliser des vues matérialisées ?
Oui. Accordez SELECT sur la vue matérialisée à l’utilisateur Klaviyo.
Annexe : exemple de DDL pour une table d’importation simple
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)