[{"data":1,"prerenderedAt":209},["ShallowReactive",2],{"docs-nav-\u002Fdocs\u002Faccount-sharing\u002Fhow-account-sharing-prevention-works":3,"\u002Fdocs\u002Faccount-sharing\u002Fhow-account-sharing-prevention-works":92},[4],{"title":5,"path":6,"stem":7,"children":8,"page":46},"Account Sharing","\u002Fdocs\u002Faccount-sharing","1.docs\u002F2.account sharing",[9,13,17,21,47,72],{"title":10,"path":11,"stem":12},"How it works","\u002Fdocs\u002Faccount-sharing\u002Fhow-account-sharing-prevention-works","1.docs\u002F2.account sharing\u002F0.How account sharing prevention works",{"title":14,"path":15,"stem":16},"Quick start","\u002Fdocs\u002Faccount-sharing\u002Fquick-start","1.docs\u002F2.account sharing\u002F1.Quick start",{"title":18,"path":19,"stem":20},"Events & actions","\u002Fdocs\u002Faccount-sharing\u002Flisten-to-events","1.docs\u002F2.account sharing\u002F2.Listen to events",{"title":22,"path":23,"stem":24,"children":25,"page":46},"Concepts","\u002Fdocs\u002Faccount-sharing\u002Fconcepts","1.docs\u002F2.account sharing\u002F4.Concepts",[26,30,34,38,42],{"title":27,"path":28,"stem":29},"Challenges","\u002Fdocs\u002Faccount-sharing\u002Fconcepts\u002Fchallenges","1.docs\u002F2.account sharing\u002F4.Concepts\u002F0.challenges",{"title":31,"path":32,"stem":33},"Device limits","\u002Fdocs\u002Faccount-sharing\u002Fconcepts\u002Fconfigure-device-limits","1.docs\u002F2.account sharing\u002F4.Concepts\u002F1.configure-device-limits",{"title":35,"path":36,"stem":37},"Groups","\u002Fdocs\u002Faccount-sharing\u002Fconcepts\u002Fgroups","1.docs\u002F2.account sharing\u002F4.Concepts\u002F2.groups",{"title":39,"path":40,"stem":41},"Automatically detach devices","\u002Fdocs\u002Faccount-sharing\u002Fconcepts\u002Fautomatically-detaching-devices","1.docs\u002F2.account sharing\u002F4.Concepts\u002F3.automatically-detaching-devices",{"title":43,"path":44,"stem":45},"Excluded Devices","\u002Fdocs\u002Faccount-sharing\u002Fconcepts\u002Fexcluded-devices","1.docs\u002F2.account sharing\u002F4.Concepts\u002F4.excluded-devices",false,{"title":48,"path":49,"stem":50,"children":51,"page":46},"Advanced","\u002Fdocs\u002Faccount-sharing\u002Fadvanced","1.docs\u002F2.account sharing\u002F8.Advanced",[52,56,60,64,68],{"title":53,"path":54,"stem":55},"Signing the user out","\u002Fdocs\u002Faccount-sharing\u002Fadvanced\u002Fsigning-the-user-out","1.docs\u002F2.account sharing\u002F8.Advanced\u002F1.Signing the user out",{"title":57,"path":58,"stem":59},"Webhooks","\u002Fdocs\u002Faccount-sharing\u002Fadvanced\u002Fwebhooks","1.docs\u002F2.account sharing\u002F8.Advanced\u002F2.webhooks",{"title":61,"path":62,"stem":63},"Metadata","\u002Fdocs\u002Faccount-sharing\u002Fadvanced\u002Fusing-metadata","1.docs\u002F2.account sharing\u002F8.Advanced\u002F3.Using metadata",{"title":65,"path":66,"stem":67},"When to attach","\u002Fdocs\u002Faccount-sharing\u002Fadvanced\u002Fwhen-to-call-the-attach-function","1.docs\u002F2.account sharing\u002F8.Advanced\u002F5.When to call the attach function",{"title":69,"path":70,"stem":71},"Tracking conversions","\u002Fdocs\u002Faccount-sharing\u002Fadvanced\u002Ftracking-conversions","1.docs\u002F2.account sharing\u002F8.Advanced\u002F8.Tracking conversions",{"title":73,"path":74,"stem":75,"children":76,"page":46},"Signals","\u002Fdocs\u002Faccount-sharing\u002Fsignals","1.docs\u002F2.account sharing\u002F9.Signals",[77,81,85,89],{"title":78,"path":79,"stem":80},"High velocity","\u002Fdocs\u002Faccount-sharing\u002Fsignals\u002Fhigh-velocity","1.docs\u002F2.account sharing\u002F9.Signals\u002F1.High velocity",{"title":82,"path":83,"stem":84},"Impossible travel","\u002Fdocs\u002Faccount-sharing\u002Fsignals\u002Fimpossible-travel","1.docs\u002F2.account sharing\u002F9.Signals\u002F2.Impossible travel",{"title":86,"path":87,"stem":88},"Concurrency","\u002Fdocs\u002Faccount-sharing\u002Fsignals\u002Fconcurrency","1.docs\u002F2.account sharing\u002F9.Signals\u002F3.Concurrency",{"title":31,"path":90,"stem":91},"\u002Fdocs\u002Faccount-sharing\u002Fsignals\u002Fdevice-limits","1.docs\u002F2.account sharing\u002F9.Signals\u002F4.Device limits",{"id":93,"title":10,"body":94,"description":199,"extension":202,"meta":203,"navigation":205,"path":11,"seo":206,"sitemap":207,"stem":12,"__hash__":208},"docs\u002F1.docs\u002F2.account sharing\u002F0.How account sharing prevention works.md",{"type":95,"value":96,"toc":198},"minimark",[97,102,115,118,128,131,139,142,157,169,176,183,190],[98,99,101],"h1",{"id":100},"how-account-sharing-prevention-works","How account sharing prevention works",[103,104,106],"alert",{"type":105},"tip",[107,108,109,110,114],"p",{},"If you're ready to get started, you can skip this page and jump to the ",[111,112,113],"a",{"href":15},"quick start guide",".",[107,116,117],{},"Rupt does two main things:",[119,120,121,125],"ol",{},[122,123,124],"li",{},"Detect shared accounts.",[122,126,127],{},"Attempt to nudge account sharers to create their own accounts (optional).",[107,129,130],{},"On a high level, Rupt uses client & server-side signals to infer if more than one person uses a given account. The signals include but are not limited to the number of unique devices associated with this account, the frequency of access, the IP information, impossible travel signals, and more.",[107,132,133,134,138],{},"In order for Rupt to get these signals, you integrate a client library (JS, iOS, Android) into your project and call an ",[135,136,137],"code",{},"attach"," function that links the device to the user's account.",[107,140,141],{},"Rupt will intervene (if configured to do so) in one of two cases:",[119,143,144,147],{},[122,145,146],{},"More than one person uses the account (inferred via signal analysis)",[122,148,149,150,156],{},"The account has too many devices associated (you can configure the limit via code or the ",[111,151,155],{"href":152,"rel":153},"https:\u002F\u002Fdashboard.rupt.dev\u002Fsettings",[154],"nofollow","dashboard settings",")",[107,158,159,160,163,164],{},"Rupt will redirect the user to a ",[111,161,162],{"href":28},"challenge"," page. This is a customized and branded page where users are asked to create their own account. If the user elects to create a new account, Rupt will redirect to a URL of your choice to guide them to create a new account.\n",[165,166],"img",{"alt":167,"src":168},"Detecting a shared account and asking them to convert via Rupt","\u002Fimg\u002Fjourney\u002Fchallenge.svg",[107,170,171,172],{},"If this account owner, they need to verify ownership via multi-factor-authentication (can be turned off in the settings too).\n",[165,173],{"alt":174,"src":175},"A shared account owner is asked to enter multi-factor-authentication to verify ownership via Rupt","\u002Fimg\u002Fjourney\u002Fverify.svg",[107,177,178,179],{},"After verifying ownership of the account, if there are too many devices associated with the account, the user will be asked to log out devices until the number of devices is within your configured limit.\n",[165,180],{"alt":181,"src":182},"Limit the number of devices & concurrent logins of a user using Rupt","\u002Fimg\u002Fjourney\u002Fkick-out.svg",[107,184,185,186],{},"Once the user is back within the device limit. They can continue using the app. If we detect another person (using intelligent signals), then we start the same journey again.\n",[165,187],{"alt":188,"src":189},"The is now back within the device limits for the account.","\u002Fimg\u002Fjourney\u002Fwithin-limit.svg",[107,191,192,193,197],{},"Of course, this is only a high-level overview. You can customize almost every part of the flow and even use APIs to ",[111,194,196],{"href":195},"\u002Fblog\u002Fcustom-challenges","create your custom challenge"," flow. But this gives you an idea of how Rupt prevents account sharing and converts account sharers into happy paying customers.",{"title":199,"searchDepth":200,"depth":200,"links":201},"",2,[],"md",{"head":204},{"title":101},true,{"title":10,"description":199},{"loc":11},"vKYwDyyJXYgKwnWN0H-xwcV6IYBd3zt87k5bTJiSCxE",1776449525000]