[{"data":1,"prerenderedAt":394},["ShallowReactive",2],{"blog-how-to/waitlist-wix":3},{"id":4,"title":5,"body":6,"category":364,"date":365,"dateModified":365,"description":366,"draft":367,"extension":368,"faq":369,"featured":367,"keywords":377,"meta":378,"navigation":379,"ogDescription":380,"ogTitle":5,"path":381,"readTime":382,"schemaOrg":383,"schemaType":384,"seo":385,"sitemap":386,"stem":387,"tags":388,"twitterCard":392,"__hash__":393},"blog/blog/how-to/waitlist-wix.md","Wix Waitlist: Add Signups With Custom Code",{"type":7,"value":8,"toc":356},"minimark",[9,13,25,44,49,75,79,99,118,134,148,157,161,184,187,198,204,208,211,217,239,255,259,294,331],[10,11,12],"p",{},"A Wix site can have a perfectly designed coming-soon page and still tell you nothing about where its signups came from, because the usual Wix answer is a Wix Form that drops each email into a Wix inbox. No referral code, no source, no way to rank who is bringing friends.",[10,14,15,16,20,21,24],{},"The install is two pieces: one script tag in Wix ",[17,18,19],"strong",{},"Custom Code",", and one embed element wherever the form should sit. The one setting that decides whether this works across your whole site is the ",[17,22,23],{},"page scope"," on that Custom Code entry, and it is easy to leave on the wrong value.",[26,27,28],"tldr",{},[10,29,30,31,35,36,39,40,43],{},"Paste the OperatorStack script tag into ",[32,33,34],"code",{},"Settings > Custom Code",", placed in Body - end and applied to ",[17,37,38],{},"All pages",", then add an Embed element containing ",[32,41,42],{},"\u003Cdiv data-os-widget=\"waitlist\">\u003C/div>"," where the form should appear. Needs a Wix Premium plan. If tracking works on one page and nothing else, the Custom Code entry is scoped to specific pages.",[45,46,48],"h2",{"id":47},"what-you-need-before-you-start","What You Need Before You Start",[50,51,52,59,69],"ul",{},[53,54,55,58],"li",{},[17,56,57],{},"A Wix site on a Premium plan."," Custom Code is not available on the free plan.",[53,60,61,64,65,68],{},[17,62,63],{},"An OperatorStack account."," Free to start. You need the ",[32,66,67],{},"pk_"," project key from your embed snippet.",[53,70,71,74],{},[17,72,73],{},"Owner or admin access"," to the Wix dashboard. Custom Code lives in site Settings.",[45,76,78],{"id":77},"step-1-add-the-script-tag-site-wide","Step 1: Add the Script Tag Site-Wide",[80,81,83,89],"step",{"number":82},"1",[10,84,85,88],{},[17,86,87],{},"Create an OperatorStack project"," and copy your snippet:",[90,91,97],"pre",{"className":92,"code":94,"language":95,"meta":96},[93],"language-html","\u003Cscript src=\"https://operatorstack.dev/os.js\" data-project=\"pk_abc123\">\u003C/script>\n","html","",[32,98,94],{"__ignoreMap":96},[80,100,102],{"number":101},"2",[10,103,104,109,110,113,114,117],{},[17,105,106,107],{},"Open your Wix dashboard, go to ",[32,108,34],{},", and click ",[17,111,112],{},"Add Custom Code",". Paste the snippet and name it something findable, like ",[32,115,116],{},"OperatorStack",".",[80,119,121],{"number":120},"3",[10,122,123,126,127,129,130,133],{},[17,124,125],{},"Set the scope."," Under \"Add Code to Pages\", choose ",[17,128,38],{},", and under \"Place Code in\", choose ",[17,131,132],{},"Body - end",". Apply, then publish the site.",[135,136,137],"warning-box",{},[10,138,139,140,143,144,147],{},"The scope selector is the trap. Choosing ",[17,141,142],{},"Choose specific pages",", or leaving a single page ticked, saves without any warning and loads ",[32,145,146],{},"os.js"," only on those pages. Your waitlist form works there and every other page produces no page views, no source data and no referral attribution. If your dashboard shows signups but almost no traffic, check this setting first.",[10,149,150,151,156],{},"Once the tag is on every page you also get ",[152,153,155],"a",{"href":154},"/blog/how-to/analytics-without-cookie-banners","cookie-free analytics"," across the whole site, with no consent banner, because the embed sets no cookies.",[45,158,160],{"id":159},"step-2-place-the-form-with-an-embed-element","Step 2: Place the Form With an Embed Element",[80,162,164,173,179],{"number":163},"4",[10,165,166,172],{},[17,167,168,169],{},"In the Wix editor, choose ",[32,170,171],{},"Add Elements > Embed Code > Embed HTML",", drop it where the form belongs, and paste the div:",[90,174,177],{"className":175,"code":176,"language":95,"meta":96},[93],"\u003Cdiv data-os-widget=\"waitlist\">\u003C/div>\n",[32,178,176],{"__ignoreMap":96},[10,180,181,182,117],{},"No script tag in this box. The site-wide tag from Step 1 already loads ",[32,183,146],{},[10,185,186],{},"Wix Embed HTML elements render inside an isolated frame. If the widget does not pick up your project from the site-wide tag in your own test, use the custom form below instead, which runs against the page itself rather than a frame.",[10,188,189,190,193,194,197],{},"Only the ",[17,191,192],{},"first"," ",[32,195,196],{},"data-os-widget=\"waitlist\""," div on a page renders. A second one on the same page stays empty by design, so choose one placement.",[199,200,201],"tip-box",{},[10,202,203],{},"The editor preview does not run third-party scripts, so the element looks empty there. Publish and open the live URL in a normal tab before debugging anything.",[45,205,207],{"id":206},"a-custom-form-that-matches-your-wix-design","A Custom Form That Matches Your Wix Design",[10,209,210],{},"Write the markup yourself in the Embed element and call the SDK on submit:",[90,212,215],{"className":213,"code":214,"language":95,"meta":96},[93],"\u003Cform id=\"join\">\n  \u003Cinput type=\"email\" name=\"email\" placeholder=\"you@example.com\" required />\n  \u003Cbutton type=\"submit\">Join the waitlist\u003C/button>\n\u003C/form>\n\n\u003Cp id=\"done\" hidden>\n  You are in. Share your link:\n  \u003Ca id=\"share\" href=\"#\">\u003C/a>\n\u003C/p>\n\n\u003Cscript>\n  document.getElementById(\"join\").addEventListener(\"submit\", async (e) => {\n    e.preventDefault();\n    const { referral_code } = await OperatorStack.joinWaitlist({\n      email: e.target.email.value,\n    });\n    const links = OperatorStack.getShareLinks(referral_code, {\n      text: \"I just joined the waitlist\",\n    });\n    const share = document.getElementById(\"share\");\n    share.href = links.copy;\n    share.textContent = links.copy;\n    e.target.hidden = true;\n    document.getElementById(\"done\").hidden = false;\n  });\n\u003C/script>\n",[32,216,214],{"__ignoreMap":96},[10,218,219,222,223,226,227,230,231,234,235,238],{},[32,220,221],{},"joinWaitlist()"," resolves with ",[32,224,225],{},"{ success, referral_code, referral_link }",". ",[32,228,229],{},"getShareLinks()"," turns the code into ",[32,232,233],{},"{ twitter, linkedin, email, whatsapp, copy }",", where ",[32,236,237],{},"copy"," is the plain URL for a copy button.",[10,240,241,243,244,247,248,251,252,117],{},[32,242,229],{}," builds the URL from the current origin and path. A form on ",[32,245,246],{},"yoursite.com/coming-soon"," produces links ending ",[32,249,250],{},"/coming-soon?ref=CODE",", so referred visitors land on the page with the form. For a different target, build the URL yourself from ",[32,253,254],{},"referral_code",[45,256,258],{"id":257},"common-mistakes","Common Mistakes",[50,260,261,267,276,282,288],{},[53,262,263,266],{},[17,264,265],{},"Scoping Custom Code to one page."," Tracking then exists on that page only. Set it to All pages.",[53,268,269,272,273,275],{},[17,270,271],{},"Pasting the script tag into the Embed element as well."," The page loads ",[32,274,146],{}," twice. Script in Custom Code, div in the element.",[53,277,278,281],{},[17,279,280],{},"Judging the install from the editor."," Third-party scripts do not run there. Check the published page.",[53,283,284,287],{},[17,285,286],{},"Forgetting to publish."," Custom Code changes go live only after the site is published.",[53,289,290,293],{},[17,291,292],{},"Two widget divs on one page."," Only the first renders.",[295,296,297,304,313,319,325],"faq-section",{},[298,299,301],"faq-item",{"question":300},"Can I add a waitlist to Wix on the free plan?",[10,302,303],{},"No. Wix Custom Code, the Settings feature that injects a script into your pages, needs a Premium plan. Without it you can still paste code into an Embed HTML element, but that element is an isolated frame, so you lose site-wide analytics and the widget only works inside that one box.",[298,305,307],{"question":306},"Why does my Wix waitlist work on one page but analytics miss the rest?",[10,308,309,310,312],{},"The Custom Code entry was added with the Choose specific pages option, or with a single page selected. The script only loads on the pages you ticked. Edit the entry in ",[32,311,34],{},", set it to All pages, and publish.",[298,314,316],{"question":315},"Do I put the script in Head or Body - end?",[10,317,318],{},"Body - end. The embed fetches its widget config asynchronously and nothing above the fold waits on it, so the end of the body keeps it off the critical path. Head works, it just adds a request to the first paint for no gain.",[298,320,322],{"question":321},"Why is the form blank in the Wix editor?",[10,323,324],{},"The editor preview does not run third-party scripts. Publish the site, or open the live URL, and check it there in a normal tab before you conclude anything is broken.",[298,326,328],{"question":327},"Can I use Wix Forms instead of the waitlist widget?",[10,329,330],{},"For plain email capture, yes. For referral tracking, no. A Wix Form stores submissions in Wix and does not issue a referral code or count referrals per signup. You can keep the Wix look by building the form as an Embed element and calling the SDK on submit, shown above.",[332,333,334,335],"content-related-articles",{},"\n  ",[336,337,334,341],"contentrelatedcard",{"href":338,"title":339,"description":340},"/blog/how-to/waitlist-squarespace","Squarespace Waitlist: Add Signups With Code Injection","The same site-wide injection plus embedded block pattern, on a platform that gates it behind a Business plan.",[336,342,334,346],{"href":343,"title":344,"description":345},"/blog/how-to/ghost-waitlist","Ghost Waitlist: Add Signups Without a Plugin","Another hosted builder where the editor preview never runs your script and the form has to be checked on the live page.",[336,347,351],{"href":348,"title":349,"description":350},"/blog/how-to/social-share-links-waitlist","Waitlist Share Links: Add Social Sharing to Your Thank-You Page","What to do with the referral code after signup, using the same getShareLinks() call shown above.",[352,353],"cta-box",{"href":354,"label":355},"/","Get Started Free",{"title":96,"searchDepth":357,"depth":357,"links":358},2,[359,360,361,362,363],{"id":47,"depth":357,"text":48},{"id":77,"depth":357,"text":78},{"id":159,"depth":357,"text":160},{"id":206,"depth":357,"text":207},{"id":257,"depth":357,"text":258},"how-to","2026-10-20","Add a waitlist with referral tracking to Wix using Custom Code. Covers the Premium plan requirement and the page-scope setting that breaks tracking.",false,"md",[370,371,373,374,375],{"question":300,"answer":303},{"question":306,"answer":372},"The Custom Code entry was added with the Choose specific pages option, or with a single page selected. The script only loads on the pages you ticked. Edit the entry in Settings > Custom Code and set it to All pages, then publish.",{"question":315,"answer":318},{"question":321,"answer":324},{"question":327,"answer":376},"For plain email capture, yes. For referral tracking, no. A Wix Form stores submissions in Wix and does not issue a referral code or count referrals per signup. You can keep the Wix look by building the form as an Embed element and calling the SDK on submit, shown below.","wix waitlist,add waitlist to wix,wix custom code,wix email signup,wix referral signups,wix embed code",{},true,"One script tag in Wix Custom Code, set to all pages, plus an embed element for the form. Covers the scope setting that silently drops tracking.","/blog/how-to/waitlist-wix","7 min","[object Object]","HowTo",{"title":5,"description":366},{"loc":381},"blog/how-to/waitlist-wix",[389,390,391],"wix","waitlist","custom-code","summary_large_image","4e_JmdlBAh_33lx9HZydzfUYKhecMnlFQJuDs-HoR1g",1792506545643]