[{"data":1,"prerenderedAt":1786},["ShallowReactive",2],{"navigation_docs":3,"-sdks-web":233,"-sdks-web-surround":1781},[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":43,"body":235,"description":1772,"extension":1773,"links":1774,"meta":1775,"navigation":1776,"path":44,"seo":1777,"stem":45,"__hash__":1780},"docs\u002F2.sdks\u002F1.web.md",{"type":236,"value":237,"toc":1760},"minimark",[238,254,274,279,288,933,937,943,1148,1155,1159,1321,1328,1332,1368,1435,1438,1457,1462,1465,1472,1489,1494,1509,1513,1518,1538,1541,1587,1635,1646,1649,1683,1688,1692,1752,1756],[239,240,241,245,246,253],"p",{},[242,243,244],"code",{},"@rabolic\u002Fweb"," is Rabolic for the browser. It has no runtime dependencies, and the CDN build is under 8 KB gzip. Source: ",[247,248,252],"a",{"href":249,"rel":250},"https:\u002F\u002Fgithub.com\u002Frabolic\u002Fsdks\u002Ftree\u002Fmain\u002Fjs\u002Fweb",[251],"nofollow","github.com\u002Frabolic\u002Fsdks\u002Fjs\u002Fweb",".",[239,255,256,257,261,262,265,266,269,270,273],{},"Use the project's ",[258,259,260],"strong",{},"publishable key"," (",[242,263,264],{},"rb_pub_…","). Secret keys (",[242,267,268],{},"rb_live_",", ",[242,271,272],{},"rb_test_",") are refused in the browser.",[275,276,278],"h2",{"id":277},"install","Install",[239,280,281,282,287],{},"The quickest way is ",[247,283,284],{"href":27},[242,285,286],{},"npx rabolic init"," in your project. By hand:",[289,290,291,445],"tabs",{},[292,293,296,321,432],"tabs-item",{"icon":294,"label":295},"i-simple-icons-npm","npm",[297,298,304],"pre",{"className":299,"code":300,"filename":301,"language":302,"meta":303,"style":303},"language-bash shiki shiki-themes github-light-default github-light-default github-dark-default","npm install @rabolic\u002Fweb\n","Terminal","bash","",[242,305,306],{"__ignoreMap":303},[307,308,311,314,318],"span",{"class":309,"line":310},"line",1,[307,312,295],{"class":313},"sQJ0q",[307,315,317],{"class":316},"s-BGO"," install",[307,319,320],{"class":316}," @rabolic\u002Fweb\n",[297,322,326],{"className":323,"code":324,"language":325,"meta":303,"style":303},"language-ts shiki shiki-themes github-light-default github-light-default github-dark-default","import { rabolic } from '@rabolic\u002Fweb'\n\nrabolic.init({ projectKey: 'rb_pub_…', trackRoutes: true })\n\n\u002F\u002F after signup or login\nrabolic.identify(user.id, { plan: 'pro' })\n\nrabolic.track('signup_completed', { method: 'google' })\n","ts",[242,327,328,344,351,377,382,389,405,410],{"__ignoreMap":303},[307,329,330,334,338,341],{"class":309,"line":310},[307,331,333],{"class":332},"s5nWI","import",[307,335,337],{"class":336},"s_bOF"," { rabolic } ",[307,339,340],{"class":332},"from",[307,342,343],{"class":316}," '@rabolic\u002Fweb'\n",[307,345,347],{"class":309,"line":346},2,[307,348,350],{"emptyLinePlaceholder":349},true,"\n",[307,352,354,357,361,364,367,370,374],{"class":309,"line":353},3,[307,355,356],{"class":336},"rabolic.",[307,358,360],{"class":359},"sd69k","init",[307,362,363],{"class":336},"({ projectKey: ",[307,365,366],{"class":316},"'rb_pub_…'",[307,368,369],{"class":336},", trackRoutes: ",[307,371,373],{"class":372},"sDkKp","true",[307,375,376],{"class":336}," })\n",[307,378,380],{"class":309,"line":379},4,[307,381,350],{"emptyLinePlaceholder":349},[307,383,385],{"class":309,"line":384},5,[307,386,388],{"class":387},"s9BHP","\u002F\u002F after signup or login\n",[307,390,392,394,397,400,403],{"class":309,"line":391},6,[307,393,356],{"class":336},[307,395,396],{"class":359},"identify",[307,398,399],{"class":336},"(user.id, { plan: ",[307,401,402],{"class":316},"'pro'",[307,404,376],{"class":336},[307,406,408],{"class":309,"line":407},7,[307,409,350],{"emptyLinePlaceholder":349},[307,411,413,415,418,421,424,427,430],{"class":309,"line":412},8,[307,414,356],{"class":336},[307,416,417],{"class":359},"track",[307,419,420],{"class":336},"(",[307,422,423],{"class":316},"'signup_completed'",[307,425,426],{"class":336},", { method: ",[307,428,429],{"class":316},"'google'",[307,431,376],{"class":336},[239,433,434,437,438,441,442,444],{},[242,435,436],{},"createRabolic()"," returns an independent instance if you need more than the ",[242,439,440],{},"rabolic"," singleton. Calls made before ",[242,443,360],{}," are kept (up to 100) and replayed.",[292,446,448,451,495,502,517,922],{"icon":38,"label":447},"Script tag",[239,449,450],{},"The simplest tag initializes itself from its data attributes:",[297,452,456],{"className":453,"code":454,"language":455,"meta":303,"style":303},"language-html shiki shiki-themes github-light-default github-light-default github-dark-default","\u003Cscript async src=\"https:\u002F\u002Fcdn.rabolic.com\u002Fv1\u002Frabolic.js\" data-key=\"rb_pub_…\">\u003C\u002Fscript>\n","html",[242,457,458],{"__ignoreMap":303},[307,459,460,463,467,470,473,476,479,482,484,487,490,492],{"class":309,"line":310},[307,461,462],{"class":336},"\u003C",[307,464,466],{"class":465},"sfEsd","script",[307,468,469],{"class":372}," async",[307,471,472],{"class":372}," src",[307,474,475],{"class":336},"=",[307,477,478],{"class":316},"\"https:\u002F\u002Fcdn.rabolic.com\u002Fv1\u002Frabolic.js\"",[307,480,481],{"class":372}," data-key",[307,483,475],{"class":336},[307,485,486],{"class":316},"\"rb_pub_…\"",[307,488,489],{"class":336},">\u003C\u002F",[307,491,466],{"class":465},[307,493,494],{"class":336},">\n",[239,496,497,498,501],{},"Add ",[242,499,500],{},"data-host=\"https:\u002F\u002Fingest.example.com\""," to send events through your own proxy.",[239,503,504,505,508,509,512,513,516],{},"To call ",[242,506,507],{},"rabolic.track()"," from your own scripts before the file has loaded, paste the loader into ",[242,510,511],{},"\u003Chead>"," instead. It defines a stub ",[242,514,515],{},"window.rabolic"," that queues calls until the script has loaded, then replays them in order:",[297,518,520],{"className":453,"code":519,"language":455,"meta":303,"style":303},"\u003Cscript>\n  !(function (w, d, src) {\n    if (w.rabolic) return\n    var q = (w.rabolic = [])\n    var m = ['init', 'track', 'page', 'identify', 'reset', 'register', 'unregister', 'setConsent', 'optOut', 'optIn', 'flush']\n    for (var i = 0; i \u003C m.length; i++)\n      (function (n) {\n        q[n] = function () {\n          q.push([n].concat([].slice.call(arguments)))\n        }\n      })(m[i])\n    q.getAnonymousId = function () {\n      return null\n    }\n    q.appLink = function (url) {\n      return url\n    }\n    var s = d.createElement('script')\n    s.async = true\n    s.src = src\n    d.head.appendChild(s)\n  })(window, document, 'https:\u002F\u002Fcdn.rabolic.com\u002Fv1\u002Frabolic.js')\n\n  rabolic.init({ projectKey: 'rb_pub_YOUR_KEY' })\n\u003C\u002Fscript>\n",[242,521,522,530,558,569,587,655,693,707,720,749,755,761,777,786,792,811,819,824,847,858,869,881,892,897,912],{"__ignoreMap":303},[307,523,524,526,528],{"class":309,"line":310},[307,525,462],{"class":336},[307,527,466],{"class":465},[307,529,494],{"class":336},[307,531,532,535,537,540,542,545,547,550,552,555],{"class":309,"line":346},[307,533,534],{"class":332},"  !",[307,536,420],{"class":336},[307,538,539],{"class":332},"function",[307,541,261],{"class":336},[307,543,544],{"class":313},"w",[307,546,269],{"class":336},[307,548,549],{"class":313},"d",[307,551,269],{"class":336},[307,553,554],{"class":313},"src",[307,556,557],{"class":336},") {\n",[307,559,560,563,566],{"class":309,"line":353},[307,561,562],{"class":332},"    if",[307,564,565],{"class":336}," (w.rabolic) ",[307,567,568],{"class":332},"return\n",[307,570,571,574,577,579,582,584],{"class":309,"line":379},[307,572,573],{"class":332},"    var",[307,575,576],{"class":336}," q ",[307,578,475],{"class":332},[307,580,581],{"class":336}," (w.rabolic ",[307,583,475],{"class":332},[307,585,586],{"class":336}," [])\n",[307,588,589,591,594,596,599,602,604,607,609,612,614,617,619,622,624,627,629,632,634,637,639,642,644,647,649,652],{"class":309,"line":384},[307,590,573],{"class":332},[307,592,593],{"class":336}," m ",[307,595,475],{"class":332},[307,597,598],{"class":336}," [",[307,600,601],{"class":316},"'init'",[307,603,269],{"class":336},[307,605,606],{"class":316},"'track'",[307,608,269],{"class":336},[307,610,611],{"class":316},"'page'",[307,613,269],{"class":336},[307,615,616],{"class":316},"'identify'",[307,618,269],{"class":336},[307,620,621],{"class":316},"'reset'",[307,623,269],{"class":336},[307,625,626],{"class":316},"'register'",[307,628,269],{"class":336},[307,630,631],{"class":316},"'unregister'",[307,633,269],{"class":336},[307,635,636],{"class":316},"'setConsent'",[307,638,269],{"class":336},[307,640,641],{"class":316},"'optOut'",[307,643,269],{"class":336},[307,645,646],{"class":316},"'optIn'",[307,648,269],{"class":336},[307,650,651],{"class":316},"'flush'",[307,653,654],{"class":336},"]\n",[307,656,657,660,662,665,668,670,673,676,678,681,684,687,690],{"class":309,"line":391},[307,658,659],{"class":332},"    for",[307,661,261],{"class":336},[307,663,664],{"class":332},"var",[307,666,667],{"class":336}," i ",[307,669,475],{"class":332},[307,671,672],{"class":372}," 0",[307,674,675],{"class":336},"; i ",[307,677,462],{"class":332},[307,679,680],{"class":336}," m.",[307,682,683],{"class":372},"length",[307,685,686],{"class":336},"; i",[307,688,689],{"class":332},"++",[307,691,692],{"class":336},")\n",[307,694,695,698,700,702,705],{"class":309,"line":407},[307,696,697],{"class":336},"      (",[307,699,539],{"class":332},[307,701,261],{"class":336},[307,703,704],{"class":313},"n",[307,706,557],{"class":336},[307,708,709,712,714,717],{"class":309,"line":412},[307,710,711],{"class":336},"        q[n] ",[307,713,475],{"class":332},[307,715,716],{"class":332}," function",[307,718,719],{"class":336}," () {\n",[307,721,723,726,729,732,735,738,741,743,746],{"class":309,"line":722},9,[307,724,725],{"class":336},"          q.",[307,727,728],{"class":359},"push",[307,730,731],{"class":336},"([n].",[307,733,734],{"class":359},"concat",[307,736,737],{"class":336},"([].slice.",[307,739,740],{"class":359},"call",[307,742,420],{"class":336},[307,744,745],{"class":372},"arguments",[307,747,748],{"class":336},")))\n",[307,750,752],{"class":309,"line":751},10,[307,753,754],{"class":336},"        }\n",[307,756,758],{"class":309,"line":757},11,[307,759,760],{"class":336},"      })(m[i])\n",[307,762,764,767,770,773,775],{"class":309,"line":763},12,[307,765,766],{"class":336},"    q.",[307,768,769],{"class":359},"getAnonymousId",[307,771,772],{"class":332}," =",[307,774,716],{"class":332},[307,776,719],{"class":336},[307,778,780,783],{"class":309,"line":779},13,[307,781,782],{"class":332},"      return",[307,784,785],{"class":372}," null\n",[307,787,789],{"class":309,"line":788},14,[307,790,791],{"class":336},"    }\n",[307,793,795,797,800,802,804,806,809],{"class":309,"line":794},15,[307,796,766],{"class":336},[307,798,799],{"class":359},"appLink",[307,801,772],{"class":332},[307,803,716],{"class":332},[307,805,261],{"class":336},[307,807,808],{"class":313},"url",[307,810,557],{"class":336},[307,812,814,816],{"class":309,"line":813},16,[307,815,782],{"class":332},[307,817,818],{"class":336}," url\n",[307,820,822],{"class":309,"line":821},17,[307,823,791],{"class":336},[307,825,827,829,832,834,837,840,842,845],{"class":309,"line":826},18,[307,828,573],{"class":332},[307,830,831],{"class":336}," s ",[307,833,475],{"class":332},[307,835,836],{"class":336}," d.",[307,838,839],{"class":359},"createElement",[307,841,420],{"class":336},[307,843,844],{"class":316},"'script'",[307,846,692],{"class":336},[307,848,850,853,855],{"class":309,"line":849},19,[307,851,852],{"class":336},"    s.async ",[307,854,475],{"class":332},[307,856,857],{"class":372}," true\n",[307,859,861,864,866],{"class":309,"line":860},20,[307,862,863],{"class":336},"    s.src ",[307,865,475],{"class":332},[307,867,868],{"class":336}," src\n",[307,870,872,875,878],{"class":309,"line":871},21,[307,873,874],{"class":336},"    d.head.",[307,876,877],{"class":359},"appendChild",[307,879,880],{"class":336},"(s)\n",[307,882,884,887,890],{"class":309,"line":883},22,[307,885,886],{"class":336},"  })(window, document, ",[307,888,889],{"class":316},"'https:\u002F\u002Fcdn.rabolic.com\u002Fv1\u002Frabolic.js'",[307,891,692],{"class":336},[307,893,895],{"class":309,"line":894},23,[307,896,350],{"emptyLinePlaceholder":349},[307,898,900,903,905,907,910],{"class":309,"line":899},24,[307,901,902],{"class":336},"  rabolic.",[307,904,360],{"class":359},[307,906,363],{"class":336},[307,908,909],{"class":316},"'rb_pub_YOUR_KEY'",[307,911,376],{"class":336},[307,913,915,918,920],{"class":309,"line":914},25,[307,916,917],{"class":336},"\u003C\u002F",[307,919,466],{"class":465},[307,921,494],{"class":336},[239,923,924,925,928,929,932],{},"The same code is exported from the npm package as ",[242,926,927],{},"SNIPPET"," (and ",[242,930,931],{},"snippetFor(projectKey)",").",[275,934,936],{"id":935},"options","Options",[239,938,939,940,253],{},"Pass them to ",[242,941,942],{},"init()",[944,945,946,961],"table",{},[947,948,949],"thead",{},[950,951,952,956,959],"tr",{},[953,954,955],"th",{},"Option",[953,957,958],{},"Default",[953,960],{},[962,963,964,980,995,1022,1046,1064,1085,1103,1118,1133],"tbody",{},[950,965,966,972,975],{},[967,968,969],"td",{},[242,970,971],{},"projectKey",[967,973,974],{},"required",[967,976,977,978],{},"Publishable key, ",[242,979,264],{},[950,981,982,987,992],{},[967,983,984],{},[242,985,986],{},"host",[967,988,989],{},[242,990,991],{},"https:\u002F\u002Fingest.rabolic.com",[967,993,994],{},"For a first-party proxy or self-hosting",[950,996,997,1002,1006],{},[967,998,999],{},[242,1000,1001],{},"trackRoutes",[967,1003,1004],{},[242,1005,373],{},[967,1007,1008,1011,1012,269,1015,269,1018,1021],{},[242,1009,1010],{},"$pageview"," on SPA navigation (",[242,1013,1014],{},"pushState",[242,1016,1017],{},"replaceState",[242,1019,1020],{},"popstate",")",[950,1023,1024,1029,1033],{},[967,1025,1026],{},[242,1027,1028],{},"trackPageLeave",[967,1030,1031],{},[242,1032,373],{},[967,1034,1035,1038,1039,1042,1043],{},[242,1036,1037],{},"$page_leave"," with ",[242,1040,1041],{},"active_ms"," and ",[242,1044,1045],{},"scroll_depth",[950,1047,1048,1053,1058],{},[967,1049,1050],{},[242,1051,1052],{},"persistence",[967,1054,1055],{},[242,1056,1057],{},"'localStorage'",[967,1059,1060,1063],{},[242,1061,1062],{},"'memory'",": cookieless, ids last one page lifetime",[950,1065,1066,1071,1074],{},[967,1067,1068],{},[242,1069,1070],{},"cookieDomain",[967,1072,1073],{},"current host",[967,1075,1076,1077,1080,1081,1084],{},"Such as ",[242,1078,1079],{},".example.com",", to share ",[242,1082,1083],{},"rb_aid"," across subdomains",[950,1086,1087,1092,1097],{},[967,1088,1089],{},[242,1090,1091],{},"consent",[967,1093,1094],{},[242,1095,1096],{},"'granted'",[967,1098,1099,1102],{},[242,1100,1101],{},"'pending'"," until your cookie banner answers",[950,1104,1105,1110,1115],{},[967,1106,1107],{},[242,1108,1109],{},"debug",[967,1111,1112],{},[242,1113,1114],{},"false",[967,1116,1117],{},"Log every call",[950,1119,1120,1125,1130],{},[967,1121,1122],{},[242,1123,1124],{},"flushAt",[967,1126,1127],{},[242,1128,1129],{},"20",[967,1131,1132],{},"Send when this many events are queued (1–500)",[950,1134,1135,1140,1145],{},[967,1136,1137],{},[242,1138,1139],{},"flushIntervalMs",[967,1141,1142],{},[242,1143,1144],{},"5000",[967,1146,1147],{},"Send at least this often",[239,1149,1150,1151,1154],{},"At start the SDK fetches remote config (",[242,1152,1153],{},"GET \u002Fv1\u002Fconfig",", cached for 5 minutes). Today it sets the session timeout from your project settings. The protocol has more switches, but no project setting controls them yet.",[275,1156,1158],{"id":1157},"api","API",[944,1160,1161,1171],{},[947,1162,1163],{},[950,1164,1165,1168],{},[953,1166,1167],{},"Method",[953,1169,1170],{},"Does",[962,1172,1173,1183,1197,1209,1229,1239,1253,1263,1281,1291,1307],{},[950,1174,1175,1180],{},[967,1176,1177],{},[242,1178,1179],{},"init(options)",[967,1181,1182],{},"Starts the SDK. Logs and does nothing for a missing, invalid or secret key",[950,1184,1185,1190],{},[967,1186,1187],{},[242,1188,1189],{},"track(event, properties?)",[967,1191,1192,1193,1196],{},"Custom event. snake_case; names starting with ",[242,1194,1195],{},"$"," are reserved",[950,1198,1199,1204],{},[967,1200,1201],{},[242,1202,1203],{},"page(properties?)",[967,1205,1206,1207],{},"A manual ",[242,1208,1010],{},[950,1210,1211,1216],{},[967,1212,1213],{},[242,1214,1215],{},"identify(userId, traits?)",[967,1217,1218,1219,1222,1223,1038,1226],{},"Sets ",[242,1220,1221],{},"user_id"," on this and later events; sends ",[242,1224,1225],{},"$identify",[242,1227,1228],{},"traits",[950,1230,1231,1236],{},[967,1232,1233],{},[242,1234,1235],{},"reset()",[967,1237,1238],{},"Logout: new anonymous id and session, no user id, no super properties",[950,1240,1241,1250],{},[967,1242,1243,1246,1247],{},[242,1244,1245],{},"register(properties)"," \u002F ",[242,1248,1249],{},"unregister(key)",[967,1251,1252],{},"Super properties, sent with every later event (event properties win)",[950,1254,1255,1260],{},[967,1256,1257],{},[242,1258,1259],{},"setConsent('granted' | 'pending' | 'denied')",[967,1261,1262],{},"Changes consent at runtime",[950,1264,1265,1273],{},[967,1266,1267,1246,1270],{},[242,1268,1269],{},"optOut()",[242,1271,1272],{},"optIn()",[967,1274,1275,1246,1278],{},[242,1276,1277],{},"setConsent('denied')",[242,1279,1280],{},"setConsent('granted')",[950,1282,1283,1288],{},[967,1284,1285],{},[242,1286,1287],{},"flush()",[967,1289,1290],{},"Sends the queue now. Never rejects",[950,1292,1293,1298],{},[967,1294,1295],{},[242,1296,1297],{},"getAnonymousId()",[967,1299,1300,1301,1304,1305],{},"The anonymous id, or ",[242,1302,1303],{},"null"," before ",[242,1306,360],{},[950,1308,1309,1314],{},[967,1310,1311],{},[242,1312,1313],{},"appLink(url)",[967,1315,1316,1317,1320],{},"Adds ",[242,1318,1319],{},"rb_aid=\u003Canonymous id>"," to a store or deep link (needs consent)",[239,1322,1323,1324,1327],{},"No method throws into your page. Pass ",[242,1325,1326],{},"debug: true"," to see why a call was dropped.",[275,1329,1331],{"id":1330},"automatic-events","Automatic events",[944,1333,1334,1344],{},[947,1335,1336],{},[950,1337,1338,1341],{},[953,1339,1340],{},"Event",[953,1342,1343],{},"When",[962,1345,1346,1355],{},[950,1347,1348,1352],{},[967,1349,1350],{},[242,1351,1010],{},[967,1353,1354],{},"One on load and one per SPA route. Same-URL and hash-only changes are ignored",[950,1356,1357,1361],{},[967,1358,1359],{},[242,1360,1037],{},[967,1362,1363,1364,1042,1366],{},"One per page view, on route change or the first time the page is hidden. With ",[242,1365,1041],{},[242,1367,1045],{},[1369,1370,1371,1384,1401,1426],"ul",{},[1372,1373,1374,1377,1378,1380,1381,1383],"li",{},[258,1375,1376],{},"Active time:"," ",[242,1379,1041],{}," counts time the page was visible and interacted with in the last 30 s. ",[242,1382,1045],{}," is the furthest point seen, from 0 to 1.",[1372,1385,1386,1389,1390,1393,1394,1397,1398,253],{},[258,1387,1388],{},"Page hide:"," on ",[242,1391,1392],{},"visibilitychange"," to hidden or ",[242,1395,1396],{},"pagehide",", queued events go out with ",[242,1399,1400],{},"navigator.sendBeacon",[1372,1402,1403,1377,1406,1409,1410,269,1413,269,1416,269,1419,1422,1423,253],{},[258,1404,1405],{},"Campaigns:",[242,1407,1408],{},"utm_*"," and the click id type (",[242,1411,1412],{},"gclid",[242,1414,1415],{},"fbclid",[242,1417,1418],{},"ttclid",[242,1420,1421],{},"msclkid",") from the landing URL go in ",[242,1424,1425],{},"context.campaign",[1372,1427,1428,1377,1431,1434],{},[258,1429,1430],{},"Context:",[242,1432,1433],{},"platform: 'web'",", locale, time zone, screen size and density, page URL, path, title and referrer, and the user agent.",[275,1436,83],{"id":1437},"sessions",[1369,1439,1440,1446,1449,1452],{},[1372,1441,1442,1443,253],{},"Sessions are shared across tabs through ",[242,1444,1445],{},"localStorage",[1372,1447,1448],{},"A new session starts after 30 minutes without events, or the web session timeout set in your project settings.",[1372,1450,1451],{},"A landing with different campaign parameters starts a new session.",[1372,1453,1454,1456],{},[242,1455,1235],{}," starts a new session.",[239,1458,1459,1460,253],{},"See ",[247,1461,83],{"href":84},[275,1463,78],{"id":1464},"identity",[239,1466,1467,1468,1471],{},"Call ",[242,1469,1470],{},"identify()"," after signup and after every login, with your own stable user id. Use the same id on every platform:",[297,1473,1475],{"className":323,"code":1474,"language":325,"meta":303,"style":303},"rabolic.identify(user.id, { plan: 'pro' })\n",[242,1476,1477],{"__ignoreMap":303},[307,1478,1479,1481,1483,1485,1487],{"class":309,"line":310},[307,1480,356],{"class":336},[307,1482,396],{"class":359},[307,1484,399],{"class":336},[307,1486,402],{"class":316},[307,1488,376],{"class":336},[239,1490,1467,1491,1493],{},[242,1492,1235],{}," when someone logs out, so the next person on that device starts fresh:",[297,1495,1497],{"className":323,"code":1496,"language":325,"meta":303,"style":303},"rabolic.reset()\n",[242,1498,1499],{"__ignoreMap":303},[307,1500,1501,1503,1506],{"class":309,"line":310},[307,1502,356],{"class":336},[307,1504,1505],{"class":359},"reset",[307,1507,1508],{"class":336},"()\n",[239,1510,1459,1511,253],{},[247,1512,78],{"href":79},[1514,1515,1517],"h3",{"id":1516},"links-into-your-app","Links into your app",[239,1519,1520,1523,1524,1526,1527,1530,1531,1534,1535,1537],{},[242,1521,1522],{},"rabolic.appLink(url)"," adds ",[242,1525,1319],{}," to a store or deep link. The React Native and Flutter SDKs report it in ",[242,1528,1529],{},"$deep_link"," as ",[242,1532,1533],{},"linked_anonymous_id",". Rabolic stores it, but doesn't link the web visitor to the app user by it yet. To join them today, call ",[242,1536,1470],{}," with the same user id on both sides.",[275,1539,113],{"id":1540},"consent-and-privacy",[944,1542,1543,1554],{},[947,1544,1545],{},[950,1546,1547,1551],{},[953,1548,1549],{},[242,1550,1091],{},[953,1552,1553],{},"What happens",[962,1555,1556,1566,1577],{},[950,1557,1558,1563],{},[967,1559,1560,1562],{},[242,1561,1096],{}," (default)",[967,1564,1565],{},"Tracks and sends normally",[950,1567,1568,1572],{},[967,1569,1570],{},[242,1571,1101],{},[967,1573,1574,1575],{},"Writes no cookie and nothing to storage, and sends nothing. Events wait in memory until ",[242,1576,1280],{},[950,1578,1579,1584],{},[967,1580,1581],{},[242,1582,1583],{},"'denied'",[967,1585,1586],{},"Drops the queue and removes everything stored, cookie included",[297,1588,1590],{"className":323,"code":1589,"language":325,"meta":303,"style":303},"rabolic.init({ projectKey: 'rb_pub_…', consent: 'pending' })\n\n\u002F\u002F when your cookie banner answers\nrabolic.setConsent('granted') \u002F\u002F or 'denied'\n",[242,1591,1592,1609,1613,1618],{"__ignoreMap":303},[307,1593,1594,1596,1598,1600,1602,1605,1607],{"class":309,"line":310},[307,1595,356],{"class":336},[307,1597,360],{"class":359},[307,1599,363],{"class":336},[307,1601,366],{"class":316},[307,1603,1604],{"class":336},", consent: ",[307,1606,1101],{"class":316},[307,1608,376],{"class":336},[307,1610,1611],{"class":309,"line":346},[307,1612,350],{"emptyLinePlaceholder":349},[307,1614,1615],{"class":309,"line":353},[307,1616,1617],{"class":387},"\u002F\u002F when your cookie banner answers\n",[307,1619,1620,1622,1625,1627,1629,1632],{"class":309,"line":379},[307,1621,356],{"class":336},[307,1623,1624],{"class":359},"setConsent",[307,1626,420],{"class":336},[307,1628,1096],{"class":316},[307,1630,1631],{"class":336},") ",[307,1633,1634],{"class":387},"\u002F\u002F or 'denied'\n",[239,1636,1637,1377,1640,1643,1644,253],{},[258,1638,1639],{},"Cookieless mode.",[242,1641,1642],{},"persistence: 'memory'"," keeps the ids in memory only, for one page lifetime. Nothing is written to cookies or ",[242,1645,1445],{},[239,1647,1648],{},"What the SDK stores, with the default persistence:",[1369,1650,1651,1669,1675],{},[1372,1652,1653,1654,261,1656,1658,1659,1661,1662,269,1665,1668],{},"the anonymous id, a random UUID, in ",[242,1655,1445],{},[242,1657,1083],{},"), mirrored to a first-party ",[242,1660,1083],{}," cookie (",[242,1663,1664],{},"SameSite=Lax",[242,1666,1667],{},"Secure"," on https, one year);",[1372,1670,1671,1672,1674],{},"the session id and last activity, in ",[242,1673,1445],{},";",[1372,1676,1677,1678,261,1680,932],{},"the unsent queue, in ",[242,1679,1445],{},[242,1681,1682],{},"rb_queue",[239,1684,1685,1686,253],{},"The SDK never reads form fields, the clipboard or location, and does no fingerprinting. See ",[247,1687,113],{"href":114},[275,1689,1691],{"id":1690},"delivery-and-limits","Delivery and limits",[944,1693,1694,1702],{},[947,1695,1696],{},[950,1697,1698,1700],{},[953,1699],{},[953,1701],{},[962,1703,1704,1715,1728,1736,1744],{},[950,1705,1706,1709],{},[967,1707,1708],{},"Requests",[967,1710,1711,1714],{},[242,1712,1713],{},"text\u002Fplain"," with the key in the body and no credentials, so the browser sends no CORS preflight",[950,1716,1717,1720],{},[967,1718,1719],{},"Queue",[967,1721,1722,1723,261,1725,1727],{},"Up to 1,000 events in ",[242,1724,1445],{},[242,1726,1682],{},"). It survives reloads. When full, the oldest go first",[950,1729,1730,1733],{},[967,1731,1732],{},"Batch",[967,1734,1735],{},"Up to 500 events or 900 KB",[950,1737,1738,1741],{},[967,1739,1740],{},"One event",[967,1742,1743],{},"32 KB (32,768 bytes of UTF-8 JSON). Larger events are dropped",[950,1745,1746,1749],{},[967,1747,1748],{},"Event age",[967,1750,1751],{},"Events older than 7 days are dropped before sending",[239,1753,1459,1754,253],{},[247,1755,214],{"href":215},[1757,1758,1759],"style",{},"html pre.shiki code .sQJ0q, html code.shiki .sQJ0q{--shiki-light:#953800;--shiki-default:#953800;--shiki-dark:#FFA657}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 .s5nWI, html code.shiki .s5nWI{--shiki-light:#CF222E;--shiki-default:#CF222E;--shiki-dark:#FF7B72}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 .sDkKp, html code.shiki .sDkKp{--shiki-light:#0550AE;--shiki-default:#0550AE;--shiki-dark:#79C0FF}html pre.shiki code .s9BHP, html code.shiki .s9BHP{--shiki-light:#6E7781;--shiki-default:#6E7781;--shiki-dark:#8B949E}html pre.shiki code .sfEsd, html code.shiki .sfEsd{--shiki-light:#116329;--shiki-default:#116329;--shiki-dark:#7EE787}",{"title":303,"searchDepth":346,"depth":346,"links":1761},[1762,1763,1764,1765,1766,1767,1770,1771],{"id":277,"depth":346,"text":278},{"id":935,"depth":346,"text":936},{"id":1157,"depth":346,"text":1158},{"id":1330,"depth":346,"text":1331},{"id":1437,"depth":346,"text":83},{"id":1464,"depth":346,"text":78,"children":1768},[1769],{"id":1516,"depth":353,"text":1517},{"id":1540,"depth":346,"text":113},{"id":1690,"depth":346,"text":1691},"Install @rabolic\u002Fweb from npm or a script tag. Options, automatic page views and page leaves, campaigns, sessions, identity, consent, cookieless mode and limits.","md",null,{},{"icon":46},{"title":1778,"description":1779},"Web SDK (@rabolic\u002Fweb)","Install Rabolic's browser SDK from npm or a script tag. Options, automatic page views and page leaves, campaigns, sessions, identify and reset, consent, cookieless mode and limits.","8V5hqIRHLCMqYkOooA9DLHBQDIp_VNqG2TdLBH7Ui-A",[1782,1784],{"title":31,"path":32,"stem":33,"description":1783,"icon":34,"children":-1},"Rabolic's 3-day free trial with Growth's features and a 250,000-event cap. It starts with your first accepted event, needs no card, and is one per person.",{"title":48,"path":49,"stem":50,"description":1785,"icon":51,"children":-1},"Install @rabolic\u002Freact-native in Expo or bare React Native apps for iOS and Android. Options, app lifecycle events, screens with React Navigation and Expo Router, identity, deep links, consent and limits.",1794242363863]