{"id":9918,"date":"2026-02-19T12:51:18","date_gmt":"2026-02-19T10:51:18","guid":{"rendered":"https:\/\/zebrasign.com\/?page_id=9918"},"modified":"2026-03-02T14:28:49","modified_gmt":"2026-03-02T12:28:49","slug":"massage-intake-form","status":"publish","type":"page","link":"https:\/\/zebrasign.com\/en\/massage-intake-form\/","title":{"rendered":"PPC &#8211; Massage Intake"},"content":{"rendered":"<div id=\"zebra-affiliates-app-b494db0ec7292e7c8350ba52fea75451\" class=\"page-frame\" data-zebra-affiliates-app=\"true\" data-zebra-app-url=\"https:\/\/intake-templates-ace.lovable.app\"><\/div>\n        <link rel=\"stylesheet\" href=\"https:\/\/zebrasign.com\/en\/wp-json\/zebrasign\/v1\/proxy-asset\/?url=https%3A%2F%2Fintake-templates-ace.lovable.app%2Fassets%2Findex-U7c_G4hI.css\" data-zebra-affiliates-scope=\"zebra-affiliates-app-b494db0ec7292e7c8350ba52fea75451\">\n        <script>\n    (function() {\n        var containerId = \"zebra-affiliates-app-b494db0ec7292e7c8350ba52fea75451\";\n        var scriptSrc = \"https:\/\/zebrasign.com\/en\/wp-json\/zebrasign\/v1\/proxy-asset\/?url=https%3A%2F%2Fintake-templates-ace.lovable.app%2Fassets%2Findex-Bl8VEK_H.js\";\n        var containerClass = \"page-frame\";\n        var appUrl = \"https:\/\/intake-templates-ace.lovable.app\";\n        \n        \/\/ Fallback to iframe if mounting fails\n        function fallbackToIframe() {\n            var container = ensureContainer();\n            if (!container) {\n                console.error(\"ZebraAffiliatesApp: Cannot create iframe fallback - container not found\");\n                return;\n            }\n            \/\/ Check if iframe already exists\n            if (container.querySelector(\"iframe\")) {\n                console.log(\"ZebraAffiliatesApp: Iframe fallback already exists\");\n                return;\n            }\n            console.warn(\"ZebraAffiliatesApp: Falling back to iframe embedding\");\n            \/\/ Clear container content\n            container.innerHTML = \"\";\n            \/\/ Create iframe\n            var iframe = document.createElement(\"iframe\");\n            iframe.src = appUrl;\n            iframe.style.width = \"100%\";\n            iframe.style.height = \"100vh\";\n            iframe.style.border = \"none\";\n            iframe.style.minHeight = \"600px\";\n            iframe.setAttribute(\"title\", \"Zebra Affiliates App\");\n            iframe.setAttribute(\"loading\", \"lazy\");\n            iframe.setAttribute(\"sandbox\", \"allow-same-origin allow-scripts allow-forms allow-popups allow-top-navigation\");\n            container.appendChild(iframe);\n        }\n        \n        \/\/ Ensure container exists - create it if WordPress stripped it\n        function ensureContainer() {\n            var container = document.getElementById(containerId);\n            if (!container) {\n                \/\/ Try to find by data attribute\n                container = document.querySelector('[data-zebra-affiliates-app=\"true\"]');\n                if (!container) {\n                    \/\/ Create container if it doesn't exist\n                    container = document.createElement(\"div\");\n                    container.id = containerId;\n                    container.className = containerClass;\n                    container.setAttribute(\"data-zebra-affiliates-app\", \"true\");\n                    \/\/ Try to find a parent container or append to body\n                    var parent = document.querySelector(\".page-frame\") || document.querySelector(\"main\") || document.body;\n                    if (parent) {\n                        parent.appendChild(container);\n                        console.warn(\"ZebraAffiliatesApp: Container was missing, created:\", containerId);\n                    }\n                } else {\n                    \/\/ Found by data attribute but missing ID - add it\n                    container.id = containerId;\n                    console.warn(\"ZebraAffiliatesApp: Container found but missing ID, restored:\", containerId);\n                }\n            }\n            return container;\n        }\n        \n        function mountApp() {\n            var container = ensureContainer();\n            if (!container || !window.ZebraAffiliatesApp || typeof window.ZebraAffiliatesApp.mount !== \"function\") {\n                return false;\n            }\n            try {\n                window.ZebraAffiliatesApp.mount(containerId);\n                return true;\n            } catch (error) {\n                console.error(\"Error mounting ZebraAffiliatesApp:\", error);\n                return false;\n            }\n        }\n        \n        if (mountApp()) return;\n        \n        var script = document.createElement(\"script\");\n        script.type = \"module\";\n        script.src = scriptSrc;\n        \n        script.onload = function() {\n            \/\/ Wait for React app to initialize - Lovable apps need time to set up\n            setTimeout(function() {\n                var attempts = 0;\n                var maxAttempts = 50; \/\/ Reduced to 50 attempts (5 seconds total)\n                var checkMount = setInterval(function() {\n                    attempts++;\n                    if (mountApp()) {\n                        clearInterval(checkMount);\n                        } else if (attempts >= maxAttempts) {\n                        clearInterval(checkMount);\n                        if (!window.ZebraAffiliatesApp) {\n                            console.error(\"ZebraAffiliatesApp: Global object not found after \" + (maxAttempts * 0.1) + \" seconds\");\n                        } else if (typeof window.ZebraAffiliatesApp.mount !== \"function\") {\n                            console.error(\"ZebraAffiliatesApp: mount function not available. Object keys:\", Object.keys(window.ZebraAffiliatesApp));\n                        }\n                        \/\/ Fallback to iframe after all retries failed\n                        fallbackToIframe();\n                    }\n                }, 100);\n            }, 200); \/\/ Reduced initial delay to 200ms after script loads\n        };\n        \n        script.onerror = function() {\n            console.error(\"Failed to load Zebra Affiliates app script:\", scriptSrc);\n            \/\/ Fallback to iframe on script load error\n            fallbackToIframe();\n        };\n        \n        \/\/ Wait for DOM to be ready before adding script\n        function addScript() {\n            if (document.head) {\n                document.head.appendChild(script);\n            } else {\n                setTimeout(addScript, 50);\n            }\n        }\n        \n        if (document.readyState === \"loading\") {\n            document.addEventListener(\"DOMContentLoaded\", addScript);\n        } else {\n            addScript();\n        }\n    })();\n    <\/script>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":10,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v22.8 (Yoast SEO v22.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>ZebraSign - Massage Intake Form<\/title>\n<meta name=\"description\" content=\"Create and send massage intake forms online. Collect secure e-signatures, reduce paperwork, and speed up client check-ins with ZebraSign.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zebrasign.com\/en\/massage-intake-form\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PPC &#8211; Massage Intake\" \/>\n<meta property=\"og:description\" content=\"Create and send massage intake forms online. Collect secure e-signatures, reduce paperwork, and speed up client check-ins with ZebraSign.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zebrasign.com\/en\/massage-intake-form\/\" \/>\n<meta property=\"og:site_name\" content=\"ZebraSign\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-02T12:28:49+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/zebrasign.com\/en\/massage-intake-form\/\",\"url\":\"https:\/\/zebrasign.com\/en\/massage-intake-form\/\",\"name\":\"ZebraSign - Massage Intake Form\",\"isPartOf\":{\"@id\":\"https:\/\/zebrasign.com\/en\/#website\"},\"datePublished\":\"2026-02-19T10:51:18+00:00\",\"dateModified\":\"2026-03-02T12:28:49+00:00\",\"description\":\"Create and send massage intake forms online. Collect secure e-signatures, reduce paperwork, and speed up client check-ins with ZebraSign.\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/zebrasign.com\/en\/massage-intake-form\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/zebrasign.com\/en\/#website\",\"url\":\"https:\/\/zebrasign.com\/en\/\",\"name\":\"ZebraSign\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/zebrasign.com\/en\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"ZebraSign - Massage Intake Form","description":"Create and send massage intake forms online. Collect secure e-signatures, reduce paperwork, and speed up client check-ins with ZebraSign.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zebrasign.com\/en\/massage-intake-form\/","og_locale":"en_US","og_type":"article","og_title":"PPC &#8211; Massage Intake","og_description":"Create and send massage intake forms online. Collect secure e-signatures, reduce paperwork, and speed up client check-ins with ZebraSign.","og_url":"https:\/\/zebrasign.com\/en\/massage-intake-form\/","og_site_name":"ZebraSign","article_modified_time":"2026-03-02T12:28:49+00:00","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/zebrasign.com\/en\/massage-intake-form\/","url":"https:\/\/zebrasign.com\/en\/massage-intake-form\/","name":"ZebraSign - Massage Intake Form","isPartOf":{"@id":"https:\/\/zebrasign.com\/en\/#website"},"datePublished":"2026-02-19T10:51:18+00:00","dateModified":"2026-03-02T12:28:49+00:00","description":"Create and send massage intake forms online. Collect secure e-signatures, reduce paperwork, and speed up client check-ins with ZebraSign.","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zebrasign.com\/en\/massage-intake-form\/"]}]},{"@type":"WebSite","@id":"https:\/\/zebrasign.com\/en\/#website","url":"https:\/\/zebrasign.com\/en\/","name":"ZebraSign","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zebrasign.com\/en\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/zebrasign.com\/en\/wp-json\/wp\/v2\/pages\/9918"}],"collection":[{"href":"https:\/\/zebrasign.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/zebrasign.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/zebrasign.com\/en\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/zebrasign.com\/en\/wp-json\/wp\/v2\/comments?post=9918"}],"version-history":[{"count":2,"href":"https:\/\/zebrasign.com\/en\/wp-json\/wp\/v2\/pages\/9918\/revisions"}],"predecessor-version":[{"id":9920,"href":"https:\/\/zebrasign.com\/en\/wp-json\/wp\/v2\/pages\/9918\/revisions\/9920"}],"wp:attachment":[{"href":"https:\/\/zebrasign.com\/en\/wp-json\/wp\/v2\/media?parent=9918"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}