PostHog konnektor
Csatlakoztasd a PostHogot a Brevóhoz a Tajo segítségével, hogy szinkronizáld a termékanalitikai adatokat, felhasználói viselkedési eseményeket és kohort-tagságokat az adatvezérelt marketingkampányokhoz és személyre szabott ügyfél-elköteleződéshez.
Áttekintés
| Tulajdonság | Érték |
|---|---|
| Platform | PostHog |
| Kategória | Termékanalitika (Egyéni) |
| Telepítés bonyolultsága | Közepes |
| Hivatalos integráció | Nem |
| Szinkronizált adatok | Események, Személyek, Funkciójelzők, Kohortok |
| Hitelesítési módszer | Személyes API kulcs / Projekt token |
Funkciók
- Esemény-szinkronizáció – PostHog analitikai események továbbítása a Brevóba viselkedésbeli célzáshoz
- Személy profil-szinkronizáció – PostHog személy-tulajdonságok szinkronizálása Brevo kapcsolat-attribútumokhoz
- Kohort alapú szegmentálás – PostHog kohortok leképezése Brevo kapcsolatlistákhoz
- Funkciójelző-szinkronizáció – Kapcsolatok szegmentálása engedélyezett funkciójelzők alapján
- Tölcsér-adatok – Konverziós tölcsér-adatok használata célzott újrabekapcsoláshoz
- Munkamenet-visszajátszás metaadatok – Kapcsolatok gazdagítása munkamenet-elköteleződési mutatókkal
Előfeltételek
Mielőtt elkezdenéd, győződj meg róla, hogy rendelkezel:
- Egy PostHog fiókkal (felhőalapú vagy saját üzemeltetésű)
- Egy személyes API kulccsal a PostHog Beállításokból
- A Projekt API kulcsoddal (tokennel) a Projekt beállításokból
- Egy Brevo fiókkal API-hozzáféréssel
- Egy Tajo fiókkal konnektor engedélyekkel
Hitelesítés
Személyes API kulcs (privát végpontok)
# 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 endpointsAPI kulcs biztonság
A személyes API kulcsok teljes fiók-hozzáférést biztosítanak. Soha ne tedd ki ezeket kliens oldali kódban. Az ügyfél oldali műveletekhez, mint az esemény rögzítés és funkciójelző kiértékelés, a Projekt API kulcsot (tokent) használd.
Konfiguráció
Alapbeállítás
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: 27Mezőleképezés
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 végpontok
| Végpont | Módszer | Leírás |
|---|---|---|
{host}/api/projects/{id}/persons/ | GET | Személyek listázása |
{host}/api/projects/{id}/events/ | GET | Események listázása |
{host}/api/projects/{id}/cohorts/ | GET | Kohortok listázása |
{host}/api/projects/{id}/feature_flags/ | GET | Funkciójelzők listázása |
{host}/api/projects/{id}/feature_flags/evaluation/ | POST | Jelzők kiértékelése |
{host}/api/projects/{id}/insights/ | GET | Mentett insightok listázása |
{host}/api/projects/{id}/query/ | POST | HogQL lekérdezések futtatása |
{host}/i/v0/e | POST | Események rögzítése (nyilvános) |
{host}/decide/?v=3 | POST | Funkciójelző döntések (nyilvános) |
Kódpéldák
A konnektor inicializálása
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'});Személyek szinkronizálása a Brevóba
// 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;}Kohortok szinkronizálása Brevo listákba
// 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 } }); } }}HogQL lekérdezések futtatása analitikához
// 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] } });}Ráta-korlátok
| Végpont kategória | Korlát | Megjegyzések |
|---|---|---|
| Analitikai végpontok | 240/perc, 1 200/óra | GET személyek, események, insightok |
| Lekérdező végpont | 2 400/óra | HogQL és egyéni lekérdezések |
| Funkciójelző kiértékelés | 600/perc | Helyi kiértékelési végpont |
| CRUD végpontok | 480/perc, 4 800/óra | Létrehozás, frissítés, törlés műveletek |
| Nyilvános végpontok (rögzítés) | Korlátlan | Eseményrögzítés, jelződöntések |
Kötegelt exportálás
Nagyméretű esemény-adatexportáláshoz az API helyett használd a PostHog kötegelt exportálási funkcióját. A kötegelt exportálás S3-t, BigQueryt, Snowflake-t és más célállomásokat támogat.
Hibaelhárítás
| Probléma | Ok | Megoldás |
|---|---|---|
| 401 Unauthorized | Érvénytelen API kulcs | Ellenőrizd a személyes API kulcsot a beállításokban |
| 400 Invalid project | Rossz projekt azonosító | Ellenőrizd a projekt azonosítót a PostHog URL-ben |
| Üres személylista | Nincsenek azonosított felhasználók | Győződj meg róla, hogy a posthog.identify() meghívásra kerül |
| Hiányzó tulajdonságok | Tulajdonságok nincsenek beállítva | Ellenőrizd a $set hívásokat a kliens SDK-ban |
| Ráta-korlát 429 | Túl sok kérés | Implementálj visszalépést, ellenőrizd a ráta-korlát fejléceket |
Hibakeresési mód
connectors: posthog: debug: true log_level: verbose log_queries: true log_sync: trueLegjobb gyakorlatok
- Azonosítsd a felhasználókat – Mindig hívd meg a
posthog.identify()metódust e-maillel a személy-szinkronizálás engedélyezéséhez - Kohortokat használj szegmentáláshoz – Használd ki a PostHog viselkedésbeli kohortjait a Brevo listákhoz
- Kötegelj API kéréseket – Használj oldalazást és kötegelt feldolgozást nagyobb adatkészletekhez
- Használj HogQL-t összetett lekérdezésekhez – Egyéni analitikát SQL-szerű lekérdezésekkel nyerhetsz ki
- Állíts be kötegelt exportálásokat – Nagy adatmennyiségekhez az API lekérdezés helyett a kötegelt exportálást részesítsd előnyben
- Szűrj releváns eseményekre – Csak marketingrelevans eseményeket szinkronizálj a zaj csökkentéséhez
Biztonság
- Személyes API kulcs – Hatókörrel korlátozott Bearer token hitelesítés
- Projekt token – Nyilvános token csak ügyfél oldali műveletekhez
- Csak HTTPS – Minden végpont TLS titkosítást igényel
- IP engedélyezési lista – Saját üzemeltetésű példányokhoz elérhető
- Kulcs hatókör-korlátozás – Hozz létre API kulcsokat adott engedély-hatókörökkel
- GitHub titokszkenner – A PostHog együttműködik a GitHubbal a kiszivárgott kulcsok felderítéséhez