Mätning + BigQuery: mognadskurvor, CRM-pipeline, dashboards

Alla kanaler / safariresor-2 / Mätning + BigQuery: mognadskurvor, CRM-pipeline, dashboards
ID i DB
#7
Match count
2
Senast matchad
2026-05-08 07:33:28 (13 h sedan)
Skapad
2026-05-04 06:04:09 (4 d sedan)
Refresh
aldrig
Arkiv
matning-bigquery.md

Stub-text

Mätningen och BigQuery-pipelinen för Safariresor: vad som rapporteras och hur. booking_maturity.js (/workspace/group/booking_maturity.js) on-demand mognadsanalys, två tidsmått: first_touch → inquiry (consideration) och inquiry → booking (säljcykel). BQ-projekt gen-lang-client-0542783734, dataset catch_crm, EU multi-region. Tabeller assignments, inquiries, offers, bookings (med seller_id/seller_name/seller_email/channel), booking_expenses, sync_state. Views inquiry_attribution + booking_margin. Catch CRM → BQ-pipeline via /workspace/group/scripts/catch-bq-sync.js, Cloud Run Job catch-bq-sync (europe-west1, 900s timeout), Cloud Scheduler catch-bq-sync-daily 06:00 Stockholm. COGS från GET /booking/{id} expenses-array, 96% coverage på 1498 bookings, 337,8 MSEK omsättning, 246,3 MSEK COGS, 91,5 MSEK bruttovinst, 26,96% snittmarginal. Schema-evolution-läxa: ensureTable() hanterar inte kolumntillägg, kör bq update + --full backfill manuellt. setWatermark-bug: BQ Node-klienten persisterar inte TIMESTAMP @params i parameterized MERGE, inline literaler istället. Attribution-pipeline live 2026-04-23, första FTS-data den dagen, 1131 inquiries april-maj, 102 har first_touch, 60 har bokning, p50 consideration 2h, p50 säljcykel 12d. Google Ads autotagging-quirk: tracker_gclid men inte tracker_utm_source, kolla båda. Dashboards på Cloudflare Pages: safariresor-mognadskurvor.pages.dev (huvuddashboard, histogram + kumulativa kurvor + percentiler + kanalsplit), safariresor-maturity-index.pages.dev (övergiven CPL-index). Veckorapport Safariresor maturity tracker fredag 09:00 (pausad). Gamla maturity-trackers (maturity_daily.js Meta + GAds) PAUSADE. Meta:s click-attribution stabil från age=2, ratio 1.00 beror på att form-fills sker same-session. Adsets använder 7d_click + 1d_view (28d_click ej tillgängligt post-iOS 14.5). BQ Data Transfer Service Google Ads: dataset google_ads, lag 1-2d, backfill cap 300d/run, c._LATEST_DATE = c._DATA_DATE i JOIN. SA: republiken-shared för GA4/GTM/BQ, dataextractor read-only på BQ. Använd vid frågor om mognadskurvor, consideration, säljcykel, CRM-pipeline, COGS, marginalrapport, BQ, BigQuery, scheduled queries, Cloud Run Job, attribution, POAS, dashboards, mognadsdashboard, veckorapport.

Fullständigt arkiv

Mätning + BigQuery: mognadskurvor, CRM-pipeline, dashboards

Senast uppdaterad: 2026-05-03 Refresh-källa: /workspace/project/groups/safariresor/memory.md + /workspace/project/groups/safariresor/booking_maturity.js

Mätstrategi (varför vi mäter som vi gör)

booking_maturity.js (mognadskurvor on-demand)

Sökväg: /workspace/group/booking_maturity.js. Hämtar rådata för mognadsanalys.

Första data 2026-04-01 till 2026-05-01 (1131 inquiries)

Catch CRM → BigQuery-pipeline

Cloud Run + Scheduler

COGS + marginalview

Schema-evolution-läxa

ensureTable() skapar bara ny tabell, hanterar INTE kolumntillägg. Vid nya fält:

  1. Kör bq update med full schema-JSON manuellt
  2. Kör --full sync för backfill

Användes 2026-04-25 när seller_id, seller_name, seller_email, channel lades till. Backfill: alla 1503 bookings körda. Datan hämtas från /booking/{id} detail endpoint, piggyback på syncBookingExpenses-loopen.

Bug-fix setWatermark (2026-05-01-läxa)

BigQuery Node-klienten persisterar INTE TIMESTAMP @params i parameterized MERGE-statements. Värdet hamnar som silent NULL i destination. Workaround: inline TIMESTAMP-literaler direkt i SQL (TIMESTAMP '2026-05-01 12:00:00'), inte via params. Vanlig INSERT/UPDATE med TIMESTAMP-params fungerar, det är specifikt MERGE som triggar buggen.

Attribution-pipelinen (live 2026-04-23)

Dashboards på Cloudflare Pages

Mognadskurvor: gamla vs nya

Tidigare (PAUSADE):

Varför ratio 1.00 i Meta? Tidigare misstanke om bug var FEL. 8 API-varianter (action_report_time, attribution_windows, narrow vs wide window) returnerar identiska siffror. Meta:s siffror ÄR click-attribuerade och stabila från age=2 framåt. Skälet: form-fills sker same-session deterministiskt, sena tillskrivningar (cross-device, ATT-opt-out) försvinner ur Meta helt och hamnar som direct/organic i CRM.

Adset-attribution: alla 6 aktiva leads-adsets på Meta använder 7d_click + 1d_view på pixel 565967720230784 event skicka_forfragan. 28d_click ej tillgängligt för optimization post-iOS 14.5.

Nu: mognadskurvor flyttade till BigQuery via booking_maturity.js. CRM = sanningskällan, eftersom Meta ändå tappar attribution efter session.

GA4-verifiering (1-3 maj)

BQ Data Transfer Service (Google Ads)

Veckorapport Safariresor maturity tracker

Fredagsjobb 09:00 (extern scheduler-uppgift, inte i denna repo). Sammanfattar veckans CPL-utveckling per kampanj/land och postar till Discord/mail. Pausad i nuvarande form, ersatt av on-demand mognadskurvor.

Trello-uppgifter kopplat till mätning

Säljcykel + COGS-marginal-rapporter och attributions-tasks tracking i Jonatan-board, men inga öppna kort som blockerar pipelinen just nu.

[2026-04-24] Catch CRM till BQ sync komplett med COGS + marginalview

[2026-04-24] Attribution-pipelinen igång (aktiverad 23 apr)

← tillbaka till safariresor-2