Connecteur PostHog

Connectez PostHog à Brevo via Tajo pour synchroniser les données d’analyse produit, les événements de comportement utilisateur et les appartenances aux cohortes afin de piloter des campagnes marketing data-driven et d’engager les clients de manière personnalisée.

Vue d’ensemble

PropriétéValeur
PlateformePostHog
CatégorieProduct Analytics (Custom)
Complexité d’installationMoyenne
Intégration officielleNon
Données synchroniséesÉvénements, personnes, feature flags, cohortes
Méthode d’authentificationPersonal API Key / Project Token

Fonctionnalités

  • Synchronisation d’événements, Transférez les événements analytiques PostHog vers Brevo pour le ciblage comportemental
  • Synchronisation des profils de personnes, Synchronisez les propriétés des personnes PostHog vers les attributs de contact Brevo
  • Segmentation basée sur les cohortes, Mappez les cohortes PostHog vers des listes de contacts Brevo
  • Synchronisation des feature flags, Segmentez les contacts par feature flags activés
  • Données d’entonnoir, Utilisez les données d’entonnoir de conversion pour un réengagement ciblé
  • Métadonnées de session replay, Enrichissez les contacts avec des métriques d’engagement de session

Prérequis

Avant de commencer, assurez-vous de disposer de :

  1. Un compte PostHog (Cloud ou self-hosted)
  2. Une Personal API Key depuis PostHog Settings
  3. Votre Project API Key (token) depuis les paramètres du projet
  4. Un compte Brevo avec accès API
  5. Un compte Tajo avec les permissions connecteur

Authentification

Personal API Key (endpoints privés)

Terminal window
# Générez-la sur https://app.posthog.com/settings/user-api-keys
export POSTHOG_PERSONAL_API_KEY=phx_your_personal_api_key
export POSTHOG_PROJECT_TOKEN=phc_your_project_token
export POSTHOG_HOST=https://us.posthog.com # ou https://eu.posthog.com
export TAJO_API_KEY=your_tajo_api_key
export BREVO_API_KEY=your_brevo_api_key
// Les endpoints API privés utilisent l'authentification Bearer
const headers = {
'Authorization': `Bearer ${process.env.POSTHOG_PERSONAL_API_KEY}`,
'Content-Type': 'application/json'
};
// Les endpoints publics utilisent le project token
const publicHeaders = {
'Content-Type': 'application/json'
};
// Le token est passé dans le corps de la requête pour les endpoints publics

Sécurité des clés API

Les Personal API keys donnent un accès complet au compte. Ne les exposez jamais dans du code côté client. Utilisez la Project API Key (token) pour les endpoints publics comme la capture d’événements et l’évaluation de feature flags.

Configuration

Configuration de base

connectors:
posthog:
enabled: true
host: "${POSTHOG_HOST}"
personal_api_key: "${POSTHOG_PERSONAL_API_KEY}"
project_token: "${POSTHOG_PROJECT_TOKEN}"
project_id: "12345"
sync:
persons: true
events: true
cohorts: true
feature_flags: true
schedule: "0 */3 * * *" # Toutes les 3 heures
event_filters:
- "$pageview"
- "purchase_completed"
- "signup_completed"
- "feature_used"
lists:
all_users: 25
active_users: 26
power_users: 27

Mappage des champs

field_mapping:
email: email
$name: FIRSTNAME
$browser: BROWSER
$os: OS
$initial_referrer: REFERRAL_SOURCE
total_events: EVENT_COUNT
last_seen: LAST_ACTIVE_DATE
signup_date: SIGNUP_DATE
plan: SUBSCRIPTION_PLAN
company: COMPANY
cohort_names: POSTHOG_COHORTS

Endpoints API

EndpointMéthodeDescription
{host}/api/projects/{id}/persons/GETLister les personnes
{host}/api/projects/{id}/events/GETLister les événements
{host}/api/projects/{id}/cohorts/GETLister les cohortes
{host}/api/projects/{id}/feature_flags/GETLister les feature flags
{host}/api/projects/{id}/feature_flags/evaluation/POSTÉvaluer les flags
{host}/api/projects/{id}/insights/GETLister les insights sauvegardés
{host}/api/projects/{id}/query/POSTExécuter des requêtes HogQL
{host}/i/v0/ePOSTCapturer des événements (public)
{host}/decide/?v=3POSTDécisions de feature flags (public)

Exemples de code

Initialiser le connecteur

import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
brevoApiKey: process.env.BREVO_API_KEY
});
await tajo.connectors.connect('posthog', {
host: process.env.POSTHOG_HOST,
personalApiKey: process.env.POSTHOG_PERSONAL_API_KEY,
projectToken: process.env.POSTHOG_PROJECT_TOKEN,
projectId: '12345'
});

Synchroniser les personnes vers Brevo

