Conector PostHog
Starea conectorului: Planificat Încă neconstruit. Tajo nu rulează astăzi acest conector.
Ilustrație · date de exemplu
Exemplu de sincronizare
Sursă
PostHog
Starea conectorului: Planificat
Destinație
Celălalt instrument al tău
Starea conectorului: Instrument personalizat
Maparea câmpurilor
| Câmp sursă | Câmp destinație | Valoare exemplu |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Ciornă
- Verifică o înregistrare
- Aprobă această versiune
Stările se referă la fiecare conector și nu garantează că această sincronizare este pregătită. Câmpurile sunt ilustrative. Verifică schema și permisiunile reale înainte de sincronizare.
Conectați PostHog la Brevo prin Tajo pentru a sincroniza datele de analiză a produselor, evenimentele de comportament ale utilizatorilor și apartenența la cohorte pentru campanii de marketing bazate pe date și implicare personalizată a clienților.
Prezentare generală
| Proprietate | Valoare |
|---|---|
| Platformă | PostHog |
| Categorie | Analitica produsului (Personalizat) |
| Complexitate configurare | Medie |
| Integrare oficială | Nu |
| Date sincronizate | Evenimente, Persoane, Fanioane de funcționalități, Cohorte |
| Metodă de autentificare | Cheie API personală / Token proiect |
Funcționalități
- Sincronizare evenimente - Transmiteți evenimentele de analiză PostHog la Brevo pentru targetare comportamentală
- Sincronizare profil persoane - Sincronizați proprietățile persoanelor PostHog la atributele de contact Brevo
- Segmentare bazată pe cohorte - Mapați cohortele PostHog la listele de contacte Brevo
- Sincronizare fanioane funcționalități - Segmentați contactele după fanioanele de funcționalități activate
- Date de pâlnie - Utilizați datele de pâlnie de conversie pentru re-angajare targetată
- Metadate replay sesiune - Îmbogățiți contactele cu metrici de implicare în sesiune
Cerințe preliminare
Înainte de a începe, asigurați-vă că aveți:
- Un cont PostHog (Cloud sau self-hosted)
- O Cheie API personală din PostHog Settings
- Cheia API a proiectului (token) din Project Settings
- Un cont Brevo cu acces API
- Un cont Tajo cu permisiuni de conector
Autentificare
Cheie API personală (Puncte finale private)
# 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 endpointsSecuritate cheie API
Cheile API personale oferă acces complet la cont. Nu le expuneți niciodată în codul client. Utilizați Cheia API a proiectului (token) pentru punctele finale publice precum captura de evenimente și evaluarea fanionelor de funcționalități.
Configurare
Configurare de bază
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: 27Mapare câmpuri
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_COHORTSPuncte finale API
| Punct final | Metodă | Descriere |
|---|---|---|
{host}/api/projects/{id}/persons/ | GET | Listează persoanele |
{host}/api/projects/{id}/events/ | GET | Listează evenimentele |
{host}/api/projects/{id}/cohorts/ | GET | Listează cohortele |
{host}/api/projects/{id}/feature_flags/ | GET | Listează fanioanele de funcționalități |
{host}/api/projects/{id}/feature_flags/evaluation/ | POST | Evaluează fanionele |
{host}/api/projects/{id}/insights/ | GET | Listează informațiile salvate |
{host}/api/projects/{id}/query/ | POST | Execută interogări HogQL |
{host}/i/v0/e | POST | Capturează evenimente (public) |
{host}/decide/?v=3 | POST | Decizii fanioane funcționalități (public) |
Exemple de cod
Inițializare conector
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'});Sincronizare persoane cu 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;}Sincronizare cohorte ca liste Brevo
// 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 } }); } }}Executare interogări HogQL pentru analiză
// 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] } });}Limite de rată
| Categorie punct final | Limită | Note |
|---|---|---|
| Puncte finale analiză | 240/min, 1.200/oră | GET persoane, evenimente, informații |
| Punct final interogare | 2.400/oră | HogQL și interogări personalizate |
| Evaluare fanioane funcționalități | 600/min | Punct final evaluare locală |
| Puncte finale CRUD | 480/min, 4.800/oră | Operații de creare, actualizare, ștergere |
| Puncte finale publice (captură) | Nelimitat | Captură evenimente, decizii fanioane |
Exporturi în lot
Pentru exporturi de date de evenimente la scară largă, utilizați funcția de exporturi în lot a PostHog în loc de API. Exporturile în lot suportă S3, BigQuery, Snowflake și alte destinații.
Depanare
| Problemă | Cauză | Soluție |
|---|---|---|
| 401 Neautorizat | Cheie API invalidă | Verificați Cheia API personală în setări |
| 400 Proiect invalid | ID proiect greșit | Verificați ID-ul proiectului în URL-ul PostHog |
| Listă persoane goală | Niciun utilizator identificat | Asigurați-vă că posthog.identify() este apelat |
| Proprietăți lipsă | Proprietăți nesetate | Verificați apelurile $set în SDK-ul client |
| Limită rată 429 | Prea multe cereri | Implementați backoff, verificați anteturile limitei de rată |
Modul de depanare
connectors: posthog: debug: true log_level: verbose log_queries: true log_sync: trueBune practici
- Identificați utilizatorii - Apelați întotdeauna
posthog.identify()cu e-mail pentru a activa sincronizarea persoanelor - Utilizați cohortele pentru segmentare - Valorificați cohortele comportamentale PostHog pentru listele Brevo
- Grupați cererile API - Utilizați paginare și procesare în lot pentru seturi de date mari
- Utilizați HogQL pentru interogări complexe - Extrageți analize personalizate cu interogări de tip SQL
- Configurați exporturi în lot - Pentru volume mari de date, preferați exporturile în lot față de interogarea API
- Filtrați evenimentele relevante - Sincronizați doar evenimentele relevante pentru marketing pentru a reduce zgomotul
Securitate
- Cheie API personală - Autentificare cu token Bearer cu scop limitat
- Token proiect - Token public numai pentru operații pe client
- Numai HTTPS - Toate punctele finale necesită criptare TLS
- Allowlisting IP - Disponibil pentru instanțe self-hosted
- Limitare scop cheie - Creați chei API cu scopuri de permisiuni specifice
- Scanare secrete GitHub - PostHog colaborează cu GitHub pentru detectarea cheilor scurse