1/* az-config.js: funnel configuration slots. Every empty value means "feature off, degrade safely". 2 Fill these in by editing this file (see ops/CONFIG.md for where each value comes from). 3 Nothing in this file is a secret: it ships to every visitor's browser. */ 4(function (g) { 5 var DEFAULTS = { 6 leadWebhookUrl: '', // n8n production webhook URL, e.g. https://x.jonny.cloud/webhook/az-lead-coaching 7 leadWebhookSecretHeader: '', // optional header NAME only (not a secret), sent with the constant value "az-lp-1" 8 snapshotWebhookUrl: '', // n8n production webhook URL for the AI leadership snapshot (falls back to leadWebhookUrl) 9 leadEndpointMode: 'n8n', // 'n8n' (POST to leadWebhookUrl) | 'mailto' (always use email fallback) | 'dryrun' (log payload, send nothing) 10 pixelId: '', // OpenAI Ads pixel id; empty means the pixel never loads 11 schedulerUrl: 'https://calendar.google.com/calendar/appointments/schedules/AcZssZ0susLIfOL6K0C89OXkXqud4pt60NFjsu3vHnb-g1QQXhRBo_g5Tfi8qrHEk6Piil4d3Po4asbN?gv=true', // Google Calendar appointment page (public). Cal.com and Calendly links also work. Empty shows the email fallback 12 priceLine: '', // e.g. a short price sentence; empty hides the price card 13 proofQuote: null, // null, or { text: '', name: '', role: '' } once a real, approved quote exists 14 legalEmail: '', // contact address shown in legal footers; empty falls back to [email protected] 15 ga4Id: '', // GA4 measurement id, informational (GA4 loads through GTM) 16 turnstileSiteKey: '' // Cloudflare Turnstile site key (public). Empty means no widget and no Cloudflare script 17 }; 18 var MODES = { n8n: 1, mailto: 1, dryrun: 1 }; 19 function create(w) { 20 var cfg = w.AZ_CONFIG && typeof w.AZ_CONFIG === 'object' ? w.AZ_CONFIG : {}; 21 var out = {}, k; 22 for (k in DEFAULTS) { 23 if (Object.prototype.hasOwnProperty.call(DEFAULTS, k)) { 24 out[k] = Object.prototype.hasOwnProperty.call(cfg, k) && cfg[k] !== undefined && cfg[k] !== null ? cfg[k] : DEFAULTS[k]; 25 } 26 } 27 if (cfg.proofQuote === null || cfg.proofQuote === undefined) out.proofQuote = null; 28 for (k in cfg) { 29 if (Object.prototype.hasOwnProperty.call(cfg, k) && !Object.prototype.hasOwnProperty.call(out, k)) out[k] = cfg[k]; 30 } 31 if (!MODES[out.leadEndpointMode]) out.leadEndpointMode = 'n8n'; 32 w.AZ_CONFIG = out; 33 return out; 34 } 35 create._defaults = DEFAULTS; 36 if (typeof module === 'object' && module.exports) { module.exports = create; } 37 else { create(g); } 38})(typeof window !== 'undefined' ? window : this);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.