PostHog کنیکٹر
ڈیٹا سے چلنے والی مارکیٹنگ مہمات اور ذاتی کسٹمر انگیجمنٹ کے لیے پروڈکٹ اینالیٹکس ڈیٹا، صارف کے رویے کے ایونٹس، اور کوہارٹ ممبرشپس سنک کرنے کے لیے PostHog کو Tajo کے ذریعے Brevo سے منسلک کریں۔
جائزہ
| خاصیت | قدر |
|---|---|
| پلیٹ فارم | PostHog |
| زمرہ | پروڈکٹ اینالیٹکس (حسب ضرورت) |
| سیٹ اپ کی پیچیدگی | معتدل |
| آفیشل انٹیگریشن | نہیں |
| سنک شدہ ڈیٹا | ایونٹس، Persons، Feature Flags، کوہارٹس |
| توثیقی طریقہ | Personal API Key / Project Token |
خصوصیات
- ایونٹ سنک - رویّاتی ہدف بنانے کے لیے PostHog اینالیٹکس ایونٹس کو Brevo کو آگے بھیجیں
- Person پروفائل سنک - PostHog person خصوصیات کو Brevo رابطہ خصوصیات سے سنک کریں
- کوہارٹ پر مبنی سیگمنٹیشن - PostHog کوہارٹس کو Brevo رابطہ فہرستوں سے میپ کریں
- Feature flag سنک - فعال feature flags کے ذریعے رابطوں کو سیگمنٹ کریں
- فنل ڈیٹا - ہدف بنائی گئی ری-انگیجمنٹ کے لیے conversion فنل ڈیٹا کا استعمال کریں
- Session replay میٹا ڈیٹا - session engagement میٹرکس کے ساتھ رابطوں کو بہتر بنائیں
ضروریات
شروع کرنے سے پہلے، یقینی بنائیں کہ آپ کے پاس ہے:
- PostHog اکاؤنٹ (Cloud یا self-hosted)
- PostHog Settings سے Personal API Key
- Project Settings سے آپ کا Project API Key (token)
- API رسائی کے ساتھ Brevo اکاؤنٹ
- کنیکٹر اجازتوں کے ساتھ Tajo اکاؤنٹ
توثیق
Personal API Key (پرائیویٹ اینڈ پوائنٹس)
# https://app.posthog.com/settings/user-api-keys پر تخلیق کریںexport 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// پرائیویٹ API اینڈ پوائنٹس Bearer توثیق استعمال کرتے ہیںconst headers = { 'Authorization': `Bearer ${process.env.POSTHOG_PERSONAL_API_KEY}`, 'Content-Type': 'application/json'};
// عوامی اینڈ پوائنٹس project token استعمال کرتے ہیںconst publicHeaders = { 'Content-Type': 'application/json'};// عوامی اینڈ پوائنٹس کے لیے ٹوکن درخواست کے مواد میں پاس کیا جاتا ہےAPI Key سیکیورٹی
Personal API keys مکمل اکاؤنٹ رسائی فراہم کرتے ہیں۔ انہیں کبھی کلائنٹ سائیڈ کوڈ میں ظاہر نہ کریں۔ عوامی اینڈ پوائنٹس جیسے event capture اور feature flag evaluation کے لیے Project API Key (token) استعمال کریں۔
کنفیگریشن
بنیادی سیٹ اپ
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: 27فیلڈ میپنگ
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 اینڈ پوائنٹس
| اینڈ پوائنٹ | طریقہ | تفصیل |
|---|---|---|
{host}/api/projects/{id}/persons/ | GET | persons کی فہرست |
{host}/api/projects/{id}/events/ | GET | ایونٹس کی فہرست |
{host}/api/projects/{id}/cohorts/ | GET | کوہارٹس کی فہرست |
{host}/api/projects/{id}/feature_flags/ | GET | feature flags کی فہرست |
{host}/api/projects/{id}/feature_flags/evaluation/ | POST | flags کا جائزہ لیں |
{host}/api/projects/{id}/insights/ | GET | محفوظ insights کی فہرست |
{host}/api/projects/{id}/query/ | POST | HogQL queries چلائیں |
{host}/i/v0/e | POST | ایونٹس capture کریں (عوامی) |
{host}/decide/?v=3 | POST | Feature flag فیصلے (عوامی) |
کوڈ مثالیں
کنیکٹر کو شروع کریں
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'});Persons کو Brevo سے سنک کریں
// PostHog persons کے ذریعے پیجینیٹ کریںlet 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;}کوہارٹس کو Brevo فہرستوں کے طور پر سنک کریں
// PostHog کوہارٹس حاصل کریں اور ممبران کو Brevo فہرستوں سے سنک کریںconst 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) { // اس کوہارٹ میں persons حاصل کریں 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 Queries چلائیں
// اینالیٹکس ڈیٹا کی استفسار کے لیے HogQL استعمال کریںconst 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] } });}ریٹ کی حدود
| اینڈ پوائنٹ کا زمرہ | حد | نوٹس |
|---|---|---|
| اینالیٹکس اینڈ پوائنٹس | 240/منٹ، 1,200/گھنٹہ | GET persons، ایونٹس، insights |
| Query اینڈ پوائنٹ | 2,400/گھنٹہ | HogQL اور حسب ضرورت queries |
| Feature flag evaluation | 600/منٹ | Local evaluation اینڈ پوائنٹ |
| CRUD اینڈ پوائنٹس | 480/منٹ، 4,800/گھنٹہ | Create، update، delete operations |
| عوامی اینڈ پوائنٹس (capture) | لامحدود | Event capture، flag فیصلے |
Batch Exports
بڑے پیمانے پر ایونٹ ڈیٹا exports کے لیے، API کے بجائے PostHog کی batch exports خصوصیت استعمال کریں۔ Batch exports S3، BigQuery، Snowflake، اور دیگر منزلوں کی حمایت کرتے ہیں۔
مسائل کا سراغ
| مسئلہ | وجہ | حل |
|---|---|---|
| 401 Unauthorized | غیر معتبر API key | سیٹنگز میں Personal API Key کی تصدیق کریں |
| 400 Invalid project | غلط project ID | PostHog URL میں project ID چیک کریں |
| خالی persons فہرست | کوئی شناخت شدہ صارفین نہیں | یقینی بنائیں کہ posthog.identify() کال کیا گیا ہے |
| خصوصیات غائب | خصوصیات سیٹ نہیں | کلائنٹ SDK میں $set کالز کی تصدیق کریں |
| ریٹ کی حد 429 | بہت زیادہ درخواستیں | بیک آف نافذ کریں، ریٹ کی حد کے ہیڈرز چیک کریں |
ڈیبگ موڈ
connectors: posthog: debug: true log_level: verbose log_queries: true log_sync: trueبہترین طریقے
- صارفین کی شناخت کریں - person سنک فعال کرنے کے لیے ہمیشہ ای میل کے ساتھ
posthog.identify()کال کریں - سیگمنٹیشن کے لیے کوہارٹس استعمال کریں - Brevo فہرستوں کے لیے PostHog کے رویّاتی کوہارٹس کا فائدہ اٹھائیں
- API درخواستوں کو بیچ کریں - بڑے ڈیٹا سیٹس کے لیے پیجینیشن اور بیچ پروسیسنگ کا استعمال کریں
- پیچیدہ queries کے لیے HogQL استعمال کریں - SQL جیسی queries کے ساتھ حسب ضرورت اینالیٹکس نکالیں
- Batch exports سیٹ اپ کریں - بڑے ڈیٹا volumes کے لیے، API پولنگ پر batch exports کو ترجیح دیں
- متعلقہ ایونٹس فلٹر کریں - شور کم کرنے کے لیے صرف مارکیٹنگ سے متعلق ایونٹس سنک کریں
سیکیورٹی
- Personal API Key - محدود Bearer token توثیق
- Project token - صرف کلائنٹ سائیڈ آپریشنز کے لیے عوامی ٹوکن
- صرف HTTPS - تمام اینڈ پوائنٹس کو TLS encryption کی ضرورت ہوتی ہے
- IP allowlisting - self-hosted instances کے لیے دستیاب
- Key محدود کرنا - مخصوص اجازت اسکوپس کے ساتھ API keys بنائیں
- GitHub secret scanning - PostHog leaked key کا پتہ لگانے کے لیے GitHub کے ساتھ شراکت کرتا ہے