[{"data":1,"prerenderedAt":662},["ShallowReactive",2],{"navigation_docs":3,"-concepts-identity":233,"-concepts-identity-surround":657},[4,36,67,122,187,207,223],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":35},"Getting started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,15,20,25,30],{"title":11,"path":12,"stem":13,"icon":14},"What is Rabolic","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-book-open",{"title":16,"path":17,"stem":18,"icon":19},"Quickstart","\u002Fgetting-started\u002Fquickstart","1.getting-started\u002F2.quickstart","i-lucide-zap",{"title":21,"path":22,"stem":23,"icon":24},"Keys","\u002Fgetting-started\u002Fkeys","1.getting-started\u002F3.keys","i-lucide-key-round",{"title":26,"path":27,"stem":28,"icon":29},"Setup CLI","\u002Fgetting-started\u002Fsetup-cli","1.getting-started\u002F4.setup-cli","i-lucide-terminal",{"title":31,"path":32,"stem":33,"icon":34},"Trial","\u002Fgetting-started\u002Ftrial","1.getting-started\u002F5.trial","i-lucide-hourglass",false,{"title":37,"icon":38,"path":39,"stem":40,"children":41,"page":35},"SDKs and API","i-lucide-code","\u002Fsdks","2.sdks",[42,47,52,57,62],{"title":43,"path":44,"stem":45,"icon":46},"Web","\u002Fsdks\u002Fweb","2.sdks\u002F1.web","i-lucide-globe",{"title":48,"path":49,"stem":50,"icon":51},"React Native and Expo","\u002Fsdks\u002Freact-native","2.sdks\u002F2.react-native","i-simple-icons-react",{"title":53,"path":54,"stem":55,"icon":56},"Flutter","\u002Fsdks\u002Fflutter","2.sdks\u002F3.flutter","i-simple-icons-flutter",{"title":58,"path":59,"stem":60,"icon":61},"Node.js","\u002Fsdks\u002Fnode","2.sdks\u002F4.node","i-simple-icons-nodedotjs",{"title":63,"path":64,"stem":65,"icon":66},"Ingest HTTP API","\u002Fsdks\u002Fhttp-api","2.sdks\u002F5.http-api","i-lucide-send",{"title":68,"icon":69,"path":70,"stem":71,"children":72,"page":35},"Concepts","i-lucide-lightbulb","\u002Fconcepts","3.concepts",[73,77,82,87,92,97,102,107,112,117],{"title":74,"path":75,"stem":76,"icon":19},"Events","\u002Fconcepts\u002Fevents","3.concepts\u002F01.events",{"title":78,"path":79,"stem":80,"icon":81},"Identity","\u002Fconcepts\u002Fidentity","3.concepts\u002F02.identity","i-lucide-fingerprint",{"title":83,"path":84,"stem":85,"icon":86},"Sessions","\u002Fconcepts\u002Fsessions","3.concepts\u002F03.sessions","i-lucide-activity",{"title":88,"path":89,"stem":90,"icon":91},"Key events and conversions","\u002Fconcepts\u002Fkey-events-and-conversions","3.concepts\u002F04.key-events-and-conversions","i-lucide-star",{"title":93,"path":94,"stem":95,"icon":96},"Funnels","\u002Fconcepts\u002Ffunnels","3.concepts\u002F05.funnels","i-lucide-filter",{"title":98,"path":99,"stem":100,"icon":101},"Journeys","\u002Fconcepts\u002Fjourneys","3.concepts\u002F06.journeys","i-lucide-route",{"title":103,"path":104,"stem":105,"icon":106},"Retention","\u002Fconcepts\u002Fretention","3.concepts\u002F07.retention","i-lucide-repeat",{"title":108,"path":109,"stem":110,"icon":111},"Revenue and attribution","\u002Fconcepts\u002Frevenue-and-attribution","3.concepts\u002F08.revenue-and-attribution","i-lucide-wallet",{"title":113,"path":114,"stem":115,"icon":116},"Consent and privacy","\u002Fconcepts\u002Fprivacy","3.concepts\u002F09.privacy","i-lucide-shield-check",{"title":118,"path":119,"stem":120,"icon":121},"Data retention","\u002Fconcepts\u002Fdata-retention","3.concepts\u002F10.data-retention","i-lucide-archive",{"title":123,"icon":124,"path":125,"stem":126,"children":127,"page":35},"Using the dashboard","i-lucide-layout-dashboard","\u002Fdashboard","4.dashboard",[128,133,138,143,146,151,154,157,160,163,167,172,177,182],{"title":129,"path":130,"stem":131,"icon":132},"Overview","\u002Fdashboard\u002Foverview","4.dashboard\u002F01.overview","i-lucide-gauge",{"title":134,"path":135,"stem":136,"icon":137},"Live","\u002Fdashboard\u002Flive","4.dashboard\u002F02.live","i-lucide-radio",{"title":139,"path":140,"stem":141,"icon":142},"Analytics","\u002Fdashboard\u002Fanalytics","4.dashboard\u002F03.analytics","i-lucide-bar-chart-3",{"title":74,"path":144,"stem":145,"icon":19},"\u002Fdashboard\u002Fevents","4.dashboard\u002F04.events",{"title":147,"path":148,"stem":149,"icon":150},"Users","\u002Fdashboard\u002Fusers","4.dashboard\u002F05.users","i-lucide-users",{"title":83,"path":152,"stem":153,"icon":86},"\u002Fdashboard\u002Fsessions","4.dashboard\u002F06.sessions",{"title":93,"path":155,"stem":156,"icon":96},"\u002Fdashboard\u002Ffunnels","4.dashboard\u002F07.funnels",{"title":98,"path":158,"stem":159,"icon":101},"\u002Fdashboard\u002Fjourneys","4.dashboard\u002F08.journeys",{"title":103,"path":161,"stem":162,"icon":106},"\u002Fdashboard\u002Fretention","4.dashboard\u002F09.retention",{"title":164,"path":165,"stem":166,"icon":111},"Revenue","\u002Fdashboard\u002Frevenue","4.dashboard\u002F10.revenue",{"title":168,"path":169,"stem":170,"icon":171},"Alerts","\u002Fdashboard\u002Falerts","4.dashboard\u002F11.alerts","i-lucide-bell",{"title":173,"path":174,"stem":175,"icon":176},"Integrations","\u002Fdashboard\u002Fintegrations","4.dashboard\u002F12.integrations","i-lucide-plug-zap",{"title":178,"path":179,"stem":180,"icon":181},"Project settings","\u002Fdashboard\u002Fproject-settings","4.dashboard\u002F13.project-settings","i-lucide-settings",{"title":183,"path":184,"stem":185,"icon":186},"Organizations and roles","\u002Fdashboard\u002Forganizations-and-roles","4.dashboard\u002F14.organizations-and-roles","i-lucide-building-2",{"title":188,"icon":189,"path":190,"stem":191,"children":192,"page":35},"Plans and billing","i-lucide-credit-card","\u002Fbilling","5.billing",[193,198,202],{"title":194,"path":195,"stem":196,"icon":197},"Plans","\u002Fbilling\u002Fplans","5.billing\u002F1.plans","i-lucide-tags",{"title":199,"path":200,"stem":201,"icon":132},"Usage and overage","\u002Fbilling\u002Fusage-and-overage","5.billing\u002F2.usage-and-overage",{"title":203,"path":204,"stem":205,"icon":206},"Read-only and deletion","\u002Fbilling\u002Fread-only-and-deletion","5.billing\u002F3.read-only-and-deletion","i-lucide-lock",{"title":208,"icon":209,"path":210,"stem":211,"children":212,"page":35},"Limits and troubleshooting","i-lucide-life-buoy","\u002Flimits","6.limits",[213,218],{"title":214,"path":215,"stem":216,"icon":217},"Limits","\u002Flimits\u002Flimits","6.limits\u002F1.limits","i-lucide-ruler",{"title":219,"path":220,"stem":221,"icon":222},"Events not showing","\u002Flimits\u002Ftroubleshooting","6.limits\u002F2.troubleshooting","i-lucide-search-check",{"title":224,"icon":225,"path":226,"stem":227,"children":228,"page":35},"AI connector","i-lucide-sparkles","\u002Fai","7.ai",[229],{"title":224,"path":230,"stem":231,"icon":232},"\u002Fai\u002Fconnector","7.ai\u002F1.connector","i-lucide-plug",{"id":234,"title":78,"body":235,"description":648,"extension":649,"links":650,"meta":651,"navigation":652,"path":79,"seo":653,"stem":80,"__hash__":656},"docs\u002F3.concepts\u002F02.identity.md",{"type":236,"value":237,"toc":637},"minimark",[238,242,247,311,315,318,322,328,360,398,418,422,425,499,502,506,521,526,530,541,555,559,598,602,633],[239,240,241],"p",{},"Rabolic counts people, not devices. A person who visits your website, installs your iPhone app and pays through your server is one person in every report, once you tell Rabolic who they are.",[243,244,246],"h2",{"id":245},"the-three-ids","The three ids",[248,249,250,266],"table",{},[251,252,253],"thead",{},[254,255,256,260,263],"tr",{},[257,258,259],"th",{},"Id",[257,261,262],{},"Who makes it",[257,264,265],{},"What it is",[267,268,269,285,300],"tbody",{},[254,270,271,275,278],{},[272,273,274],"td",{},"Anonymous id",[272,276,277],{},"The SDK",[272,279,280,281],{},"A random UUID per browser or app install, kept until ",[282,283,284],"code",{},"reset()",[254,286,287,290,293],{},[272,288,289],{},"User id",[272,291,292],{},"You",[272,294,295,296,299],{},"Your own id for the account, sent with ",[282,297,298],{},"identify()",", the Node.js SDK or the HTTP API",[254,301,302,305,308],{},[272,303,304],{},"Person",[272,306,307],{},"Rabolic",[272,309,310],{},"Rabolic's id for one person in one project",[243,312,314],{"id":313},"every-device-starts-anonymous","Every device starts anonymous",[239,316,317],{},"The SDK creates an anonymous id for each browser and each app install, and every event carries it. Rabolic keeps a person for each one, so a visitor's pages, screens and sessions are tracked before they sign up.",[243,319,321],{"id":320},"identify-turns-a-visitor-into-your-user","identify() turns a visitor into your user",[239,323,324,325,327],{},"Call ",[282,326,298],{}," after signup and after every login:",[329,330,335],"pre",{"className":331,"code":332,"language":333,"meta":334,"style":334},"language-ts shiki shiki-themes github-light-default github-light-default github-dark-default","rabolic.identify(user.id, { plan: 'pro' })\n","ts","",[282,336,337],{"__ignoreMap":334},[338,339,342,346,350,353,357],"span",{"class":340,"line":341},"line",1,[338,343,345],{"class":344},"s_bOF","rabolic.",[338,347,349],{"class":348},"sd69k","identify",[338,351,352],{"class":344},"(user.id, { plan: ",[338,354,356],{"class":355},"s-BGO","'pro'",[338,358,359],{"class":344}," })\n",[329,361,365],{"className":362,"code":363,"language":364,"meta":334,"style":334},"language-dart shiki shiki-themes github-light-default github-light-default github-dark-default","Rabolic.identify(user.id, traits: {'plan': 'pro'});\n","dart",[282,366,367],{"__ignoreMap":334},[338,368,369,372,375,377,380,384,387,390,392,395],{"class":340,"line":341},[338,370,307],{"class":371},"sDkKp",[338,373,374],{"class":344},".",[338,376,349],{"class":348},[338,378,379],{"class":344},"(user.id, traits",[338,381,383],{"class":382},"s5nWI",":",[338,385,386],{"class":344}," {",[338,388,389],{"class":355},"'plan'",[338,391,383],{"class":382},[338,393,394],{"class":355}," 'pro'",[338,396,397],{"class":344},"});\n",[399,400,401,405,413],"ul",{},[402,403,404],"li",{},"Use your own stable id, such as the primary key of the account. Not an email address, which can change.",[402,406,407,408,412],{},"Use ",[409,410,411],"strong",{},"the same id on every platform",": web, iOS, Android and your server.",[402,414,415,416,374],{},"The user id is set on this event and every later one, until ",[282,417,284],{},[243,419,421],{"id":420},"the-rules","The rules",[239,423,424],{},"For an event with anonymous id A and, maybe, user id U:",[248,426,427,437],{},[251,428,429],{},[254,430,431,434],{},[257,432,433],{},"Situation",[257,435,436],{},"What Rabolic does",[267,438,439,447,458,466,477,488],{},[254,440,441,444],{},[272,442,443],{},"A device Rabolic has never seen sends its first event",[272,445,446],{},"Creates a new person for it",[254,448,449,455],{},[272,450,451,452,454],{},"An anonymous person calls ",[282,453,298],{}," with a new user id",[272,456,457],{},"That person becomes the user. Their earlier events are already theirs; nothing moves",[254,459,460,463],{},[272,461,462],{},"A new device identifies as a user Rabolic already knows",[272,464,465],{},"The device is attached to that person",[254,467,468,471],{},[272,469,470],{},"A device with its own anonymous history identifies as a known user",[272,472,473,476],{},[409,474,475],{},"Merge:"," the anonymous person is merged into the user, with their history",[254,478,479,485],{},[272,480,481,482,484],{},"An identified device sends a different user id (a shared device without ",[282,483,284],{},")",[272,486,487],{},"Nothing is merged. The new events go to the person with that user id, and Rabolic records an identity conflict",[254,489,490,493],{},[272,491,492],{},"Two different user ids meet",[272,494,495,498],{},[409,496,497],{},"Never merged."," Two identified people always stay two people",[239,500,501],{},"When two people merge, properties are combined and the newer value wins. Reports read through the merge at once. Each event keeps the raw ids it was sent with.",[243,503,505],{"id":504},"reset-at-logout","reset() at logout",[329,507,509],{"className":331,"code":508,"language":333,"meta":334,"style":334},"rabolic.reset()\n",[282,510,511],{"__ignoreMap":334},[338,512,513,515,518],{"class":340,"line":341},[338,514,345],{"class":344},[338,516,517],{"class":348},"reset",[338,519,520],{"class":344},"()\n",[239,522,523,525],{},[282,524,284],{}," creates a new anonymous id and a new session, and clears the user id and super properties. The next person on that device starts fresh, instead of being added to the last one.",[243,527,529],{"id":528},"server-events","Server events",[239,531,532,533,536,537,540],{},"Every event from the Node.js SDK or the HTTP API names a ",[282,534,535],{},"userId",", an ",[282,538,539],{},"anonymousId"," or both.",[399,542,543,549],{},[402,544,545,546,548],{},"With a ",[282,547,535],{},", the event goes to that user.",[402,550,551,554],{},[282,552,553],{},"identify({ userId, anonymousId })"," on the server links that visitor to the user. That helps when sign-up happens on your backend.",[243,556,558],{"id":557},"what-doesnt-link-people-yet","What doesn't link people (yet)",[399,560,561,586,592],{},[402,562,563,566,567,570,571,574,575,578,579,582,583,585],{},[409,564,565],{},"Deep links."," The web SDK's ",[282,568,569],{},"appLink()"," adds ",[282,572,573],{},"rb_aid"," to a link, and the app SDKs send it as ",[282,576,577],{},"linked_anonymous_id"," on ",[282,580,581],{},"$deep_link",". Rabolic stores it, but doesn't link the web visitor to the app user by it yet. Use ",[282,584,298],{}," with the same user id on both sides.",[402,587,588,591],{},[409,589,590],{},"Guesses."," Rabolic never links people by IP address, device fingerprint or advertising id.",[402,593,594,597],{},[409,595,596],{},"Other projects."," People are never matched across projects, even in one organization.",[243,599,601],{"id":600},"where-you-see-it","Where you see it",[399,603,604,625],{},[402,605,606,609,610,613,614,617,618,621,622,374],{},[409,607,608],{},"Users:"," every person, with an ",[409,611,612],{},"Identified",", ",[409,615,616],{},"Anonymous only"," or ",[409,619,620],{},"Cross-platform"," filter. A person's page shows their identity graph and timeline. See ",[623,624,147],"a",{"href":148},[402,626,627,630,631,374],{},[409,628,629],{},"Journeys:"," \"How identities were matched\". See ",[623,632,98],{"href":158},[634,635,636],"style",{},"html pre.shiki code .s_bOF, html code.shiki .s_bOF{--shiki-light:#1F2328;--shiki-default:#1F2328;--shiki-dark:#E6EDF3}html pre.shiki code .sd69k, html code.shiki .sd69k{--shiki-light:#8250DF;--shiki-default:#8250DF;--shiki-dark:#D2A8FF}html pre.shiki code .s-BGO, html code.shiki .s-BGO{--shiki-light:#0A3069;--shiki-default:#0A3069;--shiki-dark:#A5D6FF}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);}html pre.shiki code .sDkKp, html code.shiki .sDkKp{--shiki-light:#0550AE;--shiki-default:#0550AE;--shiki-dark:#79C0FF}html pre.shiki code .s5nWI, html code.shiki .s5nWI{--shiki-light:#CF222E;--shiki-default:#CF222E;--shiki-dark:#FF7B72}",{"title":334,"searchDepth":638,"depth":638,"links":639},2,[640,641,642,643,644,645,646,647],{"id":245,"depth":638,"text":246},{"id":313,"depth":638,"text":314},{"id":320,"depth":638,"text":321},{"id":420,"depth":638,"text":421},{"id":504,"depth":638,"text":505},{"id":528,"depth":638,"text":529},{"id":557,"depth":638,"text":558},{"id":600,"depth":638,"text":601},"How Rabolic links browsers, app installs and server events to one person with identify(), when people are merged, what reset() does, and what doesn't link people yet.","md",null,{},{"icon":81},{"title":654,"description":655},"Identity resolution with identify() and reset()","How Rabolic links browsers, app installs and server events to one person with identify(), the resolution rules, when anonymous people are merged, what reset() does, and what doesn't link people yet.","lBtEBOcX5k0qQH0cgvZuluuSd0EsHrftmYwyoX6bCAg",[658,660],{"title":74,"path":75,"stem":76,"description":659,"icon":19,"children":-1},"What a Rabolic event is, how to name events and properties, super properties, and every reserved $ event the SDKs and the server use.",{"title":83,"path":84,"stem":85,"description":661,"icon":86,"children":-1},"How Rabolic starts and ends sessions on the web (30 minutes without events) and in apps (30 seconds in the background), active time, conversions and revenue in a session.",1794242363863]