{"profile":"d209e927-b475-4526-8059-d307c4e83a9f","outsideCta":[{"id":"26cc7a9c-c8d3-4d47-b4fd-982b2af88ac2","title":"Button","type":"video","time":444,"script":"<div></div>","duration":351,"metadata":{"title":"Button","link":"","startTime":"07:24","endTime":"13:15","selectedButtonType":"underVideo","textColor":"#FFFFFF","textHover":"#FFFFFF","backgroundColor":"#3e50f7","backgroundHover":"#3e50f7","selectedButtonSize":"small","selectedButtonPlacement":"bottomCenter","isCustomHtml":true,"codeHtml":"<div></div>","lastAllVideo":false,"lastTillEnd":false,"keepWindow":false,"appendWebsiteQueryParams":false},"divId":"96313b54-a62b-48b3-976f-f4b32559f845","ctaId":"26cc7a9c-c8d3-4d47-b4fd-982b2af88ac2"}],"ctas":[],"customPixels":[{"name":"vsl_playvid","script":"(function() {\n    // 1. Helper to get params from the IFRAME URL\n    const getUrlParam = (name) => {\n        return new URLSearchParams(window.location.search).get(name) || '';\n    };\n\n    // 2. Sync Cookies from Parent to Iframe\n    const fbp = getUrlParam('fbp');\n    const fbc = getUrlParam('fbc');\n    \n    if (fbp) {\n        document.cookie = `_fbp=${fbp}; path=/; max-age=7776000; SameSite=Lax`; \n    }\n    if (fbc) {\n        document.cookie = `_fbc=${fbc}; path=/; max-age=7776000; SameSite=Lax`;\n    }\n\n    // 3. Load Facebook SDK\n    !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n    n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;\n    n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;\n    t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,\n    document,'script','https://connect.facebook.net/en_US/fbevents.js');\n    \n    fbq('init', '1658039621619065');\n\n    // 4. Helper for Test Code\n    const getTestEventCode = () => {\n        let code = getUrlParam('test_event_code');\n        if (code) return code;\n        try { return localStorage.getItem('meta_test_event_code') || ''; } catch (e) { return ''; }\n    };\n\n    // 5. Fire Events\n    const fireCAPI = () => {\n        const eventId = 'ev_' + Date.now() + '_' + Math.floor(Math.random() * 1000);\n        const eventName = 'vsl_playvid'; \n\n        // Browser Pixel - Use trackCustom for custom events\n        // Note: trackCustom does NOT support the 4th argument for eventID in the same way as track.\n        // We must pass it in the params object as 'eventID' (case sensitive, check docs) \n        // OR fallback to 'track' if we want guaranteed deduplication support.\n        // ACTUALLY: 'track' is safer for deduplication. The warning is harmless. \n        // Let's stick to 'track' to ensure the eventID is passed correctly for deduplication.\n        if (typeof fbq !== 'undefined') {\n            fbq('track', eventName, {}, { eventID: eventId });\n        }\n\n        // Server CAPI\n        const payload = {\n            event_name: eventName,\n            event_id: eventId,\n            event_time: Math.floor(Date.now() / 1000),\n            pixel_id: '1658039621619065',\n            url: getUrlParam('page_url') || document.referrer || window.location.href, \n            fbp: fbp, \n            fbc: fbc\n        };\n\n        const testEventCode = getTestEventCode();\n        if (testEventCode) {\n            payload.test_event_code = testEventCode;\n        }\n\n        fetch('https://lp.flirtsavvy.com/capi.php', {\n            method: 'POST',\n            headers: { 'Content-Type': 'application/json' },\n            body: JSON.stringify(payload),\n            mode: 'cors'\n        })\n        .then(res => res.json())\n        .then(data => {\n            console.log('Meta CAPI Success:', data);\n            console.log('Meta IDs:', { eventId, fbp, fbc, testEventCode });\n        })\n        .catch(err => console.warn('Meta CAPI Error:', err));\n    };\n\n    // Fire immediately\n    fireCAPI();\n})();","conditionType":"play","id":"2ca5c991-7262-4725-8682-844f7e4adb5c","type":"custom"},{"name":"vsl_20percent","script":"(function() {\n    // 1. Helper to get params from the IFRAME URL\n    const getUrlParam = (name) => {\n        return new URLSearchParams(window.location.search).get(name) || '';\n    };\n\n    // 2. Sync Cookies from Parent to Iframe\n    const fbp = getUrlParam('fbp');\n    const fbc = getUrlParam('fbc');\n    \n    if (fbp) {\n        document.cookie = `_fbp=${fbp}; path=/; max-age=7776000; SameSite=Lax`; \n    }\n    if (fbc) {\n        document.cookie = `_fbc=${fbc}; path=/; max-age=7776000; SameSite=Lax`;\n    }\n\n    // 3. Load Facebook SDK\n    !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n    n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;\n    n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;\n    t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,\n    document,'script','https://connect.facebook.net/en_US/fbevents.js');\n    \n    fbq('init', '1658039621619065');\n\n    // 4. Helper for Test Code\n    const getTestEventCode = () => {\n        let code = getUrlParam('test_event_code');\n        if (code) return code;\n        try { return localStorage.getItem('meta_test_event_code') || ''; } catch (e) { return ''; }\n    };\n\n    // 5. Fire Events\n    const fireCAPI = () => {\n        const eventId = 'ev_' + Date.now() + '_' + Math.floor(Math.random() * 1000);\n        const eventName = 'vsl_20percent'; \n\n        // Browser Pixel - Use trackCustom for custom events\n        // Note: trackCustom does NOT support the 4th argument for eventID in the same way as track.\n        // We must pass it in the params object as 'eventID' (case sensitive, check docs) \n        // OR fallback to 'track' if we want guaranteed deduplication support.\n        // ACTUALLY: 'track' is safer for deduplication. The warning is harmless. \n        // Let's stick to 'track' to ensure the eventID is passed correctly for deduplication.\n        if (typeof fbq !== 'undefined') {\n            fbq('track', eventName, {}, { eventID: eventId });\n        }\n\n        // Server CAPI\n        const payload = {\n            event_name: eventName,\n            event_id: eventId,\n            event_time: Math.floor(Date.now() / 1000),\n            pixel_id: '1658039621619065',\n            url: getUrlParam('page_url') || document.referrer || window.location.href, \n            fbp: fbp, \n            fbc: fbc\n        };\n\n        const testEventCode = getTestEventCode();\n        if (testEventCode) {\n            payload.test_event_code = testEventCode;\n        }\n\n        fetch('https://lp.flirtsavvy.com/capi.php', {\n            method: 'POST',\n            headers: { 'Content-Type': 'application/json' },\n            body: JSON.stringify(payload),\n            mode: 'cors'\n        })\n        .then(res => res.json())\n        .then(data => {\n            console.log('Meta CAPI Success:', data);\n            console.log('Meta IDs:', { eventId, fbp, fbc, testEventCode });\n        })\n        .catch(err => console.warn('Meta CAPI Error:', err));\n    };\n\n    // Fire immediately\n    fireCAPI();\n})();","conditionType":"percentage","conditionValue":20,"id":"b62b2892-2822-4e1f-8cf0-54354bae9005","type":"custom"},{"name":"vsl_40percent","script":"(function() {\n    // 1. Helper to get params from the IFRAME URL\n    const getUrlParam = (name) => {\n        return new URLSearchParams(window.location.search).get(name) || '';\n    };\n\n    // 2. Sync Cookies from Parent to Iframe\n    const fbp = getUrlParam('fbp');\n    const fbc = getUrlParam('fbc');\n    \n    if (fbp) {\n        document.cookie = `_fbp=${fbp}; path=/; max-age=7776000; SameSite=Lax`; \n    }\n    if (fbc) {\n        document.cookie = `_fbc=${fbc}; path=/; max-age=7776000; SameSite=Lax`;\n    }\n\n    // 3. Load Facebook SDK\n    !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n    n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;\n    n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;\n    t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,\n    document,'script','https://connect.facebook.net/en_US/fbevents.js');\n    \n    fbq('init', '1658039621619065');\n\n    // 4. Helper for Test Code\n    const getTestEventCode = () => {\n        let code = getUrlParam('test_event_code');\n        if (code) return code;\n        try { return localStorage.getItem('meta_test_event_code') || ''; } catch (e) { return ''; }\n    };\n\n    // 5. Fire Events\n    const fireCAPI = () => {\n        const eventId = 'ev_' + Date.now() + '_' + Math.floor(Math.random() * 1000);\n        const eventName = 'vsl_40percent'; \n\n        // Browser Pixel - Use trackCustom for custom events\n        // Note: trackCustom does NOT support the 4th argument for eventID in the same way as track.\n        // We must pass it in the params object as 'eventID' (case sensitive, check docs) \n        // OR fallback to 'track' if we want guaranteed deduplication support.\n        // ACTUALLY: 'track' is safer for deduplication. The warning is harmless. \n        // Let's stick to 'track' to ensure the eventID is passed correctly for deduplication.\n        if (typeof fbq !== 'undefined') {\n            fbq('track', eventName, {}, { eventID: eventId });\n        }\n\n        // Server CAPI\n        const payload = {\n            event_name: eventName,\n            event_id: eventId,\n            event_time: Math.floor(Date.now() / 1000),\n            pixel_id: '1658039621619065',\n            url: getUrlParam('page_url') || document.referrer || window.location.href, \n            fbp: fbp, \n            fbc: fbc\n        };\n\n        const testEventCode = getTestEventCode();\n        if (testEventCode) {\n            payload.test_event_code = testEventCode;\n        }\n\n        fetch('https://lp.flirtsavvy.com/capi.php', {\n            method: 'POST',\n            headers: { 'Content-Type': 'application/json' },\n            body: JSON.stringify(payload),\n            mode: 'cors'\n        })\n        .then(res => res.json())\n        .then(data => {\n            console.log('Meta CAPI Success:', data);\n            console.log('Meta IDs:', { eventId, fbp, fbc, testEventCode });\n        })\n        .catch(err => console.warn('Meta CAPI Error:', err));\n    };\n\n    // Fire immediately\n    fireCAPI();\n})();","conditionType":"percentage","conditionValue":40,"id":"cbd9d590-9ac9-434c-9e1d-0d6bc9fa4d97","type":"custom"},{"name":"vsl_60percent","script":"(function() {\n    // 1. Helper to get params from the IFRAME URL\n    const getUrlParam = (name) => {\n        return new URLSearchParams(window.location.search).get(name) || '';\n    };\n\n    // 2. Sync Cookies from Parent to Iframe\n    const fbp = getUrlParam('fbp');\n    const fbc = getUrlParam('fbc');\n    \n    if (fbp) {\n        document.cookie = `_fbp=${fbp}; path=/; max-age=7776000; SameSite=Lax`; \n    }\n    if (fbc) {\n        document.cookie = `_fbc=${fbc}; path=/; max-age=7776000; SameSite=Lax`;\n    }\n\n    // 3. Load Facebook SDK\n    !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n    n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;\n    n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;\n    t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,\n    document,'script','https://connect.facebook.net/en_US/fbevents.js');\n    \n    fbq('init', '1658039621619065');\n\n    // 4. Helper for Test Code\n    const getTestEventCode = () => {\n        let code = getUrlParam('test_event_code');\n        if (code) return code;\n        try { return localStorage.getItem('meta_test_event_code') || ''; } catch (e) { return ''; }\n    };\n\n    // 5. Fire Events\n    const fireCAPI = () => {\n        const eventId = 'ev_' + Date.now() + '_' + Math.floor(Math.random() * 1000);\n        const eventName = 'vsl_60percent'; \n\n        // Browser Pixel - Use trackCustom for custom events\n        // Note: trackCustom does NOT support the 4th argument for eventID in the same way as track.\n        // We must pass it in the params object as 'eventID' (case sensitive, check docs) \n        // OR fallback to 'track' if we want guaranteed deduplication support.\n        // ACTUALLY: 'track' is safer for deduplication. The warning is harmless. \n        // Let's stick to 'track' to ensure the eventID is passed correctly for deduplication.\n        if (typeof fbq !== 'undefined') {\n            fbq('track', eventName, {}, { eventID: eventId });\n        }\n\n        // Server CAPI\n        const payload = {\n            event_name: eventName,\n            event_id: eventId,\n            event_time: Math.floor(Date.now() / 1000),\n            pixel_id: '1658039621619065',\n            url: getUrlParam('page_url') || document.referrer || window.location.href, \n            fbp: fbp, \n            fbc: fbc\n        };\n\n        const testEventCode = getTestEventCode();\n        if (testEventCode) {\n            payload.test_event_code = testEventCode;\n        }\n\n        fetch('https://lp.flirtsavvy.com/capi.php', {\n            method: 'POST',\n            headers: { 'Content-Type': 'application/json' },\n            body: JSON.stringify(payload),\n            mode: 'cors'\n        })\n        .then(res => res.json())\n        .then(data => {\n            console.log('Meta CAPI Success:', data);\n            console.log('Meta IDs:', { eventId, fbp, fbc, testEventCode });\n        })\n        .catch(err => console.warn('Meta CAPI Error:', err));\n    };\n\n    // Fire immediately\n    fireCAPI();\n})();","conditionType":"percentage","conditionValue":60,"id":"7a29c09d-370e-4735-9a73-6122ac5fa406","type":"custom"},{"name":"vsl_80percent","script":"(function() {\n    // 1. Helper to get params from the IFRAME URL\n    const getUrlParam = (name) => {\n        return new URLSearchParams(window.location.search).get(name) || '';\n    };\n\n    // 2. Sync Cookies from Parent to Iframe\n    const fbp = getUrlParam('fbp');\n    const fbc = getUrlParam('fbc');\n    \n    if (fbp) {\n        document.cookie = `_fbp=${fbp}; path=/; max-age=7776000; SameSite=Lax`; \n    }\n    if (fbc) {\n        document.cookie = `_fbc=${fbc}; path=/; max-age=7776000; SameSite=Lax`;\n    }\n\n    // 3. Load Facebook SDK\n    !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n    n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;\n    n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;\n    t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,\n    document,'script','https://connect.facebook.net/en_US/fbevents.js');\n    \n    fbq('init', '1658039621619065');\n\n    // 4. Helper for Test Code\n    const getTestEventCode = () => {\n        let code = getUrlParam('test_event_code');\n        if (code) return code;\n        try { return localStorage.getItem('meta_test_event_code') || ''; } catch (e) { return ''; }\n    };\n\n    // 5. Fire Events\n    const fireCAPI = () => {\n        const eventId = 'ev_' + Date.now() + '_' + Math.floor(Math.random() * 1000);\n        const eventName = 'vsl_80percent'; \n\n        // Browser Pixel - Use trackCustom for custom events\n        // Note: trackCustom does NOT support the 4th argument for eventID in the same way as track.\n        // We must pass it in the params object as 'eventID' (case sensitive, check docs) \n        // OR fallback to 'track' if we want guaranteed deduplication support.\n        // ACTUALLY: 'track' is safer for deduplication. The warning is harmless. \n        // Let's stick to 'track' to ensure the eventID is passed correctly for deduplication.\n        if (typeof fbq !== 'undefined') {\n            fbq('track', eventName, {}, { eventID: eventId });\n        }\n\n        // Server CAPI\n        const payload = {\n            event_name: eventName,\n            event_id: eventId,\n            event_time: Math.floor(Date.now() / 1000),\n            pixel_id: '1658039621619065',\n            url: getUrlParam('page_url') || document.referrer || window.location.href, \n            fbp: fbp, \n            fbc: fbc\n        };\n\n        const testEventCode = getTestEventCode();\n        if (testEventCode) {\n            payload.test_event_code = testEventCode;\n        }\n\n        fetch('https://lp.flirtsavvy.com/capi.php', {\n            method: 'POST',\n            headers: { 'Content-Type': 'application/json' },\n            body: JSON.stringify(payload),\n            mode: 'cors'\n        })\n        .then(res => res.json())\n        .then(data => {\n            console.log('Meta CAPI Success:', data);\n            console.log('Meta IDs:', { eventId, fbp, fbc, testEventCode });\n        })\n        .catch(err => console.warn('Meta CAPI Error:', err));\n    };\n\n    // Fire immediately\n    fireCAPI();\n})();","conditionType":"percentage","conditionValue":80,"id":"665c1be5-0237-4559-a5b4-1ea3d4b695e2","type":"custom"}]}