PostHog-kobling
Koblingsstatus: Planlagt Ikke bygget ennå. Tajo kjører ikke denne koblingen i dag.
Illustrasjon · eksempeldata
Eksempel på synkronisering
Kilde
PostHog
Koblingsstatus: Planlagt
Mål
Det andre verktøyet ditt
Koblingsstatus: Eget verktøy
Feltkobling
| Kildefelt | Målfelt | Eksempelverdi |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Utkast
- Se gjennom én oppføring
- Godkjenn denne versjonen
Status gjelder hver enkelt kobling og garanterer ikke at denne synkroniseringen er klar. Feltene er illustrative. Kontroller faktisk skjema og tillatelser før synkroniseringen kjører.
Koble PostHog til Brevo gjennom Tajo for å synkronisere produktanalysedata, brukeratferdshendelser og kohortmedlemskap for datadrevne markedsføringskampanjer og personalisert kundeengasjement.
Oversikt
| Egenskap | Verdi |
|---|---|
| Plattform | PostHog |
| Kategori | Produktanalyse (Custom) |
| Oppsettskompleksitet | Moderat |
| Offisiell integrasjon | Nei |
| Synkroniserte data | Hendelser, personer, feature flags, kohorter |
| Autentiseringsmetode | Personlig API-nøkkel / Project Token |
Funksjoner
- Hendelsessynkronisering - Videresend PostHog-analysehendelser til Brevo for atferdsmålretting
- Synkronisering av personprofiler - Synkroniser PostHog-personegenskaper til Brevo-kontaktattributter
- Kohortbasert segmentering - Mapp PostHog-kohorter til Brevo-kontaktlister
- Feature flag-synkronisering - Segmenter kontakter etter aktiverte feature flags
- Trakt-data - Bruk konverteringstraktdata for målrettet re-engasjement
- Metadata for økt-replay - Berik kontakter med metrikker for øktengasjement
Forutsetninger
Før du begynner, sørg for at du har:
- En PostHog-konto (Cloud eller selvhostet)
- En personlig API-nøkkel fra PostHog Settings
- Din Project API Key (token) fra Project Settings
- En Brevo-konto med API-tilgang
- En Tajo-konto med konnektor-rettigheter
Autentisering
Personlig API-nøkkel (private endepunkter)
# Generer på 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 # eller https://eu.posthog.comexport TAJO_API_KEY=your_tajo_api_keyexport BREVO_API_KEY=your_brevo_api_key// Private API-endepunkter bruker Bearer-autentiseringconst headers = { 'Authorization': `Bearer ${process.env.POSTHOG_PERSONAL_API_KEY}`, 'Content-Type': 'application/json'};
// Offentlige endepunkter bruker Project Tokenconst publicHeaders = { 'Content-Type': 'application/json'};// Tokenet sendes i forespørselsbody for offentlige endepunkterAPI-nøkkelsikkerhet
Personlige API-nøkler gir full kontotilgang. Eksponer dem aldri i klientside-kode. Bruk Project API Key (token) for offentlige endepunkter som hendelsesfangst og feature flag-evaluering.
Konfigurasjon
Grunnleggende oppsett
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 * * *" # Hver 3. time
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-endepunkter
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
{host}/api/projects/{id}/persons/ | GET | List personer |
{host}/api/projects/{id}/events/ | GET | List hendelser |
{host}/api/projects/{id}/cohorts/ | GET | List kohorter |
{host}/api/projects/{id}/feature_flags/ | GET | List feature flags |
{host}/api/projects/{id}/feature_flags/evaluation/ | POST | Evaluer flags |
{host}/api/projects/{id}/insights/ | GET | List lagrede insights |
{host}/api/projects/{id}/query/ | POST | Kjør HogQL-spørringer |
{host}/i/v0/e | POST | Fang opp hendelser (offentlig) |
{host}/decide/?v=3 | POST | Feature flag-beslutninger (offentlig) |
Kodeeksempler
Initialiser kobling
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'});Synkroniser personer til Brevo
// Paginer gjennom PostHog-personerlet 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;}Synkroniser kohorter som Brevo-lister
// Hent PostHog-kohorter og synkroniser medlemmer til Brevo-listerconst 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) { // Hent personer i denne kohorten 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 } }); } }}Kjør HogQL-spørringer for analyse
// Bruk HogQL for å spørre om analysedataconst 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] } });}Ratebegrensninger
| Endepunktskategori | Grense | Merknader |
|---|---|---|
| Analyseendepunkter | 240/min, 1 200/time | GET personer, hendelser, insights |
| Query-endepunkt | 2 400/time | HogQL og egendefinerte spørringer |
| Feature flag-evaluering | 600/min | Lokalt evalueringsendepunkt |
| CRUD-endepunkter | 480/min, 4 800/time | Opprett, oppdater, slett-operasjoner |
| Offentlige endepunkter (capture) | Ubegrenset | Hendelsesfangst, flag-beslutninger |
Batch-eksport
For storskala eksport av hendelsesdata, bruk PostHogs batch export-funksjon i stedet for API-et. Batch-eksport støtter S3, BigQuery, Snowflake og andre destinasjoner.
Feilsøking
| Problem | Årsak | Løsning |
|---|---|---|
| 401 Unauthorized | Ugyldig API-nøkkel | Verifiser personlig API-nøkkel i innstillinger |
| 400 Invalid project | Feil prosjekt-ID | Sjekk prosjekt-ID i PostHog-URL |
| Tom personliste | Ingen identifiserte brukere | Sørg for at posthog.identify() kalles |
| Manglende egenskaper | Egenskaper ikke satt | Verifiser $set-kall i klient-SDK |
| Ratebegrensning 429 | For mange forespørsler | Implementer backoff, sjekk ratebegrensningsheadere |
Feilsøkingsmodus
connectors: posthog: debug: true log_level: verbose log_queries: true log_sync: trueBeste praksis
- Identifiser brukere - Kall alltid
posthog.identify()med e-post for å muliggjøre personsynkronisering - Bruk kohorter for segmentering - Utnytt PostHogs atferdskohorter for Brevo-lister
- Batch API-forespørsler - Bruk paginering og batch-prosessering for store datasett
- Bruk HogQL for komplekse spørringer - Trekk ut egendefinert analyse med SQL-lignende spørringer
- Sett opp batch-eksport - For store datavolumer, foretrekk batch-eksport fremfor API-polling
- Filtrer relevante hendelser - Synkroniser kun markedsføringsrelevante hendelser for å redusere støy
Sikkerhet
- Personlig API-nøkkel - Avgrenset Bearer-tokenautentisering
- Project token - Offentlig token kun for klientside-operasjoner
- Kun HTTPS - Alle endepunkter krever TLS-kryptering
- IP-hviteliste - Tilgjengelig for selvhostede instanser
- Nøkkelscoping - Opprett API-nøkler med spesifikke rettighetsscoper
- GitHub-hemmelighetsskanning - PostHog samarbeider med GitHub for deteksjon av lekkede nøkler