PostHog Connector
Poveži PostHog z Brevo prek Tajo za sinhronizacijo podatkov produktne analitike, vedenjskih événements uporabnikov in členstev v kohortah za marketinške kampanje, ki temeljijo na podatkih, in personalizirano angažiranje strank.
Pregled
| Lastnost | Vrednost |
|---|---|
| Platforma | PostHog |
| Kategorija | Produktna analitika (po meri) |
| Zahtevnost nastavitve | Srednja |
| Uradna integracija | Ne |
| Sinhronizirani podatki | Dogodki, osebe, zastavice funkcij, kohorte |
| Metoda avtentikacije | Osebni API ključ / projektni žeton |
Funkcionalnosti
- Sinhronizacija événements – posreduj analitične événements PostHog v Brevo za vedenjsko ciljanje
- Sinhronizacija profilov oseb – sinhronizacija lastnosti oseb PostHog v atribute stikov Brevo
- Segmentacija na osnovi kohort – preslikaj kohorte PostHog na sezname stikov Brevo
- Sinhronizacija zastavic funkcij – segmentiraj stike glede na omogočene zastavice funkcij
- Podatki o lijakih – za ciljano ponovno angažiranje uporabi podatke o konverzijskem lijaku
- Metapodatki posnetkov sej – obogati stike z meritvami angažiranosti seje
Predpogoji
Preden začneš, se prepričaj, da imaš:
- Račun PostHog (Cloud ali gostovan sam)
- Osebni API ključ iz Nastavitev PostHog
- Projektni API ključ (žeton) iz Nastavitev projekta
- Brevo račun z dostopom do API
- Tajo račun z dovoljenji za konektorje
Avtentikacija
Osebni API ključ (zasebne končne točke)
# 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 endpointsVarnost API ključa
Osebni API ključi zagotavljajo popoln dostop do računa. Nikoli jih ne izpostavljaj v kodi na strani odjemalca. Za javne končne točke, kot sta zajemanje événements in ocenjevanje zastavic funkcij, uporabi projektni API ključ (žeton).
Konfiguracija
Osnovna nastavitev
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: 27Preslikava polj
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_COHORTSKončne točke API
| Končna točka | Metoda | Opis |
|---|---|---|
{host}/api/projects/{id}/persons/ | GET | Seznam oseb |
{host}/api/projects/{id}/events/ | GET | Seznam événements |
{host}/api/projects/{id}/cohorts/ | GET | Seznam kohort |
{host}/api/projects/{id}/feature_flags/ | GET | Seznam zastavic funkcij |
{host}/api/projects/{id}/feature_flags/evaluation/ | POST | Oceni zastavice |
{host}/api/projects/{id}/insights/ | GET | Seznam shranjenih vpogledov |
{host}/api/projects/{id}/query/ | POST | Izvajaj poizvedbe HogQL |
{host}/i/v0/e | POST | Zajemi événements (javno) |
{host}/decide/?v=3 | POST | Odločitve zastavic funkcij (javno) |
Primeri kode
Inicializacija konektorja
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'});Sinhronizacija oseb z 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;}Sinhronizacija kohort kot seznamov 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 } }); } }}Izvajanje poizvedb HogQL za analitiko
// 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] } });}Omejitve hitrosti
| Kategorija končnih točk | Omejitev | Opombe |
|---|---|---|
| Analitične končne točke | 240/min, 1.200/uro | GET osebe, événements, vpogledi |
| Končna točka poizvedbe | 2.400/uro | HogQL in poizvedbe po meri |
| Ocenjevanje zastavic funkcij | 600/min | Lokalna končna točka za ocenjevanje |
| CRUD končne točke | 480/min, 4.800/uro | Ustvarjanje, posodabljanje, brisanje |
| Javne končne točke (zajem) | Neomejeno | Zajem événements, odločitve zastavic |
Paketni izvozi
Za izvoz podatkov o événements v velikem obsegu namesto API-ja uporabi funkcijo paketnih izvozov PostHog. Paketni izvozi podpirajo S3, BigQuery, Snowflake in druge destinacije.
Odpravljanje težav
| Težava | Vzrok | Rešitev |
|---|---|---|
| 401 Unauthorized | Neveljaven API ključ | Potrdi Osebni API ključ v nastavitvah |
| 400 Invalid project | Napačen ID projekta | Preveri ID projekta v URL PostHog |
| Prazen seznam oseb | Ni identificiranih uporabnikov | Zagotovi, da se kliče posthog.identify() |
| Manjkajo lastnosti | Lastnosti niso nastavljene | Preveri klice $set v SDK odjemalca |
| Omejitev hitrosti 429 | Preveč zahtevkov | Implementiraj odlog, preveri glave omejitev hitrosti |
Način odpravljanja napak
connectors: posthog: debug: true log_level: verbose log_queries: true log_sync: trueNajboljše prakse
- Identificiraj uporabnike – vedno pokliči
posthog.identify()z e-mailom za omogočanje sinhronizacije oseb - Za segmentacijo uporabi kohorte – izkoristi vedenjske kohorte PostHog za sezname Brevo
- Paketni API zahtevki – za velike nabore podatkov uporabi paginacijo in paketno obdelavo
- Za kompleksne poizvedbe uporabi HogQL – z SQL-podobnimi poizvedbami ekstrahiraj analitiko po meri
- Nastavi paketne izvoze – za velike obsege podatkov daj prednost paketnim izvozom pred anketiranjem API
- Filtriraj relevantne événements – sinhronizacija samo marketinško relevantnih événements za zmanjšanje šuma
Varnost
- Osebni API ključ – avtentikacija z žetonom prinosnika z omejenim obsegom
- Projektni žeton – javni žeton samo za operacije na strani odjemalca
- Samo HTTPS – vse končne točke zahtevajo šifriranje TLS
- Dovoljeni IP-ji – na voljo za samogostovane instance
- Obseg ključev – ustvari API ključe s specifičnimi obsegi dovoljenj
- Odkrivanje skrivnosti GitHub – PostHog sodeluje z GitHub pri odkrivanju uhajajočih ključev