[{"data":1,"prerenderedAt":452},["ShallowReactive",2],{"docsv3-nav":3,"\u002Fdocs\u002Fv3\u002Fintegrations\u002Fthinkific-account-sharing-prevention":219},[4],{"title":5,"path":6,"stem":7,"children":8,"page":188},"V3","\u002Fdocs\u002Fv3","1.docs\u002Fv3",[9,13,17,21,38,87,189,198],{"title":10,"path":11,"stem":12},"Introduction","\u002Fdocs\u002Fv3\u002Fintroduction","1.docs\u002Fv3\u002F1.Introduction",{"title":14,"path":15,"stem":16},"Quick start","\u002Fdocs\u002Fv3\u002Fquick-start","1.docs\u002Fv3\u002F2.Quick start",{"title":18,"path":19,"stem":20},"Challenge flow","\u002Fdocs\u002Fv3\u002Fchallenge-flow","1.docs\u002Fv3\u002F3.Challenge flow",{"title":22,"path":23,"stem":24,"children":25},"Fundamentals","\u002Fdocs\u002Fv3\u002Ffundamentals","1.docs\u002Fv3\u002F4.fundamentals",[26,30,34],{"title":27,"path":28,"stem":29},"Signup protection","\u002Fdocs\u002Fv3\u002Ffundamentals\u002Fsignup-protection","1.docs\u002Fv3\u002F4.fundamentals\u002F00.Signup protection",{"title":31,"path":32,"stem":33},"Login protection","\u002Fdocs\u002Fv3\u002Ffundamentals\u002Flogin-protection","1.docs\u002Fv3\u002F4.fundamentals\u002F01.Login protection",{"title":35,"path":36,"stem":37},"Access protection","\u002Fdocs\u002Fv3\u002Ffundamentals\u002Faccess-protection","1.docs\u002Fv3\u002F4.fundamentals\u002F02.Access protection",{"title":39,"path":40,"stem":41,"children":42},"Guides","\u002Fdocs\u002Fv3\u002Fguides","1.docs\u002Fv3\u002F5.guides",[43,47,51,55,59,63,67,71,75,79,83],{"title":44,"path":45,"stem":46},"Account sharing prevention","\u002Fdocs\u002Fv3\u002Fguides\u002Faccount-sharing-prevention","1.docs\u002Fv3\u002F5.guides\u002F1.Account sharing prevention",{"title":48,"path":49,"stem":50},"Web scraping prevention","\u002Fdocs\u002Fv3\u002Fguides\u002Fweb-scraping-prevention","1.docs\u002Fv3\u002F5.guides\u002F13.Web scraping prevention",{"title":52,"path":53,"stem":54},"Ban enforcement","\u002Fdocs\u002Fv3\u002Fguides\u002Fban-enforcement","1.docs\u002Fv3\u002F5.guides\u002F14.Ban enforcement",{"title":56,"path":57,"stem":58},"Chargeback dispute","\u002Fdocs\u002Fv3\u002Fguides\u002Fchargeback-dispute","1.docs\u002Fv3\u002F5.guides\u002F15.Chargeback dispute",{"title":60,"path":61,"stem":62},"Multi-accounting prevention","\u002Fdocs\u002Fv3\u002Fguides\u002Fmulti-accounting-prevention","1.docs\u002Fv3\u002F5.guides\u002F16.Multi-accounting prevention",{"title":64,"path":65,"stem":66},"Account takeover prevention","\u002Fdocs\u002Fv3\u002Fguides\u002Faccount-takeover-prevention","1.docs\u002Fv3\u002F5.guides\u002F2.Account takeover prevention",{"title":68,"path":69,"stem":70},"Risky transaction prevention","\u002Fdocs\u002Fv3\u002Fguides\u002Frisky-transaction-prevention","1.docs\u002Fv3\u002F5.guides\u002F20.Risky transaction prevention",{"title":72,"path":73,"stem":74},"Fake account detection","\u002Fdocs\u002Fv3\u002Fguides\u002Ffake-account-detection","1.docs\u002Fv3\u002F5.guides\u002F3.Fake account detection",{"title":76,"path":77,"stem":78},"Bot detection","\u002Fdocs\u002Fv3\u002Fguides\u002Fbot-detection","1.docs\u002Fv3\u002F5.guides\u002F4.Bot detection",{"title":80,"path":81,"stem":82},"Card testing prevention","\u002Fdocs\u002Fv3\u002Fguides\u002Fcard-testing-prevention","1.docs\u002Fv3\u002F5.guides\u002F5.Card testing prevention",{"title":84,"path":85,"stem":86},"Incentive abuse prevention","\u002Fdocs\u002Fv3\u002Fguides\u002Fincentive-abuse-prevention","1.docs\u002Fv3\u002F5.guides\u002F9.Incentive abuse prevention",{"title":88,"path":89,"stem":90,"children":91,"page":188},"Concepts","\u002Fdocs\u002Fv3\u002Fconcepts","1.docs\u002Fv3\u002F6.concepts",[92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184],{"title":93,"path":94,"stem":95},"Evaluations","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fevaluations","1.docs\u002Fv3\u002F6.concepts\u002F01.evaluations",{"title":97,"path":98,"stem":99},"Actions","\u002Fdocs\u002Fv3\u002Fconcepts\u002Factions","1.docs\u002Fv3\u002F6.concepts\u002F02.actions",{"title":101,"path":102,"stem":103},"Signals","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fsignals","1.docs\u002Fv3\u002F6.concepts\u002F03.signals",{"title":105,"path":106,"stem":107},"Checks","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fchecks","1.docs\u002Fv3\u002F6.concepts\u002F04.checks",{"title":109,"path":110,"stem":111},"Risks","\u002Fdocs\u002Fv3\u002Fconcepts\u002Frisks","1.docs\u002Fv3\u002F6.concepts\u002F05.risks",{"title":113,"path":114,"stem":115},"Verdicts","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fverdicts","1.docs\u002Fv3\u002F6.concepts\u002F06.verdicts",{"title":117,"path":118,"stem":119},"Policies","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fpolicies","1.docs\u002Fv3\u002F6.concepts\u002F07.policies",{"title":121,"path":122,"stem":123},"Challenges","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fchallenges","1.docs\u002Fv3\u002F6.concepts\u002F08.challenges",{"title":125,"path":126,"stem":127},"Concurrency","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fconcurrency","1.docs\u002Fv3\u002F6.concepts\u002F09.concurrency",{"title":129,"path":130,"stem":131},"Impossible travel","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fimpossible-travel","1.docs\u002Fv3\u002F6.concepts\u002F10.impossible-travel",{"title":133,"path":134,"stem":135},"Bots","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fbots","1.docs\u002Fv3\u002F6.concepts\u002F11.bots",{"title":137,"path":138,"stem":139},"Devices","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fdevices","1.docs\u002Fv3\u002F6.concepts\u002F12.devices",{"title":141,"path":142,"stem":143},"Fingerprints","\u002Fdocs\u002Fv3\u002Fconcepts\u002Ffingerprints","1.docs\u002Fv3\u002F6.concepts\u002F13.fingerprints",{"title":145,"path":146,"stem":147},"People","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fpeople","1.docs\u002Fv3\u002F6.concepts\u002F14.people",{"title":149,"path":150,"stem":151},"Lists","\u002Fdocs\u002Fv3\u002Fconcepts\u002Flists","1.docs\u002Fv3\u002F6.concepts\u002F15.lists",{"title":153,"path":154,"stem":155},"Account takeover","\u002Fdocs\u002Fv3\u002Fconcepts\u002Faccount-takeover","1.docs\u002Fv3\u002F6.concepts\u002F16.account-takeover",{"title":157,"path":158,"stem":159},"Account sharing","\u002Fdocs\u002Fv3\u002Fconcepts\u002Faccount-sharing","1.docs\u002Fv3\u002F6.concepts\u002F17.account-sharing",{"title":161,"path":162,"stem":163},"Fake account","\u002Fdocs\u002Fv3\u002Fconcepts\u002Ffake-account","1.docs\u002Fv3\u002F6.concepts\u002F18.fake-account",{"title":165,"path":166,"stem":167},"Scraping","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fscraping","1.docs\u002Fv3\u002F6.concepts\u002F19.scraping",{"title":169,"path":170,"stem":171},"Linked accounts","\u002Fdocs\u002Fv3\u002Fconcepts\u002Flinked-accounts","1.docs\u002Fv3\u002F6.concepts\u002F20.linked-accounts",{"title":173,"path":174,"stem":175},"New IP","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fip","1.docs\u002Fv3\u002F6.concepts\u002F21.ip",{"title":177,"path":178,"stem":179},"Anonymizing network","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fanonymizing-network","1.docs\u002Fv3\u002F6.concepts\u002F22.anonymizing-network",{"title":181,"path":182,"stem":183},"Email quality","\u002Fdocs\u002Fv3\u002Fconcepts\u002Femail","1.docs\u002Fv3\u002F6.concepts\u002F23.email",{"title":185,"path":186,"stem":187},"Velocity","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fvelocity","1.docs\u002Fv3\u002F6.concepts\u002F24.velocity",false,{"title":190,"path":191,"stem":192,"children":193,"page":188},"Advanced","\u002Fdocs\u002Fv3\u002Fadvanced","1.docs\u002Fv3\u002F7.Advanced",[194],{"title":195,"path":196,"stem":197},"Proxy setup","\u002Fdocs\u002Fv3\u002Fadvanced\u002Fproxy-setup","1.docs\u002Fv3\u002F7.Advanced\u002F1.Proxy-setup",{"title":199,"path":200,"stem":201,"children":202},"Integrations","\u002Fdocs\u002Fv3\u002Fintegrations","1.docs\u002Fv3\u002F8.integrations",[203,207,211,215],{"title":204,"path":205,"stem":206},"Kajabi","\u002Fdocs\u002Fv3\u002Fintegrations\u002Fkajabi-account-sharing-prevention","1.docs\u002Fv3\u002F8.integrations\u002F1.Kajabi account sharing prevention",{"title":208,"path":209,"stem":210},"Teachable","\u002Fdocs\u002Fv3\u002Fintegrations\u002Fteachable-account-sharing-prevention","1.docs\u002Fv3\u002F8.integrations\u002F2.Teachable account sharing prevention",{"title":212,"path":213,"stem":214},"Thinkific","\u002Fdocs\u002Fv3\u002Fintegrations\u002Fthinkific-account-sharing-prevention","1.docs\u002Fv3\u002F8.integrations\u002F3.Thinkific account sharing prevention",{"title":216,"path":217,"stem":218},"LearnWorlds","\u002Fdocs\u002Fv3\u002Fintegrations\u002Flearnworlds-account-sharing-prevention","1.docs\u002Fv3\u002F8.integrations\u002F4.LearnWorlds account sharing prevention",{"id":220,"title":221,"body":222,"description":445,"extension":446,"meta":447,"navigation":448,"path":213,"rawbody":449,"seo":450,"stem":214,"__hash__":451},"docsv3\u002F1.docs\u002Fv3\u002F8.integrations\u002F3.Thinkific account sharing prevention.md","Thinkific account sharing prevention",{"type":223,"value":224,"toc":439},"minimark",[225,230,234,241,246,249,257,334,347,353,357,364,379,382,389,393,399,405,415,419,435],[226,227,229],"h1",{"id":228},"thinkific-account-sharing-prevention-with-rupt","Thinkific account sharing prevention with Rupt",[231,232,233],"p",{},"Thinkific has no built-in account sharing or password sharing protection. Rupt adds it with a single script tag: paste it into Thinkific's site footer code, add a policy in the Rupt dashboard, and Rupt detects concurrent sessions, challenges the extra viewer, and logs unauthorized devices out. No server code required.",[231,235,236,237,240],{},"This guide assumes you've already chosen Rupt and want to wire it into Thinkific. For the background on why account sharing happens and how detection works, see ",[238,239,44],"a",{"href":45},".",[242,243,245],"h2",{"id":244},"step-1-add-the-rupt-script-to-thinkific","Step 1: Add the Rupt script to Thinkific",[231,247,248],{},"The script loads on every page, reads the signed-in Thinkific user on its own, and triggers a challenge when one of your policies fires.",[231,250,251,252,256],{},"In Thinkific, go to ",[253,254,255],"strong",{},"Settings → Code & analytics → Site footer code",", paste this in, and save:",[258,259,264],"pre",{"className":260,"code":261,"language":262,"meta":263,"style":263},"language-html shiki shiki-themes material-theme-lighter one-dark-pro monokai","\u003Cscript\n  src=\"https:\u002F\u002Fcdn.rupt.dev\u002Fintegrations\u002Fthinkific\u002F1.0.1\u002Fthinkific.js\"\n  data-client-id=\"xxxx-xxxx-xxxx-xxxx\"\n  async\n>\u003C\u002Fscript>\n","html","",[265,266,267,280,301,316,322],"code",{"__ignoreMap":263},[268,269,272,276],"span",{"class":270,"line":271},"line",1,[268,273,275],{"class":274},"shEKG","\u003C",[268,277,279],{"class":278},"slwgX","script\n",[268,281,283,287,290,294,298],{"class":270,"line":282},2,[268,284,286],{"class":285},"sXIpk","  src",[268,288,289],{"class":274},"=",[268,291,293],{"class":292},"s9QZx","\"",[268,295,297],{"class":296},"siibJ","https:\u002F\u002Fcdn.rupt.dev\u002Fintegrations\u002Fthinkific\u002F1.0.1\u002Fthinkific.js",[268,299,300],{"class":292},"\"\n",[268,302,304,307,309,311,314],{"class":270,"line":303},3,[268,305,306],{"class":285},"  data-client-id",[268,308,289],{"class":274},[268,310,293],{"class":292},[268,312,313],{"class":296},"xxxx-xxxx-xxxx-xxxx",[268,315,300],{"class":292},[268,317,319],{"class":270,"line":318},4,[268,320,321],{"class":285},"  async\n",[268,323,325,328,331],{"class":270,"line":324},5,[268,326,327],{"class":274},">\u003C\u002F",[268,329,330],{"class":278},"script",[268,332,333],{"class":274},">\n",[231,335,336,337,339,340,346],{},"Swap ",[265,338,313],{}," for your client ID from the ",[238,341,345],{"href":342,"rel":343},"https:\u002F\u002Fapp.rupt.dev",[344],"nofollow","Rupt dashboard",". There's nothing else to wire up.",[231,348,349,350,352],{},"Rupt's ",[238,351,35],{"href":36}," handles detection, the challenge, owner verification, and device capping on the client. No extra code on your side.",[242,354,356],{"id":355},"step-2-configure-your-account-sharing-policies","Step 2: Configure your account sharing policies",[231,358,359,360,363],{},"Policies are what actually catch sharing. Without at least one policy on the ",[265,361,362],{},"access"," trigger, the script runs but never challenges anyone.",[231,365,366,367,372,373,375,376,378],{},"A policy has a trigger (the event it runs on) and a verdict. In your ",[238,368,371],{"href":369,"rel":370},"https:\u002F\u002Fapp.rupt.dev\u002Fpolicies",[344],"policies dashboard",", add a policy on the ",[265,374,362],{}," trigger that challenges when it sees concurrent sessions or too many devices. The ",[238,377,44],{"href":45}," guide has the exact policies to start from.",[231,380,381],{},"Set the challenge success URL to your signup or offer page so the extra viewer can start their own subscription.",[231,383,384,385,388],{},"If no sessions show up in your dashboard after a few logins, check that the script is in ",[253,386,387],{},"Site footer code"," and that the client ID matches the one in your Rupt dashboard.",[242,390,392],{"id":391},"frequently-asked-questions","Frequently asked questions",[231,394,395,398],{},[253,396,397],{},"Does Thinkific prevent account sharing?","\nThinkific has no native account sharing or password sharing protection. You add it by installing Rupt, which detects concurrent sessions and challenges unauthorized viewers through a script in Thinkific's site footer code.",[231,400,401,404],{},[253,402,403],{},"How do I stop password sharing on Thinkific?","\nAdd the Rupt script under Settings → Code & analytics → Site footer code, then create an access policy in the Rupt dashboard that triggers on concurrent sessions. Rupt handles detection, the challenge, and device logout automatically.",[231,406,407,410,411,414],{},[253,408,409],{},"Does Rupt work with Thinkific's existing login?","\nYes. The Rupt script reads the signed-in Thinkific user from the page, so no changes to Thinkific's login or course player are needed. It loads with ",[265,412,413],{},"async",", so it doesn't block your pages.",[242,416,418],{"id":417},"related","Related",[420,421,422,427,431],"ul",{},[423,424,425],"li",{},[238,426,44],{"href":45},[423,428,429],{},[238,430,35],{"href":36},[423,432,433],{},[238,434,18],{"href":19},[436,437,438],"style",{},"html pre.shiki code .shEKG, html code.shiki .shEKG{--shiki-light:#39ADB5;--shiki-default:#ABB2BF;--shiki-dark:#F8F8F2}html pre.shiki code .slwgX, html code.shiki .slwgX{--shiki-light:#E53935;--shiki-default:#E06C75;--shiki-dark:#F92672}html pre.shiki code .sXIpk, html code.shiki .sXIpk{--shiki-light:#9C3EDA;--shiki-default:#D19A66;--shiki-dark:#A6E22E}html pre.shiki code .s9QZx, html code.shiki .s9QZx{--shiki-light:#39ADB5;--shiki-default:#98C379;--shiki-dark:#E6DB74}html pre.shiki code .siibJ, html code.shiki .siibJ{--shiki-light:#91B859;--shiki-default:#98C379;--shiki-dark:#E6DB74}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":263,"searchDepth":282,"depth":282,"links":440},[441,442,443,444],{"id":244,"depth":282,"text":245},{"id":355,"depth":282,"text":356},{"id":391,"depth":282,"text":392},{"id":417,"depth":282,"text":418},"Thinkific has no native account sharing protection. Add Rupt with one script tag to detect and stop account and password sharing on your courses.","md",{},{"title":212},"---\ntitle: Thinkific account sharing prevention\ndescription: Thinkific has no native account sharing protection. Add Rupt with one script tag to detect and stop account and password sharing on your courses.\nnavigation:\n  title: Thinkific\n---\n\n# Thinkific account sharing prevention with Rupt\n\nThinkific has no built-in account sharing or password sharing protection. Rupt adds it with a single script tag: paste it into Thinkific's site footer code, add a policy in the Rupt dashboard, and Rupt detects concurrent sessions, challenges the extra viewer, and logs unauthorized devices out. No server code required.\n\nThis guide assumes you've already chosen Rupt and want to wire it into Thinkific. For the background on why account sharing happens and how detection works, see [Account sharing prevention](\u002Fdocs\u002Fv3\u002Fguides\u002Faccount-sharing-prevention).\n\n## Step 1: Add the Rupt script to Thinkific\n\nThe script loads on every page, reads the signed-in Thinkific user on its own, and triggers a challenge when one of your policies fires.\n\nIn Thinkific, go to **Settings → Code & analytics → Site footer code**, paste this in, and save:\n\n```html\n\u003Cscript\n  src=\"https:\u002F\u002Fcdn.rupt.dev\u002Fintegrations\u002Fthinkific\u002F1.0.1\u002Fthinkific.js\"\n  data-client-id=\"xxxx-xxxx-xxxx-xxxx\"\n  async\n>\u003C\u002Fscript>\n```\n\nSwap `xxxx-xxxx-xxxx-xxxx` for your client ID from the [Rupt dashboard](https:\u002F\u002Fapp.rupt.dev). There's nothing else to wire up.\n\nRupt's [Access protection](\u002Fdocs\u002Fv3\u002Ffundamentals\u002Faccess-protection) handles detection, the challenge, owner verification, and device capping on the client. No extra code on your side.\n\n## Step 2: Configure your account sharing policies\n\nPolicies are what actually catch sharing. Without at least one policy on the `access` trigger, the script runs but never challenges anyone.\n\nA policy has a trigger (the event it runs on) and a verdict. In your [policies dashboard](https:\u002F\u002Fapp.rupt.dev\u002Fpolicies), add a policy on the `access` trigger that challenges when it sees concurrent sessions or too many devices. The [Account sharing prevention](\u002Fdocs\u002Fv3\u002Fguides\u002Faccount-sharing-prevention) guide has the exact policies to start from.\n\nSet the challenge success URL to your signup or offer page so the extra viewer can start their own subscription.\n\nIf no sessions show up in your dashboard after a few logins, check that the script is in **Site footer code** and that the client ID matches the one in your Rupt dashboard.\n\n## Frequently asked questions\n\n**Does Thinkific prevent account sharing?**\nThinkific has no native account sharing or password sharing protection. You add it by installing Rupt, which detects concurrent sessions and challenges unauthorized viewers through a script in Thinkific's site footer code.\n\n**How do I stop password sharing on Thinkific?**\nAdd the Rupt script under Settings → Code & analytics → Site footer code, then create an access policy in the Rupt dashboard that triggers on concurrent sessions. Rupt handles detection, the challenge, and device logout automatically.\n\n**Does Rupt work with Thinkific's existing login?**\nYes. The Rupt script reads the signed-in Thinkific user from the page, so no changes to Thinkific's login or course player are needed. It loads with `async`, so it doesn't block your pages.\n\n## Related\n\n- [Account sharing prevention](\u002Fdocs\u002Fv3\u002Fguides\u002Faccount-sharing-prevention)\n- [Access protection](\u002Fdocs\u002Fv3\u002Ffundamentals\u002Faccess-protection)\n- [Challenge flow](\u002Fdocs\u002Fv3\u002Fchallenge-flow)\n",{"title":221,"description":445},"BCLtTaC84CHOWMU1qVqzbRH9NZUsP1Q-4VQuvd3Z_BE",1781135905950]