PostHog-connector

Verbind PostHog met Brevo via Tajo om product-analyticsdata, gebruikersgedragsevents en cohort-lidmaatschappen te synchroniseren voor datagedreven marketingcampagnes en gepersonaliseerde klantbetrokkenheid.

Overzicht

EigenschapWaarde
PlatformPostHog
CategorieProduct Analytics (Custom)
SetupcomplexiteitGemiddeld
Officiële integratieNee
Gesynchroniseerde dataEvents, Persons, Feature Flags, Cohorts
Auth-methodePersonal API Key / Project Token

Functies

  • Eventsynchronisatie - Stuur PostHog-analytics-events door naar Brevo voor gedragstargeting
  • Person-profielsynchronisatie - Synchroniseer PostHog person-properties naar Brevo-contactattributen
  • Cohort-gebaseerde segmentatie - Map PostHog-cohorts naar Brevo-contactlijsten
  • Feature flag-synchronisatie - Segmenteer contacten op basis van geactiveerde feature flags
  • Funneldata - Gebruik conversiefunneldata voor gerichte heractivering
  • Session replay-metadata - Verrijk contacten met sessiebetrokkenheidsmetrics

Vereisten

Voordat je begint, zorg dat je beschikt over:

  1. Een PostHog-account (Cloud of self-hosted)
  2. Een Personal API Key uit PostHog Settings
  3. Je Project API Key (token) uit Project Settings
  4. Een Brevo-account met API-toegang
  5. Een Tajo-account met connector-rechten

Authenticatie

Personal API Key (private endpoints)

Terminal window
# Generate at 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 # or https://eu.posthog.com
export TAJO_API_KEY=your_tajo_api_key
export BREVO_API_KEY=your_brevo_api_key
// Private API endpoints use Bearer authentication
const headers = {
'Authorization': `Bearer ${process.env.POSTHOG_PERSONAL_API_KEY}`,
'Content-Type': 'application/json'
};
// Public endpoints use the project token
const publicHeaders = {
'Content-Type': 'application/json'
};
// Token is passed in the request body for public endpoints

API key-beveiliging

Personal API keys geven volledige accounttoegang. Stel ze nooit bloot in client-side code. Gebruik de Project API Key (token) voor publieke endpoints zoals event-capture en feature flag-evaluatie.

Configuratie

Basisinstelling

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 * * *" # Every 3 hours
event_filters:
- "$pageview"
- "purchase_completed"
- "signup_completed"
- "feature_used"
lists:
all_users: 25
active_users: 26
power_users: 27

Veldmapping

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

API-endpoints

EndpointMethodBeschrijving
{host}/api/projects/{id}/persons/GETPersonen opvragen
{host}/api/projects/{id}/events/GETEvents opvragen
{host}/api/projects/{id}/cohorts/GETCohorten opvragen
{host}/api/projects/{id}/feature_flags/GETFeature flags opvragen
{host}/api/projects/{id}/feature_flags/evaluation/POSTFlags evalueren
{host}/api/projects/{id}/insights/GETOpgeslagen insights opvragen
{host}/api/projects/{id}/query/POSTHogQL-queries uitvoeren
{host}/i/v0/ePOSTEvents capturen (publiek)
{host}/decide/?v=3POSTFeature flag-decisions (publiek)

Codevoorbeelden

Connector initialiseren

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'
});

Personen synchroniseren naar Brevo

// Paginate through PostHog persons
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;
}

Cohorten synchroniseren als Brevo-lijsten

// Get PostHog cohorts and sync members to Brevo lists
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) {
// Get persons in this cohort
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
}
});
}
}
}

HogQL-queries uitvoeren voor analytics

// Use HogQL to query analytics data
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]
}
});
}

Rate limits

Endpoint-categorieLimietOpmerkingen
Analytics-endpoints240/min, 1.200/uurGET persons, events, insights
Query-endpoint2.400/uurHogQL en custom queries
Feature flag-evaluatie600/minLocal evaluation-endpoint
CRUD-endpoints480/min, 4.800/uurCreate-, update- en delete-operaties
Publieke endpoints (capture)OnbeperktEvent-capture, flag-decisions

Batch Exports

Voor grootschalige eventdata-exports kun je beter PostHog’s batch exports-functie gebruiken in plaats van de API. Batch exports ondersteunen S3, BigQuery, Snowflake en andere bestemmingen.

Probleemoplossing

ProbleemOorzaakOplossing
401 UnauthorizedOngeldige API keyVerifieer Personal API Key in settings
400 Invalid projectVerkeerd project-IDControleer project-ID in PostHog-URL
Lege personenlijstGeen geïdentificeerde gebruikersZorg dat posthog.identify() wordt aangeroepen
Properties ontbrekenProperties niet gezetVerifieer $set-calls in client SDK
Rate limit 429Te veel requestsImplementeer backoff, controleer rate limit-headers

Debugmodus

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

Best practices

  1. Identificeer gebruikers - Roep altijd posthog.identify() aan met email om person-sync mogelijk te maken
  2. Gebruik cohorten voor segmentatie - Maak gebruik van PostHog’s gedragscohorten voor Brevo-lijsten
  3. Batch API-requests - Gebruik paginering en batch-verwerking voor grote datasets
  4. Gebruik HogQL voor complexe queries - Extracteer custom analytics met SQL-achtige queries
  5. Stel batch exports in - Geef voor grote datavolumes voorkeur aan batch exports boven API-polling
  6. Filter relevante events - Synchroniseer alleen marketingrelevante events om ruis te verminderen

Beveiliging

  • Personal API Key - Gescoopte Bearer-token-authenticatie
  • Project token - Publiek token alleen voor client-side operaties
  • Alleen HTTPS - Alle endpoints vereisen TLS-encryptie
  • IP-allowlisting - Beschikbaar voor self-hosted instances
  • Key-scoping - Maak API keys aan met specifieke permission scopes
  • GitHub secret scanning - PostHog werkt samen met GitHub voor detectie van gelekte keys

Gerelateerde bronnen

Subscribe to updates

developer-docs

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

auto-detect
AI-assistent

Hallo! Stel me vragen over de documentatie.