Conector PostHog
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