PostHog Bağlayıcısı
Veri odaklı pazarlama kampanyaları ve kişiselleştirilmiş müşteri etkileşimi için ürün analitiği verilerini, kullanıcı davranış olaylarını ve kohort üyeliklerini senkronize etmek üzere PostHog’u Tajo aracılığıyla Brevo’ya bağlayın.
Genel Bakış
| Özellik | Değer |
|---|---|
| Platform | PostHog |
| Kategori | Ürün Analitiği (Özel) |
| Kurulum Karmaşıklığı | Orta |
| Resmi Entegrasyon | Hayır |
| Senkronize Edilen Veri | Olaylar, Kişiler, Özellik Bayrakları, Kohortlar |
| Kimlik Doğrulama Yöntemi | Kişisel API Anahtarı / Proje Belirteci |
Özellikler
- Olay senkronizasyonu - Davranışsal hedefleme için PostHog analitik olaylarını Brevo’ya iletin
- Kişi profili senkronizasyonu - PostHog kişi özelliklerini Brevo kişi özniteliklerine senkronize edin
- Kohort tabanlı segmentasyon - PostHog kohortlarını Brevo kişi listelerine eşleyin
- Özellik bayrağı senkronizasyonu - Kişileri etkinleştirilmiş özellik bayraklarına göre segmentlere ayırın
- Huni verileri - Hedefli yeniden etkileşim için dönüşüm huni verilerini kullanın
- Oturum tekrarı meta verileri - Kişileri oturum etkileşim metrikleriyle zenginleştirin
Ön Koşullar
Başlamadan önce şunlara sahip olduğunuzdan emin olun:
- Bir PostHog hesabı (Bulut veya kendi barındırılan)
- PostHog Ayarlarından bir Kişisel API Anahtarı
- Proje Ayarlarınızdan Proje API Anahtarınız (belirteç)
- API erişimi olan bir Brevo hesabı
- Bağlayıcı izinlerine sahip bir Tajo hesabı
Kimlik Doğrulama
Kişisel API Anahtarı (Özel Uç Noktalar)
# https://app.posthog.com/settings/user-api-keys adresinde oluşturunexport POSTHOG_PERSONAL_API_KEY=phx_your_personal_api_keyexport POSTHOG_PROJECT_TOKEN=phc_your_project_tokenexport POSTHOG_HOST=https://us.posthog.com # veya https://eu.posthog.comexport TAJO_API_KEY=your_tajo_api_keyexport BREVO_API_KEY=your_brevo_api_key// Özel API uç noktaları Bearer kimlik doğrulaması kullanırconst headers = { 'Authorization': `Bearer ${process.env.POSTHOG_PERSONAL_API_KEY}`, 'Content-Type': 'application/json'};
// Herkese açık uç noktalar proje belirtecini kullanırconst publicHeaders = { 'Content-Type': 'application/json'};// Herkese açık uç noktalar için belirteç istek gövdesinde iletilirAPI Anahtarı Güvenliği
Kişisel API anahtarları tam hesap erişimi sağlar. Bunları asla istemci tarafı kodda ifşa etmeyin. Olay yakalama ve özellik bayrağı değerlendirmesi gibi herkese açık uç noktalar için Proje API Anahtarını (belirteç) kullanın.
Yapılandırma
Temel Kurulum
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 * * *" # Her 3 saatte bir
event_filters: - "$pageview" - "purchase_completed" - "signup_completed" - "feature_used"
lists: all_users: 25 active_users: 26 power_users: 27Alan Eşleştirme
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 Uç Noktaları
| Uç Nokta | Yöntem | Açıklama |
|---|---|---|
{host}/api/projects/{id}/persons/ | GET | Kişileri listele |
{host}/api/projects/{id}/events/ | GET | Olayları listele |
{host}/api/projects/{id}/cohorts/ | GET | Kohortları listele |
{host}/api/projects/{id}/feature_flags/ | GET | Özellik bayraklarını listele |
{host}/api/projects/{id}/feature_flags/evaluation/ | POST | Bayrakları değerlendir |
{host}/api/projects/{id}/insights/ | GET | Kayıtlı öngörüleri listele |
{host}/api/projects/{id}/query/ | POST | HogQL sorgularını çalıştır |
{host}/i/v0/e | POST | Olayları yakala (herkese açık) |
{host}/decide/?v=3 | POST | Özellik bayrağı kararları (herkese açık) |
Kod Örnekleri
Bağlayıcıyı Başlatma
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'});Kişileri Brevo’ya Senkronize Etme
// PostHog kişileri arasında sayfalama yaplet 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;}Kohortları Brevo Listeleri Olarak Senkronize Etme
// PostHog kohortlarını al ve üyeleri Brevo listelerine senkronize etconst 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) { // Bu kohorttaki kişileri al 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 } }); } }}Analitik için HogQL Sorguları Çalıştırma
// Analitik verilerini sorgulamak için HogQL kullanconst 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] } });}Hız Sınırları
| Uç Nokta Kategorisi | Sınır | Notlar |
|---|---|---|
| Analitik uç noktaları | 240/dk, 1.200/sa | GET kişiler, olaylar, öngörüler |
| Sorgu uç noktası | 2.400/sa | HogQL ve özel sorgular |
| Özellik bayrağı değerlendirmesi | 600/dk | Yerel değerlendirme uç noktası |
| CRUD uç noktaları | 480/dk, 4.800/sa | Oluşturma, güncelleme, silme işlemleri |
| Herkese açık uç noktalar (yakalama) | Sınırsız | Olay yakalama, bayrak kararları |
Toplu Dışa Aktarmalar
Büyük ölçekli olay veri dışa aktarmaları için API yerine PostHog’un toplu dışa aktarma özelliğini kullanın. Toplu dışa aktarmalar S3, BigQuery, Snowflake ve diğer hedefleri destekler.
Sorun Giderme
| Sorun | Neden | Çözüm |
|---|---|---|
| 401 Unauthorized | Geçersiz API anahtarı | Kişisel API Anahtarını ayarlarda doğrulayın |
| 400 Invalid project | Yanlış proje kimliği | PostHog URL’sindeki proje kimliğini kontrol edin |
| Boş kişi listesi | Kimliği belirlenmiş kullanıcı yok | posthog.identify() çağrıldığından emin olun |
| Özellikler eksik | Özellikler ayarlanmamış | İstemci SDK’sındaki $set çağrılarını doğrulayın |
| Hız sınırı 429 | Çok fazla istek | Geri çekilme uygulayın, hız sınırı başlıklarını kontrol edin |
Hata Ayıklama Modu
connectors: posthog: debug: true log_level: verbose log_queries: true log_sync: trueEn İyi Uygulamalar
- Kullanıcıları tanımlayın - Kişi senkronizasyonunu etkinleştirmek için her zaman
posthog.identify()’yi e-posta ile çağırın - Segmentasyon için kohortları kullanın - Brevo listeleri için PostHog’un davranışsal kohortlarından yararlanın
- API isteklerini toplu işleyin - Büyük veri kümeleri için sayfalama ve toplu işleme kullanın
- Karmaşık sorgular için HogQL kullanın - Özel analitik verileri SQL benzeri sorgularla çıkarın
- Toplu dışa aktarmalar ayarlayın - Büyük veri hacimleri için API yoklaması yerine toplu dışa aktarmaları tercih edin
- İlgili olayları filtreleyin - Gürültüyü azaltmak için yalnızca pazarlamayla ilgili olayları senkronize edin
Güvenlik
- Kişisel API Anahtarı - Kapsamlı Bearer belirteç kimlik doğrulaması
- Proje belirteci - Yalnızca istemci tarafı işlemler için herkese açık belirteç
- Yalnızca HTTPS - Tüm uç noktalar TLS şifrelemesi gerektirir
- IP izin verme listesi - Kendi barındırılan örnekler için kullanılabilir
- Anahtar kapsamlandırma - Belirli izin kapsamlarına sahip API anahtarları oluşturun
- GitHub gizli anahtar taraması - PostHog, sızdırılan anahtar tespiti için GitHub ile ortaktır