Machina

Appendix E·Appendix

Glossary

Each entry defines a term as it is used in this dissertation, with a note on how it appeared in the {COMPANY} case where that grounding clarifies the meaning. Entries are ordered alphabetically, ignoring underscores and capitalization. Cross-references point to the chapter that treats a term in depth.

accessBindings

The GA4 Admin API resource that lists which users and service accounts hold which roles on an account or property, and the directRoles or effectiveRoles attached to each. Reading it requires the analytics.manage.users.readonly scope, which is distinct from analytics.edit; a token minted only with edit rights returns ACCESS_TOKEN_SCOPE_INSUFFICIENT on this endpoint. Chapter 15 uses accessBindings to prove the case service account held predefinedRoles/admin.

ad_storage

A Consent Mode v2 signal that governs whether Google may write and read cookies used for advertising, such as conversion and remarketing identifiers. When set to denied, gtag suppresses advertising cookies and, in combination with analytics_storage, switches Google Ads conversions to cookieless modeling. The {COMPANY} configuration sets ad_storage to granted globally and denied for 32 EEA, UK, and Switzerland region codes. See Chapter 10.

Admin API (GA4)

The Google Analytics Admin API is the configuration surface for a property: it reads and writes custom dimensions, key events, data retention, Enhanced Measurement, stream settings, and product links. The audit read the property through accountSummaries, dataStreams, customDimensions, keyEvents, dataRetentionSettings, enhancedMeasurementSettings, and googleSignalsSettings, and Phase 0 wrote changes through the same API. Chapter 4 documents the endpoints; Appendix D lists them.

analytics_storage

A Consent Mode v2 signal that governs whether Google may store and read cookies used for analytics, principally the _ga and _ga_<container> cookies that carry client_id and session_id. When denied, GA4 collects cookieless pings that support modeled, not observed, session and user counts. {COMPANY} sets it granted globally so US analytics is unaffected, and denied for European region codes. See Chapter 10.

client_id

The pseudonymous device-and-browser identifier GA4 uses to stitch events into users, stored in the _ga cookie and valid for two years once gtag writes it. A Measurement Protocol call must supply a real client_id to attribute the event to an existing user; the {COMPANY} defect minted a synthetic server.<timestamp> value when the _ga cookie was absent, creating a fresh phantom user per lead. The corrected code skips the send when no genuine client_id is present. Chapters 6 and 9 treat identity.

Google's framework of four consent signals (ad_storage, analytics_storage, ad_user_data, ad_personalization) that gtag reads before it fires tags. It is an EEA and UK Google Ads requirement, not a US legal mandate, so for this US-only California business it is a defensive posture rather than a compliance obligation. {COMPANY} declares two gtag('consent','default',...) calls before config: a global granted default and a region-scoped denied default with wait_for_update of 500 milliseconds. See Chapter 10.

custom dimension (event, user, item scopes)

A registered mapping from an event parameter, user property, or item property to a reportable field, without which a sent parameter never surfaces in the UI. Scope determines the join: event-scoped dimensions describe a single event (the case registered cta_location, page_type, service_slug, and others), user-scoped dimensions persist across a user's events (session_source), and item-scoped dimensions describe ecommerce array members. The 14-month retention cap bites only Explorations that read event- or user-scoped custom dimensions. See Chapter 8.

Data API (GA4)

The reporting API that returns aggregated metrics and dimensions for a property, used in the audit to pull the 30-day baseline: 2,328 events, 401 active users, 527 sessions, and the traffic-source breakdown. It requires the analytics.readonly scope. Chapter 4 pairs Data API reads with Admin API reads to separate configuration facts from behavioral facts.

Data Manager API

Google's current API for uploading offline conversions and audience data, and the successor path after the legacy Google Ads API offline-conversion upload route was blocked on 2026-06-15 for developer tokens not previously allowlisted. New offline-revenue work for {COMPANY} must target this API rather than the legacy path. See Chapters 11 and 16.

data thresholding

GA4 withholds rows when a report could expose an individual, most often when Google Signals is active and cohorts are small. At {COMPANY}'s volume (about 500 sessions per month) Signals mainly harmed reporting by hiding rows through thresholding, which is why disabling it improved by-service and by-county visibility. See Chapter 5.

data-driven attribution

The GA4 attribution model that distributes conversion credit across touchpoints using the property's own conversion patterns rather than a fixed rule. It stabilizes only above roughly 400 conversions per 28 days, a threshold {COMPANY} sits well below at about 46 paid clicks per month, so its credit distribution stays noisy at this scale. See Chapter 9.

debug Measurement Protocol endpoint

The validation host https://www.google-analytics.com/debug/mp/collect, which accepts the same payload as the collection endpoint and returns validationMessages describing schema problems without recording the event. The corrected {COMPANY} generate_lead payload validated here with validationMessages: [] before the code shipped. See Chapter 6.

engagement_time_msec

A Measurement Protocol parameter that reports engagement duration in milliseconds and, when present, signals GA4 that the event belongs to an engaged session. Omitting it (as the original payload did) leaves server events without session context, contributing to (direct)/(none) attribution. The corrected payload sets it to 1. See Chapter 6.

