[{"data":1,"prerenderedAt":2023},["ShallowReactive",2],{"navigation_docs":3,"-sdks-http-api":233,"-sdks-http-api-surround":2018},[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":63,"body":235,"description":2009,"extension":2010,"links":2011,"meta":2012,"navigation":2013,"path":64,"seo":2014,"stem":65,"__hash__":2017},"docs\u002F2.sdks\u002F5.http-api.md",{"type":236,"value":237,"toc":1991},"minimark",[238,261,264,269,275,315,319,374,377,403,414,417,421,471,601,606,723,727,938,947,950,968,971,974,1328,1358,1362,1365,1432,1436,1653,1665,1676,1680,1766,1770,1795,1798,1826,1830,1837,1841,1850,1960,1980,1984,1987],[239,240,241,242,252,253,260],"p",{},"The ingest API is the protocol every Rabolic SDK speaks: JSON batches over HTTPS, one answer per batch, and retry rules that never count an event twice. Use it from a backend in any language, or from a platform without an SDK. The full specification is ",[243,244,248],"a",{"href":245,"rel":246},"https:\u002F\u002Fgithub.com\u002Frabolic\u002Fsdks\u002Fblob\u002Fmain\u002Fspec\u002Fprotocol.md",[247],"nofollow",[249,250,251],"code",{},"spec\u002Fprotocol.md",", with a JSON Schema in ",[243,254,257],{"href":255,"rel":256},"https:\u002F\u002Fgithub.com\u002Frabolic\u002Fsdks\u002Fblob\u002Fmain\u002Fspec\u002Fschema\u002Fbatch.schema.json",[247],[249,258,259],{},"spec\u002Fschema\u002Fbatch.schema.json",".",[239,262,263],{},"In a browser, a Flutter or React Native app, or Node.js, use the SDK: it already handles queueing, batching, retries, ids and sessions.",[265,266,268],"h2",{"id":267},"endpoints","Endpoints",[239,270,271,272,260],{},"Host: ",[249,273,274],{},"https:\u002F\u002Fingest.rabolic.com",[276,277,278,291],"table",{},[279,280,281],"thead",{},[282,283,284,288],"tr",{},[285,286,287],"th",{},"Method and path",[285,289,290],{},"Purpose",[292,293,294,305],"tbody",{},[282,295,296,302],{},[297,298,299],"td",{},[249,300,301],{},"POST \u002Fv1\u002Fbatch",[297,303,304],{},"Send 1–500 events",[282,306,307,312],{},[297,308,309],{},[249,310,311],{},"GET \u002Fv1\u002Fconfig?key=\u003Cpublishable key>",[297,313,314],{},"Remote config for client SDKs. Cacheable for 5 minutes",[265,316,318],{"id":317},"authentication","Authentication",[276,320,321,334],{},[279,322,323],{},[282,324,325,328,331],{},[285,326,327],{},"Key",[285,329,330],{},"Prefix",[285,332,333],{},"Where it may be used",[292,335,336,349,362],{},[282,337,338,341,346],{},[297,339,340],{},"Publishable",[297,342,343],{},[249,344,345],{},"rb_pub_",[297,347,348],{},"Browsers and apps. Write-only. Can't send revenue events",[282,350,351,354,359],{},[297,352,353],{},"Secret, production",[297,355,356],{},[249,357,358],{},"rb_live_",[297,360,361],{},"Servers only",[282,363,364,367,372],{},[297,365,366],{},"Secret, test",[297,368,369],{},[249,370,371],{},"rb_test_",[297,373,361],{},[239,375,376],{},"Send the key in a header (preferred):",[378,379,384],"pre",{"className":380,"code":381,"language":382,"meta":383,"style":383},"language-http shiki shiki-themes github-light-default github-light-default github-dark-default","Authorization: Bearer rb_live_…\n","http","",[249,385,386],{"__ignoreMap":383},[387,388,391,395,399],"span",{"class":389,"line":390},"line",1,[387,392,394],{"class":393},"sfEsd","Authorization",[387,396,398],{"class":397},"s5nWI",":",[387,400,402],{"class":401},"s-BGO"," Bearer rb_live_…\n",[239,404,405,406,409,410,413],{},"Or in the envelope's ",[249,407,408],{},"key"," field, for ",[249,411,412],{},"navigator.sendBeacon",", which can't set headers. When both are present, they must be equal.",[239,415,416],{},"The key's environment (production, staging or development) is stored with the key. Events take it from the key.",[265,418,420],{"id":419},"request","Request",[422,423,424,447,465],"ul",{},[425,426,427,431,432,435,436,439,440,443,444,260],"li",{},[428,429,430],"strong",{},"Content type:"," ",[249,433,434],{},"application\u002Fjson"," or ",[249,437,438],{},"text\u002Fplain;charset=UTF-8",". Browsers use ",[249,441,442],{},"text\u002Fplain"," so the request needs no CORS preflight. The body is JSON either way. Any other content type gets a ",[249,445,446],{},"415",[425,448,449,431,452,455,456,435,459,462,463,260],{},[428,450,451],{},"Compression:",[249,453,454],{},"Content-Encoding: gzip"," is optional. Any encoding other than ",[249,457,458],{},"gzip",[249,460,461],{},"identity"," gets a ",[249,464,446],{},[425,466,467,470],{},[428,468,469],{},"Size:"," at most 1 MB on the wire and 5 MB decompressed, with 1–500 events per batch.",[378,472,477],{"className":473,"code":474,"filename":475,"language":476,"meta":383,"style":383},"language-bash shiki shiki-themes github-light-default github-light-default github-dark-default","curl https:\u002F\u002Fingest.rabolic.com\u002Fv1\u002Fbatch \\\n  -H \"Authorization: Bearer $RABOLIC_SECRET_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"sent_at\": \"2026-11-08T10:00:03.120Z\",\n    \"library\": { \"name\": \"http\", \"version\": \"1.0.0\" },\n    \"events\": [{\n      \"event_id\": \"019a6b2e-6f3c-7d1a-9b2f-3c4d5e6f7a8b\",\n      \"type\": \"track\",\n      \"event\": \"signup_completed\",\n      \"timestamp\": \"2026-11-08T10:00:01.000Z\",\n      \"anonymous_id\": \"usr_8f2k1x9q\",\n      \"user_id\": \"usr_8f2k1x9q\",\n      \"properties\": { \"method\": \"google\" }\n    }]\n  }'\n","Terminal","bash",[249,478,479,491,510,520,529,535,541,547,553,559,565,571,577,583,589,595],{"__ignoreMap":383},[387,480,481,485,488],{"class":389,"line":390},[387,482,484],{"class":483},"sQJ0q","curl",[387,486,487],{"class":401}," https:\u002F\u002Fingest.rabolic.com\u002Fv1\u002Fbatch",[387,489,490],{"class":397}," \\\n",[387,492,494,498,501,505,508],{"class":389,"line":493},2,[387,495,497],{"class":496},"sDkKp","  -H",[387,499,500],{"class":401}," \"Authorization: Bearer ",[387,502,504],{"class":503},"s_bOF","$RABOLIC_SECRET_KEY",[387,506,507],{"class":401},"\"",[387,509,490],{"class":397},[387,511,513,515,518],{"class":389,"line":512},3,[387,514,497],{"class":496},[387,516,517],{"class":401}," \"Content-Type: application\u002Fjson\"",[387,519,490],{"class":397},[387,521,523,526],{"class":389,"line":522},4,[387,524,525],{"class":496},"  -d",[387,527,528],{"class":401}," '{\n",[387,530,532],{"class":389,"line":531},5,[387,533,534],{"class":401},"    \"sent_at\": \"2026-11-08T10:00:03.120Z\",\n",[387,536,538],{"class":389,"line":537},6,[387,539,540],{"class":401},"    \"library\": { \"name\": \"http\", \"version\": \"1.0.0\" },\n",[387,542,544],{"class":389,"line":543},7,[387,545,546],{"class":401},"    \"events\": [{\n",[387,548,550],{"class":389,"line":549},8,[387,551,552],{"class":401},"      \"event_id\": \"019a6b2e-6f3c-7d1a-9b2f-3c4d5e6f7a8b\",\n",[387,554,556],{"class":389,"line":555},9,[387,557,558],{"class":401},"      \"type\": \"track\",\n",[387,560,562],{"class":389,"line":561},10,[387,563,564],{"class":401},"      \"event\": \"signup_completed\",\n",[387,566,568],{"class":389,"line":567},11,[387,569,570],{"class":401},"      \"timestamp\": \"2026-11-08T10:00:01.000Z\",\n",[387,572,574],{"class":389,"line":573},12,[387,575,576],{"class":401},"      \"anonymous_id\": \"usr_8f2k1x9q\",\n",[387,578,580],{"class":389,"line":579},13,[387,581,582],{"class":401},"      \"user_id\": \"usr_8f2k1x9q\",\n",[387,584,586],{"class":389,"line":585},14,[387,587,588],{"class":401},"      \"properties\": { \"method\": \"google\" }\n",[387,590,592],{"class":389,"line":591},15,[387,593,594],{"class":401},"    }]\n",[387,596,598],{"class":389,"line":597},16,[387,599,600],{"class":401},"  }'\n",[602,603,605],"h3",{"id":604},"batch-envelope","Batch envelope",[276,607,608,624],{},[279,609,610],{},[282,611,612,615,618,621],{},[285,613,614],{},"Field",[285,616,617],{},"Type",[285,619,620],{},"Required",[285,622,623],{},"Notes",[292,625,626,642,680,694,708],{},[282,627,628,633,636,639],{},[297,629,630],{},[249,631,632],{},"sent_at",[297,634,635],{},"RFC 3339 UTC timestamp with milliseconds",[297,637,638],{},"yes",[297,640,641],{},"Set when the request is sent, not when the batch was built. Used for clock-skew correction",[282,643,644,649,652,654],{},[297,645,646],{},[249,647,648],{},"library.name",[297,650,651],{},"string",[297,653,638],{},[297,655,656,658,659,662,663,662,666,662,669,662,672,662,675,662,678],{},[249,657,382],{}," for your own client. One of ",[249,660,661],{},"rabolic-web",", ",[249,664,665],{},"rabolic-node",[249,667,668],{},"rabolic-react-native",[249,670,671],{},"rabolic-ios",[249,673,674],{},"rabolic-android",[249,676,677],{},"rabolic-flutter",[249,679,382],{},[282,681,682,687,689,691],{},[297,683,684],{},[249,685,686],{},"library.version",[297,688,651],{},[297,690,638],{},[297,692,693],{},"Your client's version",[282,695,696,700,702,705],{},[297,697,698],{},[249,699,408],{},[297,701,651],{},[297,703,704],{},"no",[297,706,707],{},"Only when the key can't go in a header",[282,709,710,715,718,720],{},[297,711,712],{},[249,713,714],{},"events",[297,716,717],{},"array, 1–500",[297,719,638],{},[297,721,722],{},"Each event is checked on its own: one bad event never rejects the batch",[602,724,726],{"id":725},"event","Event",[276,728,729,741],{},[279,730,731],{},[282,732,733,735,737,739],{},[285,734,614],{},[285,736,617],{},[285,738,620],{},[285,740,623],{},[292,742,743,762,804,829,844,859,877,893,908,924],{},[282,744,745,750,753,755],{},[297,746,747],{},[249,748,749],{},"event_id",[297,751,752],{},"UUID (v7 preferred)",[297,754,638],{},[297,756,757,758,761],{},"Generated once when the event is created and ",[428,759,760],{},"kept on every retry",". The server drops an event whose id it has received in the last 48 hours",[282,763,764,769,784,786],{},[297,765,766],{},[249,767,768],{},"type",[297,770,771,774,775,774,778,774,781],{},[249,772,773],{},"track"," | ",[249,776,777],{},"page",[249,779,780],{},"screen",[249,782,783],{},"identify",[297,785,638],{},[297,787,788,790,791,662,794,790,796,662,799,790,801],{},[249,789,777],{}," is always ",[249,792,793],{},"$pageview",[249,795,780],{},[249,797,798],{},"$screen",[249,800,783],{},[249,802,803],{},"$identify",[282,805,806,810,813,815],{},[297,807,808],{},[249,809,725],{},[297,811,812],{},"string, 1–200 chars",[297,814,638],{},[297,816,817,820,821,824,825],{},[249,818,819],{},"snake_case"," by convention. Names starting with ",[249,822,823],{},"$"," must be ",[243,826,828],{"href":827},"\u002Fconcepts\u002Fevents#reserved-events","reserved events",[282,830,831,836,839,841],{},[297,832,833],{},[249,834,835],{},"timestamp",[297,837,838],{},"RFC 3339 UTC with milliseconds",[297,840,638],{},[297,842,843],{},"When the event happened, on the sender's clock",[282,845,846,851,854,856],{},[297,847,848],{},[249,849,850],{},"anonymous_id",[297,852,853],{},"string, 1–128 chars",[297,855,638],{},[297,857,858],{},"The device's random id. From a server with only a user id, send the user id here too",[282,860,861,866,872,874],{},[297,862,863],{},[249,864,865],{},"user_id",[297,867,868,869],{},"string, 1–255 chars, or ",[249,870,871],{},"null",[297,873,704],{},[297,875,876],{},"Your own id for the person",[282,878,879,884,887,890],{},[297,880,881],{},[249,882,883],{},"session_id",[297,885,886],{},"UUIDv7",[297,888,889],{},"client SDKs: yes; server: no",[297,891,892],{},"Its embedded timestamp is the session start",[282,894,895,900,903,905],{},[297,896,897],{},[249,898,899],{},"properties",[297,901,902],{},"object",[297,904,704],{},[297,906,907],{},"At most 255 keys per level, depth at most 5, keys at most 255 chars",[282,909,910,915,917,919],{},[297,911,912],{},[249,913,914],{},"traits",[297,916,902],{},[297,918,704],{},[297,920,921,923],{},[249,922,783],{}," only: person properties to set",[282,925,926,931,933,935],{},[297,927,928],{},[249,929,930],{},"context",[297,932,902],{},[297,934,704],{},[297,936,937],{},"Below",[239,939,940,941,943,944,946],{},"When ",[249,942,850],{}," equals ",[249,945,865],{},", the server treats the event as having no device id: it attaches the event to that user and links no anonymous id.",[239,948,949],{},"Sessions:",[422,951,952,962],{},[425,953,954,955,958,959,961],{},"Events sent with a ",[428,956,957],{},"publishable"," key and no ",[249,960,883],{}," get one from Rabolic, per anonymous id, with the project's web session timeout.",[425,963,954,964,967],{},[428,965,966],{},"secret"," key are server events and belong to no session. Purchases are still credited to the session they happened in.",[602,969,970],{"id":930},"Context",[239,972,973],{},"Every field is optional:",[378,975,979],{"className":976,"code":977,"language":978,"meta":383,"style":383},"language-json shiki shiki-themes github-light-default github-light-default github-dark-default","{\n  \"platform\": \"web | ios | android\",\n  \"app\": { \"version\": \"4.12.0\", \"build\": \"412\", \"bundle\": \"com.acme.fit\" },\n  \"device\": { \"type\": \"mobile | tablet | desktop | tv\", \"model\": \"iPhone15,2\", \"manufacturer\": \"Apple\" },\n  \"os\": { \"name\": \"iOS\", \"version\": \"18.1\" },\n  \"browser\": { \"name\": \"Chrome\", \"version\": \"131\" },\n  \"locale\": \"en-US\",\n  \"timezone\": \"Europe\u002FBerlin\",\n  \"screen\": { \"width\": 393, \"height\": 852, \"density\": 3 },\n  \"page\": { \"url\": \"https:\u002F\u002F…\", \"path\": \"\u002Fpricing\", \"title\": \"Pricing\", \"referrer\": \"https:\u002F\u002Fgoogle.com\u002F\" },\n  \"campaign\": { \"source\": \"google\", \"medium\": \"cpc\", \"name\": \"q4\", \"content\": \"ad1\", \"term\": \"fitness\", \"click_id\": \"gclid\" },\n  \"screen_name\": \"HomeScreen\",\n  \"user_agent\": \"Mozilla\u002F5.0 …\"\n}\n","json",[249,980,981,986,1000,1039,1076,1102,1127,1139,1151,1188,1235,1301,1313,1323],{"__ignoreMap":383},[387,982,983],{"class":389,"line":390},[387,984,985],{"class":503},"{\n",[387,987,988,991,994,997],{"class":389,"line":493},[387,989,990],{"class":393},"  \"platform\"",[387,992,993],{"class":503},": ",[387,995,996],{"class":401},"\"web | ios | android\"",[387,998,999],{"class":503},",\n",[387,1001,1002,1005,1008,1011,1013,1016,1018,1021,1023,1026,1028,1031,1033,1036],{"class":389,"line":512},[387,1003,1004],{"class":393},"  \"app\"",[387,1006,1007],{"class":503},": { ",[387,1009,1010],{"class":393},"\"version\"",[387,1012,993],{"class":503},[387,1014,1015],{"class":401},"\"4.12.0\"",[387,1017,662],{"class":503},[387,1019,1020],{"class":393},"\"build\"",[387,1022,993],{"class":503},[387,1024,1025],{"class":401},"\"412\"",[387,1027,662],{"class":503},[387,1029,1030],{"class":393},"\"bundle\"",[387,1032,993],{"class":503},[387,1034,1035],{"class":401},"\"com.acme.fit\"",[387,1037,1038],{"class":503}," },\n",[387,1040,1041,1044,1046,1049,1051,1054,1056,1059,1061,1064,1066,1069,1071,1074],{"class":389,"line":522},[387,1042,1043],{"class":393},"  \"device\"",[387,1045,1007],{"class":503},[387,1047,1048],{"class":393},"\"type\"",[387,1050,993],{"class":503},[387,1052,1053],{"class":401},"\"mobile | tablet | desktop | tv\"",[387,1055,662],{"class":503},[387,1057,1058],{"class":393},"\"model\"",[387,1060,993],{"class":503},[387,1062,1063],{"class":401},"\"iPhone15,2\"",[387,1065,662],{"class":503},[387,1067,1068],{"class":393},"\"manufacturer\"",[387,1070,993],{"class":503},[387,1072,1073],{"class":401},"\"Apple\"",[387,1075,1038],{"class":503},[387,1077,1078,1081,1083,1086,1088,1091,1093,1095,1097,1100],{"class":389,"line":531},[387,1079,1080],{"class":393},"  \"os\"",[387,1082,1007],{"class":503},[387,1084,1085],{"class":393},"\"name\"",[387,1087,993],{"class":503},[387,1089,1090],{"class":401},"\"iOS\"",[387,1092,662],{"class":503},[387,1094,1010],{"class":393},[387,1096,993],{"class":503},[387,1098,1099],{"class":401},"\"18.1\"",[387,1101,1038],{"class":503},[387,1103,1104,1107,1109,1111,1113,1116,1118,1120,1122,1125],{"class":389,"line":537},[387,1105,1106],{"class":393},"  \"browser\"",[387,1108,1007],{"class":503},[387,1110,1085],{"class":393},[387,1112,993],{"class":503},[387,1114,1115],{"class":401},"\"Chrome\"",[387,1117,662],{"class":503},[387,1119,1010],{"class":393},[387,1121,993],{"class":503},[387,1123,1124],{"class":401},"\"131\"",[387,1126,1038],{"class":503},[387,1128,1129,1132,1134,1137],{"class":389,"line":543},[387,1130,1131],{"class":393},"  \"locale\"",[387,1133,993],{"class":503},[387,1135,1136],{"class":401},"\"en-US\"",[387,1138,999],{"class":503},[387,1140,1141,1144,1146,1149],{"class":389,"line":549},[387,1142,1143],{"class":393},"  \"timezone\"",[387,1145,993],{"class":503},[387,1147,1148],{"class":401},"\"Europe\u002FBerlin\"",[387,1150,999],{"class":503},[387,1152,1153,1156,1158,1161,1163,1166,1168,1171,1173,1176,1178,1181,1183,1186],{"class":389,"line":555},[387,1154,1155],{"class":393},"  \"screen\"",[387,1157,1007],{"class":503},[387,1159,1160],{"class":393},"\"width\"",[387,1162,993],{"class":503},[387,1164,1165],{"class":496},"393",[387,1167,662],{"class":503},[387,1169,1170],{"class":393},"\"height\"",[387,1172,993],{"class":503},[387,1174,1175],{"class":496},"852",[387,1177,662],{"class":503},[387,1179,1180],{"class":393},"\"density\"",[387,1182,993],{"class":503},[387,1184,1185],{"class":496},"3",[387,1187,1038],{"class":503},[387,1189,1190,1193,1195,1198,1200,1203,1205,1208,1210,1213,1215,1218,1220,1223,1225,1228,1230,1233],{"class":389,"line":561},[387,1191,1192],{"class":393},"  \"page\"",[387,1194,1007],{"class":503},[387,1196,1197],{"class":393},"\"url\"",[387,1199,993],{"class":503},[387,1201,1202],{"class":401},"\"https:\u002F\u002F…\"",[387,1204,662],{"class":503},[387,1206,1207],{"class":393},"\"path\"",[387,1209,993],{"class":503},[387,1211,1212],{"class":401},"\"\u002Fpricing\"",[387,1214,662],{"class":503},[387,1216,1217],{"class":393},"\"title\"",[387,1219,993],{"class":503},[387,1221,1222],{"class":401},"\"Pricing\"",[387,1224,662],{"class":503},[387,1226,1227],{"class":393},"\"referrer\"",[387,1229,993],{"class":503},[387,1231,1232],{"class":401},"\"https:\u002F\u002Fgoogle.com\u002F\"",[387,1234,1038],{"class":503},[387,1236,1237,1240,1242,1245,1247,1250,1252,1255,1257,1260,1262,1264,1266,1269,1271,1274,1276,1279,1281,1284,1286,1289,1291,1294,1296,1299],{"class":389,"line":567},[387,1238,1239],{"class":393},"  \"campaign\"",[387,1241,1007],{"class":503},[387,1243,1244],{"class":393},"\"source\"",[387,1246,993],{"class":503},[387,1248,1249],{"class":401},"\"google\"",[387,1251,662],{"class":503},[387,1253,1254],{"class":393},"\"medium\"",[387,1256,993],{"class":503},[387,1258,1259],{"class":401},"\"cpc\"",[387,1261,662],{"class":503},[387,1263,1085],{"class":393},[387,1265,993],{"class":503},[387,1267,1268],{"class":401},"\"q4\"",[387,1270,662],{"class":503},[387,1272,1273],{"class":393},"\"content\"",[387,1275,993],{"class":503},[387,1277,1278],{"class":401},"\"ad1\"",[387,1280,662],{"class":503},[387,1282,1283],{"class":393},"\"term\"",[387,1285,993],{"class":503},[387,1287,1288],{"class":401},"\"fitness\"",[387,1290,662],{"class":503},[387,1292,1293],{"class":393},"\"click_id\"",[387,1295,993],{"class":503},[387,1297,1298],{"class":401},"\"gclid\"",[387,1300,1038],{"class":503},[387,1302,1303,1306,1308,1311],{"class":389,"line":573},[387,1304,1305],{"class":393},"  \"screen_name\"",[387,1307,993],{"class":503},[387,1309,1310],{"class":401},"\"HomeScreen\"",[387,1312,999],{"class":503},[387,1314,1315,1318,1320],{"class":389,"line":579},[387,1316,1317],{"class":393},"  \"user_agent\"",[387,1319,993],{"class":503},[387,1321,1322],{"class":401},"\"Mozilla\u002F5.0 …\"\n",[387,1324,1325],{"class":389,"line":585},[387,1326,1327],{"class":503},"}\n",[422,1329,1330,1340],{},[425,1331,1332,1333,1336,1337,260],{},"Server senders leave out ",[249,1334,1335],{},"platform",". The server then uses the person's last client platform from the past 24 hours, else ",[249,1338,1339],{},"server",[425,1341,1342,1343,435,1346,1349,1350,1353,1354,1357],{},"Web senders don't need ",[249,1344,1345],{},"browser",[249,1347,1348],{},"os",": the server parses ",[249,1351,1352],{},"user_agent",", or the request's ",[249,1355,1356],{},"User-Agent"," header when it is missing.",[602,1359,1361],{"id":1360},"what-the-server-removes","What the server removes",[239,1363,1364],{},"These property and trait keys are removed without rejecting the event:",[422,1366,1367,1370,1383,1386,1429],{},[425,1368,1369],{},"keys longer than 255 characters;",[425,1371,1372,662,1375,1378,1379,1382],{},[249,1373,1374],{},"__proto__",[249,1376,1377],{},"constructor"," and ",[249,1380,1381],{},"prototype",";",[425,1384,1385],{},"objects nested deeper than 5 levels;",[425,1387,1388,1389,662,1392,662,1395,662,1398,662,1401,662,1404,662,1407,662,1410,662,1413,662,1416,1419,1420,1423,1424,1378,1426,1428],{},"sensitive names: ",[249,1390,1391],{},"password",[249,1393,1394],{},"passwd",[249,1396,1397],{},"pwd",[249,1399,1400],{},"card_number",[249,1402,1403],{},"cc_number",[249,1405,1406],{},"cvv",[249,1408,1409],{},"cvc",[249,1411,1412],{},"iban",[249,1414,1415],{},"ssn",[249,1417,1418],{},"social_security_number"," (any case, ",[249,1421,1422],{},"_"," optional in ",[249,1425,1400],{},[249,1427,1403],{},");",[425,1430,1431],{},"the project's blocked properties (Project settings → Privacy & data).",[265,1433,1435],{"id":1434},"responses","Responses",[276,1437,1438,1454],{},[279,1439,1440],{},[282,1441,1442,1445,1448,1451],{},[285,1443,1444],{},"Status",[285,1446,1447],{},"Body",[285,1449,1450],{},"When",[285,1452,1453],{},"What to do",[292,1455,1456,1474,1492,1510,1528,1546,1567,1593,1614,1634],{},[282,1457,1458,1463,1468,1471],{},[297,1459,1460],{},[249,1461,1462],{},"200",[297,1464,1465],{},[249,1466,1467],{},"{ \"accepted\": n, \"rejected\": [{ \"index\": i, \"reason\": \"…\" }], \"dropped\": n }",[297,1469,1470],{},"The batch was read",[297,1472,1473],{},"Remove the whole batch from your queue. Rejected and dropped events are final",[282,1475,1476,1481,1486,1489],{},[297,1477,1478],{},[249,1479,1480],{},"400",[297,1482,1483],{},[249,1484,1485],{},"{ \"error\": \"invalid_batch\", \"message\": \"…\" }",[297,1487,1488],{},"The body isn't JSON, a gzip body is corrupt, or the envelope fails the schema",[297,1490,1491],{},"Drop the batch, log it, don't retry",[282,1493,1494,1499,1504,1507],{},[297,1495,1496],{},[249,1497,1498],{},"401",[297,1500,1501],{},[249,1502,1503],{},"{ \"error\": \"invalid_key\" }",[297,1505,1506],{},"The key is missing, unknown or revoked, or the header and body keys differ",[297,1508,1509],{},"Stop sending and keep the queue",[282,1511,1512,1517,1522,1525],{},[297,1513,1514],{},[249,1515,1516],{},"403",[297,1518,1519],{},[249,1520,1521],{},"{ \"error\": \"origin_not_allowed\" }",[297,1523,1524],{},"Reserved for keys limited to certain origins. No key has an origin list today",[297,1526,1527],{},"Drop the batch, don't retry",[282,1529,1530,1535,1540,1543],{},[297,1531,1532],{},[249,1533,1534],{},"413",[297,1536,1537],{},[249,1538,1539],{},"{ \"error\": \"payload_too_large\" }",[297,1541,1542],{},"Over 1 MB on the wire or 5 MB decompressed",[297,1544,1545],{},"Split the batch in half and retry each half",[282,1547,1548,1552,1556,1565],{},[297,1549,1550],{},[249,1551,446],{},[297,1553,1554],{},[249,1555,1485],{},[297,1557,1558,1559,435,1562],{},"Unsupported ",[249,1560,1561],{},"Content-Type",[249,1563,1564],{},"Content-Encoding",[297,1566,1527],{},[282,1568,1569,1574,1583,1586],{},[297,1570,1571],{},[249,1572,1573],{},"429",[297,1575,1576,1579,1580],{},[249,1577,1578],{},"{ \"error\": \"rate_limited\" }"," with ",[249,1581,1582],{},"Retry-After: 60",[297,1584,1585],{},"Too many requests per minute from one key and client IP",[297,1587,1588,1589,1592],{},"Retry after ",[249,1590,1591],{},"Retry-After"," seconds",[282,1594,1595,1600,1608,1611],{},[297,1596,1597],{},[249,1598,1599],{},"503",[297,1601,1602,1579,1605],{},[249,1603,1604],{},"{ \"error\": \"unavailable\" }",[249,1606,1607],{},"Retry-After: 5",[297,1609,1610],{},"The server couldn't store the batch. None of its events were accepted",[297,1612,1613],{},"Retry with backoff. Event ids make the retry safe",[282,1615,1616,1626,1629,1631],{},[297,1617,1618,1619,662,1622,1625],{},"Other ",[249,1620,1621],{},"5xx",[249,1623,1624],{},"408",", timeout or network error",[297,1627,1628],{},"varies",[297,1630],{},[297,1632,1633],{},"Retry with backoff",[282,1635,1636,1642,1644,1651],{},[297,1637,1638,1639],{},"Any other ",[249,1640,1641],{},"4xx",[297,1643,1628],{},[297,1645,1646,1647,1650],{},"Such as a ",[249,1648,1649],{},"404"," from a wrong host",[297,1652,1527],{},[239,1654,1655,431,1658,1661,1662,1664],{},[428,1656,1657],{},"Backoff:",[249,1659,1660],{},"min(300 s, 1 s × 2^attempt) × random(0.5–1.0)",", reset after any ",[249,1663,1462],{},". Send one request at a time, in the order the events were created, with a 10 s timeout.",[239,1666,1667,1672,1673,1675],{},[428,1668,1669],{},[249,1670,1671],{},"dropped"," counts valid events that weren't accepted because a limit was reached: the project's monthly cap, the plan's allowance (plus what the spending limit buys with overage on), or the trial's cap. Events are also dropped while the organization has no plan or trial. The answer is still ",[249,1674,1462],{},", so don't retry them. Dropped events aren't billed.",[602,1677,1679],{"id":1678},"rejection-reasons","Rejection reasons",[276,1681,1682,1692],{},[279,1683,1684],{},[282,1685,1686,1689],{},[285,1687,1688],{},"Reason",[285,1690,1691],{},"Meaning",[292,1693,1694,1704,1717,1736,1746,1756],{},[282,1695,1696,1701],{},[297,1697,1698],{},[249,1699,1700],{},"invalid_event",[297,1702,1703],{},"The event fails the schema",[282,1705,1706,1711],{},[297,1707,1708],{},[249,1709,1710],{},"reserved_name",[297,1712,1713,1714,1716],{},"A ",[249,1715,823],{}," name that isn't a reserved event",[282,1718,1719,1724],{},[297,1720,1721],{},[249,1722,1723],{},"revenue_needs_secret_key",[297,1725,1726,662,1729,435,1732,1735],{},[249,1727,1728],{},"$purchase",[249,1730,1731],{},"$renewal",[249,1733,1734],{},"$refund"," sent with a publishable key",[282,1737,1738,1743],{},[297,1739,1740],{},[249,1741,1742],{},"too_old",[297,1744,1745],{},"The event is more than 30 days old, after clock correction",[282,1747,1748,1753],{},[297,1749,1750],{},[249,1751,1752],{},"too_large",[297,1754,1755],{},"The serialized event is larger than 32 KB (32,768 bytes of UTF-8 JSON)",[282,1757,1758,1763],{},[297,1759,1760],{},[249,1761,1762],{},"blocked_event",[297,1764,1765],{},"Reserved. The server doesn't return it yet",[265,1767,1769],{"id":1768},"timestamps-and-clock-correction","Timestamps and clock correction",[422,1771,1772,1781,1787],{},[425,1773,1774,1777,1778,1780],{},[428,1775,1776],{},"Device clocks:"," when ",[249,1779,632],{}," differs from the server's arrival time by more than 30 s, every event in the batch moves by that difference.",[425,1782,1783,1786],{},[428,1784,1785],{},"Future times:"," an event still more than 60 s in the future after that is set to the arrival time.",[425,1788,1789,1792,1793,260],{},[428,1790,1791],{},"Old events:"," an event more than 30 days old after correction is rejected with ",[249,1794,1742],{},[265,1796,164],{"id":1797},"revenue",[239,1799,1800,1801,662,1803,1378,1805,1807,1808,662,1811,662,1814,1378,1817,1820,1821,1823,1824,260],{},"Send ",[249,1802,1728],{},[249,1804,1731],{},[249,1806,1734],{}," with a secret key, with ",[249,1809,1810],{},"amount",[249,1812,1813],{},"currency",[249,1815,1816],{},"transaction_id",[249,1818,1819],{},"product"," in the properties. With a publishable key they are rejected as ",[249,1822,1723],{},". If the project has Dodo Payments connected, these events are kept for funnels and journeys but add no revenue. See ",[243,1825,108],{"href":109},[265,1827,1829],{"id":1828},"rate-limits","Rate limits",[239,1831,1832,1833,1579,1835,260],{},"240 requests a minute per publishable key and client IP, and 6,000 per secret key and IP. Over that, the answer is ",[249,1834,1573],{},[249,1836,1591],{},[265,1838,1840],{"id":1839},"remote-config","Remote config",[239,1842,1843,1846,1847,398],{},[249,1844,1845],{},"GET \u002Fv1\u002Fconfig?key=rb_pub_…"," returns, with ",[249,1848,1849],{},"Cache-Control: public, max-age=300",[378,1851,1853],{"className":976,"code":1852,"language":978,"meta":383,"style":383},"{\n  \"enabled\": true,\n  \"sessionTimeoutWebMin\": 30,\n  \"sessionBackgroundSec\": 30,\n  \"autocapture\": { \"pageviews\": true, \"pageLeave\": true, \"lifecycle\": true, \"screens\": false },\n  \"blockedEvents\": [],\n  \"sampleRate\": 1\n}\n",[249,1854,1855,1859,1871,1883,1894,1938,1946,1956],{"__ignoreMap":383},[387,1856,1857],{"class":389,"line":390},[387,1858,985],{"class":503},[387,1860,1861,1864,1866,1869],{"class":389,"line":493},[387,1862,1863],{"class":393},"  \"enabled\"",[387,1865,993],{"class":503},[387,1867,1868],{"class":496},"true",[387,1870,999],{"class":503},[387,1872,1873,1876,1878,1881],{"class":389,"line":512},[387,1874,1875],{"class":393},"  \"sessionTimeoutWebMin\"",[387,1877,993],{"class":503},[387,1879,1880],{"class":496},"30",[387,1882,999],{"class":503},[387,1884,1885,1888,1890,1892],{"class":389,"line":522},[387,1886,1887],{"class":393},"  \"sessionBackgroundSec\"",[387,1889,993],{"class":503},[387,1891,1880],{"class":496},[387,1893,999],{"class":503},[387,1895,1896,1899,1901,1904,1906,1908,1910,1913,1915,1917,1919,1922,1924,1926,1928,1931,1933,1936],{"class":389,"line":531},[387,1897,1898],{"class":393},"  \"autocapture\"",[387,1900,1007],{"class":503},[387,1902,1903],{"class":393},"\"pageviews\"",[387,1905,993],{"class":503},[387,1907,1868],{"class":496},[387,1909,662],{"class":503},[387,1911,1912],{"class":393},"\"pageLeave\"",[387,1914,993],{"class":503},[387,1916,1868],{"class":496},[387,1918,662],{"class":503},[387,1920,1921],{"class":393},"\"lifecycle\"",[387,1923,993],{"class":503},[387,1925,1868],{"class":496},[387,1927,662],{"class":503},[387,1929,1930],{"class":393},"\"screens\"",[387,1932,993],{"class":503},[387,1934,1935],{"class":496},"false",[387,1937,1038],{"class":503},[387,1939,1940,1943],{"class":389,"line":537},[387,1941,1942],{"class":393},"  \"blockedEvents\"",[387,1944,1945],{"class":503},": [],\n",[387,1947,1948,1951,1953],{"class":389,"line":543},[387,1949,1950],{"class":393},"  \"sampleRate\"",[387,1952,993],{"class":503},[387,1954,1955],{"class":496},"1\n",[387,1957,1958],{"class":389,"line":549},[387,1959,1327],{"class":503},[422,1961,1962,1971,1974],{},[425,1963,1964,1378,1967,1970],{},[249,1965,1966],{},"sessionTimeoutWebMin",[249,1968,1969],{},"sessionBackgroundSec"," come from the project's settings.",[425,1972,1973],{},"Every other field is fixed at the values above today. The SDKs honor them, but no project setting changes them yet.",[425,1975,1976,1977,260],{},"The key must be publishable. An unknown, revoked or secret key gets ",[249,1978,1979],{},"401 { \"error\": \"invalid_key\" }",[265,1981,1983],{"id":1982},"compatibility","Compatibility",[239,1985,1986],{},"Version 1 only gets additive changes: new optional fields and new reserved names. The server accepts every SDK version released in the last 24 months.",[1988,1989,1990],"style",{},"html pre.shiki code .sfEsd, html code.shiki .sfEsd{--shiki-light:#116329;--shiki-default:#116329;--shiki-dark:#7EE787}html pre.shiki code .s5nWI, html code.shiki .s5nWI{--shiki-light:#CF222E;--shiki-default:#CF222E;--shiki-dark:#FF7B72}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 .sQJ0q, html code.shiki .sQJ0q{--shiki-light:#953800;--shiki-default:#953800;--shiki-dark:#FFA657}html pre.shiki code .sDkKp, html code.shiki .sDkKp{--shiki-light:#0550AE;--shiki-default:#0550AE;--shiki-dark:#79C0FF}html pre.shiki code .s_bOF, html code.shiki .s_bOF{--shiki-light:#1F2328;--shiki-default:#1F2328;--shiki-dark:#E6EDF3}",{"title":383,"searchDepth":493,"depth":493,"links":1992},[1993,1994,1995,2001,2004,2005,2006,2007,2008],{"id":267,"depth":493,"text":268},{"id":317,"depth":493,"text":318},{"id":419,"depth":493,"text":420,"children":1996},[1997,1998,1999,2000],{"id":604,"depth":512,"text":605},{"id":725,"depth":512,"text":726},{"id":930,"depth":512,"text":970},{"id":1360,"depth":512,"text":1361},{"id":1434,"depth":493,"text":1435,"children":2002},[2003],{"id":1678,"depth":512,"text":1679},{"id":1768,"depth":493,"text":1769},{"id":1797,"depth":493,"text":164},{"id":1828,"depth":493,"text":1829},{"id":1839,"depth":493,"text":1840},{"id":1982,"depth":493,"text":1983},"Send events to Rabolic from any language with POST \u002Fv1\u002Fbatch. Authentication, the batch envelope and event fields, reserved events, responses and retries, rejection reasons, deduplication, clock correction and remote config.","md",null,{},{"icon":66},{"title":2015,"description":2016},"Ingest HTTP API (POST \u002Fv1\u002Fbatch)","Send events to Rabolic from any language with POST \u002Fv1\u002Fbatch. Authentication, the batch envelope and event fields, responses and retries, rejection reasons, deduplication, clock correction and GET \u002Fv1\u002Fconfig.","T9hr4kkPjmPFajTLCuKQVaTbERO9dXR3hgtVwEbqYXg",[2019,2021],{"title":58,"path":59,"stem":60,"description":2020,"icon":61,"children":-1},"Install @rabolic\u002Fnode to send server-side events and verified revenue (purchases, renewals, refunds) with a secret key. Options, identity, idempotency, Dodo Payments checkout metadata, delivery and limits.",{"title":74,"path":75,"stem":76,"description":2022,"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.",1794242363863]