PostHog-koppling
Kopplingens status: Planerad Inte byggd än. Tajo kör inte den här kopplingen i dag.
Illustration · exempeldata
Exempel på synkronisering
Källa
PostHog
Kopplingens status: Planerad
Mål
Ditt andra verktyg
Kopplingens status: Eget verktyg
Fältmappning
| Källfält | Målfält | Exempelvärde |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Utkast
- Granska en post
- Godkänn den här versionen
Status gäller varje enskild koppling och garanterar inte att den här synkroniseringen är klar. Fälten är illustrativa. Kontrollera det faktiska schemat och behörigheterna innan synkronisering körs.
Anslut PostHog till Brevo via Tajo för att synka produktanalysdata, användarbeteendehändelser och kohortmedlemskap för datadrivna marknadsföringskampanjer och personligt anpassat kundengagemang.
Översikt
| Egenskap | Värde |
|---|---|
| Plattform | PostHog |
| Kategori | Produktanalys (Anpassad) |
| Installationskomplexitet | Medel |
| Officiell integration | Nej |
| Data som synkas | Händelser, personer, feature flags, kohorter |
| Autentiseringsmetod | Personal API Key / Project Token |
Funktioner
- Händelsesynkronisering - Vidarebefordra PostHog-analyshändelser till Brevo för beteendebaserad målning
- Synk av personprofiler - Synka PostHog-personegenskaper till Brevo-kontaktattribut
- Kohortbaserad segmentering - Mappa PostHog-kohorter till Brevo-kontaktlistor
- Feature flag-synkronisering - Segmentera kontakter efter aktiverade feature flags
- Trattdata - Använd konverteringsdata från trattar för riktad återengagering
- Metadata för session replay - Berika kontakter med sessionsengagemangsmått
Förutsättningar
Innan du börjar, se till att du har:
- Ett PostHog-konto (Cloud eller självhostat)
- En Personal API Key från PostHog Settings
- Din Project API Key (token) från Project Settings
- Ett Brevo-konto med API-åtkomst
- Ett Tajo-konto med kopplingsbehörigheter
Autentisering
Personal API Key (privata 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 endpointsSäkerhet för API-nyckel
Personal API-nycklar ger full kontoåtkomst. Exponera dem aldrig i klientsidekod. Använd Project API Key (token) för publika endpoints som händelseinsamling och feature flag-utvärdering.
Konfiguration
Grundinställning
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: 27Fältmappning
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 | Metod | Beskrivning |
|---|---|---|
{host}/api/projects/{id}/persons/ | GET | Lista personer |
{host}/api/projects/{id}/events/ | GET | Lista händelser |
{host}/api/projects/{id}/cohorts/ | GET | Lista kohorter |
{host}/api/projects/{id}/feature_flags/ | GET | Lista feature flags |
{host}/api/projects/{id}/feature_flags/evaluation/ | POST | Utvärdera flags |
{host}/api/projects/{id}/insights/ | GET | Lista sparade insikter |
{host}/api/projects/{id}/query/ | POST | Kör HogQL-frågor |
{host}/i/v0/e | POST | Fånga händelser (publik) |
{host}/decide/?v=3 | POST | Feature flag-beslut (publik) |
Kodexempel
Initiera kopplingen
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'});Synka personer till 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;}Synka kohorter som Brevo-listor
// 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-frågor för analys
// 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] } });}Hastighetsbegränsningar
| Endpoint-kategori | Gräns | Anteckningar |
|---|---|---|
| Analys-endpoints | 240/min, 1 200/timme | GET personer, händelser, insikter |
| Query-endpoint | 2 400/timme | HogQL och anpassade frågor |
| Feature flag-utvärdering | 600/min | Endpoint för lokal utvärdering |
| CRUD-endpoints | 480/min, 4 800/timme | Skapa, uppdatera, radera-operationer |
| Publika endpoints (capture) | Obegränsat | Händelseinsamling, flag-beslut |
Batchexporter
För storskaliga exporter av händelsedata, använd PostHogs batch exports-funktion istället för API:et. Batchexporter stöder S3, BigQuery, Snowflake och andra destinationer.
Felsökning
| Problem | Orsak | Lösning |
|---|---|---|
| 401 Unauthorized | Ogiltig API-nyckel | Verifiera Personal API Key i inställningar |
| 400 Invalid project | Fel projekt-ID | Kontrollera projekt-ID i PostHog-URL |
| Tom personlista | Inga identifierade användare | Säkerställ att posthog.identify() anropas |
| Saknade egenskaper | Egenskaper ej satta | Verifiera $set-anrop i klient-SDK |
| Hastighetsbegränsning 429 | För många förfrågningar | Implementera backoff, kontrollera headrar för hastighetsbegränsning |
Felsökningsläge
connectors: posthog: debug: true log_level: verbose log_queries: true log_sync: trueBästa praxis
- Identifiera användare - Anropa alltid
posthog.identify()med e-post för att möjliggöra personsynk - Använd kohorter för segmentering - Utnyttja PostHogs beteendekohorter för Brevo-listor
- Batcha API-förfrågningar - Använd sidindelning och batchbehandling för stora dataset
- Använd HogQL för komplexa frågor - Extrahera anpassad analys med SQL-liknande frågor
- Sätt upp batchexporter - För stora datavolymer, föredra batchexporter framför API-polling
- Filtrera relevanta händelser - Synka endast marknadsföringsrelevanta händelser för att minska brus
Säkerhet
- Personal API Key - Scoped Bearer-tokenautentisering
- Projekttoken - Publik token endast för klientoperationer
- Endast HTTPS - Alla endpoints kräver TLS-kryptering
- IP-allowlisting - Tillgängligt för självhostade instanser
- Nyckel-scoping - Skapa API-nycklar med specifika behörighets-scopes
- GitHub secret scanning - PostHog samarbetar med GitHub för upptäckt av läckta nycklar