PostHog Connector

Forbind PostHog til Brevo via Tajo for at synkronisere produktanalysedata, brugeradfærdshændelser og kohortemedlemskaber til datadrevne marketingkampagner og personaliseret kundeengagement.

Oversigt

EgenskabVærdi
PlatformPostHog
KategoriProduktanalyse (brugerdefineret)
OpsætningskompleksitetMellem
Officiel integrationNej
Synkroniserede dataHændelser, personer, feature flags, kohorter
AutentifikationsmetodePersonal API Key / Project Token

Funktioner

  • Hændelsessynkronisering - Videresend PostHog-analysehændelser til Brevo til adfærdsmålretning
  • Personprofil-synkronisering - Synkronisér PostHog-personegenskaber til Brevo-kontaktattributter
  • Kohortebaseret segmentering - Knyt PostHog-kohorter til Brevo-kontaktlister
  • Feature flag-synkronisering - Segmentér kontakter efter aktiverede feature flags
  • Funnel-data - Brug konverteringsfunneldata til målrettet genengagement
  • Session replay-metadata - Berig kontakter med engagementmetrikker fra sessioner

Forudsætninger

Før du begynder, skal du sikre dig, at du har:

  1. En PostHog-konto (Cloud eller selvhostet)
  2. En Personal API Key fra PostHog-indstillinger
  3. Din Project API Key (token) fra projektindstillinger
  4. En Brevo-konto med API-adgang
  5. En Tajo-konto med konnektorrettigheder

Autentifikation

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

Sikkerhed for API-nøgler

Personal API Keys giver fuld kontoadgang. Eksponér dem aldrig i klientside-kode. Brug Project API Key (token) til offentlige endpoints som hændelsesopfangning og evaluering af feature flags.

Konfiguration

Grundlæggende opsætning

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

Feltmapping

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

EndpointMetodeBeskrivelse
{host}/api/projects/{id}/persons/GETVis personer
{host}/api/projects/{id}/events/GETVis hændelser
{host}/api/projects/{id}/cohorts/GETVis kohorter
{host}/api/projects/{id}/feature_flags/GETVis feature flags
{host}/api/projects/{id}/feature_flags/evaluation/POSTEvaluér flags
{host}/api/projects/{id}/insights/GETVis gemte indsigter
{host}/api/projects/{id}/query/POSTKør HogQL-forespørgsler
{host}/i/v0/ePOSTOpfang hændelser (offentlig)
{host}/decide/?v=3POSTFeature flag-beslutninger (offentlig)

Kodeeksempler

Initialisér konnektor

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

Synkronisér personer til 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;
}

Synkronisér kohorter som Brevo-lister

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

Kør HogQL-forespørgsler til analyse

// 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]
}
});
}

Ratebegrænsninger

EndpointkategoriGrænseNoter
Analyse-endpoints240/min, 1.200/tGET af personer, hændelser, indsigter
Query-endpoint2.400/tHogQL og brugerdefinerede forespørgsler
Feature flag-evaluering600/minLokalt evalueringsendpoint
CRUD-endpoints480/min, 4.800/tOpret, opdater, slet
Offentlige endpoints (capture)UbegrænsetHændelsesopfangning, flag-beslutninger

Batch-eksport

Til eksport af hændelsesdata i stor skala bør du bruge PostHogs batch exports-funktion i stedet for API’et. Batch exports understøtter S3, BigQuery, Snowflake og andre destinationer.

Fejlfinding

ProblemÅrsagLøsning
401 UnauthorizedUgyldig API-nøgleVerificér Personal API Key i indstillingerne
400 Invalid projectForkert projekt-idTjek projekt-id i PostHog-URL’en
Tom personlisteIngen identificerede brugereSørg for, at posthog.identify() kaldes
Manglende egenskaberEgenskaber er ikke satVerificér $set-kald i klient-SDK
Ratebegrænsning 429For mange forespørgslerImplementér backoff, tjek rate limit-headere

Fejlfindingstilstand

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

Best practices

  1. Identificér brugere - Kald altid posthog.identify() med e-mail for at muliggøre personsynkronisering
  2. Brug kohorter til segmentering - Udnyt PostHogs adfærdskohorter til Brevo-lister
  3. Batch API-forespørgsler - Brug paginering og batchbehandling til store datasæt
  4. Brug HogQL til komplekse forespørgsler - Udtræk brugerdefinerede analyser med SQL-lignende forespørgsler
  5. Opsæt batch exports - Til store datamængder foretræk batch exports frem for API-polling
  6. Filtrér relevante hændelser - Synkronisér kun marketingrelevante hændelser for at reducere støj

Sikkerhed

  • Personal API Key - Scoped Bearer-token-autentifikation
  • Project token - Offentlig token kun til klientside-operationer
  • Kun HTTPS - Alle endpoints kræver TLS-kryptering
  • IP-allowlisting - Tilgængelig for selvhostede instanser
  • Nøglescoping - Opret API-nøgler med specifikke rettighedsscopes
  • GitHub secret scanning - PostHog samarbejder med GitHub om detektion af lækkede nøgler

Relaterede ressourcer

Subscribe to updates

developer-docs

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

auto-detect
AI-assistent

Hej! Spørg mig om dokumentationen.