Konektor PostHog
Propojte PostHog s Brevo přes Tajo pro synchronizaci dat produktové analytiky, událostí chování uživatelů a členství v kohortách pro marketingové kampaně řízené daty a personalizované zapojení zákazníků.
Přehled
| Vlastnost | Hodnota |
|---|---|
| Platforma | PostHog |
| Kategorie | Produktová analytika (Vlastní) |
| Složitost nastavení | Střední |
| Oficiální integrace | Ne |
| Synchronizovaná data | Události, Osoby, Příznaky funkcí, Kohorty |
| Metoda ověření | Osobní API klíč / Token projektu |
Funkce
- Synchronizace událostí – Přeposílejte analytické události PostHog do Brevo pro behaviorální cílení
- Synchronizace profilů osob – Synchronizujte vlastnosti osob PostHog na atributy kontaktů Brevo
- Segmentace na základě kohort – Mapujte kohorty PostHog na seznamy kontaktů Brevo
- Synchronizace příznaků funkcí – Segmentujte kontakty podle povolených příznaků funkcí
- Data funnelů – Používejte data konverzního funnelu pro cílené opětovné zapojení
- Metadata přehrávání relací – Obohacujte kontakty o metriky zapojení relací
Předpoklady
Než začnete, ujistěte se, že máte:
- Účet PostHog (Cloud nebo self-hosted)
- Osobní API klíč z Nastavení PostHog
- API klíč projektu (token) z Nastavení projektu
- Účet Brevo s přístupem k API
- Účet Tajo s oprávněními ke konektoru
Ověření
Osobní API klíč (Soukromé koncové body)
# Vygenerujte na 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 # nebo https://eu.posthog.comexport TAJO_API_KEY=your_tajo_api_keyexport BREVO_API_KEY=your_brevo_api_key// Soukromé API koncové body používají Bearer ověřeníconst headers = { 'Authorization': `Bearer ${process.env.POSTHOG_PERSONAL_API_KEY}`, 'Content-Type': 'application/json'};
// Veřejné koncové body používají token projektuconst publicHeaders = { 'Content-Type': 'application/json'};// Token se předává v těle požadavku pro veřejné koncové bodyBezpečnost API klíče
Osobní API klíče poskytují plný přístup k účtu. Nikdy je nezveřejňujte v klientském kódu. Používejte API klíč projektu (token) pro veřejné koncové body jako zachytávání událostí a vyhodnocení příznaků funkcí.
Konfigurace
Základní nastavení
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 * * *" # Každé 3 hodiny
event_filters: - "$pageview" - "purchase_completed" - "signup_completed" - "feature_used"
lists: all_users: 25 active_users: 26 power_users: 27Mapování polí
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_COHORTSKoncové body API
| Koncový bod | Metoda | Popis |
|---|---|---|
{host}/api/projects/{id}/persons/ | GET | Výpis osob |
{host}/api/projects/{id}/events/ | GET | Výpis událostí |
{host}/api/projects/{id}/cohorts/ | GET | Výpis kohort |
{host}/api/projects/{id}/feature_flags/ | GET | Výpis příznaků funkcí |
{host}/api/projects/{id}/feature_flags/evaluation/ | POST | Vyhodnocení příznaků |
{host}/api/projects/{id}/insights/ | GET | Výpis uložených přehledů |
{host}/api/projects/{id}/query/ | POST | Spouštění HogQL dotazů |
{host}/i/v0/e | POST | Zachytávání událostí (veřejné) |
{host}/decide/?v=3 | POST | Rozhodnutí o příznacích funkcí (veřejné) |
Příklady kódu
Inicializace konektoru
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'});Synchronizace osob do Brevo
// Stránkování přes osoby PostHoglet 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;}Synchronizace kohort jako seznamů Brevo
// Získání kohort PostHog a synchronizace členů do seznamů Brevoconst 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) { // Získání osob v této kohortě 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 } }); } }}Spouštění HogQL dotazů pro analytiku
// Použití HogQL pro dotazování analytických datconst 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] } });}Omezení rychlosti
| Kategorie koncového bodu | Limit | Poznámky |
|---|---|---|
| Analytické koncové body | 240/min, 1 200/hod | GET osoby, události, přehledy |
| Koncový bod dotazů | 2 400/hod | HogQL a vlastní dotazy |
| Vyhodnocení příznaků funkcí | 600/min | Koncový bod lokálního vyhodnocení |
| CRUD koncové body | 480/min, 4 800/hod | Operace vytvoření, aktualizace, smazání |
| Veřejné koncové body (zachytávání) | Neomezeno | Zachytávání událostí, rozhodnutí o příznacích |
Dávkové exporty
Pro exporty dat událostí ve velkém měřítku používejte funkci dávkových exportů PostHog místo API. Dávkové exporty podporují S3, BigQuery, Snowflake a další cílové destinace.
Řešení problémů
| Problém | Příčina | Řešení |
|---|---|---|
| 401 Unauthorized | Neplatný API klíč | Ověřte osobní API klíč v nastavení |
| 400 Invalid project | Nesprávné ID projektu | Zkontrolujte ID projektu v URL PostHog |
| Prázdný seznam osob | Žádní identifikovaní uživatelé | Zajistěte, aby bylo voláno posthog.identify() |
| Chybějící vlastnosti | Vlastnosti nejsou nastaveny | Ověřte volání $set v klientském SDK |
| Limit rychlosti 429 | Příliš mnoho požadavků | Implementujte zpětné odběrání, zkontrolujte hlavičky limitu rychlosti |
Režim ladění
connectors: posthog: debug: true log_level: verbose log_queries: true log_sync: trueOsvědčené postupy
- Identifikujte uživatele – Vždy volejte
posthog.identify()s e-mailem pro povolení synchronizace osob - Používejte kohorty pro segmentaci – Využívejte behaviorální kohorty PostHog pro seznamy Brevo
- Dávkujte API požadavky – Používejte stránkování a dávkové zpracování pro velké datové sady
- Používejte HogQL pro složité dotazy – Extrahujte vlastní analytiku pomocí SQL-like dotazů
- Nastavte dávkové exporty – Pro velké objemy dat upřednostňujte dávkové exporty před pollováním API
- Filtrujte relevantní události – Synchronizujte pouze marketingově relevantní události pro snížení šumu
Zabezpečení
- Osobní API klíč – Ověřování Bearer tokenem s omezeným rozsahem
- Token projektu – Veřejný token pouze pro operace na straně klienta
- Pouze HTTPS – Všechny koncové body vyžadují šifrování TLS
- Whitelisting IP – Dostupné pro self-hosted instance
- Rozsah klíčů – Vytvářejte API klíče s konkrétními rozsahy oprávnění
- Skenování tajných klíčů GitHub – PostHog spolupracuje s GitHubem na detekci uniklých klíčů