PostHog Connector
Connectorstatus: Planlagt Ikke bygget endnu. Tajo kører ikke denne connector i dag.
Illustration · eksempeldata
Eksempel på synkronisering
Kilde
PostHog
Connectorstatus: Planlagt
Destination
Dit andet værktøj
Connectorstatus: Eget værktøj
Feltmapping
| Kildefelt | Destinationsfelt | Eksempelværdi |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Udkast
- Gennemse én post
- Godkend denne version
Status gælder den enkelte connector og garanterer ikke, at denne synkronisering er klar. Felterne er illustrative. Tjek det faktiske skema og tilladelser før en synkronisering.
Forbind PostHog til Brevo via Tajo for at synkronisere produktanalysedata, brugeradfærdshændelser og kohortemedlemskaber til datadrevne marketingkampagner og personaliseret kundeengagement.
Oversigt
| Egenskab | Værdi |
|---|---|
| Platform | PostHog |
| Kategori | Produktanalyse (brugerdefineret) |
| Opsætningskompleksitet | Mellem |
| Officiel integration | Nej |
| Synkroniserede data | Hændelser, personer, feature flags, kohorter |
| Autentifikationsmetode | Personal 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:
- En PostHog-konto (Cloud eller selvhostet)
- En Personal API Key fra PostHog-indstillinger
- Din Project API Key (token) fra projektindstillinger
- En Brevo-konto med API-adgang
- En Tajo-konto med konnektorrettigheder
Autentifikation
Personal API Key (private endpoints)
# Generate at https://app.posthog.com/settings/user-api-keysexport POSTHOG_PERSONAL_API_KEY=phx_your_personal_api_keyexport POSTHOG_PROJECT_TOKEN=phc_your_project_tokenexport POSTHOG_HOST=https://us.posthog.com # or https://eu.posthog.comexport TAJO_API_KEY=your_tajo_api_keyexport BREVO_API_KEY=your_brevo_api_key// Private API endpoints use Bearer authenticationconst headers = { 'Authorization': `Bearer ${process.env.POSTHOG_PERSONAL_API_KEY}`, 'Content-Type': 'application/json'};
// Public endpoints use the project tokenconst publicHeaders = { 'Content-Type': 'application/json'};// Token is passed in the request body for public endpointsSikkerhed 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: 27Feltmapping
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_COHORTSAPI-endpoints
| Endpoint | Metode | Beskrivelse |
|---|---|---|
{host}/api/projects/{id}/persons/ | GET | Vis personer |
{host}/api/projects/{id}/events/ | GET | Vis hændelser |
{host}/api/projects/{id}/cohorts/ | GET | Vis kohorter |
{host}/api/projects/{id}/feature_flags/ | GET | Vis feature flags |
{host}/api/projects/{id}/feature_flags/evaluation/ | POST | Evaluér flags |
{host}/api/projects/{id}/insights/ | GET | Vis gemte indsigter |
{host}/api/projects/{id}/query/ | POST | Kør HogQL-forespørgsler |
{host}/i/v0/e | POST | Opfang hændelser (offentlig) |
{host}/decide/?v=3 | POST | Feature 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 personslet 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 listsconst 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 dataconst 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
| Endpointkategori | Grænse | Noter |
|---|---|---|
| Analyse-endpoints | 240/min, 1.200/t | GET af personer, hændelser, indsigter |
| Query-endpoint | 2.400/t | HogQL og brugerdefinerede forespørgsler |
| Feature flag-evaluering | 600/min | Lokalt evalueringsendpoint |
| CRUD-endpoints | 480/min, 4.800/t | Opret, opdater, slet |
| Offentlige endpoints (capture) | Ubegrænset | Hæ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 | Årsag | Løsning |
|---|---|---|
| 401 Unauthorized | Ugyldig API-nøgle | Verificér Personal API Key i indstillingerne |
| 400 Invalid project | Forkert projekt-id | Tjek projekt-id i PostHog-URL’en |
| Tom personliste | Ingen identificerede brugere | Sørg for, at posthog.identify() kaldes |
| Manglende egenskaber | Egenskaber er ikke sat | Verificér $set-kald i klient-SDK |
| Ratebegrænsning 429 | For mange forespørgsler | Implementér backoff, tjek rate limit-headere |
Fejlfindingstilstand
connectors: posthog: debug: true log_level: verbose log_queries: true log_sync: trueBest practices
- Identificér brugere - Kald altid
posthog.identify()med e-mail for at muliggøre personsynkronisering - Brug kohorter til segmentering - Udnyt PostHogs adfærdskohorter til Brevo-lister
- Batch API-forespørgsler - Brug paginering og batchbehandling til store datasæt
- Brug HogQL til komplekse forespørgsler - Udtræk brugerdefinerede analyser med SQL-lignende forespørgsler
- Opsæt batch exports - Til store datamængder foretræk batch exports frem for API-polling
- 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