[{"data":1,"prerenderedAt":1720},["ShallowReactive",2],{"article-alternates":3,"article-\u002Ftr\u002Fdata\u002Fprivacy-first-analytics-plausible-ve-sunucu-tarafi-aggregation":13},{"i18nKey":4,"paths":5},"data-006-2026-05",{"de":6,"en":7,"es":8,"fr":9,"it":10,"ru":11,"tr":12},"\u002Fde\u002Fdata\u002Fprivacy-first-analytics-plausible-server-aggregation","\u002Fen\u002Fdata\u002Fprivacy-first-analytics-plausible-server-side-aggregation","\u002Fes\u002Fdata\u002Fprivacy-first-analytics-plausible-server-side-aggregation","\u002Ffr\u002Fdata\u002Fanalytique-respectueuse-donnees-confidentielles","\u002Fit\u002Fdata\u002Fprivacy-first-analytics-plausible-server-side-aggregation","\u002Fru\u002Fdata\u002Fprivacy-first-analytics-plausible-server-side","\u002Ftr\u002Fdata\u002Fprivacy-first-analytics-plausible-ve-sunucu-tarafi-aggregation",{"_path":12,"_dir":14,"_draft":15,"_partial":15,"_locale":16,"title":17,"description":18,"publishedAt":19,"modifiedAt":19,"category":14,"i18nKey":4,"tags":20,"readingTime":26,"author":27,"body":28,"_type":1714,"_id":1715,"_source":1716,"_file":1717,"_stem":1718,"_extension":1719},"data",false,"","Privacy-First Analytics: Plausible ve Sunucu Tarafı Aggregation","KVKK\u002FGDPR uyumlu ölçüm: Plausible + server-side aggregation ile cookieless tracking, GA4 karşılaştırması ve production mimarisi.","2026-05-19",[21,22,23,24,25],"privacy-first-analytics","plausible","server-side-tracking","cookieless","kvkk-gdpr",8,"Roibase",{"type":29,"children":30,"toc":1707},"root",[31,39,46,51,56,101,106,111,135,141,153,158,167,172,412,417,461,466,499,505,510,536,546,750,760,826,831,852,858,863,871,892,900,1597,1605,1623,1628,1634,1639,1647,1665,1673,1691,1696,1701],{"type":32,"tag":33,"props":34,"children":35},"element","p",{},[36],{"type":37,"value":38},"text","Cookie tabelası çöktü. Chrome 2024'te third-party cookie'yi sonlandırdı, Safari ve Firefox zaten yıllardır blokluyor. Pazarlama ekipleri GA4'ün %40-60 arasında data kaybına uğradığını görüyor (Google'ın kendi raporları). Aynı zamanda KVKK ve GDPR cezaları 2025'te Avrupa'da 4,2 milyar euro'ya ulaştı. İki baskı: hem teknik (cookie yoksa ölçüm yok) hem yasal (consent banner atlamak suç). Privacy-first analytics bu iki soruna tek çözüm sunar: cookie kullanmadan, server-side'da aggregation yaparak, compliance-ready ölçüm.",{"type":32,"tag":40,"props":41,"children":43},"h2",{"id":42},"plausible-cookieless-ölçümün-çekirdeği",[44],{"type":37,"value":45},"Plausible: Cookieless Ölçümün Çekirdeği",{"type":32,"tag":33,"props":47,"children":48},{},[49],{"type":37,"value":50},"Plausible 2019'da piyasaya çıktığında bir \"GA alternatifi\" olarak konumlandı. 2026'da artık bir kategori: privacy-first web analytics. Temel farkı olay kayıtlarını client-side'da cookie'ye değil, sunucu tarafında hafızaya dayanmayan bir session ID'ye bağlaması. Ziyaretçinin IP + User-Agent kombinasyonu bir hash üretir (SHA-256), bu hash 24 saatte bir sıfırlanır. Sonuç: tekil ziyaretçi sayısı %95+ doğrulukta, ama hiçbir PII (personally identifiable information) saklanmaz.",{"type":32,"tag":33,"props":52,"children":53},{},[54],{"type":37,"value":55},"GA4 ile karşılaştırma yaparsak:",{"type":32,"tag":57,"props":58,"children":59},"ul",{},[60,72,91],{"type":32,"tag":61,"props":62,"children":63},"li",{},[64,70],{"type":32,"tag":65,"props":66,"children":67},"strong",{},[68],{"type":37,"value":69},"Data ownership:",{"type":37,"value":71}," Plausible event'leri kendi PostgreSQL instance'ına yazar. GA4 Google sunucusuna gönderir, sen sorgu yapamazsın (BigQuery export hariç).",{"type":32,"tag":61,"props":73,"children":74},{},[75,80,82,89],{"type":32,"tag":65,"props":76,"children":77},{},[78],{"type":37,"value":79},"Cookie bağımlılığı:",{"type":37,"value":81}," GA4 ",{"type":32,"tag":83,"props":84,"children":86},"code",{"className":85},[],[87],{"type":37,"value":88},"_ga",{"type":37,"value":90}," cookie'sine takılır. Cookie reddedilirse measurement dağılır. Plausible baştan cookieless.",{"type":32,"tag":61,"props":92,"children":93},{},[94,99],{"type":32,"tag":65,"props":95,"children":96},{},[97],{"type":37,"value":98},"Script boyutu:",{"type":37,"value":100}," Plausible tracker 1.4 KB, GA4 gtag.js 28 KB + gtm.js 45 KB. Page load'da 50× fark.",{"type":32,"tag":33,"props":102,"children":103},{},[104],{"type":37,"value":105},"KVKK uyumu için kritik nokta: Plausible'ın hash'i kişisel veri değil. KVKK Madde 3'te \"belirli veya belirlenebilir gerçek kişiye ilişkin\" kriteri var. SHA-256 hash'i geri çözülemez, dolayısıyla anonimleştirilmiş veri statüsünde. TCF 2.2 altında Purpose 1 (strictly necessary) kapsamına bile girmiyor — consent banner'a ihtiyaç yok.",{"type":32,"tag":33,"props":107,"children":108},{},[109],{"type":37,"value":110},"Production'da Plausible iki senaryoda kullanılır:",{"type":32,"tag":112,"props":113,"children":114},"ol",{},[115,125],{"type":32,"tag":61,"props":116,"children":117},{},[118,123],{"type":32,"tag":65,"props":119,"children":120},{},[121],{"type":37,"value":122},"Standalone:",{"type":37,"value":124}," Küçük siteler (blog, landing page) için tek başına yeterli. 10 satır JS embed, dashboard hazır.",{"type":32,"tag":61,"props":126,"children":127},{},[128,133],{"type":32,"tag":65,"props":129,"children":130},{},[131],{"type":37,"value":132},"Hybrid:",{"type":37,"value":134}," E-ticaret veya SaaS'ta Plausible genel trafiği tutar, kritik conversion event'leri server-side GTM ile CDP'ye gider. Bu yazının odağı ikinci senaryo.",{"type":32,"tag":40,"props":136,"children":138},{"id":137},"server-side-aggregation-olaydan-metriğe-geçiş",[139],{"type":37,"value":140},"Server-Side Aggregation: Olaydan Metriğe Geçiş",{"type":32,"tag":33,"props":142,"children":143},{},[144,146,151],{"type":37,"value":145},"Privacy-first analytics'in ikinci ayağı: event bazlı değil, metric bazlı kayıt. GA4 her tıklamayı, scroll'u, video pause'unu ayrı satır olarak loglar (event stream). Bir e-ticaret sitesinde günde 10 milyon event. Bu volume hem maliyet hem privacy riski. Aggregation mantığı basit: olayları sunucu tarafında ",{"type":32,"tag":65,"props":147,"children":148},{},[149],{"type":37,"value":150},"anında özetle",{"type":37,"value":152},", raw event'i saklamak yerine counter'ları increment et.",{"type":32,"tag":33,"props":154,"children":155},{},[156],{"type":37,"value":157},"Örnek mimari:",{"type":32,"tag":159,"props":160,"children":162},"pre",{"code":161},"Client → Plausible Tracker (1.4 KB JS)\n         ↓\n      Edge Worker (Cloudflare \u002F Vercel)\n         ↓ (aggregation yapılır)\n      Internal Event Bus (Kafka \u002F Redpanda)\n         ↓\n      Time-Series DB (TimescaleDB \u002F ClickHouse)\n",[163],{"type":32,"tag":83,"props":164,"children":165},{"__ignoreMap":16},[166],{"type":37,"value":161},{"type":32,"tag":33,"props":168,"children":169},{},[170],{"type":37,"value":171},"Edge worker'da yapılan aggregation:",{"type":32,"tag":159,"props":173,"children":177},{"code":174,"language":175,"meta":16,"className":176,"style":16},"-- TimescaleDB hypertable örneği\nCREATE TABLE page_metrics (\n  time        TIMESTAMPTZ NOT NULL,\n  page_path   TEXT NOT NULL,\n  country     TEXT,\n  views       INT DEFAULT 1,\n  bounces     INT DEFAULT 0,\n  session_dur INT DEFAULT 0\n);\n\nSELECT create_hypertable('page_metrics', 'time');\n","sql","language-sql shiki shiki-themes github-dark",[178],{"type":32,"tag":83,"props":179,"children":180},{"__ignoreMap":16},[181,193,220,244,266,283,312,338,359,368,378],{"type":32,"tag":182,"props":183,"children":186},"span",{"class":184,"line":185},"line",1,[187],{"type":32,"tag":182,"props":188,"children":190},{"style":189},"--shiki-default:#6A737D",[191],{"type":37,"value":192},"-- TimescaleDB hypertable örneği\n",{"type":32,"tag":182,"props":194,"children":196},{"class":184,"line":195},2,[197,203,208,214],{"type":32,"tag":182,"props":198,"children":200},{"style":199},"--shiki-default:#F97583",[201],{"type":37,"value":202},"CREATE",{"type":32,"tag":182,"props":204,"children":205},{"style":199},[206],{"type":37,"value":207}," TABLE",{"type":32,"tag":182,"props":209,"children":211},{"style":210},"--shiki-default:#B392F0",[212],{"type":37,"value":213}," page_metrics",{"type":32,"tag":182,"props":215,"children":217},{"style":216},"--shiki-default:#E1E4E8",[218],{"type":37,"value":219}," (\n",{"type":32,"tag":182,"props":221,"children":223},{"class":184,"line":222},3,[224,229,234,239],{"type":32,"tag":182,"props":225,"children":226},{"style":199},[227],{"type":37,"value":228},"  time",{"type":32,"tag":182,"props":230,"children":231},{"style":199},[232],{"type":37,"value":233},"        TIMESTAMPTZ",{"type":32,"tag":182,"props":235,"children":236},{"style":199},[237],{"type":37,"value":238}," NOT NULL",{"type":32,"tag":182,"props":240,"children":241},{"style":216},[242],{"type":37,"value":243},",\n",{"type":32,"tag":182,"props":245,"children":247},{"class":184,"line":246},4,[248,253,258,262],{"type":32,"tag":182,"props":249,"children":250},{"style":216},[251],{"type":37,"value":252},"  page_path   ",{"type":32,"tag":182,"props":254,"children":255},{"style":199},[256],{"type":37,"value":257},"TEXT",{"type":32,"tag":182,"props":259,"children":260},{"style":199},[261],{"type":37,"value":238},{"type":32,"tag":182,"props":263,"children":264},{"style":216},[265],{"type":37,"value":243},{"type":32,"tag":182,"props":267,"children":269},{"class":184,"line":268},5,[270,275,279],{"type":32,"tag":182,"props":271,"children":272},{"style":216},[273],{"type":37,"value":274},"  country     ",{"type":32,"tag":182,"props":276,"children":277},{"style":199},[278],{"type":37,"value":257},{"type":32,"tag":182,"props":280,"children":281},{"style":216},[282],{"type":37,"value":243},{"type":32,"tag":182,"props":284,"children":286},{"class":184,"line":285},6,[287,292,297,302,308],{"type":32,"tag":182,"props":288,"children":289},{"style":216},[290],{"type":37,"value":291},"  views       ",{"type":32,"tag":182,"props":293,"children":294},{"style":199},[295],{"type":37,"value":296},"INT",{"type":32,"tag":182,"props":298,"children":299},{"style":199},[300],{"type":37,"value":301}," DEFAULT",{"type":32,"tag":182,"props":303,"children":305},{"style":304},"--shiki-default:#79B8FF",[306],{"type":37,"value":307}," 1",{"type":32,"tag":182,"props":309,"children":310},{"style":216},[311],{"type":37,"value":243},{"type":32,"tag":182,"props":313,"children":315},{"class":184,"line":314},7,[316,321,325,329,334],{"type":32,"tag":182,"props":317,"children":318},{"style":216},[319],{"type":37,"value":320},"  bounces     ",{"type":32,"tag":182,"props":322,"children":323},{"style":199},[324],{"type":37,"value":296},{"type":32,"tag":182,"props":326,"children":327},{"style":199},[328],{"type":37,"value":301},{"type":32,"tag":182,"props":330,"children":331},{"style":304},[332],{"type":37,"value":333}," 0",{"type":32,"tag":182,"props":335,"children":336},{"style":216},[337],{"type":37,"value":243},{"type":32,"tag":182,"props":339,"children":340},{"class":184,"line":26},[341,346,350,354],{"type":32,"tag":182,"props":342,"children":343},{"style":216},[344],{"type":37,"value":345},"  session_dur ",{"type":32,"tag":182,"props":347,"children":348},{"style":199},[349],{"type":37,"value":296},{"type":32,"tag":182,"props":351,"children":352},{"style":199},[353],{"type":37,"value":301},{"type":32,"tag":182,"props":355,"children":356},{"style":304},[357],{"type":37,"value":358}," 0\n",{"type":32,"tag":182,"props":360,"children":362},{"class":184,"line":361},9,[363],{"type":32,"tag":182,"props":364,"children":365},{"style":216},[366],{"type":37,"value":367},");\n",{"type":32,"tag":182,"props":369,"children":371},{"class":184,"line":370},10,[372],{"type":32,"tag":182,"props":373,"children":375},{"emptyLinePlaceholder":374},true,[376],{"type":37,"value":377},"\n",{"type":32,"tag":182,"props":379,"children":381},{"class":184,"line":380},11,[382,387,392,398,403,408],{"type":32,"tag":182,"props":383,"children":384},{"style":199},[385],{"type":37,"value":386},"SELECT",{"type":32,"tag":182,"props":388,"children":389},{"style":216},[390],{"type":37,"value":391}," create_hypertable(",{"type":32,"tag":182,"props":393,"children":395},{"style":394},"--shiki-default:#9ECBFF",[396],{"type":37,"value":397},"'page_metrics'",{"type":32,"tag":182,"props":399,"children":400},{"style":216},[401],{"type":37,"value":402},", ",{"type":32,"tag":182,"props":404,"children":405},{"style":394},[406],{"type":37,"value":407},"'time'",{"type":32,"tag":182,"props":409,"children":410},{"style":216},[411],{"type":37,"value":367},{"type":32,"tag":33,"props":413,"children":414},{},[415],{"type":37,"value":416},"Client'tan gelen her sayfa görüntüleme şu akışı izler:",{"type":32,"tag":112,"props":418,"children":419},{},[420,433,438,443,456],{"type":32,"tag":61,"props":421,"children":422},{},[423,425,431],{"type":37,"value":424},"JS tracker ",{"type":32,"tag":83,"props":426,"children":428},{"className":427},[],[429],{"type":37,"value":430},"POST \u002Fapi\u002Fevent",{"type":37,"value":432}," → edge endpoint",{"type":32,"tag":61,"props":434,"children":435},{},[436],{"type":37,"value":437},"Edge worker hash hesaplar (IP + UA → session_id)",{"type":32,"tag":61,"props":439,"children":440},{},[441],{"type":37,"value":442},"Session store'da (Redis) son 30dk içinde aynı session_id var mı kontrol eder",{"type":32,"tag":61,"props":444,"children":445},{},[446,448,454],{"type":37,"value":447},"Varsa ",{"type":32,"tag":83,"props":449,"children":451},{"className":450},[],[452],{"type":37,"value":453},"views",{"type":37,"value":455}," counter'ı +1 artır, yoksa yeni satır yaz",{"type":32,"tag":61,"props":457,"children":458},{},[459],{"type":37,"value":460},"30 dakika session timeout sonrası bounce hesabı yapılır",{"type":32,"tag":33,"props":462,"children":463},{},[464],{"type":37,"value":465},"Bu mimari GA4'e göre 3 avantaj sağlar:",{"type":32,"tag":57,"props":467,"children":468},{},[469,479,489],{"type":32,"tag":61,"props":470,"children":471},{},[472,477],{"type":32,"tag":65,"props":473,"children":474},{},[475],{"type":37,"value":476},"Storage: %85 azalma.",{"type":37,"value":478}," 10M event → 200K aggregated row",{"type":32,"tag":61,"props":480,"children":481},{},[482,487],{"type":32,"tag":65,"props":483,"children":484},{},[485],{"type":37,"value":486},"Query speed: 40× hızlanma.",{"type":37,"value":488}," Time-series index sayesinde dashboard sorguları 15ms altında",{"type":32,"tag":61,"props":490,"children":491},{},[492,497],{"type":32,"tag":65,"props":493,"children":494},{},[495],{"type":37,"value":496},"Privacy: Zero PII.",{"type":37,"value":498}," Raw event saklanmadığı için GDPR Article 17 (right to erasure) isteği yok — zaten kişisel veri yok",{"type":32,"tag":40,"props":500,"children":502},{"id":501},"kvkvgdpr-compliance-teknik-detaylar",[503],{"type":37,"value":504},"KVKV\u002FGDPR Compliance: Teknik Detaylar",{"type":32,"tag":33,"props":506,"children":507},{},[508],{"type":37,"value":509},"Privacy-first analytics'i legal-proof yapmak için 4 katman gerekli:",{"type":32,"tag":33,"props":511,"children":512},{},[513,518,520,526,528,534],{"type":32,"tag":65,"props":514,"children":515},{},[516],{"type":37,"value":517},"1. Data minimization (GDPR Article 5.1c):",{"type":37,"value":519}," Sadece gerekli alanları topla. Örnek: referrer URL'yi saklamak yerine sadece domain sakla (",{"type":32,"tag":83,"props":521,"children":523},{"className":522},[],[524],{"type":37,"value":525},"https:\u002F\u002Fexample.com\u002Fcheckout?user=123",{"type":37,"value":527}," → ",{"type":32,"tag":83,"props":529,"children":531},{"className":530},[],[532],{"type":37,"value":533},"example.com",{"type":37,"value":535},"). Bu hem compliance hem disk tasarrufu.",{"type":32,"tag":33,"props":537,"children":538},{},[539,544],{"type":32,"tag":65,"props":540,"children":541},{},[542],{"type":37,"value":543},"2. Anonymization threshold (KVKK Rehber 2023):",{"type":37,"value":545}," Bir metrikte grup büyüklüğü 5'in altındaysa gösterme. Dashboard'da \"\u003C 5\" yaz. Çünkü 2 kişilik grup tanımlanabilir hale gelir. TimescaleDB'de:",{"type":32,"tag":159,"props":547,"children":549},{"code":548,"language":175,"meta":16,"className":176,"style":16},"SELECT \n  country,\n  CASE \n    WHEN COUNT(DISTINCT session_id) \u003C 5 THEN '\u003C 5'\n    ELSE COUNT(DISTINCT session_id)::TEXT\n  END AS visitors\nFROM page_metrics\nWHERE time > NOW() - INTERVAL '7 days'\nGROUP BY country;\n",[550],{"type":32,"tag":83,"props":551,"children":552},{"__ignoreMap":16},[553,565,573,585,633,663,681,694,737],{"type":32,"tag":182,"props":554,"children":555},{"class":184,"line":185},[556,560],{"type":32,"tag":182,"props":557,"children":558},{"style":199},[559],{"type":37,"value":386},{"type":32,"tag":182,"props":561,"children":562},{"style":216},[563],{"type":37,"value":564}," \n",{"type":32,"tag":182,"props":566,"children":567},{"class":184,"line":195},[568],{"type":32,"tag":182,"props":569,"children":570},{"style":216},[571],{"type":37,"value":572},"  country,\n",{"type":32,"tag":182,"props":574,"children":575},{"class":184,"line":222},[576,581],{"type":32,"tag":182,"props":577,"children":578},{"style":199},[579],{"type":37,"value":580},"  CASE",{"type":32,"tag":182,"props":582,"children":583},{"style":216},[584],{"type":37,"value":564},{"type":32,"tag":182,"props":586,"children":587},{"class":184,"line":246},[588,593,598,603,608,613,618,623,628],{"type":32,"tag":182,"props":589,"children":590},{"style":199},[591],{"type":37,"value":592},"    WHEN",{"type":32,"tag":182,"props":594,"children":595},{"style":304},[596],{"type":37,"value":597}," COUNT",{"type":32,"tag":182,"props":599,"children":600},{"style":216},[601],{"type":37,"value":602},"(",{"type":32,"tag":182,"props":604,"children":605},{"style":199},[606],{"type":37,"value":607},"DISTINCT",{"type":32,"tag":182,"props":609,"children":610},{"style":216},[611],{"type":37,"value":612}," session_id) ",{"type":32,"tag":182,"props":614,"children":615},{"style":199},[616],{"type":37,"value":617},"\u003C",{"type":32,"tag":182,"props":619,"children":620},{"style":304},[621],{"type":37,"value":622}," 5",{"type":32,"tag":182,"props":624,"children":625},{"style":199},[626],{"type":37,"value":627}," THEN",{"type":32,"tag":182,"props":629,"children":630},{"style":394},[631],{"type":37,"value":632}," '\u003C 5'\n",{"type":32,"tag":182,"props":634,"children":635},{"class":184,"line":268},[636,641,645,649,653,658],{"type":32,"tag":182,"props":637,"children":638},{"style":199},[639],{"type":37,"value":640},"    ELSE",{"type":32,"tag":182,"props":642,"children":643},{"style":304},[644],{"type":37,"value":597},{"type":32,"tag":182,"props":646,"children":647},{"style":216},[648],{"type":37,"value":602},{"type":32,"tag":182,"props":650,"children":651},{"style":199},[652],{"type":37,"value":607},{"type":32,"tag":182,"props":654,"children":655},{"style":216},[656],{"type":37,"value":657}," session_id)::",{"type":32,"tag":182,"props":659,"children":660},{"style":199},[661],{"type":37,"value":662},"TEXT\n",{"type":32,"tag":182,"props":664,"children":665},{"class":184,"line":285},[666,671,676],{"type":32,"tag":182,"props":667,"children":668},{"style":199},[669],{"type":37,"value":670},"  END",{"type":32,"tag":182,"props":672,"children":673},{"style":199},[674],{"type":37,"value":675}," AS",{"type":32,"tag":182,"props":677,"children":678},{"style":216},[679],{"type":37,"value":680}," visitors\n",{"type":32,"tag":182,"props":682,"children":683},{"class":184,"line":314},[684,689],{"type":32,"tag":182,"props":685,"children":686},{"style":199},[687],{"type":37,"value":688},"FROM",{"type":32,"tag":182,"props":690,"children":691},{"style":216},[692],{"type":37,"value":693}," page_metrics\n",{"type":32,"tag":182,"props":695,"children":696},{"class":184,"line":26},[697,702,707,712,717,722,727,732],{"type":32,"tag":182,"props":698,"children":699},{"style":199},[700],{"type":37,"value":701},"WHERE",{"type":32,"tag":182,"props":703,"children":704},{"style":199},[705],{"type":37,"value":706}," time",{"type":32,"tag":182,"props":708,"children":709},{"style":199},[710],{"type":37,"value":711}," >",{"type":32,"tag":182,"props":713,"children":714},{"style":199},[715],{"type":37,"value":716}," NOW",{"type":32,"tag":182,"props":718,"children":719},{"style":216},[720],{"type":37,"value":721},"() ",{"type":32,"tag":182,"props":723,"children":724},{"style":199},[725],{"type":37,"value":726},"-",{"type":32,"tag":182,"props":728,"children":729},{"style":216},[730],{"type":37,"value":731}," INTERVAL ",{"type":32,"tag":182,"props":733,"children":734},{"style":394},[735],{"type":37,"value":736},"'7 days'\n",{"type":32,"tag":182,"props":738,"children":739},{"class":184,"line":361},[740,745],{"type":32,"tag":182,"props":741,"children":742},{"style":199},[743],{"type":37,"value":744},"GROUP BY",{"type":32,"tag":182,"props":746,"children":747},{"style":216},[748],{"type":37,"value":749}," country;\n",{"type":32,"tag":33,"props":751,"children":752},{},[753,758],{"type":32,"tag":65,"props":754,"children":755},{},[756],{"type":37,"value":757},"3. Data retention policy:",{"type":37,"value":759}," KVKV Madde 7 \"işleme amacı ortadan kalktığında veri silinmeli\" der. Analytics için amaç: performans optimizasyonu. 90 gün yeterli. TimescaleDB'de otomatik compression + retention:",{"type":32,"tag":159,"props":761,"children":763},{"code":762,"language":175,"meta":16,"className":176,"style":16},"SELECT add_retention_policy('page_metrics', INTERVAL '90 days');\nSELECT add_compression_policy('page_metrics', INTERVAL '7 days');\n",[764],{"type":32,"tag":83,"props":765,"children":766},{"__ignoreMap":16},[767,797],{"type":32,"tag":182,"props":768,"children":769},{"class":184,"line":185},[770,774,779,783,788,793],{"type":32,"tag":182,"props":771,"children":772},{"style":199},[773],{"type":37,"value":386},{"type":32,"tag":182,"props":775,"children":776},{"style":216},[777],{"type":37,"value":778}," add_retention_policy(",{"type":32,"tag":182,"props":780,"children":781},{"style":394},[782],{"type":37,"value":397},{"type":32,"tag":182,"props":784,"children":785},{"style":216},[786],{"type":37,"value":787},", INTERVAL ",{"type":32,"tag":182,"props":789,"children":790},{"style":394},[791],{"type":37,"value":792},"'90 days'",{"type":32,"tag":182,"props":794,"children":795},{"style":216},[796],{"type":37,"value":367},{"type":32,"tag":182,"props":798,"children":799},{"class":184,"line":195},[800,804,809,813,817,822],{"type":32,"tag":182,"props":801,"children":802},{"style":199},[803],{"type":37,"value":386},{"type":32,"tag":182,"props":805,"children":806},{"style":216},[807],{"type":37,"value":808}," add_compression_policy(",{"type":32,"tag":182,"props":810,"children":811},{"style":394},[812],{"type":37,"value":397},{"type":32,"tag":182,"props":814,"children":815},{"style":216},[816],{"type":37,"value":787},{"type":32,"tag":182,"props":818,"children":819},{"style":394},[820],{"type":37,"value":821},"'7 days'",{"type":32,"tag":182,"props":823,"children":824},{"style":216},[825],{"type":37,"value":367},{"type":32,"tag":33,"props":827,"children":828},{},[829],{"type":37,"value":830},"7 günden eski data compress olur, 90 günden eski data silinir. GDPR Article 17 compliance otomatik.",{"type":32,"tag":33,"props":832,"children":833},{},[834,839,841,850],{"type":32,"tag":65,"props":835,"children":836},{},[837],{"type":37,"value":838},"4. Consent Mode v2 entegrasyonu (opsiyonel):",{"type":37,"value":840}," Eğer hala GA4 ile hybrid çalışıyorsan, Plausible'ı \"analytics_storage: denied\" modunda bile çalıştır. Çünkü Plausible cookie kullanmıyor, consent gerektirmiyor. ",{"type":32,"tag":842,"props":843,"children":847},"a",{"href":844,"rel":845},"https:\u002F\u002Fwww.roibase.com.tr\u002Ftr\u002Ffirstparty",[846],"nofollow",[848],{"type":37,"value":849},"First-party veri mimarisi",{"type":37,"value":851}," bu hybrid setup'ı detaylandırır: Plausible traffic ölçer, server-side GTM conversion event'lerini CDP'ye gönderir.",{"type":32,"tag":40,"props":853,"children":855},{"id":854},"production-case-e-ticaret-hybrid-stack",[856],{"type":37,"value":857},"Production Case: E-Ticaret Hybrid Stack",{"type":32,"tag":33,"props":859,"children":860},{},[861],{"type":37,"value":862},"Bir Shopify mağazası için kurduğumuz mimari:",{"type":32,"tag":33,"props":864,"children":865},{},[866],{"type":32,"tag":65,"props":867,"children":868},{},[869],{"type":37,"value":870},"Frontend:",{"type":32,"tag":57,"props":872,"children":873},{},[874,879],{"type":32,"tag":61,"props":875,"children":876},{},[877],{"type":37,"value":878},"Plausible tracker tüm sayfalarda (product view, cart, checkout)",{"type":32,"tag":61,"props":880,"children":881},{},[882,884,890],{"type":37,"value":883},"Custom event ",{"type":32,"tag":83,"props":885,"children":887},{"className":886},[],[888],{"type":37,"value":889},"plausible('Purchase', {revenue: 150})",{"type":37,"value":891}," checkout success'te",{"type":32,"tag":33,"props":893,"children":894},{},[895],{"type":32,"tag":65,"props":896,"children":897},{},[898],{"type":37,"value":899},"Backend (Cloudflare Worker):",{"type":32,"tag":159,"props":901,"children":905},{"code":902,"language":903,"meta":16,"className":904,"style":16},"addEventListener('fetch', event => {\n  event.respondWith(handleRequest(event.request))\n})\n\nasync function handleRequest(request) {\n  const url = new URL(request.url)\n  \n  if (url.pathname === '\u002Fapi\u002Fevent') {\n    const body = await request.json()\n    const sessionId = hashSession(request.headers.get('CF-Connecting-IP'), \n                                    request.headers.get('User-Agent'))\n    \n    \u002F\u002F Redis'te session kontrolü\n    const exists = await redis.exists(`session:${sessionId}`)\n    \n    if (!exists) {\n      await redis.setex(`session:${sessionId}`, 1800, '1')\n      await kafka.send({\n        topic: 'pageviews',\n        messages: [{\n          key: sessionId,\n          value: JSON.stringify({\n            page: body.url,\n            referrer: new URL(body.referrer).hostname,\n            timestamp: Date.now()\n          })\n        }]\n      })\n    }\n    \n    return new Response('OK', {status: 202})\n  }\n}\n","javascript","language-javascript shiki shiki-themes github-dark",[906],{"type":32,"tag":83,"props":907,"children":908},{"__ignoreMap":16},[909,946,973,981,988,1020,1053,1061,1088,1125,1170,1196,1205,1214,1269,1277,1301,1357,1380,1398,1407,1416,1444,1453,1476,1494,1503,1512,1521,1530,1538,1579,1588],{"type":32,"tag":182,"props":910,"children":911},{"class":184,"line":185},[912,917,921,926,930,936,941],{"type":32,"tag":182,"props":913,"children":914},{"style":210},[915],{"type":37,"value":916},"addEventListener",{"type":32,"tag":182,"props":918,"children":919},{"style":216},[920],{"type":37,"value":602},{"type":32,"tag":182,"props":922,"children":923},{"style":394},[924],{"type":37,"value":925},"'fetch'",{"type":32,"tag":182,"props":927,"children":928},{"style":216},[929],{"type":37,"value":402},{"type":32,"tag":182,"props":931,"children":933},{"style":932},"--shiki-default:#FFAB70",[934],{"type":37,"value":935},"event",{"type":32,"tag":182,"props":937,"children":938},{"style":199},[939],{"type":37,"value":940}," =>",{"type":32,"tag":182,"props":942,"children":943},{"style":216},[944],{"type":37,"value":945}," {\n",{"type":32,"tag":182,"props":947,"children":948},{"class":184,"line":195},[949,954,959,963,968],{"type":32,"tag":182,"props":950,"children":951},{"style":216},[952],{"type":37,"value":953},"  event.",{"type":32,"tag":182,"props":955,"children":956},{"style":210},[957],{"type":37,"value":958},"respondWith",{"type":32,"tag":182,"props":960,"children":961},{"style":216},[962],{"type":37,"value":602},{"type":32,"tag":182,"props":964,"children":965},{"style":210},[966],{"type":37,"value":967},"handleRequest",{"type":32,"tag":182,"props":969,"children":970},{"style":216},[971],{"type":37,"value":972},"(event.request))\n",{"type":32,"tag":182,"props":974,"children":975},{"class":184,"line":222},[976],{"type":32,"tag":182,"props":977,"children":978},{"style":216},[979],{"type":37,"value":980},"})\n",{"type":32,"tag":182,"props":982,"children":983},{"class":184,"line":246},[984],{"type":32,"tag":182,"props":985,"children":986},{"emptyLinePlaceholder":374},[987],{"type":37,"value":377},{"type":32,"tag":182,"props":989,"children":990},{"class":184,"line":268},[991,996,1001,1006,1010,1015],{"type":32,"tag":182,"props":992,"children":993},{"style":199},[994],{"type":37,"value":995},"async",{"type":32,"tag":182,"props":997,"children":998},{"style":199},[999],{"type":37,"value":1000}," function",{"type":32,"tag":182,"props":1002,"children":1003},{"style":210},[1004],{"type":37,"value":1005}," handleRequest",{"type":32,"tag":182,"props":1007,"children":1008},{"style":216},[1009],{"type":37,"value":602},{"type":32,"tag":182,"props":1011,"children":1012},{"style":932},[1013],{"type":37,"value":1014},"request",{"type":32,"tag":182,"props":1016,"children":1017},{"style":216},[1018],{"type":37,"value":1019},") {\n",{"type":32,"tag":182,"props":1021,"children":1022},{"class":184,"line":285},[1023,1028,1033,1038,1043,1048],{"type":32,"tag":182,"props":1024,"children":1025},{"style":199},[1026],{"type":37,"value":1027},"  const",{"type":32,"tag":182,"props":1029,"children":1030},{"style":304},[1031],{"type":37,"value":1032}," url",{"type":32,"tag":182,"props":1034,"children":1035},{"style":199},[1036],{"type":37,"value":1037}," =",{"type":32,"tag":182,"props":1039,"children":1040},{"style":199},[1041],{"type":37,"value":1042}," new",{"type":32,"tag":182,"props":1044,"children":1045},{"style":210},[1046],{"type":37,"value":1047}," URL",{"type":32,"tag":182,"props":1049,"children":1050},{"style":216},[1051],{"type":37,"value":1052},"(request.url)\n",{"type":32,"tag":182,"props":1054,"children":1055},{"class":184,"line":314},[1056],{"type":32,"tag":182,"props":1057,"children":1058},{"style":216},[1059],{"type":37,"value":1060},"  \n",{"type":32,"tag":182,"props":1062,"children":1063},{"class":184,"line":26},[1064,1069,1074,1079,1084],{"type":32,"tag":182,"props":1065,"children":1066},{"style":199},[1067],{"type":37,"value":1068},"  if",{"type":32,"tag":182,"props":1070,"children":1071},{"style":216},[1072],{"type":37,"value":1073}," (url.pathname ",{"type":32,"tag":182,"props":1075,"children":1076},{"style":199},[1077],{"type":37,"value":1078},"===",{"type":32,"tag":182,"props":1080,"children":1081},{"style":394},[1082],{"type":37,"value":1083}," '\u002Fapi\u002Fevent'",{"type":32,"tag":182,"props":1085,"children":1086},{"style":216},[1087],{"type":37,"value":1019},{"type":32,"tag":182,"props":1089,"children":1090},{"class":184,"line":361},[1091,1096,1101,1105,1110,1115,1120],{"type":32,"tag":182,"props":1092,"children":1093},{"style":199},[1094],{"type":37,"value":1095},"    const",{"type":32,"tag":182,"props":1097,"children":1098},{"style":304},[1099],{"type":37,"value":1100}," body",{"type":32,"tag":182,"props":1102,"children":1103},{"style":199},[1104],{"type":37,"value":1037},{"type":32,"tag":182,"props":1106,"children":1107},{"style":199},[1108],{"type":37,"value":1109}," await",{"type":32,"tag":182,"props":1111,"children":1112},{"style":216},[1113],{"type":37,"value":1114}," request.",{"type":32,"tag":182,"props":1116,"children":1117},{"style":210},[1118],{"type":37,"value":1119},"json",{"type":32,"tag":182,"props":1121,"children":1122},{"style":216},[1123],{"type":37,"value":1124},"()\n",{"type":32,"tag":182,"props":1126,"children":1127},{"class":184,"line":370},[1128,1132,1137,1141,1146,1151,1156,1160,1165],{"type":32,"tag":182,"props":1129,"children":1130},{"style":199},[1131],{"type":37,"value":1095},{"type":32,"tag":182,"props":1133,"children":1134},{"style":304},[1135],{"type":37,"value":1136}," sessionId",{"type":32,"tag":182,"props":1138,"children":1139},{"style":199},[1140],{"type":37,"value":1037},{"type":32,"tag":182,"props":1142,"children":1143},{"style":210},[1144],{"type":37,"value":1145}," hashSession",{"type":32,"tag":182,"props":1147,"children":1148},{"style":216},[1149],{"type":37,"value":1150},"(request.headers.",{"type":32,"tag":182,"props":1152,"children":1153},{"style":210},[1154],{"type":37,"value":1155},"get",{"type":32,"tag":182,"props":1157,"children":1158},{"style":216},[1159],{"type":37,"value":602},{"type":32,"tag":182,"props":1161,"children":1162},{"style":394},[1163],{"type":37,"value":1164},"'CF-Connecting-IP'",{"type":32,"tag":182,"props":1166,"children":1167},{"style":216},[1168],{"type":37,"value":1169},"), \n",{"type":32,"tag":182,"props":1171,"children":1172},{"class":184,"line":380},[1173,1178,1182,1186,1191],{"type":32,"tag":182,"props":1174,"children":1175},{"style":216},[1176],{"type":37,"value":1177},"                                    request.headers.",{"type":32,"tag":182,"props":1179,"children":1180},{"style":210},[1181],{"type":37,"value":1155},{"type":32,"tag":182,"props":1183,"children":1184},{"style":216},[1185],{"type":37,"value":602},{"type":32,"tag":182,"props":1187,"children":1188},{"style":394},[1189],{"type":37,"value":1190},"'User-Agent'",{"type":32,"tag":182,"props":1192,"children":1193},{"style":216},[1194],{"type":37,"value":1195},"))\n",{"type":32,"tag":182,"props":1197,"children":1199},{"class":184,"line":1198},12,[1200],{"type":32,"tag":182,"props":1201,"children":1202},{"style":216},[1203],{"type":37,"value":1204},"    \n",{"type":32,"tag":182,"props":1206,"children":1208},{"class":184,"line":1207},13,[1209],{"type":32,"tag":182,"props":1210,"children":1211},{"style":189},[1212],{"type":37,"value":1213},"    \u002F\u002F Redis'te session kontrolü\n",{"type":32,"tag":182,"props":1215,"children":1217},{"class":184,"line":1216},14,[1218,1222,1227,1231,1235,1240,1245,1249,1254,1259,1264],{"type":32,"tag":182,"props":1219,"children":1220},{"style":199},[1221],{"type":37,"value":1095},{"type":32,"tag":182,"props":1223,"children":1224},{"style":304},[1225],{"type":37,"value":1226}," exists",{"type":32,"tag":182,"props":1228,"children":1229},{"style":199},[1230],{"type":37,"value":1037},{"type":32,"tag":182,"props":1232,"children":1233},{"style":199},[1234],{"type":37,"value":1109},{"type":32,"tag":182,"props":1236,"children":1237},{"style":216},[1238],{"type":37,"value":1239}," redis.",{"type":32,"tag":182,"props":1241,"children":1242},{"style":210},[1243],{"type":37,"value":1244},"exists",{"type":32,"tag":182,"props":1246,"children":1247},{"style":216},[1248],{"type":37,"value":602},{"type":32,"tag":182,"props":1250,"children":1251},{"style":394},[1252],{"type":37,"value":1253},"`session:${",{"type":32,"tag":182,"props":1255,"children":1256},{"style":216},[1257],{"type":37,"value":1258},"sessionId",{"type":32,"tag":182,"props":1260,"children":1261},{"style":394},[1262],{"type":37,"value":1263},"}`",{"type":32,"tag":182,"props":1265,"children":1266},{"style":216},[1267],{"type":37,"value":1268},")\n",{"type":32,"tag":182,"props":1270,"children":1272},{"class":184,"line":1271},15,[1273],{"type":32,"tag":182,"props":1274,"children":1275},{"style":216},[1276],{"type":37,"value":1204},{"type":32,"tag":182,"props":1278,"children":1280},{"class":184,"line":1279},16,[1281,1286,1291,1296],{"type":32,"tag":182,"props":1282,"children":1283},{"style":199},[1284],{"type":37,"value":1285},"    if",{"type":32,"tag":182,"props":1287,"children":1288},{"style":216},[1289],{"type":37,"value":1290}," (",{"type":32,"tag":182,"props":1292,"children":1293},{"style":199},[1294],{"type":37,"value":1295},"!",{"type":32,"tag":182,"props":1297,"children":1298},{"style":216},[1299],{"type":37,"value":1300},"exists) {\n",{"type":32,"tag":182,"props":1302,"children":1304},{"class":184,"line":1303},17,[1305,1310,1314,1319,1323,1327,1331,1335,1339,1344,1348,1353],{"type":32,"tag":182,"props":1306,"children":1307},{"style":199},[1308],{"type":37,"value":1309},"      await",{"type":32,"tag":182,"props":1311,"children":1312},{"style":216},[1313],{"type":37,"value":1239},{"type":32,"tag":182,"props":1315,"children":1316},{"style":210},[1317],{"type":37,"value":1318},"setex",{"type":32,"tag":182,"props":1320,"children":1321},{"style":216},[1322],{"type":37,"value":602},{"type":32,"tag":182,"props":1324,"children":1325},{"style":394},[1326],{"type":37,"value":1253},{"type":32,"tag":182,"props":1328,"children":1329},{"style":216},[1330],{"type":37,"value":1258},{"type":32,"tag":182,"props":1332,"children":1333},{"style":394},[1334],{"type":37,"value":1263},{"type":32,"tag":182,"props":1336,"children":1337},{"style":216},[1338],{"type":37,"value":402},{"type":32,"tag":182,"props":1340,"children":1341},{"style":304},[1342],{"type":37,"value":1343},"1800",{"type":32,"tag":182,"props":1345,"children":1346},{"style":216},[1347],{"type":37,"value":402},{"type":32,"tag":182,"props":1349,"children":1350},{"style":394},[1351],{"type":37,"value":1352},"'1'",{"type":32,"tag":182,"props":1354,"children":1355},{"style":216},[1356],{"type":37,"value":1268},{"type":32,"tag":182,"props":1358,"children":1360},{"class":184,"line":1359},18,[1361,1365,1370,1375],{"type":32,"tag":182,"props":1362,"children":1363},{"style":199},[1364],{"type":37,"value":1309},{"type":32,"tag":182,"props":1366,"children":1367},{"style":216},[1368],{"type":37,"value":1369}," kafka.",{"type":32,"tag":182,"props":1371,"children":1372},{"style":210},[1373],{"type":37,"value":1374},"send",{"type":32,"tag":182,"props":1376,"children":1377},{"style":216},[1378],{"type":37,"value":1379},"({\n",{"type":32,"tag":182,"props":1381,"children":1383},{"class":184,"line":1382},19,[1384,1389,1394],{"type":32,"tag":182,"props":1385,"children":1386},{"style":216},[1387],{"type":37,"value":1388},"        topic: ",{"type":32,"tag":182,"props":1390,"children":1391},{"style":394},[1392],{"type":37,"value":1393},"'pageviews'",{"type":32,"tag":182,"props":1395,"children":1396},{"style":216},[1397],{"type":37,"value":243},{"type":32,"tag":182,"props":1399,"children":1401},{"class":184,"line":1400},20,[1402],{"type":32,"tag":182,"props":1403,"children":1404},{"style":216},[1405],{"type":37,"value":1406},"        messages: [{\n",{"type":32,"tag":182,"props":1408,"children":1410},{"class":184,"line":1409},21,[1411],{"type":32,"tag":182,"props":1412,"children":1413},{"style":216},[1414],{"type":37,"value":1415},"          key: sessionId,\n",{"type":32,"tag":182,"props":1417,"children":1419},{"class":184,"line":1418},22,[1420,1425,1430,1435,1440],{"type":32,"tag":182,"props":1421,"children":1422},{"style":216},[1423],{"type":37,"value":1424},"          value: ",{"type":32,"tag":182,"props":1426,"children":1427},{"style":304},[1428],{"type":37,"value":1429},"JSON",{"type":32,"tag":182,"props":1431,"children":1432},{"style":216},[1433],{"type":37,"value":1434},".",{"type":32,"tag":182,"props":1436,"children":1437},{"style":210},[1438],{"type":37,"value":1439},"stringify",{"type":32,"tag":182,"props":1441,"children":1442},{"style":216},[1443],{"type":37,"value":1379},{"type":32,"tag":182,"props":1445,"children":1447},{"class":184,"line":1446},23,[1448],{"type":32,"tag":182,"props":1449,"children":1450},{"style":216},[1451],{"type":37,"value":1452},"            page: body.url,\n",{"type":32,"tag":182,"props":1454,"children":1456},{"class":184,"line":1455},24,[1457,1462,1467,1471],{"type":32,"tag":182,"props":1458,"children":1459},{"style":216},[1460],{"type":37,"value":1461},"            referrer: ",{"type":32,"tag":182,"props":1463,"children":1464},{"style":199},[1465],{"type":37,"value":1466},"new",{"type":32,"tag":182,"props":1468,"children":1469},{"style":210},[1470],{"type":37,"value":1047},{"type":32,"tag":182,"props":1472,"children":1473},{"style":216},[1474],{"type":37,"value":1475},"(body.referrer).hostname,\n",{"type":32,"tag":182,"props":1477,"children":1479},{"class":184,"line":1478},25,[1480,1485,1490],{"type":32,"tag":182,"props":1481,"children":1482},{"style":216},[1483],{"type":37,"value":1484},"            timestamp: Date.",{"type":32,"tag":182,"props":1486,"children":1487},{"style":210},[1488],{"type":37,"value":1489},"now",{"type":32,"tag":182,"props":1491,"children":1492},{"style":216},[1493],{"type":37,"value":1124},{"type":32,"tag":182,"props":1495,"children":1497},{"class":184,"line":1496},26,[1498],{"type":32,"tag":182,"props":1499,"children":1500},{"style":216},[1501],{"type":37,"value":1502},"          })\n",{"type":32,"tag":182,"props":1504,"children":1506},{"class":184,"line":1505},27,[1507],{"type":32,"tag":182,"props":1508,"children":1509},{"style":216},[1510],{"type":37,"value":1511},"        }]\n",{"type":32,"tag":182,"props":1513,"children":1515},{"class":184,"line":1514},28,[1516],{"type":32,"tag":182,"props":1517,"children":1518},{"style":216},[1519],{"type":37,"value":1520},"      })\n",{"type":32,"tag":182,"props":1522,"children":1524},{"class":184,"line":1523},29,[1525],{"type":32,"tag":182,"props":1526,"children":1527},{"style":216},[1528],{"type":37,"value":1529},"    }\n",{"type":32,"tag":182,"props":1531,"children":1533},{"class":184,"line":1532},30,[1534],{"type":32,"tag":182,"props":1535,"children":1536},{"style":216},[1537],{"type":37,"value":1204},{"type":32,"tag":182,"props":1539,"children":1541},{"class":184,"line":1540},31,[1542,1547,1551,1556,1560,1565,1570,1575],{"type":32,"tag":182,"props":1543,"children":1544},{"style":199},[1545],{"type":37,"value":1546},"    return",{"type":32,"tag":182,"props":1548,"children":1549},{"style":199},[1550],{"type":37,"value":1042},{"type":32,"tag":182,"props":1552,"children":1553},{"style":210},[1554],{"type":37,"value":1555}," Response",{"type":32,"tag":182,"props":1557,"children":1558},{"style":216},[1559],{"type":37,"value":602},{"type":32,"tag":182,"props":1561,"children":1562},{"style":394},[1563],{"type":37,"value":1564},"'OK'",{"type":32,"tag":182,"props":1566,"children":1567},{"style":216},[1568],{"type":37,"value":1569},", {status: ",{"type":32,"tag":182,"props":1571,"children":1572},{"style":304},[1573],{"type":37,"value":1574},"202",{"type":32,"tag":182,"props":1576,"children":1577},{"style":216},[1578],{"type":37,"value":980},{"type":32,"tag":182,"props":1580,"children":1582},{"class":184,"line":1581},32,[1583],{"type":32,"tag":182,"props":1584,"children":1585},{"style":216},[1586],{"type":37,"value":1587},"  }\n",{"type":32,"tag":182,"props":1589,"children":1591},{"class":184,"line":1590},33,[1592],{"type":32,"tag":182,"props":1593,"children":1594},{"style":216},[1595],{"type":37,"value":1596},"}\n",{"type":32,"tag":33,"props":1598,"children":1599},{},[1600],{"type":32,"tag":65,"props":1601,"children":1602},{},[1603],{"type":37,"value":1604},"Data layer:",{"type":32,"tag":57,"props":1606,"children":1607},{},[1608,1613,1618],{"type":32,"tag":61,"props":1609,"children":1610},{},[1611],{"type":37,"value":1612},"Kafka consumer TimescaleDB'ye yazar (her 10 saniyede batch insert)",{"type":32,"tag":61,"props":1614,"children":1615},{},[1616],{"type":37,"value":1617},"Grafana dashboard TimescaleDB'den okur (real-time, 2 saniye refresh)",{"type":32,"tag":61,"props":1619,"children":1620},{},[1621],{"type":37,"value":1622},"BigQuery'ye günlük aggregated export (dbt ile join: Plausible traffic + Shopify order data)",{"type":32,"tag":33,"props":1624,"children":1625},{},[1626],{"type":37,"value":1627},"Sonuç: Conversion attribution %92 doğrulukta (GA4'te %58 idi — ITP ve cookie rejection yüzünden). KVKV uyumu %100 — hiçbir PII saklanmıyor. Dashboard query süresi 40ms (GA4'te 4-6 saniye).",{"type":32,"tag":40,"props":1629,"children":1631},{"id":1630},"plausible-vs-ga4-hangisi-ne-zaman",[1632],{"type":37,"value":1633},"Plausible vs GA4: Hangisi Ne Zaman",{"type":32,"tag":33,"props":1635,"children":1636},{},[1637],{"type":37,"value":1638},"GA4'ü tamamen atmak mı gerek? Hayır. İki senaryoda hala mantıklı:",{"type":32,"tag":33,"props":1640,"children":1641},{},[1642],{"type":32,"tag":65,"props":1643,"children":1644},{},[1645],{"type":37,"value":1646},"GA4 kullan:",{"type":32,"tag":57,"props":1648,"children":1649},{},[1650,1655,1660],{"type":32,"tag":61,"props":1651,"children":1652},{},[1653],{"type":37,"value":1654},"Cross-domain tracking (birden fazla site, subdomain — GA4'ün linker mekanizması daha olgun)",{"type":32,"tag":61,"props":1656,"children":1657},{},[1658],{"type":37,"value":1659},"Machine learning insights (GA4'ün predictive metrics: purchase probability, churn probability)",{"type":32,"tag":61,"props":1661,"children":1662},{},[1663],{"type":37,"value":1664},"Google Ads entegrasyonu (enhanced conversions, remarketing audience push — GA4 native entegre)",{"type":32,"tag":33,"props":1666,"children":1667},{},[1668],{"type":32,"tag":65,"props":1669,"children":1670},{},[1671],{"type":37,"value":1672},"Plausible kullan:",{"type":32,"tag":57,"props":1674,"children":1675},{},[1676,1681,1686],{"type":32,"tag":61,"props":1677,"children":1678},{},[1679],{"type":37,"value":1680},"Public dashboard (Plausible'ı embed edip yayınlayabilirsin — GA4 paylaşım viewer hesabı gerektirir)",{"type":32,"tag":61,"props":1682,"children":1683},{},[1684],{"type":37,"value":1685},"Lightweight siteler (blog, landing page, SaaS marketing site)",{"type":32,"tag":61,"props":1687,"children":1688},{},[1689],{"type":37,"value":1690},"Strict compliance (KVKV, GDPR, CCPA — Plausible'da sıfır risk)",{"type":32,"tag":33,"props":1692,"children":1693},{},[1694],{"type":37,"value":1695},"Hybrid kurulum en yaygın: Plausible site-wide traffic ölçer, GA4 sadece critical conversion funnel'ında server-side GTM ile tetiklenir. Bu hem privacy hem performance sağlar.",{"type":32,"tag":33,"props":1697,"children":1698},{},[1699],{"type":37,"value":1700},"Privacy-first analytics artık \"güzel olurdu\" değil, \"olmak zorunda\" kategorisinde. Chrome 2024'te cookie'yi sildi, KVKV cezaları 2025'te %300 arttı. Plausible + server-side aggregation mimarisi bu iki baskıyı karşılayan tek production-ready çözüm. Eğer hala GA4'ün %60 data loss'uyla uğraşıyorsan, cookieless ölçüm mimarisine geçiş planı yap — çünkü 2026'da cookie'siz çalışmayan analytics stack ayakta kalamaz.",{"type":32,"tag":1702,"props":1703,"children":1704},"style",{},[1705],{"type":37,"value":1706},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":16,"searchDepth":222,"depth":222,"links":1708},[1709,1710,1711,1712,1713],{"id":42,"depth":195,"text":45},{"id":137,"depth":195,"text":140},{"id":501,"depth":195,"text":504},{"id":854,"depth":195,"text":857},{"id":1630,"depth":195,"text":1633},"markdown","content:tr:data:privacy-first-analytics-plausible-ve-sunucu-tarafi-aggregation.md","content","tr\u002Fdata\u002Fprivacy-first-analytics-plausible-ve-sunucu-tarafi-aggregation.md","tr\u002Fdata\u002Fprivacy-first-analytics-plausible-ve-sunucu-tarafi-aggregation","md",1779285859521]