[{"data":1,"prerenderedAt":5256},["ShallowReactive",2],{"beacon-doc-\u002Fbeacon\u002Fdocs\u002Fsdk\u002Fdotnet":3,"beacon-docs-all":1398},{"id":4,"title":5,"body":6,"description":1390,"extension":1391,"meta":1392,"navigation":747,"order":1162,"path":1393,"published":747,"section":1394,"seo":1395,"stem":1396,"__hash__":1397},"beaconDocs\u002Fbeacon\u002Fdocs\u002Fsdk\u002Fdotnet.md",".NET SDK",{"type":7,"value":8,"toc":1364},"minimark",[9,14,18,23,26,55,58,74,79,92,96,100,107,198,202,213,288,292,517,521,524,545,560,564,576,580,637,641,701,705,716,720,723,785,789,792,862,872,876,882,888,892,901,919,922,940,944,951,965,969,972,991,995,1000,1004,1016,1046,1050,1332,1336,1360],[10,11,13],"h1",{"id":12},"beacon-net-sdk","Beacon .NET SDK",[15,16,17],"p",{},"The Beacon .NET SDK provides native integration for desktop (WPF, WinForms, MAUI), server (ASP.NET Core, Windows Services), and console applications.",[19,20,22],"h2",{"id":21},"installation","Installation",[15,24,25],{},"Install via NuGet:",[27,28,33],"pre",{"className":29,"code":30,"language":31,"meta":32,"style":32},"language-bash shiki shiki-themes github-dark","dotnet add package SoftAgility.Beacon\n","bash","",[34,35,36],"code",{"__ignoreMap":32},[37,38,41,45,49,52],"span",{"class":39,"line":40},"line",1,[37,42,44],{"class":43},"svObZ","dotnet",[37,46,48],{"class":47},"sU2Wk"," add",[37,50,51],{"class":47}," package",[37,53,54],{"class":47}," SoftAgility.Beacon\n",[15,56,57],{},"Or via the Package Manager Console:",[27,59,63],{"className":60,"code":61,"language":62,"meta":32,"style":32},"language-powershell shiki shiki-themes github-dark","Install-Package SoftAgility.Beacon\n","powershell",[34,64,65],{"__ignoreMap":32},[37,66,67,71],{"class":39,"line":40},[37,68,70],{"class":69},"sDLfK","Install-Package",[37,72,54],{"class":73},"s95oV",[75,76,78],"h3",{"id":77},"system-requirements","System Requirements",[80,81,82,86,89],"ul",{},[83,84,85],"li",{},".NET 8.0 or later",[83,87,88],{},"Windows, Linux, or macOS",[83,90,91],{},"No additional dependencies",[19,93,95],{"id":94},"configuration","Configuration",[75,97,99],{"id":98},"aspnet-core-host-builder","ASP.NET Core \u002F Host Builder",[15,101,102,103,106],{},"Register Beacon with dependency injection to resolve ",[34,104,105],{},"IBeaconTracker",":",[27,108,112],{"className":109,"code":110,"language":111,"meta":32,"style":32},"language-csharp shiki shiki-themes github-dark","services.AddBeacon(options =>\n{\n    options.ApiKey = \"your-api-key\";\n    options.ApiBaseUrl = \"https:\u002F\u002Fapi.beacon.softagility.com\";\n    options.AppName = \"MyApp\";\n    options.AppVersion = \"1.2.0\";\n});\n","csharp",[34,113,114,132,138,153,166,179,192],{"__ignoreMap":32},[37,115,116,119,122,125,128],{"class":39,"line":40},[37,117,118],{"class":73},"services.",[37,120,121],{"class":43},"AddBeacon",[37,123,124],{"class":73},"(",[37,126,127],{"class":43},"options",[37,129,131],{"class":130},"snl16"," =>\n",[37,133,135],{"class":39,"line":134},2,[37,136,137],{"class":73},"{\n",[37,139,141,144,147,150],{"class":39,"line":140},3,[37,142,143],{"class":73},"    options.ApiKey ",[37,145,146],{"class":130},"=",[37,148,149],{"class":47}," \"your-api-key\"",[37,151,152],{"class":73},";\n",[37,154,156,159,161,164],{"class":39,"line":155},4,[37,157,158],{"class":73},"    options.ApiBaseUrl ",[37,160,146],{"class":130},[37,162,163],{"class":47}," \"https:\u002F\u002Fapi.beacon.softagility.com\"",[37,165,152],{"class":73},[37,167,169,172,174,177],{"class":39,"line":168},5,[37,170,171],{"class":73},"    options.AppName ",[37,173,146],{"class":130},[37,175,176],{"class":47}," \"MyApp\"",[37,178,152],{"class":73},[37,180,182,185,187,190],{"class":39,"line":181},6,[37,183,184],{"class":73},"    options.AppVersion ",[37,186,146],{"class":130},[37,188,189],{"class":47}," \"1.2.0\"",[37,191,152],{"class":73},[37,193,195],{"class":39,"line":194},7,[37,196,197],{"class":73},"});\n",[75,199,201],{"id":200},"manual-initialization","Manual Initialization",[15,203,204,205,208,209,212],{},"For applications without dependency injection, use the static ",[34,206,207],{},"Configure"," method. This creates a singleton ",[34,210,211],{},"BeaconTracker"," instance:",[27,214,216],{"className":109,"code":215,"language":111,"meta":32,"style":32},"var tracker = BeaconTracker.Configure(options =>\n{\n    options.ApiKey = \"your-api-key\";\n    options.ApiBaseUrl = \"https:\u002F\u002Fapi.beacon.softagility.com\";\n    options.AppName = \"MyApp\";\n    options.AppVersion = \"1.2.0\";\n});\n",[34,217,218,240,244,254,264,274,284],{"__ignoreMap":32},[37,219,220,223,226,229,232,234,236,238],{"class":39,"line":40},[37,221,222],{"class":130},"var",[37,224,225],{"class":43}," tracker",[37,227,228],{"class":130}," =",[37,230,231],{"class":73}," BeaconTracker.",[37,233,207],{"class":43},[37,235,124],{"class":73},[37,237,127],{"class":43},[37,239,131],{"class":130},[37,241,242],{"class":39,"line":134},[37,243,137],{"class":73},[37,245,246,248,250,252],{"class":39,"line":140},[37,247,143],{"class":73},[37,249,146],{"class":130},[37,251,149],{"class":47},[37,253,152],{"class":73},[37,255,256,258,260,262],{"class":39,"line":155},[37,257,158],{"class":73},[37,259,146],{"class":130},[37,261,163],{"class":47},[37,263,152],{"class":73},[37,265,266,268,270,272],{"class":39,"line":168},[37,267,171],{"class":73},[37,269,146],{"class":130},[37,271,176],{"class":47},[37,273,152],{"class":73},[37,275,276,278,280,282],{"class":39,"line":181},[37,277,184],{"class":73},[37,279,146],{"class":130},[37,281,189],{"class":47},[37,283,152],{"class":73},[37,285,286],{"class":39,"line":194},[37,287,197],{"class":73},[75,289,291],{"id":290},"configuration-options","Configuration Options",[293,294,295,314],"table",{},[296,297,298],"thead",{},[299,300,301,305,308,311],"tr",{},[302,303,304],"th",{},"Option",[302,306,307],{},"Type",[302,309,310],{},"Default",[302,312,313],{},"Description",[315,316,317,336,352,368,384,404,424,443,462,480,497],"tbody",{},[299,318,319,325,330,333],{},[320,321,322],"td",{},[34,323,324],{},"ApiKey",[320,326,327],{},[34,328,329],{},"string",[320,331,332],{},"—",[320,334,335],{},"Your Beacon API key (required)",[299,337,338,343,347,349],{},[320,339,340],{},[34,341,342],{},"ApiBaseUrl",[320,344,345],{},[34,346,329],{},[320,348,332],{},[320,350,351],{},"Beacon API base URL (required)",[299,353,354,359,363,365],{},[320,355,356],{},[34,357,358],{},"AppName",[320,360,361],{},[34,362,329],{},[320,364,332],{},[320,366,367],{},"Your application name, max 128 chars (required)",[299,369,370,375,379,381],{},[320,371,372],{},[34,373,374],{},"AppVersion",[320,376,377],{},[34,378,329],{},[320,380,332],{},[320,382,383],{},"Your application version, max 256 chars (required)",[299,385,386,391,396,401],{},[320,387,388],{},[34,389,390],{},"Enabled",[320,392,393],{},[34,394,395],{},"bool",[320,397,398],{},[34,399,400],{},"true",[320,402,403],{},"Enable or disable tracking globally",[299,405,406,411,416,421],{},[320,407,408],{},[34,409,410],{},"FlushIntervalSeconds",[320,412,413],{},[34,414,415],{},"int",[320,417,418],{},[34,419,420],{},"60",[320,422,423],{},"How often to send batched events (1-3600)",[299,425,426,431,435,440],{},[320,427,428],{},[34,429,430],{},"MaxBatchSize",[320,432,433],{},[34,434,415],{},[320,436,437],{},[34,438,439],{},"25",[320,441,442],{},"Events per batch, clamped to 1-1000",[299,444,445,450,454,459],{},[320,446,447],{},[34,448,449],{},"MaxQueueSizeMb",[320,451,452],{},[34,453,415],{},[320,455,456],{},[34,457,458],{},"10",[320,460,461],{},"Maximum offline queue size in MB (1-1000)",[299,463,464,469,473,477],{},[320,465,466],{},[34,467,468],{},"MaxBreadcrumbs",[320,470,471],{},[34,472,415],{},[320,474,475],{},[34,476,439],{},[320,478,479],{},"Breadcrumb ring buffer size (0-200)",[299,481,482,487,492,494],{},[320,483,484],{},[34,485,486],{},"Events",[320,488,489],{},[34,490,491],{},"EventDefinitionBuilder",[320,493,332],{},[320,495,496],{},"Builder for registering known events",[299,498,499,504,509,514],{},[320,500,501],{},[34,502,503],{},"Logger",[320,505,506],{},[34,507,508],{},"ILogger?",[320,510,511],{},[34,512,513],{},"null",[320,515,516],{},"Optional logger for SDK diagnostics",[19,518,520],{"id":519},"identifying-users","Identifying Users",[15,522,523],{},"Before tracking events or sessions, identify the current actor (user or device):",[27,525,527],{"className":109,"code":526,"language":111,"meta":32,"style":32},"tracker.Identify(\"user-123\");\n",[34,528,529],{"__ignoreMap":32},[37,530,531,534,537,539,542],{"class":39,"line":40},[37,532,533],{"class":73},"tracker.",[37,535,536],{"class":43},"Identify",[37,538,124],{"class":73},[37,540,541],{"class":47},"\"user-123\"",[37,543,544],{"class":73},");\n",[15,546,547,548,551,552,555,556,559],{},"Actor IDs can be up to 512 characters. Once identified, all subsequent ",[34,549,550],{},"Track",", ",[34,553,554],{},"StartSession",", and ",[34,557,558],{},"TrackException"," calls use this actor. You can also pass an explicit actor ID to any tracking method.",[19,561,563],{"id":562},"tracking-events","Tracking Events",[15,565,566,567,571,572,575],{},"Events are organized by ",[568,569,570],"strong",{},"category"," and ",[568,573,574],{},"name",", with optional properties.",[75,577,579],{"id":578},"basic-event","Basic Event",[27,581,583],{"className":109,"code":582,"language":111,"meta":32,"style":32},"tracker.Track(\"ui\", \"button_clicked\", new\n{\n    button_name = \"export\",\n    screen = \"dashboard\"\n});\n",[34,584,585,606,610,623,633],{"__ignoreMap":32},[37,586,587,589,591,593,596,598,601,603],{"class":39,"line":40},[37,588,533],{"class":73},[37,590,550],{"class":43},[37,592,124],{"class":73},[37,594,595],{"class":47},"\"ui\"",[37,597,551],{"class":73},[37,599,600],{"class":47},"\"button_clicked\"",[37,602,551],{"class":73},[37,604,605],{"class":130},"new\n",[37,607,608],{"class":39,"line":134},[37,609,137],{"class":73},[37,611,612,615,617,620],{"class":39,"line":140},[37,613,614],{"class":73},"    button_name ",[37,616,146],{"class":130},[37,618,619],{"class":47}," \"export\"",[37,621,622],{"class":73},",\n",[37,624,625,628,630],{"class":39,"line":155},[37,626,627],{"class":73},"    screen ",[37,629,146],{"class":130},[37,631,632],{"class":47}," \"dashboard\"\n",[37,634,635],{"class":39,"line":168},[37,636,197],{"class":73},[75,638,640],{"id":639},"with-explicit-actor","With Explicit Actor",[27,642,644],{"className":109,"code":643,"language":111,"meta":32,"style":32},"tracker.Track(\"reports\", \"report_exported\", \"user-456\", new\n{\n    format = \"pdf\",\n    row_count = 1500\n});\n",[34,645,646,671,675,687,697],{"__ignoreMap":32},[37,647,648,650,652,654,657,659,662,664,667,669],{"class":39,"line":40},[37,649,533],{"class":73},[37,651,550],{"class":43},[37,653,124],{"class":73},[37,655,656],{"class":47},"\"reports\"",[37,658,551],{"class":73},[37,660,661],{"class":47},"\"report_exported\"",[37,663,551],{"class":73},[37,665,666],{"class":47},"\"user-456\"",[37,668,551],{"class":73},[37,670,605],{"class":130},[37,672,673],{"class":39,"line":134},[37,674,137],{"class":73},[37,676,677,680,682,685],{"class":39,"line":140},[37,678,679],{"class":73},"    format ",[37,681,146],{"class":130},[37,683,684],{"class":47}," \"pdf\"",[37,686,622],{"class":73},[37,688,689,692,694],{"class":39,"line":155},[37,690,691],{"class":73},"    row_count ",[37,693,146],{"class":130},[37,695,696],{"class":69}," 1500\n",[37,698,699],{"class":39,"line":168},[37,700,197],{"class":73},[75,702,704],{"id":703},"event-limits","Event Limits",[80,706,707,710,713],{},[83,708,709],{},"Category: max 128 characters",[83,711,712],{},"Name: max 256 characters",[83,714,715],{},"Actor ID: max 512 characters",[19,717,719],{"id":718},"session-management","Session Management",[15,721,722],{},"Sessions group related events and track duration.",[27,724,726],{"className":109,"code":725,"language":111,"meta":32,"style":32},"\u002F\u002F Start a session (uses the identified actor)\ntracker.StartSession();\n\n\u002F\u002F Or start with an explicit actor ID\ntracker.StartSession(\"user-123\");\n\n\u002F\u002F End the current session\ntracker.EndSession();\n",[34,727,728,734,743,749,754,766,770,775],{"__ignoreMap":32},[37,729,730],{"class":39,"line":40},[37,731,733],{"class":732},"sAwPA","\u002F\u002F Start a session (uses the identified actor)\n",[37,735,736,738,740],{"class":39,"line":134},[37,737,533],{"class":73},[37,739,554],{"class":43},[37,741,742],{"class":73},"();\n",[37,744,745],{"class":39,"line":140},[37,746,748],{"emptyLinePlaceholder":747},true,"\n",[37,750,751],{"class":39,"line":155},[37,752,753],{"class":732},"\u002F\u002F Or start with an explicit actor ID\n",[37,755,756,758,760,762,764],{"class":39,"line":168},[37,757,533],{"class":73},[37,759,554],{"class":43},[37,761,124],{"class":73},[37,763,541],{"class":47},[37,765,544],{"class":73},[37,767,768],{"class":39,"line":181},[37,769,748],{"emptyLinePlaceholder":747},[37,771,772],{"class":39,"line":194},[37,773,774],{"class":732},"\u002F\u002F End the current session\n",[37,776,778,780,783],{"class":39,"line":777},8,[37,779,533],{"class":73},[37,781,782],{"class":43},"EndSession",[37,784,742],{"class":73},[19,786,788],{"id":787},"exception-tracking","Exception Tracking",[15,790,791],{},"Track handled or unhandled exceptions with full stack traces. Beacon automatically fingerprints exceptions by type and stack trace for grouping.",[27,793,795],{"className":109,"code":794,"language":111,"meta":32,"style":32},"try\n{\n    ProcessOrder(order);\n}\ncatch (Exception ex)\n{\n    tracker.TrackException(ex, ExceptionSeverity.NonFatal);\n    throw;\n}\n",[34,796,797,802,806,814,819,836,840,850,857],{"__ignoreMap":32},[37,798,799],{"class":39,"line":40},[37,800,801],{"class":130},"try\n",[37,803,804],{"class":39,"line":134},[37,805,137],{"class":73},[37,807,808,811],{"class":39,"line":140},[37,809,810],{"class":43},"    ProcessOrder",[37,812,813],{"class":73},"(order);\n",[37,815,816],{"class":39,"line":155},[37,817,818],{"class":73},"}\n",[37,820,821,824,827,830,833],{"class":39,"line":168},[37,822,823],{"class":130},"catch",[37,825,826],{"class":73}," (",[37,828,829],{"class":43},"Exception",[37,831,832],{"class":43}," ex",[37,834,835],{"class":73},")\n",[37,837,838],{"class":39,"line":181},[37,839,137],{"class":73},[37,841,842,845,847],{"class":39,"line":194},[37,843,844],{"class":73},"    tracker.",[37,846,558],{"class":43},[37,848,849],{"class":73},"(ex, ExceptionSeverity.NonFatal);\n",[37,851,852,855],{"class":39,"line":777},[37,853,854],{"class":130},"    throw",[37,856,152],{"class":73},[37,858,860],{"class":39,"line":859},9,[37,861,818],{"class":73},[15,863,864,865,571,868,871],{},"Severity options are ",[34,866,867],{},"ExceptionSeverity.Fatal",[34,869,870],{},"ExceptionSeverity.NonFatal",". Recent tracking calls are automatically attached as breadcrumbs to provide context.",[19,873,875],{"id":874},"breadcrumbs","Breadcrumbs",[15,877,878,879,881],{},"The SDK maintains a circular ring buffer of recent ",[34,880,550],{}," calls. When an exception is reported, these breadcrumbs are attached automatically, giving you a timeline of what happened before the error.",[15,883,884,885,887],{},"Configure the buffer size with ",[34,886,468],{}," (default 25, max 200). Set to 0 to disable.",[19,889,891],{"id":890},"flushing-events","Flushing Events",[15,893,894,895,897,898,900],{},"Events are batched and sent on a timer (",[34,896,410],{},") or when the batch reaches ",[34,899,430],{},". To flush manually:",[27,902,904],{"className":109,"code":903,"language":111,"meta":32,"style":32},"await tracker.FlushAsync();\n",[34,905,906],{"__ignoreMap":32},[37,907,908,911,914,917],{"class":39,"line":40},[37,909,910],{"class":130},"await",[37,912,913],{"class":73}," tracker.",[37,915,916],{"class":43},"FlushAsync",[37,918,742],{"class":73},[15,920,921],{},"Check the last flush result:",[27,923,925],{"className":109,"code":924,"language":111,"meta":32,"style":32},"FlushStatus status = tracker.LastFlushStatus;\n",[34,926,927],{"__ignoreMap":32},[37,928,929,932,935,937],{"class":39,"line":40},[37,930,931],{"class":43},"FlushStatus",[37,933,934],{"class":43}," status",[37,936,228],{"class":130},[37,938,939],{"class":73}," tracker.LastFlushStatus;\n",[19,941,943],{"id":942},"offline-persistence","Offline Persistence",[15,945,946,947,950],{},"The SDK queues events in a local SQLite database at ",[34,948,949],{},"%LOCALAPPDATA%\\SoftAgility\\Beacon\\{AppName}\\queue.db",". Events persist across application restarts and sync automatically when connectivity returns.",[80,952,953,959,962],{},[83,954,955,956,958],{},"FIFO queue with configurable maximum size (",[34,957,449],{},")",[83,960,961],{},"No data is lost during transient network failures",[83,963,964],{},"Background timer handles automatic flushing",[19,966,968],{"id":967},"event-manifest","Event Manifest",[15,970,971],{},"Export a JSON manifest of your registered events for import into the Beacon portal's allowlist page:",[27,973,975],{"className":109,"code":974,"language":111,"meta":32,"style":32},"tracker.ExportEventManifest(\"events.json\");\n",[34,976,977],{"__ignoreMap":32},[37,978,979,981,984,986,989],{"class":39,"line":40},[37,980,533],{"class":73},[37,982,983],{"class":43},"ExportEventManifest",[37,985,124],{"class":73},[37,987,988],{"class":47},"\"events.json\"",[37,990,544],{"class":73},[19,992,994],{"id":993},"thread-safety","Thread Safety",[15,996,997,999],{},[34,998,211],{}," is fully thread-safe. A single instance can be shared across your application and called from any thread.",[19,1001,1003],{"id":1002},"disposal","Disposal",[15,1005,1006,1008,1009,571,1012,1015],{},[34,1007,211],{}," implements both ",[34,1010,1011],{},"IDisposable",[34,1013,1014],{},"IAsyncDisposable",". Dispose when your application shuts down to flush pending events:",[27,1017,1019],{"className":109,"code":1018,"language":111,"meta":32,"style":32},"tracker.Dispose();\n\u002F\u002F or\nawait tracker.DisposeAsync();\n",[34,1020,1021,1030,1035],{"__ignoreMap":32},[37,1022,1023,1025,1028],{"class":39,"line":40},[37,1024,533],{"class":73},[37,1026,1027],{"class":43},"Dispose",[37,1029,742],{"class":73},[37,1031,1032],{"class":39,"line":134},[37,1033,1034],{"class":732},"\u002F\u002F or\n",[37,1036,1037,1039,1041,1044],{"class":39,"line":140},[37,1038,910],{"class":130},[37,1040,913],{"class":73},[37,1042,1043],{"class":43},"DisposeAsync",[37,1045,742],{"class":73},[19,1047,1049],{"id":1048},"wpf-example","WPF Example",[27,1051,1053],{"className":109,"code":1052,"language":111,"meta":32,"style":32},"public partial class App : Application\n{\n    private IBeaconTracker _tracker;\n\n    protected override void OnStartup(StartupEventArgs e)\n    {\n        base.OnStartup(e);\n\n        _tracker = BeaconTracker.Configure(options =>\n        {\n            options.ApiKey = \"your-api-key\";\n            options.ApiBaseUrl = \"https:\u002F\u002Fapi.beacon.softagility.com\";\n            options.AppName = \"MyDesktopApp\";\n            options.AppVersion = \"2.1.0\";\n        });\n\n        _tracker.Identify(\"device-\" + Environment.MachineName);\n        _tracker.StartSession();\n    }\n\n    protected override void OnExit(ExitEventArgs e)\n    {\n        _tracker.EndSession();\n        _tracker.Dispose();\n        base.OnExit(e);\n    }\n}\n",[34,1054,1055,1075,1079,1092,1096,1120,1125,1139,1143,1160,1166,1178,1190,1203,1216,1222,1227,1246,1255,1261,1266,1287,1292,1301,1310,1322,1327],{"__ignoreMap":32},[37,1056,1057,1060,1063,1066,1069,1072],{"class":39,"line":40},[37,1058,1059],{"class":130},"public",[37,1061,1062],{"class":130}," partial",[37,1064,1065],{"class":130}," class",[37,1067,1068],{"class":43}," App",[37,1070,1071],{"class":73}," : ",[37,1073,1074],{"class":43},"Application\n",[37,1076,1077],{"class":39,"line":134},[37,1078,137],{"class":73},[37,1080,1081,1084,1087,1090],{"class":39,"line":140},[37,1082,1083],{"class":130},"    private",[37,1085,1086],{"class":43}," IBeaconTracker",[37,1088,1089],{"class":43}," _tracker",[37,1091,152],{"class":73},[37,1093,1094],{"class":39,"line":155},[37,1095,748],{"emptyLinePlaceholder":747},[37,1097,1098,1101,1104,1107,1110,1112,1115,1118],{"class":39,"line":168},[37,1099,1100],{"class":130},"    protected",[37,1102,1103],{"class":130}," override",[37,1105,1106],{"class":130}," void",[37,1108,1109],{"class":43}," OnStartup",[37,1111,124],{"class":73},[37,1113,1114],{"class":43},"StartupEventArgs",[37,1116,1117],{"class":43}," e",[37,1119,835],{"class":73},[37,1121,1122],{"class":39,"line":181},[37,1123,1124],{"class":73},"    {\n",[37,1126,1127,1130,1133,1136],{"class":39,"line":194},[37,1128,1129],{"class":69},"        base",[37,1131,1132],{"class":73},".",[37,1134,1135],{"class":43},"OnStartup",[37,1137,1138],{"class":73},"(e);\n",[37,1140,1141],{"class":39,"line":777},[37,1142,748],{"emptyLinePlaceholder":747},[37,1144,1145,1148,1150,1152,1154,1156,1158],{"class":39,"line":859},[37,1146,1147],{"class":73},"        _tracker ",[37,1149,146],{"class":130},[37,1151,231],{"class":73},[37,1153,207],{"class":43},[37,1155,124],{"class":73},[37,1157,127],{"class":43},[37,1159,131],{"class":130},[37,1161,1163],{"class":39,"line":1162},10,[37,1164,1165],{"class":73},"        {\n",[37,1167,1169,1172,1174,1176],{"class":39,"line":1168},11,[37,1170,1171],{"class":73},"            options.ApiKey ",[37,1173,146],{"class":130},[37,1175,149],{"class":47},[37,1177,152],{"class":73},[37,1179,1181,1184,1186,1188],{"class":39,"line":1180},12,[37,1182,1183],{"class":73},"            options.ApiBaseUrl ",[37,1185,146],{"class":130},[37,1187,163],{"class":47},[37,1189,152],{"class":73},[37,1191,1193,1196,1198,1201],{"class":39,"line":1192},13,[37,1194,1195],{"class":73},"            options.AppName ",[37,1197,146],{"class":130},[37,1199,1200],{"class":47}," \"MyDesktopApp\"",[37,1202,152],{"class":73},[37,1204,1206,1209,1211,1214],{"class":39,"line":1205},14,[37,1207,1208],{"class":73},"            options.AppVersion ",[37,1210,146],{"class":130},[37,1212,1213],{"class":47}," \"2.1.0\"",[37,1215,152],{"class":73},[37,1217,1219],{"class":39,"line":1218},15,[37,1220,1221],{"class":73},"        });\n",[37,1223,1225],{"class":39,"line":1224},16,[37,1226,748],{"emptyLinePlaceholder":747},[37,1228,1230,1233,1235,1237,1240,1243],{"class":39,"line":1229},17,[37,1231,1232],{"class":73},"        _tracker.",[37,1234,536],{"class":43},[37,1236,124],{"class":73},[37,1238,1239],{"class":47},"\"device-\"",[37,1241,1242],{"class":130}," +",[37,1244,1245],{"class":73}," Environment.MachineName);\n",[37,1247,1249,1251,1253],{"class":39,"line":1248},18,[37,1250,1232],{"class":73},[37,1252,554],{"class":43},[37,1254,742],{"class":73},[37,1256,1258],{"class":39,"line":1257},19,[37,1259,1260],{"class":73},"    }\n",[37,1262,1264],{"class":39,"line":1263},20,[37,1265,748],{"emptyLinePlaceholder":747},[37,1267,1269,1271,1273,1275,1278,1280,1283,1285],{"class":39,"line":1268},21,[37,1270,1100],{"class":130},[37,1272,1103],{"class":130},[37,1274,1106],{"class":130},[37,1276,1277],{"class":43}," OnExit",[37,1279,124],{"class":73},[37,1281,1282],{"class":43},"ExitEventArgs",[37,1284,1117],{"class":43},[37,1286,835],{"class":73},[37,1288,1290],{"class":39,"line":1289},22,[37,1291,1124],{"class":73},[37,1293,1295,1297,1299],{"class":39,"line":1294},23,[37,1296,1232],{"class":73},[37,1298,782],{"class":43},[37,1300,742],{"class":73},[37,1302,1304,1306,1308],{"class":39,"line":1303},24,[37,1305,1232],{"class":73},[37,1307,1027],{"class":43},[37,1309,742],{"class":73},[37,1311,1313,1315,1317,1320],{"class":39,"line":1312},25,[37,1314,1129],{"class":69},[37,1316,1132],{"class":73},[37,1318,1319],{"class":43},"OnExit",[37,1321,1138],{"class":73},[37,1323,1325],{"class":39,"line":1324},26,[37,1326,1260],{"class":73},[37,1328,1330],{"class":39,"line":1329},27,[37,1331,818],{"class":73},[19,1333,1335],{"id":1334},"next-steps","Next Steps",[80,1337,1338,1346,1353],{},[83,1339,1340,1345],{},[1341,1342,1344],"a",{"href":1343},"\u002Fbeacon\u002Fdocs\u002Fgetting-started","Getting Started"," for a general overview",[83,1347,1348,1352],{},[1341,1349,1351],{"href":1350},"\u002Fbeacon\u002Fdocs\u002Fapi-reference","API Reference"," for direct HTTP integration",[83,1354,1355,1359],{},[1341,1356,1358],{"href":1357},"\u002Fbeacon\u002Fpricing","Pricing"," for plan details",[1361,1362,1363],"style",{},"html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}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 pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}",{"title":32,"searchDepth":134,"depth":134,"links":1365},[1366,1369,1374,1375,1380,1381,1382,1383,1384,1385,1386,1387,1388,1389],{"id":21,"depth":134,"text":22,"children":1367},[1368],{"id":77,"depth":140,"text":78},{"id":94,"depth":134,"text":95,"children":1370},[1371,1372,1373],{"id":98,"depth":140,"text":99},{"id":200,"depth":140,"text":201},{"id":290,"depth":140,"text":291},{"id":519,"depth":134,"text":520},{"id":562,"depth":134,"text":563,"children":1376},[1377,1378,1379],{"id":578,"depth":140,"text":579},{"id":639,"depth":140,"text":640},{"id":703,"depth":140,"text":704},{"id":718,"depth":134,"text":719},{"id":787,"depth":134,"text":788},{"id":874,"depth":134,"text":875},{"id":890,"depth":134,"text":891},{"id":942,"depth":134,"text":943},{"id":967,"depth":134,"text":968},{"id":993,"depth":134,"text":994},{"id":1002,"depth":134,"text":1003},{"id":1048,"depth":134,"text":1049},{"id":1334,"depth":134,"text":1335},"Integrate Beacon product analytics into .NET desktop, server, and cloud applications.","md",{},"\u002Fbeacon\u002Fdocs\u002Fsdk\u002Fdotnet","SDKs",{"title":5,"description":1390},"beacon\u002Fdocs\u002Fsdk\u002Fdotnet","Dx55dovfMBMMODJsAcTeP63T1EDDDcqAHgyw7fpnspw",[1399,1883,2936,3770,4739],{"id":1400,"title":1344,"body":1401,"description":1877,"extension":1391,"meta":1878,"navigation":747,"order":40,"path":1343,"published":747,"section":1879,"seo":1880,"stem":1881,"__hash__":1882},"beaconDocs\u002Fbeacon\u002Fdocs\u002Fgetting-started.md",{"type":7,"value":1402,"toc":1864},[1403,1407,1410,1414,1429,1433,1437,1440,1504,1508,1511,1575,1578,1648,1651,1668,1672,1675,1700,1704,1707,1756,1760,1763,1767,1770,1775,1792,1797,1814,1817,1821,1824,1835,1837,1861],[10,1404,1406],{"id":1405},"getting-started-with-beacon","Getting Started with Beacon",[15,1408,1409],{},"Beacon is a product analytics platform built for ISVs shipping desktop, web, server, and cloud applications. This guide walks you through going from zero to your first tracked event.",[19,1411,1413],{"id":1412},"prerequisites","Prerequisites",[80,1415,1416,1423,1426],{},[83,1417,1418,1419,958],{},"A Beacon account (",[1341,1420,1422],{"href":1421},"\u002Fbeacon","start your free trial",[83,1424,1425],{},"Your API key and API base URL (found in your Beacon dashboard under Settings)",[83,1427,1428],{},"An application built with .NET, C++, or JavaScript\u002FTypeScript",[19,1430,1432],{"id":1431},"quick-start","Quick Start",[75,1434,1436],{"id":1435},"_1-choose-your-sdk","1. Choose Your SDK",[15,1438,1439],{},"Beacon provides native SDKs for three platforms:",[293,1441,1442,1455],{},[296,1443,1444],{},[299,1445,1446,1449,1452],{},[302,1447,1448],{},"Platform",[302,1450,1451],{},"Package",[302,1453,1454],{},"Install Command",[315,1456,1457,1472,1489],{},[299,1458,1459,1462,1467],{},[320,1460,1461],{},".NET",[320,1463,1464],{},[34,1465,1466],{},"SoftAgility.Beacon",[320,1468,1469],{},[34,1470,1471],{},"dotnet add package SoftAgility.Beacon",[299,1473,1474,1477,1482],{},[320,1475,1476],{},"C++",[320,1478,1479],{},[34,1480,1481],{},"beacon_sdk",[320,1483,1484,1485,958],{},"CMake FetchContent (see ",[1341,1486,1488],{"href":1487},"\u002Fbeacon\u002Fdocs\u002Fsdk\u002Fcpp","C++ SDK docs",[299,1490,1491,1494,1499],{},[320,1492,1493],{},"JavaScript\u002FTypeScript",[320,1495,1496],{},[34,1497,1498],{},"@softagility\u002Fbeacon-js",[320,1500,1501],{},[34,1502,1503],{},"npm install @softagility\u002Fbeacon-js",[75,1505,1507],{"id":1506},"_2-initialize-the-sdk","2. Initialize the SDK",[15,1509,1510],{},"Add Beacon to your application startup. Here is a .NET example using dependency injection:",[27,1512,1513],{"className":109,"code":110,"language":111,"meta":32,"style":32},[34,1514,1515,1527,1531,1541,1551,1561,1571],{"__ignoreMap":32},[37,1516,1517,1519,1521,1523,1525],{"class":39,"line":40},[37,1518,118],{"class":73},[37,1520,121],{"class":43},[37,1522,124],{"class":73},[37,1524,127],{"class":43},[37,1526,131],{"class":130},[37,1528,1529],{"class":39,"line":134},[37,1530,137],{"class":73},[37,1532,1533,1535,1537,1539],{"class":39,"line":140},[37,1534,143],{"class":73},[37,1536,146],{"class":130},[37,1538,149],{"class":47},[37,1540,152],{"class":73},[37,1542,1543,1545,1547,1549],{"class":39,"line":155},[37,1544,158],{"class":73},[37,1546,146],{"class":130},[37,1548,163],{"class":47},[37,1550,152],{"class":73},[37,1552,1553,1555,1557,1559],{"class":39,"line":168},[37,1554,171],{"class":73},[37,1556,146],{"class":130},[37,1558,176],{"class":47},[37,1560,152],{"class":73},[37,1562,1563,1565,1567,1569],{"class":39,"line":181},[37,1564,184],{"class":73},[37,1566,146],{"class":130},[37,1568,189],{"class":47},[37,1570,152],{"class":73},[37,1572,1573],{"class":39,"line":194},[37,1574,197],{"class":73},[15,1576,1577],{},"Or initialize directly without DI:",[27,1579,1580],{"className":109,"code":215,"language":111,"meta":32,"style":32},[34,1581,1582,1600,1604,1614,1624,1634,1644],{"__ignoreMap":32},[37,1583,1584,1586,1588,1590,1592,1594,1596,1598],{"class":39,"line":40},[37,1585,222],{"class":130},[37,1587,225],{"class":43},[37,1589,228],{"class":130},[37,1591,231],{"class":73},[37,1593,207],{"class":43},[37,1595,124],{"class":73},[37,1597,127],{"class":43},[37,1599,131],{"class":130},[37,1601,1602],{"class":39,"line":134},[37,1603,137],{"class":73},[37,1605,1606,1608,1610,1612],{"class":39,"line":140},[37,1607,143],{"class":73},[37,1609,146],{"class":130},[37,1611,149],{"class":47},[37,1613,152],{"class":73},[37,1615,1616,1618,1620,1622],{"class":39,"line":155},[37,1617,158],{"class":73},[37,1619,146],{"class":130},[37,1621,163],{"class":47},[37,1623,152],{"class":73},[37,1625,1626,1628,1630,1632],{"class":39,"line":168},[37,1627,171],{"class":73},[37,1629,146],{"class":130},[37,1631,176],{"class":47},[37,1633,152],{"class":73},[37,1635,1636,1638,1640,1642],{"class":39,"line":181},[37,1637,184],{"class":73},[37,1639,146],{"class":130},[37,1641,189],{"class":47},[37,1643,152],{"class":73},[37,1645,1646],{"class":39,"line":194},[37,1647,197],{"class":73},[15,1649,1650],{},"See the full setup guide for your platform:",[80,1652,1653,1657,1662],{},[83,1654,1655],{},[1341,1656,5],{"href":1393},[83,1658,1659],{},[1341,1660,1661],{"href":1487},"C++ SDK",[83,1663,1664],{},[1341,1665,1667],{"href":1666},"\u002Fbeacon\u002Fdocs\u002Fsdk\u002Fjavascript","JavaScript\u002FTypeScript SDK",[75,1669,1671],{"id":1670},"_3-identify-the-user-and-start-a-session","3. Identify the User and Start a Session",[15,1673,1674],{},"Beacon uses actors to associate events with users or devices. Identify the current actor and start a session:",[27,1676,1678],{"className":109,"code":1677,"language":111,"meta":32,"style":32},"tracker.Identify(\"user-123\");\ntracker.StartSession();\n",[34,1679,1680,1692],{"__ignoreMap":32},[37,1681,1682,1684,1686,1688,1690],{"class":39,"line":40},[37,1683,533],{"class":73},[37,1685,536],{"class":43},[37,1687,124],{"class":73},[37,1689,541],{"class":47},[37,1691,544],{"class":73},[37,1693,1694,1696,1698],{"class":39,"line":134},[37,1695,533],{"class":73},[37,1697,554],{"class":43},[37,1699,742],{"class":73},[75,1701,1703],{"id":1702},"_4-track-your-first-event","4. Track Your First Event",[15,1705,1706],{},"Events are organized by category and name:",[27,1708,1710],{"className":109,"code":1709,"language":111,"meta":32,"style":32},"tracker.Track(\"reports\", \"report_exported\", new\n{\n    format = \"pdf\",\n    row_count = 1500\n});\n",[34,1711,1712,1730,1734,1744,1752],{"__ignoreMap":32},[37,1713,1714,1716,1718,1720,1722,1724,1726,1728],{"class":39,"line":40},[37,1715,533],{"class":73},[37,1717,550],{"class":43},[37,1719,124],{"class":73},[37,1721,656],{"class":47},[37,1723,551],{"class":73},[37,1725,661],{"class":47},[37,1727,551],{"class":73},[37,1729,605],{"class":130},[37,1731,1732],{"class":39,"line":134},[37,1733,137],{"class":73},[37,1735,1736,1738,1740,1742],{"class":39,"line":140},[37,1737,679],{"class":73},[37,1739,146],{"class":130},[37,1741,684],{"class":47},[37,1743,622],{"class":73},[37,1745,1746,1748,1750],{"class":39,"line":155},[37,1747,691],{"class":73},[37,1749,146],{"class":130},[37,1751,696],{"class":69},[37,1753,1754],{"class":39,"line":168},[37,1755,197],{"class":73},[75,1757,1759],{"id":1758},"_5-view-your-data","5. View Your Data",[15,1761,1762],{},"Log in to the Beacon dashboard. Events appear in real time in the Event Explorer. From there you can build funnels, analyze retention, and segment users.",[19,1764,1766],{"id":1765},"environment-collection","Environment Collection",[15,1768,1769],{},"Each SDK automatically collects environment data and sends it as a header with each request. The data varies by platform:",[15,1771,1772],{},[568,1773,1774],{},".NET and C++ SDKs:",[80,1776,1777,1780,1783,1786,1789],{},[83,1778,1779],{},"Operating system and version",[83,1781,1782],{},"Runtime version (.NET version, compiler)",[83,1784,1785],{},"Hardware (CPU, memory, display resolution)",[83,1787,1788],{},"Locale and timezone",[83,1790,1791],{},"Application version",[15,1793,1794],{},[568,1795,1796],{},"JavaScript \u002F TypeScript SDK:",[80,1798,1799,1802,1805,1808,1811],{},[83,1800,1801],{},"Browser name and version",[83,1803,1804],{},"Screen and viewport dimensions",[83,1806,1807],{},"Language and platform",[83,1809,1810],{},"Device type (desktop, mobile, tablet)",[83,1812,1813],{},"Connection type (when available)",[15,1815,1816],{},"No PII is collected. All data is environment and session metadata.",[19,1818,1820],{"id":1819},"offline-behavior","Offline Behavior",[15,1822,1823],{},"The .NET and C++ SDKs include built-in offline persistence via a local SQLite database. If your application loses connectivity, events are queued locally and sync automatically when the connection returns. No data is lost, and the queue persists across application restarts.",[15,1825,1826,1827,1830,1831,1834],{},"The JavaScript SDK uses an in-memory queue with best-effort delivery via ",[34,1828,1829],{},"fetch"," with ",[34,1832,1833],{},"keepalive"," on page unload. Events are buffered while the tab is open but do not persist across page reloads.",[19,1836,1335],{"id":1334},[80,1838,1839,1849,1855],{},[83,1840,1841,1842,1844,1845,1844,1847],{},"Read the SDK guide for your platform: ",[1341,1843,1461],{"href":1393}," | ",[1341,1846,1476],{"href":1487},[1341,1848,1493],{"href":1666},[83,1850,1851,1852,1854],{},"Review the ",[1341,1853,1351],{"href":1350}," for direct API integration",[83,1856,1857,1858,1359],{},"See ",[1341,1859,1860],{"href":1357},"pricing",[1361,1862,1863],{},"html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}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 pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}",{"title":32,"searchDepth":134,"depth":134,"links":1865},[1866,1867,1874,1875,1876],{"id":1412,"depth":134,"text":1413},{"id":1431,"depth":134,"text":1432,"children":1868},[1869,1870,1871,1872,1873],{"id":1435,"depth":140,"text":1436},{"id":1506,"depth":140,"text":1507},{"id":1670,"depth":140,"text":1671},{"id":1702,"depth":140,"text":1703},{"id":1758,"depth":140,"text":1759},{"id":1765,"depth":134,"text":1766},{"id":1819,"depth":134,"text":1820},{"id":1334,"depth":134,"text":1335},"Get up and running with Beacon product analytics in under 30 minutes.",{},"Overview",{"title":1344,"description":1877},"beacon\u002Fdocs\u002Fgetting-started","o6q3Bj1EMLJi2p_IF-_7B4ceVSbAVKDZhrAbgvzQrHU",{"id":4,"title":5,"body":1884,"description":1390,"extension":1391,"meta":2934,"navigation":747,"order":1162,"path":1393,"published":747,"section":1394,"seo":2935,"stem":1396,"__hash__":1397},{"type":7,"value":1885,"toc":2908},[1886,1888,1890,1892,1894,1908,1910,1920,1922,1930,1932,1934,1938,2002,2004,2010,2080,2082,2264,2266,2268,2284,2292,2294,2300,2302,2350,2352,2404,2406,2414,2416,2418,2470,2472,2474,2530,2536,2538,2542,2546,2548,2554,2568,2570,2584,2586,2590,2600,2602,2604,2620,2622,2626,2628,2636,2662,2664,2890,2892,2906],[10,1887,13],{"id":12},[15,1889,17],{},[19,1891,22],{"id":21},[15,1893,25],{},[27,1895,1896],{"className":29,"code":30,"language":31,"meta":32,"style":32},[34,1897,1898],{"__ignoreMap":32},[37,1899,1900,1902,1904,1906],{"class":39,"line":40},[37,1901,44],{"class":43},[37,1903,48],{"class":47},[37,1905,51],{"class":47},[37,1907,54],{"class":47},[15,1909,57],{},[27,1911,1912],{"className":60,"code":61,"language":62,"meta":32,"style":32},[34,1913,1914],{"__ignoreMap":32},[37,1915,1916,1918],{"class":39,"line":40},[37,1917,70],{"class":69},[37,1919,54],{"class":73},[75,1921,78],{"id":77},[80,1923,1924,1926,1928],{},[83,1925,85],{},[83,1927,88],{},[83,1929,91],{},[19,1931,95],{"id":94},[75,1933,99],{"id":98},[15,1935,102,1936,106],{},[34,1937,105],{},[27,1939,1940],{"className":109,"code":110,"language":111,"meta":32,"style":32},[34,1941,1942,1954,1958,1968,1978,1988,1998],{"__ignoreMap":32},[37,1943,1944,1946,1948,1950,1952],{"class":39,"line":40},[37,1945,118],{"class":73},[37,1947,121],{"class":43},[37,1949,124],{"class":73},[37,1951,127],{"class":43},[37,1953,131],{"class":130},[37,1955,1956],{"class":39,"line":134},[37,1957,137],{"class":73},[37,1959,1960,1962,1964,1966],{"class":39,"line":140},[37,1961,143],{"class":73},[37,1963,146],{"class":130},[37,1965,149],{"class":47},[37,1967,152],{"class":73},[37,1969,1970,1972,1974,1976],{"class":39,"line":155},[37,1971,158],{"class":73},[37,1973,146],{"class":130},[37,1975,163],{"class":47},[37,1977,152],{"class":73},[37,1979,1980,1982,1984,1986],{"class":39,"line":168},[37,1981,171],{"class":73},[37,1983,146],{"class":130},[37,1985,176],{"class":47},[37,1987,152],{"class":73},[37,1989,1990,1992,1994,1996],{"class":39,"line":181},[37,1991,184],{"class":73},[37,1993,146],{"class":130},[37,1995,189],{"class":47},[37,1997,152],{"class":73},[37,1999,2000],{"class":39,"line":194},[37,2001,197],{"class":73},[75,2003,201],{"id":200},[15,2005,204,2006,208,2008,212],{},[34,2007,207],{},[34,2009,211],{},[27,2011,2012],{"className":109,"code":215,"language":111,"meta":32,"style":32},[34,2013,2014,2032,2036,2046,2056,2066,2076],{"__ignoreMap":32},[37,2015,2016,2018,2020,2022,2024,2026,2028,2030],{"class":39,"line":40},[37,2017,222],{"class":130},[37,2019,225],{"class":43},[37,2021,228],{"class":130},[37,2023,231],{"class":73},[37,2025,207],{"class":43},[37,2027,124],{"class":73},[37,2029,127],{"class":43},[37,2031,131],{"class":130},[37,2033,2034],{"class":39,"line":134},[37,2035,137],{"class":73},[37,2037,2038,2040,2042,2044],{"class":39,"line":140},[37,2039,143],{"class":73},[37,2041,146],{"class":130},[37,2043,149],{"class":47},[37,2045,152],{"class":73},[37,2047,2048,2050,2052,2054],{"class":39,"line":155},[37,2049,158],{"class":73},[37,2051,146],{"class":130},[37,2053,163],{"class":47},[37,2055,152],{"class":73},[37,2057,2058,2060,2062,2064],{"class":39,"line":168},[37,2059,171],{"class":73},[37,2061,146],{"class":130},[37,2063,176],{"class":47},[37,2065,152],{"class":73},[37,2067,2068,2070,2072,2074],{"class":39,"line":181},[37,2069,184],{"class":73},[37,2071,146],{"class":130},[37,2073,189],{"class":47},[37,2075,152],{"class":73},[37,2077,2078],{"class":39,"line":194},[37,2079,197],{"class":73},[75,2081,291],{"id":290},[293,2083,2084,2096],{},[296,2085,2086],{},[299,2087,2088,2090,2092,2094],{},[302,2089,304],{},[302,2091,307],{},[302,2093,310],{},[302,2095,313],{},[315,2097,2098,2112,2126,2140,2154,2170,2186,2202,2218,2234,2248],{},[299,2099,2100,2104,2108,2110],{},[320,2101,2102],{},[34,2103,324],{},[320,2105,2106],{},[34,2107,329],{},[320,2109,332],{},[320,2111,335],{},[299,2113,2114,2118,2122,2124],{},[320,2115,2116],{},[34,2117,342],{},[320,2119,2120],{},[34,2121,329],{},[320,2123,332],{},[320,2125,351],{},[299,2127,2128,2132,2136,2138],{},[320,2129,2130],{},[34,2131,358],{},[320,2133,2134],{},[34,2135,329],{},[320,2137,332],{},[320,2139,367],{},[299,2141,2142,2146,2150,2152],{},[320,2143,2144],{},[34,2145,374],{},[320,2147,2148],{},[34,2149,329],{},[320,2151,332],{},[320,2153,383],{},[299,2155,2156,2160,2164,2168],{},[320,2157,2158],{},[34,2159,390],{},[320,2161,2162],{},[34,2163,395],{},[320,2165,2166],{},[34,2167,400],{},[320,2169,403],{},[299,2171,2172,2176,2180,2184],{},[320,2173,2174],{},[34,2175,410],{},[320,2177,2178],{},[34,2179,415],{},[320,2181,2182],{},[34,2183,420],{},[320,2185,423],{},[299,2187,2188,2192,2196,2200],{},[320,2189,2190],{},[34,2191,430],{},[320,2193,2194],{},[34,2195,415],{},[320,2197,2198],{},[34,2199,439],{},[320,2201,442],{},[299,2203,2204,2208,2212,2216],{},[320,2205,2206],{},[34,2207,449],{},[320,2209,2210],{},[34,2211,415],{},[320,2213,2214],{},[34,2215,458],{},[320,2217,461],{},[299,2219,2220,2224,2228,2232],{},[320,2221,2222],{},[34,2223,468],{},[320,2225,2226],{},[34,2227,415],{},[320,2229,2230],{},[34,2231,439],{},[320,2233,479],{},[299,2235,2236,2240,2244,2246],{},[320,2237,2238],{},[34,2239,486],{},[320,2241,2242],{},[34,2243,491],{},[320,2245,332],{},[320,2247,496],{},[299,2249,2250,2254,2258,2262],{},[320,2251,2252],{},[34,2253,503],{},[320,2255,2256],{},[34,2257,508],{},[320,2259,2260],{},[34,2261,513],{},[320,2263,516],{},[19,2265,520],{"id":519},[15,2267,523],{},[27,2269,2270],{"className":109,"code":526,"language":111,"meta":32,"style":32},[34,2271,2272],{"__ignoreMap":32},[37,2273,2274,2276,2278,2280,2282],{"class":39,"line":40},[37,2275,533],{"class":73},[37,2277,536],{"class":43},[37,2279,124],{"class":73},[37,2281,541],{"class":47},[37,2283,544],{"class":73},[15,2285,547,2286,551,2288,555,2290,559],{},[34,2287,550],{},[34,2289,554],{},[34,2291,558],{},[19,2293,563],{"id":562},[15,2295,566,2296,571,2298,575],{},[568,2297,570],{},[568,2299,574],{},[75,2301,579],{"id":578},[27,2303,2304],{"className":109,"code":582,"language":111,"meta":32,"style":32},[34,2305,2306,2324,2328,2338,2346],{"__ignoreMap":32},[37,2307,2308,2310,2312,2314,2316,2318,2320,2322],{"class":39,"line":40},[37,2309,533],{"class":73},[37,2311,550],{"class":43},[37,2313,124],{"class":73},[37,2315,595],{"class":47},[37,2317,551],{"class":73},[37,2319,600],{"class":47},[37,2321,551],{"class":73},[37,2323,605],{"class":130},[37,2325,2326],{"class":39,"line":134},[37,2327,137],{"class":73},[37,2329,2330,2332,2334,2336],{"class":39,"line":140},[37,2331,614],{"class":73},[37,2333,146],{"class":130},[37,2335,619],{"class":47},[37,2337,622],{"class":73},[37,2339,2340,2342,2344],{"class":39,"line":155},[37,2341,627],{"class":73},[37,2343,146],{"class":130},[37,2345,632],{"class":47},[37,2347,2348],{"class":39,"line":168},[37,2349,197],{"class":73},[75,2351,640],{"id":639},[27,2353,2354],{"className":109,"code":643,"language":111,"meta":32,"style":32},[34,2355,2356,2378,2382,2392,2400],{"__ignoreMap":32},[37,2357,2358,2360,2362,2364,2366,2368,2370,2372,2374,2376],{"class":39,"line":40},[37,2359,533],{"class":73},[37,2361,550],{"class":43},[37,2363,124],{"class":73},[37,2365,656],{"class":47},[37,2367,551],{"class":73},[37,2369,661],{"class":47},[37,2371,551],{"class":73},[37,2373,666],{"class":47},[37,2375,551],{"class":73},[37,2377,605],{"class":130},[37,2379,2380],{"class":39,"line":134},[37,2381,137],{"class":73},[37,2383,2384,2386,2388,2390],{"class":39,"line":140},[37,2385,679],{"class":73},[37,2387,146],{"class":130},[37,2389,684],{"class":47},[37,2391,622],{"class":73},[37,2393,2394,2396,2398],{"class":39,"line":155},[37,2395,691],{"class":73},[37,2397,146],{"class":130},[37,2399,696],{"class":69},[37,2401,2402],{"class":39,"line":168},[37,2403,197],{"class":73},[75,2405,704],{"id":703},[80,2407,2408,2410,2412],{},[83,2409,709],{},[83,2411,712],{},[83,2413,715],{},[19,2415,719],{"id":718},[15,2417,722],{},[27,2419,2420],{"className":109,"code":725,"language":111,"meta":32,"style":32},[34,2421,2422,2426,2434,2438,2442,2454,2458,2462],{"__ignoreMap":32},[37,2423,2424],{"class":39,"line":40},[37,2425,733],{"class":732},[37,2427,2428,2430,2432],{"class":39,"line":134},[37,2429,533],{"class":73},[37,2431,554],{"class":43},[37,2433,742],{"class":73},[37,2435,2436],{"class":39,"line":140},[37,2437,748],{"emptyLinePlaceholder":747},[37,2439,2440],{"class":39,"line":155},[37,2441,753],{"class":732},[37,2443,2444,2446,2448,2450,2452],{"class":39,"line":168},[37,2445,533],{"class":73},[37,2447,554],{"class":43},[37,2449,124],{"class":73},[37,2451,541],{"class":47},[37,2453,544],{"class":73},[37,2455,2456],{"class":39,"line":181},[37,2457,748],{"emptyLinePlaceholder":747},[37,2459,2460],{"class":39,"line":194},[37,2461,774],{"class":732},[37,2463,2464,2466,2468],{"class":39,"line":777},[37,2465,533],{"class":73},[37,2467,782],{"class":43},[37,2469,742],{"class":73},[19,2471,788],{"id":787},[15,2473,791],{},[27,2475,2476],{"className":109,"code":794,"language":111,"meta":32,"style":32},[34,2477,2478,2482,2486,2492,2496,2508,2512,2520,2526],{"__ignoreMap":32},[37,2479,2480],{"class":39,"line":40},[37,2481,801],{"class":130},[37,2483,2484],{"class":39,"line":134},[37,2485,137],{"class":73},[37,2487,2488,2490],{"class":39,"line":140},[37,2489,810],{"class":43},[37,2491,813],{"class":73},[37,2493,2494],{"class":39,"line":155},[37,2495,818],{"class":73},[37,2497,2498,2500,2502,2504,2506],{"class":39,"line":168},[37,2499,823],{"class":130},[37,2501,826],{"class":73},[37,2503,829],{"class":43},[37,2505,832],{"class":43},[37,2507,835],{"class":73},[37,2509,2510],{"class":39,"line":181},[37,2511,137],{"class":73},[37,2513,2514,2516,2518],{"class":39,"line":194},[37,2515,844],{"class":73},[37,2517,558],{"class":43},[37,2519,849],{"class":73},[37,2521,2522,2524],{"class":39,"line":777},[37,2523,854],{"class":130},[37,2525,152],{"class":73},[37,2527,2528],{"class":39,"line":859},[37,2529,818],{"class":73},[15,2531,864,2532,571,2534,871],{},[34,2533,867],{},[34,2535,870],{},[19,2537,875],{"id":874},[15,2539,878,2540,881],{},[34,2541,550],{},[15,2543,884,2544,887],{},[34,2545,468],{},[19,2547,891],{"id":890},[15,2549,894,2550,897,2552,900],{},[34,2551,410],{},[34,2553,430],{},[27,2555,2556],{"className":109,"code":903,"language":111,"meta":32,"style":32},[34,2557,2558],{"__ignoreMap":32},[37,2559,2560,2562,2564,2566],{"class":39,"line":40},[37,2561,910],{"class":130},[37,2563,913],{"class":73},[37,2565,916],{"class":43},[37,2567,742],{"class":73},[15,2569,921],{},[27,2571,2572],{"className":109,"code":924,"language":111,"meta":32,"style":32},[34,2573,2574],{"__ignoreMap":32},[37,2575,2576,2578,2580,2582],{"class":39,"line":40},[37,2577,931],{"class":43},[37,2579,934],{"class":43},[37,2581,228],{"class":130},[37,2583,939],{"class":73},[19,2585,943],{"id":942},[15,2587,946,2588,950],{},[34,2589,949],{},[80,2591,2592,2596,2598],{},[83,2593,955,2594,958],{},[34,2595,449],{},[83,2597,961],{},[83,2599,964],{},[19,2601,968],{"id":967},[15,2603,971],{},[27,2605,2606],{"className":109,"code":974,"language":111,"meta":32,"style":32},[34,2607,2608],{"__ignoreMap":32},[37,2609,2610,2612,2614,2616,2618],{"class":39,"line":40},[37,2611,533],{"class":73},[37,2613,983],{"class":43},[37,2615,124],{"class":73},[37,2617,988],{"class":47},[37,2619,544],{"class":73},[19,2621,994],{"id":993},[15,2623,2624,999],{},[34,2625,211],{},[19,2627,1003],{"id":1002},[15,2629,2630,1008,2632,571,2634,1015],{},[34,2631,211],{},[34,2633,1011],{},[34,2635,1014],{},[27,2637,2638],{"className":109,"code":1018,"language":111,"meta":32,"style":32},[34,2639,2640,2648,2652],{"__ignoreMap":32},[37,2641,2642,2644,2646],{"class":39,"line":40},[37,2643,533],{"class":73},[37,2645,1027],{"class":43},[37,2647,742],{"class":73},[37,2649,2650],{"class":39,"line":134},[37,2651,1034],{"class":732},[37,2653,2654,2656,2658,2660],{"class":39,"line":140},[37,2655,910],{"class":130},[37,2657,913],{"class":73},[37,2659,1043],{"class":43},[37,2661,742],{"class":73},[19,2663,1049],{"id":1048},[27,2665,2666],{"className":109,"code":1052,"language":111,"meta":32,"style":32},[34,2667,2668,2682,2686,2696,2700,2718,2722,2732,2736,2752,2756,2766,2776,2786,2796,2800,2804,2818,2826,2830,2834,2852,2856,2864,2872,2882,2886],{"__ignoreMap":32},[37,2669,2670,2672,2674,2676,2678,2680],{"class":39,"line":40},[37,2671,1059],{"class":130},[37,2673,1062],{"class":130},[37,2675,1065],{"class":130},[37,2677,1068],{"class":43},[37,2679,1071],{"class":73},[37,2681,1074],{"class":43},[37,2683,2684],{"class":39,"line":134},[37,2685,137],{"class":73},[37,2687,2688,2690,2692,2694],{"class":39,"line":140},[37,2689,1083],{"class":130},[37,2691,1086],{"class":43},[37,2693,1089],{"class":43},[37,2695,152],{"class":73},[37,2697,2698],{"class":39,"line":155},[37,2699,748],{"emptyLinePlaceholder":747},[37,2701,2702,2704,2706,2708,2710,2712,2714,2716],{"class":39,"line":168},[37,2703,1100],{"class":130},[37,2705,1103],{"class":130},[37,2707,1106],{"class":130},[37,2709,1109],{"class":43},[37,2711,124],{"class":73},[37,2713,1114],{"class":43},[37,2715,1117],{"class":43},[37,2717,835],{"class":73},[37,2719,2720],{"class":39,"line":181},[37,2721,1124],{"class":73},[37,2723,2724,2726,2728,2730],{"class":39,"line":194},[37,2725,1129],{"class":69},[37,2727,1132],{"class":73},[37,2729,1135],{"class":43},[37,2731,1138],{"class":73},[37,2733,2734],{"class":39,"line":777},[37,2735,748],{"emptyLinePlaceholder":747},[37,2737,2738,2740,2742,2744,2746,2748,2750],{"class":39,"line":859},[37,2739,1147],{"class":73},[37,2741,146],{"class":130},[37,2743,231],{"class":73},[37,2745,207],{"class":43},[37,2747,124],{"class":73},[37,2749,127],{"class":43},[37,2751,131],{"class":130},[37,2753,2754],{"class":39,"line":1162},[37,2755,1165],{"class":73},[37,2757,2758,2760,2762,2764],{"class":39,"line":1168},[37,2759,1171],{"class":73},[37,2761,146],{"class":130},[37,2763,149],{"class":47},[37,2765,152],{"class":73},[37,2767,2768,2770,2772,2774],{"class":39,"line":1180},[37,2769,1183],{"class":73},[37,2771,146],{"class":130},[37,2773,163],{"class":47},[37,2775,152],{"class":73},[37,2777,2778,2780,2782,2784],{"class":39,"line":1192},[37,2779,1195],{"class":73},[37,2781,146],{"class":130},[37,2783,1200],{"class":47},[37,2785,152],{"class":73},[37,2787,2788,2790,2792,2794],{"class":39,"line":1205},[37,2789,1208],{"class":73},[37,2791,146],{"class":130},[37,2793,1213],{"class":47},[37,2795,152],{"class":73},[37,2797,2798],{"class":39,"line":1218},[37,2799,1221],{"class":73},[37,2801,2802],{"class":39,"line":1224},[37,2803,748],{"emptyLinePlaceholder":747},[37,2805,2806,2808,2810,2812,2814,2816],{"class":39,"line":1229},[37,2807,1232],{"class":73},[37,2809,536],{"class":43},[37,2811,124],{"class":73},[37,2813,1239],{"class":47},[37,2815,1242],{"class":130},[37,2817,1245],{"class":73},[37,2819,2820,2822,2824],{"class":39,"line":1248},[37,2821,1232],{"class":73},[37,2823,554],{"class":43},[37,2825,742],{"class":73},[37,2827,2828],{"class":39,"line":1257},[37,2829,1260],{"class":73},[37,2831,2832],{"class":39,"line":1263},[37,2833,748],{"emptyLinePlaceholder":747},[37,2835,2836,2838,2840,2842,2844,2846,2848,2850],{"class":39,"line":1268},[37,2837,1100],{"class":130},[37,2839,1103],{"class":130},[37,2841,1106],{"class":130},[37,2843,1277],{"class":43},[37,2845,124],{"class":73},[37,2847,1282],{"class":43},[37,2849,1117],{"class":43},[37,2851,835],{"class":73},[37,2853,2854],{"class":39,"line":1289},[37,2855,1124],{"class":73},[37,2857,2858,2860,2862],{"class":39,"line":1294},[37,2859,1232],{"class":73},[37,2861,782],{"class":43},[37,2863,742],{"class":73},[37,2865,2866,2868,2870],{"class":39,"line":1303},[37,2867,1232],{"class":73},[37,2869,1027],{"class":43},[37,2871,742],{"class":73},[37,2873,2874,2876,2878,2880],{"class":39,"line":1312},[37,2875,1129],{"class":69},[37,2877,1132],{"class":73},[37,2879,1319],{"class":43},[37,2881,1138],{"class":73},[37,2883,2884],{"class":39,"line":1324},[37,2885,1260],{"class":73},[37,2887,2888],{"class":39,"line":1329},[37,2889,818],{"class":73},[19,2891,1335],{"id":1334},[80,2893,2894,2898,2902],{},[83,2895,2896,1345],{},[1341,2897,1344],{"href":1343},[83,2899,2900,1352],{},[1341,2901,1351],{"href":1350},[83,2903,2904,1359],{},[1341,2905,1358],{"href":1357},[1361,2907,1363],{},{"title":32,"searchDepth":134,"depth":134,"links":2909},[2910,2913,2918,2919,2924,2925,2926,2927,2928,2929,2930,2931,2932,2933],{"id":21,"depth":134,"text":22,"children":2911},[2912],{"id":77,"depth":140,"text":78},{"id":94,"depth":134,"text":95,"children":2914},[2915,2916,2917],{"id":98,"depth":140,"text":99},{"id":200,"depth":140,"text":201},{"id":290,"depth":140,"text":291},{"id":519,"depth":134,"text":520},{"id":562,"depth":134,"text":563,"children":2920},[2921,2922,2923],{"id":578,"depth":140,"text":579},{"id":639,"depth":140,"text":640},{"id":703,"depth":140,"text":704},{"id":718,"depth":134,"text":719},{"id":787,"depth":134,"text":788},{"id":874,"depth":134,"text":875},{"id":890,"depth":134,"text":891},{"id":942,"depth":134,"text":943},{"id":967,"depth":134,"text":968},{"id":993,"depth":134,"text":994},{"id":1002,"depth":134,"text":1003},{"id":1048,"depth":134,"text":1049},{"id":1334,"depth":134,"text":1335},{},{"title":5,"description":1390},{"id":2937,"title":1661,"body":2938,"description":3765,"extension":1391,"meta":3766,"navigation":747,"order":1168,"path":1487,"published":747,"section":1394,"seo":3767,"stem":3768,"__hash__":3769},"beaconDocs\u002Fbeacon\u002Fdocs\u002Fsdk\u002Fcpp.md",{"type":7,"value":2939,"toc":3742},[2940,2944,2947,2949,2953,2959,3009,3013,3065,3068,3070,3084,3086,3182,3189,3228,3230,3414,3416,3419,3428,3431,3433,3439,3441,3465,3467,3491,3493,3533,3535,3542,3587,3596,3598,3601,3610,3612,3621,3623,3626,3637,3641,3648,3657,3664,3666,3672,3676,3683,3723,3725,3739],[10,2941,2943],{"id":2942},"beacon-c-sdk","Beacon C++ SDK",[15,2945,2946],{},"The Beacon C++ SDK provides native integration for Windows desktop applications, server processes, and cross-platform C++ projects.",[19,2948,22],{"id":21},[75,2950,2952],{"id":2951},"cmake-fetchcontent-recommended","CMake FetchContent (recommended)",[15,2954,2955,2956,106],{},"Add Beacon to your ",[34,2957,2958],{},"CMakeLists.txt",[27,2960,2964],{"className":2961,"code":2962,"language":2963,"meta":32,"style":32},"language-cmake shiki shiki-themes github-dark","include(FetchContent)\nFetchContent_Declare(\n  beacon_sdk\n  GIT_REPOSITORY https:\u002F\u002Fgithub.com\u002Fsoftagility\u002Fbeacon-sdk-cpp.git\n  GIT_TAG        v1.0.0\n)\nFetchContent_MakeAvailable(beacon_sdk)\n\ntarget_link_libraries(your_app PRIVATE beacon_sdk)\n","cmake",[34,2965,2966,2971,2976,2981,2986,2991,2995,3000,3004],{"__ignoreMap":32},[37,2967,2968],{"class":39,"line":40},[37,2969,2970],{},"include(FetchContent)\n",[37,2972,2973],{"class":39,"line":134},[37,2974,2975],{},"FetchContent_Declare(\n",[37,2977,2978],{"class":39,"line":140},[37,2979,2980],{},"  beacon_sdk\n",[37,2982,2983],{"class":39,"line":155},[37,2984,2985],{},"  GIT_REPOSITORY https:\u002F\u002Fgithub.com\u002Fsoftagility\u002Fbeacon-sdk-cpp.git\n",[37,2987,2988],{"class":39,"line":168},[37,2989,2990],{},"  GIT_TAG        v1.0.0\n",[37,2992,2993],{"class":39,"line":181},[37,2994,835],{},[37,2996,2997],{"class":39,"line":194},[37,2998,2999],{},"FetchContent_MakeAvailable(beacon_sdk)\n",[37,3001,3002],{"class":39,"line":777},[37,3003,748],{"emptyLinePlaceholder":747},[37,3005,3006],{"class":39,"line":859},[37,3007,3008],{},"target_link_libraries(your_app PRIVATE beacon_sdk)\n",[75,3010,3012],{"id":3011},"build-from-source","Build from Source",[27,3014,3016],{"className":29,"code":3015,"language":31,"meta":32,"style":32},"git clone https:\u002F\u002Fgithub.com\u002Fsoftagility\u002Fbeacon-sdk-cpp.git\ncd beacon-sdk-cpp\ncmake -B build -DCMAKE_BUILD_TYPE=Release\ncmake --build build --config Release\n",[34,3017,3018,3029,3037,3050],{"__ignoreMap":32},[37,3019,3020,3023,3026],{"class":39,"line":40},[37,3021,3022],{"class":43},"git",[37,3024,3025],{"class":47}," clone",[37,3027,3028],{"class":47}," https:\u002F\u002Fgithub.com\u002Fsoftagility\u002Fbeacon-sdk-cpp.git\n",[37,3030,3031,3034],{"class":39,"line":134},[37,3032,3033],{"class":69},"cd",[37,3035,3036],{"class":47}," beacon-sdk-cpp\n",[37,3038,3039,3041,3044,3047],{"class":39,"line":140},[37,3040,2963],{"class":43},[37,3042,3043],{"class":69}," -B",[37,3045,3046],{"class":47}," build",[37,3048,3049],{"class":69}," -DCMAKE_BUILD_TYPE=Release\n",[37,3051,3052,3054,3057,3059,3062],{"class":39,"line":155},[37,3053,2963],{"class":43},[37,3055,3056],{"class":69}," --build",[37,3058,3046],{"class":47},[37,3060,3061],{"class":69}," --config",[37,3063,3064],{"class":47}," Release\n",[15,3066,3067],{},"Dependencies (libcurl, nlohmann_json, SQLite3) are fetched automatically via CMake FetchContent if not found on the system.",[75,3069,78],{"id":77},[80,3071,3072,3075,3078,3081],{},[83,3073,3074],{},"C++17 or later",[83,3076,3077],{},"Windows 10+, Linux (glibc 2.28+), or macOS 12+",[83,3079,3080],{},"CMake 3.25+",[83,3082,3083],{},"Dependencies resolved automatically (libcurl, nlohmann_json, SQLite3)",[19,3085,95],{"id":94},[27,3087,3091],{"className":3088,"code":3089,"language":3090,"meta":32,"style":32},"language-cpp shiki shiki-themes github-dark","#include \u003Cbeacon\u002Fbeacon.hpp>\n\nint main()\n{\n    auto tracker = beacon::Tracker::configure([](beacon::Options& opts) {\n        opts.api_key = \"your-api-key\";\n        opts.api_base_url = \"https:\u002F\u002Fapi.beacon.softagility.com\";\n        opts.app_name = \"MyApp\";\n        opts.app_version = \"1.2.0\";\n    });\n\n    tracker->identify(\"user-123\");\n    tracker->startSession();\n\n    \u002F\u002F Your application code here...\n\n    tracker->endSession();\n    return 0;\n}\n","cpp",[34,3092,3093,3098,3102,3107,3111,3116,3121,3126,3131,3136,3141,3145,3150,3155,3159,3164,3168,3173,3178],{"__ignoreMap":32},[37,3094,3095],{"class":39,"line":40},[37,3096,3097],{},"#include \u003Cbeacon\u002Fbeacon.hpp>\n",[37,3099,3100],{"class":39,"line":134},[37,3101,748],{"emptyLinePlaceholder":747},[37,3103,3104],{"class":39,"line":140},[37,3105,3106],{},"int main()\n",[37,3108,3109],{"class":39,"line":155},[37,3110,137],{},[37,3112,3113],{"class":39,"line":168},[37,3114,3115],{},"    auto tracker = beacon::Tracker::configure([](beacon::Options& opts) {\n",[37,3117,3118],{"class":39,"line":181},[37,3119,3120],{},"        opts.api_key = \"your-api-key\";\n",[37,3122,3123],{"class":39,"line":194},[37,3124,3125],{},"        opts.api_base_url = \"https:\u002F\u002Fapi.beacon.softagility.com\";\n",[37,3127,3128],{"class":39,"line":777},[37,3129,3130],{},"        opts.app_name = \"MyApp\";\n",[37,3132,3133],{"class":39,"line":859},[37,3134,3135],{},"        opts.app_version = \"1.2.0\";\n",[37,3137,3138],{"class":39,"line":1162},[37,3139,3140],{},"    });\n",[37,3142,3143],{"class":39,"line":1168},[37,3144,748],{"emptyLinePlaceholder":747},[37,3146,3147],{"class":39,"line":1180},[37,3148,3149],{},"    tracker->identify(\"user-123\");\n",[37,3151,3152],{"class":39,"line":1192},[37,3153,3154],{},"    tracker->startSession();\n",[37,3156,3157],{"class":39,"line":1205},[37,3158,748],{"emptyLinePlaceholder":747},[37,3160,3161],{"class":39,"line":1218},[37,3162,3163],{},"    \u002F\u002F Your application code here...\n",[37,3165,3166],{"class":39,"line":1224},[37,3167,748],{"emptyLinePlaceholder":747},[37,3169,3170],{"class":39,"line":1229},[37,3171,3172],{},"    tracker->endSession();\n",[37,3174,3175],{"class":39,"line":1248},[37,3176,3177],{},"    return 0;\n",[37,3179,3180],{"class":39,"line":1257},[37,3181,818],{},[15,3183,3184,3185,3188],{},"You can also pass an ",[34,3186,3187],{},"Options"," struct directly:",[27,3190,3192],{"className":3088,"code":3191,"language":3090,"meta":32,"style":32},"beacon::Options opts;\nopts.api_key = \"your-api-key\";\nopts.api_base_url = \"https:\u002F\u002Fapi.beacon.softagility.com\";\nopts.app_name = \"MyApp\";\nopts.app_version = \"1.2.0\";\n\nauto tracker = beacon::Tracker::configure(opts);\n",[34,3193,3194,3199,3204,3209,3214,3219,3223],{"__ignoreMap":32},[37,3195,3196],{"class":39,"line":40},[37,3197,3198],{},"beacon::Options opts;\n",[37,3200,3201],{"class":39,"line":134},[37,3202,3203],{},"opts.api_key = \"your-api-key\";\n",[37,3205,3206],{"class":39,"line":140},[37,3207,3208],{},"opts.api_base_url = \"https:\u002F\u002Fapi.beacon.softagility.com\";\n",[37,3210,3211],{"class":39,"line":155},[37,3212,3213],{},"opts.app_name = \"MyApp\";\n",[37,3215,3216],{"class":39,"line":168},[37,3217,3218],{},"opts.app_version = \"1.2.0\";\n",[37,3220,3221],{"class":39,"line":181},[37,3222,748],{"emptyLinePlaceholder":747},[37,3224,3225],{"class":39,"line":194},[37,3226,3227],{},"auto tracker = beacon::Tracker::configure(opts);\n",[75,3229,291],{"id":290},[293,3231,3232,3244],{},[296,3233,3234],{},[299,3235,3236,3238,3240,3242],{},[302,3237,304],{},[302,3239,307],{},[302,3241,310],{},[302,3243,313],{},[315,3245,3246,3262,3277,3293,3309,3326,3344,3361,3378,3395],{},[299,3247,3248,3253,3258,3260],{},[320,3249,3250],{},[34,3251,3252],{},"api_key",[320,3254,3255],{},[34,3256,3257],{},"std::string",[320,3259,332],{},[320,3261,335],{},[299,3263,3264,3269,3273,3275],{},[320,3265,3266],{},[34,3267,3268],{},"api_base_url",[320,3270,3271],{},[34,3272,3257],{},[320,3274,332],{},[320,3276,351],{},[299,3278,3279,3284,3288,3290],{},[320,3280,3281],{},[34,3282,3283],{},"app_name",[320,3285,3286],{},[34,3287,3257],{},[320,3289,332],{},[320,3291,3292],{},"Your application name (required)",[299,3294,3295,3300,3304,3306],{},[320,3296,3297],{},[34,3298,3299],{},"app_version",[320,3301,3302],{},[34,3303,3257],{},[320,3305,332],{},[320,3307,3308],{},"Your application version (required)",[299,3310,3311,3316,3320,3324],{},[320,3312,3313],{},[34,3314,3315],{},"enabled",[320,3317,3318],{},[34,3319,395],{},[320,3321,3322],{},[34,3323,400],{},[320,3325,403],{},[299,3327,3328,3333,3337,3341],{},[320,3329,3330],{},[34,3331,3332],{},"flush_interval_seconds",[320,3334,3335],{},[34,3336,415],{},[320,3338,3339],{},[34,3340,420],{},[320,3342,3343],{},"Batch send interval in seconds (1-3600)",[299,3345,3346,3351,3355,3359],{},[320,3347,3348],{},[34,3349,3350],{},"max_batch_size",[320,3352,3353],{},[34,3354,415],{},[320,3356,3357],{},[34,3358,439],{},[320,3360,442],{},[299,3362,3363,3368,3372,3376],{},[320,3364,3365],{},[34,3366,3367],{},"max_queue_size_mb",[320,3369,3370],{},[34,3371,415],{},[320,3373,3374],{},[34,3375,458],{},[320,3377,461],{},[299,3379,3380,3385,3389,3393],{},[320,3381,3382],{},[34,3383,3384],{},"max_breadcrumbs",[320,3386,3387],{},[34,3388,415],{},[320,3390,3391],{},[34,3392,439],{},[320,3394,479],{},[299,3396,3397,3402,3407,3412],{},[320,3398,3399],{},[34,3400,3401],{},"logger",[320,3403,3404],{},[34,3405,3406],{},"std::shared_ptr\u003CILogger>",[320,3408,3409],{},[34,3410,3411],{},"nullptr",[320,3413,516],{},[19,3415,520],{"id":519},[15,3417,3418],{},"Before tracking events or sessions, identify the current actor:",[27,3420,3422],{"className":3088,"code":3421,"language":3090,"meta":32,"style":32},"tracker->identify(\"user-123\");\n",[34,3423,3424],{"__ignoreMap":32},[37,3425,3426],{"class":39,"line":40},[37,3427,3421],{},[15,3429,3430],{},"Once identified, all subsequent calls use this actor. You can also pass an explicit actor ID to tracking methods.",[19,3432,563],{"id":562},[15,3434,566,3435,571,3437,575],{},[568,3436,570],{},[568,3438,574],{},[75,3440,579],{"id":578},[27,3442,3444],{"className":3088,"code":3443,"language":3090,"meta":32,"style":32},"tracker->track(\"ui\", \"button_clicked\", {\n    {\"button_name\", \"export\"},\n    {\"screen\", \"dashboard\"}\n});\n",[34,3445,3446,3451,3456,3461],{"__ignoreMap":32},[37,3447,3448],{"class":39,"line":40},[37,3449,3450],{},"tracker->track(\"ui\", \"button_clicked\", {\n",[37,3452,3453],{"class":39,"line":134},[37,3454,3455],{},"    {\"button_name\", \"export\"},\n",[37,3457,3458],{"class":39,"line":140},[37,3459,3460],{},"    {\"screen\", \"dashboard\"}\n",[37,3462,3463],{"class":39,"line":155},[37,3464,197],{},[75,3466,640],{"id":639},[27,3468,3470],{"className":3088,"code":3469,"language":3090,"meta":32,"style":32},"tracker->track(\"reports\", \"report_exported\", \"user-456\", {\n    {\"format\", \"pdf\"},\n    {\"row_count\", \"1500\"}\n});\n",[34,3471,3472,3477,3482,3487],{"__ignoreMap":32},[37,3473,3474],{"class":39,"line":40},[37,3475,3476],{},"tracker->track(\"reports\", \"report_exported\", \"user-456\", {\n",[37,3478,3479],{"class":39,"line":134},[37,3480,3481],{},"    {\"format\", \"pdf\"},\n",[37,3483,3484],{"class":39,"line":140},[37,3485,3486],{},"    {\"row_count\", \"1500\"}\n",[37,3488,3489],{"class":39,"line":155},[37,3490,197],{},[19,3492,719],{"id":718},[27,3494,3496],{"className":3088,"code":3495,"language":3090,"meta":32,"style":32},"\u002F\u002F Start a session (uses the identified actor)\ntracker->startSession();\n\n\u002F\u002F Or start with an explicit actor ID\ntracker->startSession(\"user-123\");\n\n\u002F\u002F End the current session\ntracker->endSession();\n",[34,3497,3498,3502,3507,3511,3515,3520,3524,3528],{"__ignoreMap":32},[37,3499,3500],{"class":39,"line":40},[37,3501,733],{},[37,3503,3504],{"class":39,"line":134},[37,3505,3506],{},"tracker->startSession();\n",[37,3508,3509],{"class":39,"line":140},[37,3510,748],{"emptyLinePlaceholder":747},[37,3512,3513],{"class":39,"line":155},[37,3514,753],{},[37,3516,3517],{"class":39,"line":168},[37,3518,3519],{},"tracker->startSession(\"user-123\");\n",[37,3521,3522],{"class":39,"line":181},[37,3523,748],{"emptyLinePlaceholder":747},[37,3525,3526],{"class":39,"line":194},[37,3527,774],{},[37,3529,3530],{"class":39,"line":777},[37,3531,3532],{},"tracker->endSession();\n",[19,3534,788],{"id":787},[15,3536,3537,3538,3541],{},"Track exceptions with severity levels. Breadcrumbs from recent ",[34,3539,3540],{},"track()"," calls are attached automatically.",[27,3543,3545],{"className":3088,"code":3544,"language":3090,"meta":32,"style":32},"try\n{\n    process_order(order);\n}\ncatch (const std::exception& ex)\n{\n    tracker->trackException(ex, beacon::ExceptionSeverity::NonFatal);\n    throw;\n}\n",[34,3546,3547,3551,3555,3560,3564,3569,3573,3578,3583],{"__ignoreMap":32},[37,3548,3549],{"class":39,"line":40},[37,3550,801],{},[37,3552,3553],{"class":39,"line":134},[37,3554,137],{},[37,3556,3557],{"class":39,"line":140},[37,3558,3559],{},"    process_order(order);\n",[37,3561,3562],{"class":39,"line":155},[37,3563,818],{},[37,3565,3566],{"class":39,"line":168},[37,3567,3568],{},"catch (const std::exception& ex)\n",[37,3570,3571],{"class":39,"line":181},[37,3572,137],{},[37,3574,3575],{"class":39,"line":194},[37,3576,3577],{},"    tracker->trackException(ex, beacon::ExceptionSeverity::NonFatal);\n",[37,3579,3580],{"class":39,"line":777},[37,3581,3582],{},"    throw;\n",[37,3584,3585],{"class":39,"line":859},[37,3586,818],{},[15,3588,3589,3590,571,3593,1132],{},"Severity options: ",[34,3591,3592],{},"beacon::ExceptionSeverity::Fatal",[34,3594,3595],{},"beacon::ExceptionSeverity::NonFatal",[19,3597,891],{"id":890},[15,3599,3600],{},"Events are batched and sent on a timer or when the batch size is reached. To flush manually:",[27,3602,3604],{"className":3088,"code":3603,"language":3090,"meta":32,"style":32},"bool success = tracker->flush(); \u002F\u002F Blocks up to 30 seconds\n",[34,3605,3606],{"__ignoreMap":32},[37,3607,3608],{"class":39,"line":40},[37,3609,3603],{},[15,3611,921],{},[27,3613,3615],{"className":3088,"code":3614,"language":3090,"meta":32,"style":32},"beacon::FlushStatus status = tracker->last_flush_status();\n",[34,3616,3617],{"__ignoreMap":32},[37,3618,3619],{"class":39,"line":40},[37,3620,3614],{},[19,3622,943],{"id":942},[15,3624,3625],{},"Events are persisted to a local SQLite database when the network is unavailable. The queue syncs automatically when connectivity returns.",[80,3627,3628,3631,3634],{},[83,3629,3630],{},"Persists across application restarts",[83,3632,3633],{},"Thread-safe queue with configurable size limit",[83,3635,3636],{},"Zero data loss during transient failures",[19,3638,3640],{"id":3639},"singleton-access","Singleton Access",[15,3642,3643,3644,3647],{},"After calling ",[34,3645,3646],{},"configure()",", retrieve the tracker instance anywhere with:",[27,3649,3651],{"className":3088,"code":3650,"language":3090,"meta":32,"style":32},"auto tracker = beacon::Tracker::instance();\n",[34,3652,3653],{"__ignoreMap":32},[37,3654,3655],{"class":39,"line":40},[37,3656,3650],{},[15,3658,3659,3660,3663],{},"Call ",[34,3661,3662],{},"beacon::Tracker::reset_for_testing()"," in test teardown to clear the singleton.",[19,3665,994],{"id":993},[15,3667,3668,3671],{},[34,3669,3670],{},"beacon::Tracker"," is fully thread-safe. Share a single instance across threads.",[19,3673,3675],{"id":3674},"raii-lifetime-management","RAII Lifetime Management",[15,3677,3678,3679,3682],{},"The SDK follows RAII conventions. When the ",[34,3680,3681],{},"Tracker"," shared_ptr reference count reaches zero, pending events are flushed and the active session is ended:",[27,3684,3686],{"className":3088,"code":3685,"language":3090,"meta":32,"style":32},"{\n    auto tracker = beacon::Tracker::configure(configurator);\n    tracker->identify(\"user-123\");\n    tracker->startSession();\n\n    \u002F\u002F Track events...\n\n} \u002F\u002F Session ended, events flushed, resources released\n",[34,3687,3688,3692,3697,3701,3705,3709,3714,3718],{"__ignoreMap":32},[37,3689,3690],{"class":39,"line":40},[37,3691,137],{},[37,3693,3694],{"class":39,"line":134},[37,3695,3696],{},"    auto tracker = beacon::Tracker::configure(configurator);\n",[37,3698,3699],{"class":39,"line":140},[37,3700,3149],{},[37,3702,3703],{"class":39,"line":155},[37,3704,3154],{},[37,3706,3707],{"class":39,"line":168},[37,3708,748],{"emptyLinePlaceholder":747},[37,3710,3711],{"class":39,"line":181},[37,3712,3713],{},"    \u002F\u002F Track events...\n",[37,3715,3716],{"class":39,"line":194},[37,3717,748],{"emptyLinePlaceholder":747},[37,3719,3720],{"class":39,"line":777},[37,3721,3722],{},"} \u002F\u002F Session ended, events flushed, resources released\n",[19,3724,1335],{"id":1334},[80,3726,3727,3731,3735],{},[83,3728,3729,1345],{},[1341,3730,1344],{"href":1343},[83,3732,3733,1352],{},[1341,3734,1351],{"href":1350},[83,3736,3737,1359],{},[1341,3738,1358],{"href":1357},[1361,3740,3741],{},"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 pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}",{"title":32,"searchDepth":134,"depth":134,"links":3743},[3744,3749,3752,3753,3757,3758,3759,3760,3761,3762,3763,3764],{"id":21,"depth":134,"text":22,"children":3745},[3746,3747,3748],{"id":2951,"depth":140,"text":2952},{"id":3011,"depth":140,"text":3012},{"id":77,"depth":140,"text":78},{"id":94,"depth":134,"text":95,"children":3750},[3751],{"id":290,"depth":140,"text":291},{"id":519,"depth":134,"text":520},{"id":562,"depth":134,"text":563,"children":3754},[3755,3756],{"id":578,"depth":140,"text":579},{"id":639,"depth":140,"text":640},{"id":718,"depth":134,"text":719},{"id":787,"depth":134,"text":788},{"id":890,"depth":134,"text":891},{"id":942,"depth":134,"text":943},{"id":3639,"depth":134,"text":3640},{"id":993,"depth":134,"text":994},{"id":3674,"depth":134,"text":3675},{"id":1334,"depth":134,"text":1335},"Integrate Beacon product analytics into native C++ desktop and server applications.",{},{"title":1661,"description":3765},"beacon\u002Fdocs\u002Fsdk\u002Fcpp","pZH0WIjTkxZn0eF0NsqxxLOQdUawhjo3-7gg56ynH_U",{"id":3771,"title":3772,"body":3773,"description":4734,"extension":1391,"meta":4735,"navigation":747,"order":1180,"path":1666,"published":747,"section":1394,"seo":4736,"stem":4737,"__hash__":4738},"beaconDocs\u002Fbeacon\u002Fdocs\u002Fsdk\u002Fjavascript.md","JavaScript \u002F TypeScript SDK",{"type":7,"value":3774,"toc":4710},[3775,3779,3782,3784,3787,3803,3806,3860,3862,3870,3872,3970,3972,4185,4187,4190,4207,4212,4214,4220,4222,4271,4273,4289,4293,4303,4347,4354,4358,4363,4422,4430,4432,4445,4448,4470,4472,4483,4486,4502,4506,4509,4546,4549,4553,4556,4569,4572,4576,4579,4640,4644,4647,4660,4662,4665,4678,4681,4685,4691,4693,4707],[10,3776,3778],{"id":3777},"beacon-javascript-typescript-sdk","Beacon JavaScript \u002F TypeScript SDK",[15,3780,3781],{},"The Beacon JavaScript \u002F TypeScript SDK provides lightweight, browser-native integration for web applications. Under 5 KB gzipped, it includes automatic page view tracking, session management, and error tracking with full TypeScript definitions.",[19,3783,22],{"id":21},[15,3785,3786],{},"Install via npm:",[27,3788,3790],{"className":29,"code":3789,"language":31,"meta":32,"style":32},"npm install @softagility\u002Fbeacon-js\n",[34,3791,3792],{"__ignoreMap":32},[37,3793,3794,3797,3800],{"class":39,"line":40},[37,3795,3796],{"class":43},"npm",[37,3798,3799],{"class":47}," install",[37,3801,3802],{"class":47}," @softagility\u002Fbeacon-js\n",[15,3804,3805],{},"The package ships ESM, CommonJS, and UMD builds:",[293,3807,3808,3818],{},[296,3809,3810],{},[299,3811,3812,3815],{},[302,3813,3814],{},"Format",[302,3816,3817],{},"Entry",[315,3819,3820,3830,3840,3850],{},[299,3821,3822,3825],{},[320,3823,3824],{},"ESM",[320,3826,3827],{},[34,3828,3829],{},"dist\u002Fbeacon.esm.js",[299,3831,3832,3835],{},[320,3833,3834],{},"CommonJS",[320,3836,3837],{},[34,3838,3839],{},"dist\u002Fbeacon.cjs.js",[299,3841,3842,3845],{},[320,3843,3844],{},"UMD (browser)",[320,3846,3847],{},[34,3848,3849],{},"dist\u002Fbeacon.umd.js",[299,3851,3852,3855],{},[320,3853,3854],{},"Types",[320,3856,3857],{},[34,3858,3859],{},"dist\u002Fbeacon.d.ts",[75,3861,78],{"id":77},[80,3863,3864,3867],{},[83,3865,3866],{},"Any modern browser (Chrome, Firefox, Safari, Edge)",[83,3868,3869],{},"No dependencies",[19,3871,95],{"id":94},[27,3873,3877],{"className":3874,"code":3875,"language":3876,"meta":32,"style":32},"language-typescript shiki shiki-themes github-dark","import { Beacon } from '@softagility\u002Fbeacon-js'\n\nconst beacon = Beacon.init({\n  apiKey: 'your-api-key',\n  sourceApp: 'MyWebApp',\n  sourceVersion: '1.2.0',\n})\n\nbeacon.identify('user-123')\n","typescript",[34,3878,3879,3893,3897,3916,3926,3936,3946,3951,3955],{"__ignoreMap":32},[37,3880,3881,3884,3887,3890],{"class":39,"line":40},[37,3882,3883],{"class":130},"import",[37,3885,3886],{"class":73}," { Beacon } ",[37,3888,3889],{"class":130},"from",[37,3891,3892],{"class":47}," '@softagility\u002Fbeacon-js'\n",[37,3894,3895],{"class":39,"line":134},[37,3896,748],{"emptyLinePlaceholder":747},[37,3898,3899,3902,3905,3907,3910,3913],{"class":39,"line":140},[37,3900,3901],{"class":130},"const",[37,3903,3904],{"class":69}," beacon",[37,3906,228],{"class":130},[37,3908,3909],{"class":73}," Beacon.",[37,3911,3912],{"class":43},"init",[37,3914,3915],{"class":73},"({\n",[37,3917,3918,3921,3924],{"class":39,"line":155},[37,3919,3920],{"class":73},"  apiKey: ",[37,3922,3923],{"class":47},"'your-api-key'",[37,3925,622],{"class":73},[37,3927,3928,3931,3934],{"class":39,"line":168},[37,3929,3930],{"class":73},"  sourceApp: ",[37,3932,3933],{"class":47},"'MyWebApp'",[37,3935,622],{"class":73},[37,3937,3938,3941,3944],{"class":39,"line":181},[37,3939,3940],{"class":73},"  sourceVersion: ",[37,3942,3943],{"class":47},"'1.2.0'",[37,3945,622],{"class":73},[37,3947,3948],{"class":39,"line":194},[37,3949,3950],{"class":73},"})\n",[37,3952,3953],{"class":39,"line":777},[37,3954,748],{"emptyLinePlaceholder":747},[37,3956,3957,3960,3963,3965,3968],{"class":39,"line":859},[37,3958,3959],{"class":73},"beacon.",[37,3961,3962],{"class":43},"identify",[37,3964,124],{"class":73},[37,3966,3967],{"class":47},"'user-123'",[37,3969,835],{"class":73},[75,3971,291],{"id":290},[293,3973,3974,3986],{},[296,3975,3976],{},[299,3977,3978,3980,3982,3984],{},[302,3979,304],{},[302,3981,307],{},[302,3983,310],{},[302,3985,313],{},[315,3987,3988,4003,4018,4033,4052,4072,4091,4110,4129,4148,4166],{},[299,3989,3990,3995,3999,4001],{},[320,3991,3992],{},[34,3993,3994],{},"apiKey",[320,3996,3997],{},[34,3998,329],{},[320,4000,332],{},[320,4002,335],{},[299,4004,4005,4010,4014,4016],{},[320,4006,4007],{},[34,4008,4009],{},"sourceApp",[320,4011,4012],{},[34,4013,329],{},[320,4015,332],{},[320,4017,367],{},[299,4019,4020,4025,4029,4031],{},[320,4021,4022],{},[34,4023,4024],{},"sourceVersion",[320,4026,4027],{},[34,4028,329],{},[320,4030,332],{},[320,4032,383],{},[299,4034,4035,4040,4044,4049],{},[320,4036,4037],{},[34,4038,4039],{},"endpoint",[320,4041,4042],{},[34,4043,329],{},[320,4045,4046],{},[34,4047,4048],{},"https:\u002F\u002Fbeacon.softagility.com",[320,4050,4051],{},"API base URL override",[299,4053,4054,4059,4064,4069],{},[320,4055,4056],{},[34,4057,4058],{},"sessionTimeoutMinutes",[320,4060,4061],{},[34,4062,4063],{},"number",[320,4065,4066],{},[34,4067,4068],{},"30",[320,4070,4071],{},"Inactivity timeout before session rotates (1-1440)",[299,4073,4074,4079,4084,4088],{},[320,4075,4076],{},[34,4077,4078],{},"autoPageViews",[320,4080,4081],{},[34,4082,4083],{},"boolean",[320,4085,4086],{},[34,4087,400],{},[320,4089,4090],{},"Auto-track page views on route changes",[299,4092,4093,4098,4102,4107],{},[320,4094,4095],{},[34,4096,4097],{},"flushIntervalMs",[320,4099,4100],{},[34,4101,4063],{},[320,4103,4104],{},[34,4105,4106],{},"10000",[320,4108,4109],{},"Flush interval in milliseconds (1000-300000)",[299,4111,4112,4117,4121,4126],{},[320,4113,4114],{},[34,4115,4116],{},"maxBatchSize",[320,4118,4119],{},[34,4120,4063],{},[320,4122,4123],{},[34,4124,4125],{},"50",[320,4127,4128],{},"Events per flush batch (1-1000)",[299,4130,4131,4136,4140,4145],{},[320,4132,4133],{},[34,4134,4135],{},"maxQueueSize",[320,4137,4138],{},[34,4139,4063],{},[320,4141,4142],{},[34,4143,4144],{},"5000",[320,4146,4147],{},"Maximum in-memory queue depth (100-10000)",[299,4149,4150,4155,4159,4163],{},[320,4151,4152],{},[34,4153,4154],{},"maxBreadcrumbs",[320,4156,4157],{},[34,4158,4063],{},[320,4160,4161],{},[34,4162,439],{},[320,4164,4165],{},"Breadcrumb ring buffer size (0-200, 0 disables)",[299,4167,4168,4173,4177,4182],{},[320,4169,4170],{},[34,4171,4172],{},"debug",[320,4174,4175],{},[34,4176,4083],{},[320,4178,4179],{},[34,4180,4181],{},"false",[320,4183,4184],{},"Log SDK actions to console",[19,4186,520],{"id":519},[15,4188,4189],{},"Identify the current user to associate events with an actor:",[27,4191,4193],{"className":3874,"code":4192,"language":3876,"meta":32,"style":32},"beacon.identify('user-123')\n",[34,4194,4195],{"__ignoreMap":32},[37,4196,4197,4199,4201,4203,4205],{"class":39,"line":40},[37,4198,3959],{"class":73},[37,4200,3962],{"class":43},[37,4202,124],{"class":73},[37,4204,3967],{"class":47},[37,4206,835],{"class":73},[15,4208,3659,4209,4211],{},[34,4210,3962],{}," before or after tracking events. Once set, all subsequent calls use this actor. If not called, the SDK generates an anonymous device ID that persists in localStorage.",[19,4213,563],{"id":562},[15,4215,566,4216,571,4218,575],{},[568,4217,570],{},[568,4219,574],{},[75,4221,579],{"id":578},[27,4223,4225],{"className":3874,"code":4224,"language":3876,"meta":32,"style":32},"beacon.track('ui', 'button_clicked', {\n  button_name: 'export',\n  screen: 'dashboard',\n})\n",[34,4226,4227,4247,4257,4267],{"__ignoreMap":32},[37,4228,4229,4231,4234,4236,4239,4241,4244],{"class":39,"line":40},[37,4230,3959],{"class":73},[37,4232,4233],{"class":43},"track",[37,4235,124],{"class":73},[37,4237,4238],{"class":47},"'ui'",[37,4240,551],{"class":73},[37,4242,4243],{"class":47},"'button_clicked'",[37,4245,4246],{"class":73},", {\n",[37,4248,4249,4252,4255],{"class":39,"line":134},[37,4250,4251],{"class":73},"  button_name: ",[37,4253,4254],{"class":47},"'export'",[37,4256,622],{"class":73},[37,4258,4259,4262,4265],{"class":39,"line":140},[37,4260,4261],{"class":73},"  screen: ",[37,4263,4264],{"class":47},"'dashboard'",[37,4266,622],{"class":73},[37,4268,4269],{"class":39,"line":155},[37,4270,3950],{"class":73},[75,4272,704],{"id":703},[80,4274,4275,4277,4279,4282],{},[83,4276,709],{},[83,4278,712],{},[83,4280,4281],{},"Properties: max 20 per event, keys max 64 chars, string values max 256 chars",[83,4283,4284,4285,4288],{},"Categories starting with ",[34,4286,4287],{},"_"," are reserved and will be ignored",[19,4290,4292],{"id":4291},"page-view-tracking","Page View Tracking",[15,4294,4295,4296,571,4299,4302],{},"Page views are tracked automatically by default when the URL changes (via ",[34,4297,4298],{},"pushState",[34,4300,4301],{},"popstate","). You can also track manually:",[27,4304,4306],{"className":3874,"code":4305,"language":3876,"meta":32,"style":32},"beacon.pageView()\n\n\u002F\u002F Or with a custom URL and properties\nbeacon.pageView('\u002Fcustom-path', { section: 'reports' })\n",[34,4307,4308,4318,4322,4327],{"__ignoreMap":32},[37,4309,4310,4312,4315],{"class":39,"line":40},[37,4311,3959],{"class":73},[37,4313,4314],{"class":43},"pageView",[37,4316,4317],{"class":73},"()\n",[37,4319,4320],{"class":39,"line":134},[37,4321,748],{"emptyLinePlaceholder":747},[37,4323,4324],{"class":39,"line":140},[37,4325,4326],{"class":732},"\u002F\u002F Or with a custom URL and properties\n",[37,4328,4329,4331,4333,4335,4338,4341,4344],{"class":39,"line":155},[37,4330,3959],{"class":73},[37,4332,4314],{"class":43},[37,4334,124],{"class":73},[37,4336,4337],{"class":47},"'\u002Fcustom-path'",[37,4339,4340],{"class":73},", { section: ",[37,4342,4343],{"class":47},"'reports'",[37,4345,4346],{"class":73}," })\n",[15,4348,4349,4350,4353],{},"Disable auto-tracking with ",[34,4351,4352],{},"autoPageViews: false"," in the config.",[19,4355,4357],{"id":4356},"error-tracking","Error Tracking",[15,4359,4360,4361,3541],{},"Track JavaScript errors with severity levels. Breadcrumbs from recent ",[34,4362,3540],{},[27,4364,4366],{"className":3874,"code":4365,"language":3876,"meta":32,"style":32},"try {\n  processOrder(order)\n} catch (err) {\n  beacon.trackError(err, 'non_fatal')\n  throw err\n}\n",[34,4367,4368,4376,4384,4394,4410,4418],{"__ignoreMap":32},[37,4369,4370,4373],{"class":39,"line":40},[37,4371,4372],{"class":130},"try",[37,4374,4375],{"class":73}," {\n",[37,4377,4378,4381],{"class":39,"line":134},[37,4379,4380],{"class":43},"  processOrder",[37,4382,4383],{"class":73},"(order)\n",[37,4385,4386,4389,4391],{"class":39,"line":140},[37,4387,4388],{"class":73},"} ",[37,4390,823],{"class":130},[37,4392,4393],{"class":73}," (err) {\n",[37,4395,4396,4399,4402,4405,4408],{"class":39,"line":155},[37,4397,4398],{"class":73},"  beacon.",[37,4400,4401],{"class":43},"trackError",[37,4403,4404],{"class":73},"(err, ",[37,4406,4407],{"class":47},"'non_fatal'",[37,4409,835],{"class":73},[37,4411,4412,4415],{"class":39,"line":168},[37,4413,4414],{"class":130},"  throw",[37,4416,4417],{"class":73}," err\n",[37,4419,4420],{"class":39,"line":181},[37,4421,818],{"class":73},[15,4423,3589,4424,571,4427,4429],{},[34,4425,4426],{},"'fatal'",[34,4428,4407],{}," (default).",[19,4431,719],{"id":718},[15,4433,4434,4435,4437,4438,571,4441,4444],{},"Sessions are managed automatically based on user activity. A new session starts on the first event and rotates after ",[34,4436,4058],{}," of inactivity. The SDK handles ",[34,4439,4440],{},"visibilitychange",[34,4442,4443],{},"beforeunload"," events to end sessions when the user leaves.",[15,4446,4447],{},"Get the current session ID:",[27,4449,4451],{"className":3874,"code":4450,"language":3876,"meta":32,"style":32},"const sessionId = beacon.getSessionId()\n",[34,4452,4453],{"__ignoreMap":32},[37,4454,4455,4457,4460,4462,4465,4468],{"class":39,"line":40},[37,4456,3901],{"class":130},[37,4458,4459],{"class":69}," sessionId",[37,4461,228],{"class":130},[37,4463,4464],{"class":73}," beacon.",[37,4466,4467],{"class":43},"getSessionId",[37,4469,4317],{"class":73},[19,4471,891],{"id":890},[15,4473,894,4474,4476,4477,1830,4479,4482],{},[34,4475,4097],{},") or when the batch size is reached. On page unload, the SDK uses ",[34,4478,1829],{},[34,4480,4481],{},"keepalive: true"," to deliver remaining events.",[15,4484,4485],{},"To flush manually:",[27,4487,4489],{"className":3874,"code":4488,"language":3876,"meta":32,"style":32},"await beacon.flush()\n",[34,4490,4491],{"__ignoreMap":32},[37,4492,4493,4495,4497,4500],{"class":39,"line":40},[37,4494,910],{"class":130},[37,4496,4464],{"class":73},[37,4498,4499],{"class":43},"flush",[37,4501,4317],{"class":73},[19,4503,4505],{"id":4504},"privacy-controls","Privacy Controls",[15,4507,4508],{},"The SDK supports opt-out and opt-in for user consent:",[27,4510,4512],{"className":3874,"code":4511,"language":3876,"meta":32,"style":32},"\u002F\u002F Opt out — stops tracking, clears queue\nbeacon.optOut()\n\n\u002F\u002F Opt back in — resumes tracking\nbeacon.optIn()\n",[34,4513,4514,4519,4528,4532,4537],{"__ignoreMap":32},[37,4515,4516],{"class":39,"line":40},[37,4517,4518],{"class":732},"\u002F\u002F Opt out — stops tracking, clears queue\n",[37,4520,4521,4523,4526],{"class":39,"line":134},[37,4522,3959],{"class":73},[37,4524,4525],{"class":43},"optOut",[37,4527,4317],{"class":73},[37,4529,4530],{"class":39,"line":140},[37,4531,748],{"emptyLinePlaceholder":747},[37,4533,4534],{"class":39,"line":155},[37,4535,4536],{"class":732},"\u002F\u002F Opt back in — resumes tracking\n",[37,4538,4539,4541,4544],{"class":39,"line":168},[37,4540,3959],{"class":73},[37,4542,4543],{"class":43},"optIn",[37,4545,4317],{"class":73},[15,4547,4548],{},"Opt-out state persists in localStorage across sessions.",[19,4550,4552],{"id":4551},"reset","Reset",[15,4554,4555],{},"Clear all state (session, queue, breadcrumbs, actor ID) and generate a new anonymous ID:",[27,4557,4559],{"className":3874,"code":4558,"language":3876,"meta":32,"style":32},"beacon.reset()\n",[34,4560,4561],{"__ignoreMap":32},[37,4562,4563,4565,4567],{"class":39,"line":40},[37,4564,3959],{"class":73},[37,4566,4551],{"class":43},[37,4568,4317],{"class":73},[15,4570,4571],{},"Use this on logout to separate user sessions.",[19,4573,4575],{"id":4574},"event-definitions","Event Definitions",[15,4577,4578],{},"Register known events for import into the Beacon portal's allowlist:",[27,4580,4582],{"className":3874,"code":4581,"language":3876,"meta":32,"style":32},"beacon.events.define('reports', 'report_exported')\nbeacon.events.define('ui', 'button_clicked')\n\nconst manifest = beacon.events.exportManifest()\n",[34,4583,4584,4603,4619,4623],{"__ignoreMap":32},[37,4585,4586,4589,4592,4594,4596,4598,4601],{"class":39,"line":40},[37,4587,4588],{"class":73},"beacon.events.",[37,4590,4591],{"class":43},"define",[37,4593,124],{"class":73},[37,4595,4343],{"class":47},[37,4597,551],{"class":73},[37,4599,4600],{"class":47},"'report_exported'",[37,4602,835],{"class":73},[37,4604,4605,4607,4609,4611,4613,4615,4617],{"class":39,"line":134},[37,4606,4588],{"class":73},[37,4608,4591],{"class":43},[37,4610,124],{"class":73},[37,4612,4238],{"class":47},[37,4614,551],{"class":73},[37,4616,4243],{"class":47},[37,4618,835],{"class":73},[37,4620,4621],{"class":39,"line":140},[37,4622,748],{"emptyLinePlaceholder":747},[37,4624,4625,4627,4630,4632,4635,4638],{"class":39,"line":155},[37,4626,3901],{"class":130},[37,4628,4629],{"class":69}," manifest",[37,4631,228],{"class":130},[37,4633,4634],{"class":73}," beacon.events.",[37,4636,4637],{"class":43},"exportManifest",[37,4639,4317],{"class":73},[19,4641,4643],{"id":4642},"destroy","Destroy",[15,4645,4646],{},"Tear down the SDK instance, flush pending events, and remove event listeners:",[27,4648,4650],{"className":3874,"code":4649,"language":3876,"meta":32,"style":32},"beacon.destroy()\n",[34,4651,4652],{"__ignoreMap":32},[37,4653,4654,4656,4658],{"class":39,"line":40},[37,4655,3959],{"class":73},[37,4657,4642],{"class":43},[37,4659,4317],{"class":73},[19,4661,1766],{"id":1765},[15,4663,4664],{},"The SDK automatically collects browser environment data and sends it as a header with each request:",[80,4666,4667,4669,4671,4673,4676],{},[83,4668,1801],{},[83,4670,1804],{},[83,4672,1807],{},[83,4674,4675],{},"Device type (desktop\u002Fmobile\u002Ftablet)",[83,4677,1813],{},[15,4679,4680],{},"No PII is collected.",[19,4682,4684],{"id":4683},"singleton-pattern","Singleton Pattern",[15,4686,4687,4690],{},[34,4688,4689],{},"Beacon.init()"," returns a singleton. Calling it again returns the existing instance. If the SDK is loaded in a non-browser environment (SSR), it returns a safe no-op instance.",[19,4692,1335],{"id":1334},[80,4694,4695,4699,4703],{},[83,4696,4697,1345],{},[1341,4698,1344],{"href":1343},[83,4700,4701,1352],{},[1341,4702,1351],{"href":1350},[83,4704,4705,1359],{},[1341,4706,1358],{"href":1357},[1361,4708,4709],{},"html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}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 pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}",{"title":32,"searchDepth":134,"depth":134,"links":4711},[4712,4715,4718,4719,4723,4724,4725,4726,4727,4728,4729,4730,4731,4732,4733],{"id":21,"depth":134,"text":22,"children":4713},[4714],{"id":77,"depth":140,"text":78},{"id":94,"depth":134,"text":95,"children":4716},[4717],{"id":290,"depth":140,"text":291},{"id":519,"depth":134,"text":520},{"id":562,"depth":134,"text":563,"children":4720},[4721,4722],{"id":578,"depth":140,"text":579},{"id":703,"depth":140,"text":704},{"id":4291,"depth":134,"text":4292},{"id":4356,"depth":134,"text":4357},{"id":718,"depth":134,"text":719},{"id":890,"depth":134,"text":891},{"id":4504,"depth":134,"text":4505},{"id":4551,"depth":134,"text":4552},{"id":4574,"depth":134,"text":4575},{"id":4642,"depth":134,"text":4643},{"id":1765,"depth":134,"text":1766},{"id":4683,"depth":134,"text":4684},{"id":1334,"depth":134,"text":1335},"Integrate Beacon product analytics into browser-based web applications.",{},{"title":3772,"description":4734},"beacon\u002Fdocs\u002Fsdk\u002Fjavascript","SpRUdifHjtIaHwrSbsvwQtv9x0tFfeYjW4O5koDCQPk",{"id":4740,"title":1351,"body":4741,"description":5250,"extension":1391,"meta":5251,"navigation":747,"order":1263,"path":1350,"published":747,"section":5252,"seo":5253,"stem":5254,"__hash__":5255},"beaconDocs\u002Fbeacon\u002Fdocs\u002Fapi-reference.md",{"type":7,"value":4742,"toc":5236},[4743,4746,4749,4753,4756,4764,4770,4774,4781,4875,4879,4887,4891,4964,4968,4971,4976,5006,5011,5037,5071,5075,5078,5094,5098,5101,5113,5117,5120,5150,5170,5179,5183,5186,5192,5202,5206,5213,5216,5219,5233],[10,4744,1351],{"id":4745},"api-reference",[15,4747,4748],{},"Beacon provides a REST API for direct integration when an SDK is not suitable for your environment. The API is used internally by all Beacon SDKs.",[19,4750,4752],{"id":4751},"interactive-documentation","Interactive Documentation",[15,4754,4755],{},"Full interactive API documentation is available at:",[15,4757,4758],{},[568,4759,4760],{},[1341,4761,4763],{"href":4762},"#","Beacon API Reference (Scalar)",[15,4765,4766],{},[4767,4768,4769],"em",{},"The API documentation URL will be available when Beacon launches. The interactive docs let you explore endpoints, view request\u002Fresponse schemas, and test calls directly from your browser.",[19,4771,4773],{"id":4772},"authentication","Authentication",[15,4775,4776,4777,4780],{},"All ingestion API requests require an API key passed as a Bearer token in the ",[34,4778,4779],{},"Authorization"," header:",[27,4782,4784],{"className":29,"code":4783,"language":31,"meta":32,"style":32},"curl -X POST https:\u002F\u002Fapi.beacon.softagility.com\u002Fv1\u002Fevents \\\n  -H \"Authorization: Bearer your-api-key\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '[{\n    \"event_id\": \"01912345-6789-7abc-def0-123456789abc\",\n    \"category\": \"reports\",\n    \"name\": \"report_exported\",\n    \"timestamp\": \"2026-03-20T14:30:00Z\",\n    \"actor_id\": \"user-123\",\n    \"source_app\": \"MyApp\",\n    \"source_version\": \"1.2.0\",\n    \"properties\": { \"format\": \"pdf\", \"row_count\": \"1500\" }\n  }]'\n",[34,4785,4786,4803,4813,4822,4830,4835,4840,4845,4850,4855,4860,4865,4870],{"__ignoreMap":32},[37,4787,4788,4791,4794,4797,4800],{"class":39,"line":40},[37,4789,4790],{"class":43},"curl",[37,4792,4793],{"class":69}," -X",[37,4795,4796],{"class":47}," POST",[37,4798,4799],{"class":47}," https:\u002F\u002Fapi.beacon.softagility.com\u002Fv1\u002Fevents",[37,4801,4802],{"class":69}," \\\n",[37,4804,4805,4808,4811],{"class":39,"line":134},[37,4806,4807],{"class":69},"  -H",[37,4809,4810],{"class":47}," \"Authorization: Bearer your-api-key\"",[37,4812,4802],{"class":69},[37,4814,4815,4817,4820],{"class":39,"line":140},[37,4816,4807],{"class":69},[37,4818,4819],{"class":47}," \"Content-Type: application\u002Fjson\"",[37,4821,4802],{"class":69},[37,4823,4824,4827],{"class":39,"line":155},[37,4825,4826],{"class":69},"  -d",[37,4828,4829],{"class":47}," '[{\n",[37,4831,4832],{"class":39,"line":168},[37,4833,4834],{"class":47},"    \"event_id\": \"01912345-6789-7abc-def0-123456789abc\",\n",[37,4836,4837],{"class":39,"line":181},[37,4838,4839],{"class":47},"    \"category\": \"reports\",\n",[37,4841,4842],{"class":39,"line":194},[37,4843,4844],{"class":47},"    \"name\": \"report_exported\",\n",[37,4846,4847],{"class":39,"line":777},[37,4848,4849],{"class":47},"    \"timestamp\": \"2026-03-20T14:30:00Z\",\n",[37,4851,4852],{"class":39,"line":859},[37,4853,4854],{"class":47},"    \"actor_id\": \"user-123\",\n",[37,4856,4857],{"class":39,"line":1162},[37,4858,4859],{"class":47},"    \"source_app\": \"MyApp\",\n",[37,4861,4862],{"class":39,"line":1168},[37,4863,4864],{"class":47},"    \"source_version\": \"1.2.0\",\n",[37,4866,4867],{"class":39,"line":1180},[37,4868,4869],{"class":47},"    \"properties\": { \"format\": \"pdf\", \"row_count\": \"1500\" }\n",[37,4871,4872],{"class":39,"line":1192},[37,4873,4874],{"class":47},"  }]'\n",[19,4876,4878],{"id":4877},"base-url","Base URL",[27,4880,4885],{"className":4881,"code":4883,"language":4884},[4882],"language-text","https:\u002F\u002Fapi.beacon.softagility.com\u002Fv1\n","text",[34,4886,4883],{"__ignoreMap":32},[19,4888,4890],{"id":4889},"ingestion-endpoints","Ingestion Endpoints",[293,4892,4893,4905],{},[296,4894,4895],{},[299,4896,4897,4900,4903],{},[302,4898,4899],{},"Method",[302,4901,4902],{},"Endpoint",[302,4904,313],{},[315,4906,4907,4922,4936,4950],{},[299,4908,4909,4914,4919],{},[320,4910,4911],{},[34,4912,4913],{},"POST",[320,4915,4916],{},[34,4917,4918],{},"\u002Fv1\u002Fevents",[320,4920,4921],{},"Track one or more events (batch, up to 1000)",[299,4923,4924,4928,4933],{},[320,4925,4926],{},[34,4927,4913],{},[320,4929,4930],{},[34,4931,4932],{},"\u002Fv1\u002Fevents\u002Fsessions",[320,4934,4935],{},"Start a new session",[299,4937,4938,4942,4947],{},[320,4939,4940],{},[34,4941,4913],{},[320,4943,4944],{},[34,4945,4946],{},"\u002Fv1\u002Fevents\u002Fsessions\u002Fend",[320,4948,4949],{},"End an active session",[299,4951,4952,4956,4961],{},[320,4953,4954],{},[34,4955,4913],{},[320,4957,4958],{},[34,4959,4960],{},"\u002Fv1\u002Fevents\u002Fexceptions",[320,4962,4963],{},"Report an exception with stack trace",[75,4965,4967],{"id":4966},"post-v1events","POST \u002Fv1\u002Fevents",[15,4969,4970],{},"Send a JSON array of event objects. Max payload 1 MB, max 1000 events per batch.",[15,4972,4973],{},[568,4974,4975],{},"Required fields per event:",[80,4977,4978,4984,4989,4994,5000],{},[83,4979,4980,4983],{},[34,4981,4982],{},"event_id"," — UUID (v7 recommended)",[83,4985,4986,4988],{},[34,4987,570],{}," — String, max 128 chars",[83,4990,4991,4993],{},[34,4992,574],{}," — String, max 256 chars",[83,4995,4996,4999],{},[34,4997,4998],{},"timestamp"," — ISO 8601 datetime",[83,5001,5002,5005],{},[34,5003,5004],{},"actor_id"," — String, max 512 chars",[15,5007,5008],{},[568,5009,5010],{},"Optional fields:",[80,5012,5013,5019,5025,5031],{},[83,5014,5015,5018],{},[34,5016,5017],{},"source_app"," — Application name",[83,5020,5021,5024],{},[34,5022,5023],{},"source_version"," — Application version",[83,5026,5027,5030],{},[34,5028,5029],{},"properties"," — Object with custom properties",[83,5032,5033,5036],{},[34,5034,5035],{},"session_id"," — UUID linking event to a session",[15,5038,5039,5042,5043,5046,5047,5050,5051,5054,5055,5058,5059,5062,5063,5066,5067,5070],{},[568,5040,5041],{},"Response:"," ",[34,5044,5045],{},"200"," (all accepted), ",[34,5048,5049],{},"207"," (partial success), ",[34,5052,5053],{},"400"," (validation error), ",[34,5056,5057],{},"401"," (invalid API key), ",[34,5060,5061],{},"402"," (plan event limit reached), ",[34,5064,5065],{},"413"," (payload too large), ",[34,5068,5069],{},"429"," (rate limited)",[75,5072,5074],{"id":5073},"post-v1eventssessions","POST \u002Fv1\u002Fevents\u002Fsessions",[15,5076,5077],{},"Start a new session.",[15,5079,5080,5042,5083,551,5085,551,5087,551,5089,551,5091],{},[568,5081,5082],{},"Required fields:",[34,5084,5035],{},[34,5086,5004],{},[34,5088,5017],{},[34,5090,5023],{},[34,5092,5093],{},"started_at",[75,5095,5097],{"id":5096},"post-v1eventssessionsend","POST \u002Fv1\u002Fevents\u002Fsessions\u002Fend",[15,5099,5100],{},"End an active session.",[15,5102,5103,5042,5105,551,5107,551,5110],{},[568,5104,5082],{},[34,5106,5035],{},[34,5108,5109],{},"ended_at",[34,5111,5112],{},"end_reason",[75,5114,5116],{"id":5115},"post-v1eventsexceptions","POST \u002Fv1\u002Fevents\u002Fexceptions",[15,5118,5119],{},"Report an exception.",[15,5121,5122,5042,5124,551,5127,551,5130,826,5133,5136,5137,5140,5141,551,5144,551,5146,551,5148],{},[568,5123,5082],{},[34,5125,5126],{},"exception_id",[34,5128,5129],{},"exception_type",[34,5131,5132],{},"severity",[34,5134,5135],{},"fatal"," or ",[34,5138,5139],{},"non_fatal","), ",[34,5142,5143],{},"occurred_at",[34,5145,5004],{},[34,5147,5017],{},[34,5149,5023],{},[15,5151,5152,5042,5154,5157,5158,5161,5162,5164,5165,551,5167],{},[568,5153,5010],{},[34,5155,5156],{},"message"," (max 1000 chars), ",[34,5159,5160],{},"stack_trace"," (max 32,768 chars), ",[34,5163,874],{}," (JSON array), ",[34,5166,5035],{},[34,5168,5169],{},"environment_context",[15,5171,5172,5042,5174,1830,5176],{},[568,5173,5041],{},[34,5175,5045],{},[34,5177,5178],{},"{ \"exception_id\": \"...\", \"status\": \"accepted\", \"fingerprint\": \"...\" }",[19,5180,5182],{"id":5181},"rate-limits","Rate Limits",[15,5184,5185],{},"Rate limits are per-minute and configurable per plan. Rate limit headers are included in every response:",[27,5187,5190],{"className":5188,"code":5189,"language":4884},[4882],"X-RateLimit-Limit: 600\nX-RateLimit-Remaining: 598\nX-RateLimit-Reset: 1711929600\n",[34,5191,5189],{"__ignoreMap":32},[15,5193,5194,5195,5197,5198,5201],{},"When rate limited, the API returns ",[34,5196,5069],{}," with a ",[34,5199,5200],{},"Retry-After"," header.",[19,5203,5205],{"id":5204},"hard-caps","Hard Caps",[15,5207,5208,5209,5212],{},"When a tenant reaches their plan's monthly event limit, the API returns ",[34,5210,5211],{},"402 Payment Required",". Events are rejected until the limit resets or the plan is upgraded. SDKs queue events locally during hard cap periods and retry automatically.",[19,5214,1394],{"id":5215},"sdks",[15,5217,5218],{},"For most integrations, we recommend using an SDK instead of the API directly. SDKs handle batching, offline persistence, session management, breadcrumbs, and retry logic automatically.",[80,5220,5221,5225,5229],{},[83,5222,5223],{},[1341,5224,5],{"href":1393},[83,5226,5227],{},[1341,5228,1661],{"href":1487},[83,5230,5231],{},[1341,5232,1667],{"href":1666},[1361,5234,5235],{},"html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}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);}",{"title":32,"searchDepth":134,"depth":134,"links":5237},[5238,5239,5240,5241,5247,5248,5249],{"id":4751,"depth":134,"text":4752},{"id":4772,"depth":134,"text":4773},{"id":4877,"depth":134,"text":4878},{"id":4889,"depth":134,"text":4890,"children":5242},[5243,5244,5245,5246],{"id":4966,"depth":140,"text":4967},{"id":5073,"depth":140,"text":5074},{"id":5096,"depth":140,"text":5097},{"id":5115,"depth":140,"text":5116},{"id":5181,"depth":134,"text":5182},{"id":5204,"depth":134,"text":5205},{"id":5215,"depth":134,"text":1394},"REST API documentation for direct Beacon integration.",{},"Reference",{"title":1351,"description":5250},"beacon\u002Fdocs\u002Fapi-reference","NYoN1PzxAR8BnJQTeO6nJIsraYwF8FaKw4jz9dDUkHs",1775694617512]