Enhanced Conversions for Leads

A Google Ads mechanism that matches offline conversions back to ad clicks using hashed lead identifiers such as email, rather than a stored gclid. It is one candidate for closing the {COMPANY} offline-revenue loop, discussed alongside gclid-based upload in Chapter 11.

Enhanced Measurement

The stream-level setting that auto-collects events (scrolls, outbound clicks, site search, video, file downloads, page changes, form interactions) without code. {COMPANY} had all seven options on, including pageChangesEnabled and formInteractionsEnabled, which double-fired page_view on client navigation and duplicated the site's custom form events; both were switched off. Site search was also on with no search box present. See Chapters 5 and 8.

gbraid

A click identifier Google passes for conversions originating in an iOS app-to-web context where gclid is unavailable. Phase 2 added gbraid capture alongside gclid and wbraid so the offline loop can attribute clicks a gclid-only capture would miss. See Chapter 11.

gclid

The Google Click Identifier appended to ad-destination URLs, the primary key for matching an offline conversion back to a paid click. {COMPANY} stored gclid per lead from the audit onward and added wbraid and gbraid in Phase 2 to cover Safari and iOS cases. See Chapter 11.

generate_lead

The server-side lead conversion event {COMPANY} posts from the contact API via Measurement Protocol, intended to survive ad-blockers that suppress the client-side contact_form_submit. Because the original code posted to the wrong host, it recorded zero data for the property's lifetime; after the fix it returned HTTP 204, appeared in Realtime within about 20 seconds, and was promoted to a key event. See Chapters 6 and 7.

Google Signals

A GA4 feature that joins measurement to signed-in Google users for cross-device reporting and remarketing. It was already disabled at {COMPANY}, which was the correct posture: at this volume it offered little cross-device insight and mainly triggered data thresholding. See Chapter 5.

GS1 and GS2

The two on-disk formats of the _ga_<container> session cookie from which session_id is parsed. GS1 is the legacy dot-delimited form and GS2 is the newer dollar-delimited form; the corrected {COMPANY} parser handles both, because assuming one format silently drops session_id for visitors carrying the other. See Chapter 6.

ip_override

A Measurement Protocol parameter that sets the IP address GA4 uses for geolocation. The corrected {COMPANY} payload sets it to the request IP so a lead geolocates to the visitor's Central California location rather than the VPS datacenter. See Chapter 6.

key event

GA4's term (formerly "conversion") for an event flagged as a business outcome, which makes it eligible for conversion reporting and, once linked, Google Ads import. {COMPANY} had six, including a purchase that never fired and a cta_click deleted in Phase 0; generate_lead was promoted after the host fix. See Chapter 7.

Measurement Protocol

The HTTP API that sends events to GA4 directly from a server, bypassing the browser and the tags ad-blockers suppress. Its correctness depends entirely on the payload: valid host, real client_id, session_id, and engagement_time_msec. {COMPANY}'s single most costly defect was posting to www.google.com/mp/collect (HTTP 404) instead of www.google-analytics.com/mp/collect (HTTP 204). See Chapter 6.

purchase (default key event)

A GA4-provided ecommerce key event that {COMPANY} carried but never fired, since the business books jobs offline with no online transaction. The Admin API refuses to delete it (INVALID_ARGUMENT, "The event cannot be deleted"), so it remains inert rather than removed. See Chapters 5 and 14.

send_page_view

The gtag config parameter that controls whether the tag auto-sends a page_view on load. {COMPANY} set it to false and delegated a single page_view per route to a RouteAnalytics component, eliminating the duplicate fires that Enhanced Measurement and a per-page tracker had produced. See Chapter 8.

session_id

The identifier that groups a user's events into one session, read from the _ga_<container> cookie. A Measurement Protocol event without session_id attributes to (direct)/(none) even when client_id is correct, which is why the corrected {COMPANY} payload parses it from both GS1 and GS2 cookie formats. See Chapters 6 and 9.

transaction_id

The ecommerce parameter GA4 uses to deduplicate a purchase. It has no role in the {COMPANY} lead model, which values conversions through a per-service map rather than transaction records; the term appears here to contrast ecommerce measurement with lead measurement. See Chapter 7.

user_id

A first-party, cross-device identifier a business assigns to a known user, more durable than client_id because it survives cookie loss and device changes. {COMPANY} does not set one, since leads arrive anonymously before any account exists; the lead_id UUID generated per lead serves the internal join instead. See Chapter 9.

value-based bidding

Google Ads Smart Bidding strategies that optimize toward conversion value rather than conversion count, dependent on values fed back through the offline loop. They stabilize at roughly 15 to 30 conversions per month, above {COMPANY}'s current volume, so the per-service value map is built for cost-per-booked-job visibility now and value bidding later. See Chapters 11 and 16.

wbraid

A click identifier Google passes for web-to-web conversions in privacy contexts (notably Safari) where gclid is stripped. Phase 2 captures it alongside gclid and gbraid so the offline loop retains attribution for those clicks. See Chapter 11.