// Paginer les personnes PostHog
let nextUrl = `${posthogHost}/api/projects/${projectId}/persons/?` +
new URLSearchParams({ limit: '100' });
while (nextUrl) {
const response = await fetch(nextUrl, {
headers: {
'Authorization': `Bearer ${process.env.POSTHOG_PERSONAL_API_KEY}`
}
});
const data = await response.json();
for (const person of data.results) {
const email = person.properties.$email || person.properties.email;
if (!email) continue;
await tajo.contacts.sync({
email,
attributes: {
FIRSTNAME: person.properties.$name || person.properties.name,
LAST_ACTIVE_DATE: person.properties.$last_seen,
SIGNUP_DATE: person.created_at,
EVENT_COUNT: person.properties.$event_count,
BROWSER: person.properties.$browser,
OS: person.properties.$os,
REFERRAL_SOURCE: person.properties.$initial_referrer
},
listIds: [25]
});
}
nextUrl = data.next;
}

Synchroniser les cohortes en tant que listes Brevo

// Obtenir les cohortes PostHog et synchroniser les membres vers des listes Brevo
const cohortsResponse = await fetch(
`${posthogHost}/api/projects/${projectId}/cohorts/`,
{
headers: {
'Authorization': `Bearer ${process.env.POSTHOG_PERSONAL_API_KEY}`
}
}
);
const { results: cohorts } = await cohortsResponse.json();
for (const cohort of cohorts) {
// Obtenir les personnes de cette cohorte
const personsResponse = await fetch(
`${posthogHost}/api/projects/${projectId}/cohorts/${cohort.id}/persons/`,
{
headers: {
'Authorization': `Bearer ${process.env.POSTHOG_PERSONAL_API_KEY}`
}
}
);
const { results: persons } = await personsResponse.json();
for (const person of persons) {
const email = person.properties.$email || person.properties.email;
if (email) {
await tajo.contacts.update(email, {
attributes: {
POSTHOG_COHORTS: cohort.name
}
});
}
}
}

Exécuter des requêtes HogQL pour l’analytique

// Utiliser HogQL pour interroger les données analytiques
const queryResponse = await fetch(
`${posthogHost}/api/projects/${projectId}/query/`,
{
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.POSTHOG_PERSONAL_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
query: {
kind: 'HogQLQuery',
query: `
SELECT
properties.$email AS email,
count() AS event_count,
max(timestamp) AS last_event
FROM events
WHERE event = 'purchase_completed'
AND timestamp > now() - interval 30 day
GROUP BY email
HAVING event_count > 3
ORDER BY event_count DESC
LIMIT 1000
`
}
})
}
);
const queryResult = await queryResponse.json();
for (const row of queryResult.results) {
await tajo.contacts.update(row[0], {
attributes: {
PURCHASE_COUNT_30D: row[1],
LAST_PURCHASE: row[2]
}
});
}

Limites de débit

Catégorie d’endpointLimiteNotes
Endpoints analytiques240/min, 1 200/hGET persons, events, insights
Endpoint query2 400/hHogQL et requêtes personnalisées
Évaluation de feature flags600/minEndpoint d’évaluation locale
Endpoints CRUD480/min, 4 800/hOpérations create, update, delete
Endpoints publics (capture)IllimitéCapture d’événements, décisions de flags

Batch exports

Pour les exports d’événements à grande échelle, utilisez la fonctionnalité batch exports de PostHog plutôt que l’API. Les batch exports prennent en charge S3, BigQuery, Snowflake et d’autres destinations.

Dépannage

ProblèmeCauseSolution
401 UnauthorizedClé API invalideVérifiez la Personal API Key dans les paramètres
400 Invalid projectMauvais project IDVérifiez le project ID dans l’URL PostHog
Liste de personnes videAucun utilisateur identifiéAssurez-vous que posthog.identify() est appelé
Propriétés manquantesPropriétés non définiesVérifiez les appels $set dans le SDK client
Limite de débit 429Trop de requêtesImplémentez un backoff, vérifiez les en-têtes de limite

Mode debug

connectors:
posthog:
debug: true
log_level: verbose
log_queries: true
log_sync: true

Bonnes pratiques

  1. Identifiez les utilisateurs, Appelez toujours posthog.identify() avec l’e-mail pour permettre la synchronisation des personnes
  2. Utilisez les cohortes pour la segmentation, Exploitez les cohortes comportementales de PostHog pour les listes Brevo
  3. Groupez les requêtes API, Utilisez la pagination et le traitement par lots pour les grands ensembles de données
  4. Utilisez HogQL pour les requêtes complexes, Extrayez des analytiques personnalisées avec des requêtes SQL-like
  5. Mettez en place des batch exports, Pour de gros volumes de données, préférez les batch exports au polling API
  6. Filtrez les événements pertinents, Ne synchronisez que les événements pertinents pour le marketing pour réduire le bruit

Sécurité

  • Personal API Key, Authentification par Bearer token à portée limitée
  • Project token, Token public pour les opérations côté client uniquement
  • HTTPS uniquement, Tous les endpoints nécessitent un chiffrement TLS
  • Allowlist d’IP, Disponible pour les instances self-hosted
  • Portée des clés, Créez des clés API avec des scopes de permission spécifiques
  • Scanning des secrets GitHub, PostHog s’associe à GitHub pour la détection des clés fuitées

Ressources associées

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
Assistant AI

Bonjour ! Posez-moi vos questions sur la documentation.