From e681a46b786920db72c87987d6188c65e8335640 Mon Sep 17 00:00:00 2001 From: Bastian de Byl Date: Mon, 14 Sep 2026 14:02:38 -0400 Subject: [PATCH] SCRUM-196: GA4 analytics config for fulfillr Traffic & funnel tab Render an analytics block (property 353859448 + service-account key) into the fulfillr dev and prod configs once fulfillr_ga4_credentials is in the vault. Without the vault var the block is omitted and the portal reports GA as not connected. Remember to restart the container after deploy. Co-Authored-By: Claude Opus 5 --- ansible/roles/podman/defaults/main.yml | 3 +++ ansible/roles/podman/templates/fulfillr/dev.json.j2 | 8 ++++++++ .../roles/podman/templates/fulfillr/production.json.j2 | 8 ++++++++ 3 files changed, 19 insertions(+) diff --git a/ansible/roles/podman/defaults/main.yml b/ansible/roles/podman/defaults/main.yml index ba18998..87a0773 100644 --- a/ansible/roles/podman/defaults/main.yml +++ b/ansible/roles/podman/defaults/main.yml @@ -326,3 +326,6 @@ cifs_watchdog_mounts: - "{{ photos_path }}/storage" - "{{ photos_path }}/immich" +# GA4 property for the fulfillr portal Traffic & funnel tab (SCRUM-196, non-secret). +# Shared by dev and prod. The service-account key `fulfillr_ga4_credentials` lives in the vault. +fulfillr_ga4_property_id: "353859448" diff --git a/ansible/roles/podman/templates/fulfillr/dev.json.j2 b/ansible/roles/podman/templates/fulfillr/dev.json.j2 index 553c11b..cb5d8fb 100644 --- a/ansible/roles/podman/templates/fulfillr/dev.json.j2 +++ b/ansible/roles/podman/templates/fulfillr/dev.json.j2 @@ -53,5 +53,13 @@ "recovery": { "schedule_name": "cart-recovery-dev", "schedule_group": "default" + }{%- if fulfillr_ga4_credentials is defined %}, + {# GA4 Data API for the portal Traffic & funnel tab (SCRUM-196). Renders only once the + service-account key `fulfillr_ga4_credentials` (the key JSON, as a mapping or string) + is in the vault; without it the traffic endpoint reports configured:false. #} + "analytics": { + "ga4_property_id": "{{ fulfillr_ga4_property_id }}", + "ga4_credentials": {{ (fulfillr_ga4_credentials if fulfillr_ga4_credentials is mapping else (fulfillr_ga4_credentials | from_json)) | to_json }} } +{%- endif %} } diff --git a/ansible/roles/podman/templates/fulfillr/production.json.j2 b/ansible/roles/podman/templates/fulfillr/production.json.j2 index 6f12879..6a315eb 100644 --- a/ansible/roles/podman/templates/fulfillr/production.json.j2 +++ b/ansible/roles/podman/templates/fulfillr/production.json.j2 @@ -53,5 +53,13 @@ "recovery": { "schedule_name": "cart-recovery-prod", "schedule_group": "default" + }{%- if fulfillr_ga4_credentials is defined %}, + {# GA4 Data API for the portal Traffic & funnel tab (SCRUM-196). Renders only once the + service-account key `fulfillr_ga4_credentials` (the key JSON, as a mapping or string) + is in the vault; without it the traffic endpoint reports configured:false. #} + "analytics": { + "ga4_property_id": "{{ fulfillr_ga4_property_id }}", + "ga4_credentials": {{ (fulfillr_ga4_credentials if fulfillr_ga4_credentials is mapping else (fulfillr_ga4_credentials | from_json)) | to_json }} } +{%- endif %} }