1<!DOCTYPE html> 2<html lang="en"> 3 <head> 4 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 5 <!-- force IE browsers in compatibility mode to use their most aggressive rendering engine --> 6 7 <meta charset="utf-8"> 8 <title>beehiiv Status - Incident History</title> 9 <meta name="description" content="beehiiv's Incident and Scheduled Maintenance History"> 10 11 <!-- Mobile viewport optimization --> 12 <meta name="HandheldFriendly" content="True"> 13 <meta name="MobileOptimized" content="320"> 14 <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"> 15 16 <!-- Time this page was rendered - http://purl.org/dc/terms/issued --> 17 <meta name="issued" content="1791149229"> 18 19 <!-- Mobile IE allows us to activate ClearType technology for smoothing fonts for easy reading --> 20 <meta http-equiv="cleartype" content="on"> 21 22 <!-- Atlassian Sans & Mono Fonts --> 23<link 24 rel="preconnect" 25 href="https://ds-cdn.prod-east.frontend.public.atl-paas.net" /> 26<link 27 rel="preload" 28 href="https://ds-cdn.prod-east.frontend.public.atl-paas.net/assets/fonts/atlassian-sans/v3/AtlassianSans-latin.woff2" 29 as="font" type="font/woff2" crossorigin /> 30<link 31 rel="preload" 32 href="https://ds-cdn.prod-east.frontend.public.atl-paas.net/assets/font-rules/v5/atlassian-fonts.css" 33 as="style" crossorigin /> 34 35 <style> 36 /* Dynamic Font Stack based on Feature Flag */ 37 /* Using Atlassian Sans & Mono */ 38 :root { 39 --font-stack-a: "Atlassian Sans", "Helvetica Neue", Helvetica, Arial, Sans-Serif; 40 --font-stack-b: "Atlassian Mono", "SFMono-Medium", "SF Mono", "Segoe UI Mono", "Roboto Mono", "Ubuntu Mono", Menlo, Consolas, Courier, monospace; 41 } 42</style> 43 44 45 <link rel="icon" type="image/x-icon" href="//dka575ofm4ao0.cloudfront.net/pages-favicon_logos/original/840286/beehiiv_Logo-02-882dd988-6bb5-4046-81e5-ea45cb176f34.png" /> 46 47 <link rel="shortcut icon" href='//dka575ofm4ao0.cloudfront.net/pages-favicon_logos/original/840286/beehiiv_Logo-02-882dd988-6bb5-4046-81e5-ea45cb176f34.png'> 48 49 <link rel="alternate" type="application/atom+xml" href="https://www.beehiivstatus.com/history.atom" title="beehiiv Status History - Atom Feed"> 50 <link rel="alternate" type="application/rss+xml" href="https://www.beehiivstatus.com/history.rss" title="beehiiv Status History - RSS Feed"> 51 52 <!-- Canonical Link to ensure that only the custom domain is indexed when present --> 53 <link rel="canonical" href="https://www.beehiivstatus.com/history"> 54 55 <meta name="_globalsign-domain-verification" content="y_VzfckMy4iePo5oDJNivyYIjh8LffYa4jzUndm_bZ"/> 56 57 58 <link rel="alternate" type="application/atom+xml" title="ATOM" href="https://www.beehiivstatus.com/history.atom" /> 59 60 <!-- Le styles --> 61 <link rel="stylesheet" href="https://dka575ofm4ao0.cloudfront.net/packs/0.a7d86fc6a129fa9540bc.css" media="screen" /><link rel="stylesheet" href="https://dka575ofm4ao0.cloudfront.net/packs/191.a7d86fc6a129fa9540bc.css" media="screen" /><link rel="stylesheet" href="https://dka575ofm4ao0.cloudfront.net/packs/155.a7d86fc6a129fa9540bc.css" media="screen" /> 62 <link rel="stylesheet" href="https://dka575ofm4ao0.cloudfront.net/assets/status/status_manifest-e7416fcfeedbe261454d619d119599335f4c7b18c9e245c13722dbb0998dc023.css" media="all" /> 63 64
64<script src="https://dka575ofm4ao0.cloudfront.net/assets/jquery-3.5.1.min-729e416557a365062a8a20f0562f18aa171da57298005d392312670c706c68de.js"></script>
64 65 66
66<script> 67 window.pageColorData = {"blue":"#207ab6","border":"#E0E0E0","body_background":"#ffffff","font":"#333333","graph":"#3498db","green":"#1e8542","light_font":"#757575","link":"#207ab6","orange":"#b35e14","red":"#de2f1b","yellow":"#f1c40f","no_data":"#b3bac5"}; 68 </script>
68 69 <style> 70 /* BODY BACKGROUND */ /* BODY BACKGROUND */ /* BODY BACKGROUND */ /* BODY BACKGROUND */ /* BODY BACKGROUND */ 71 body, 72 .layout-content.status.status-api .section .example-container .example-opener .color-secondary, 73 .grouped-items-selector, 74 .layout-content.status.status-full-history .history-nav a.current, 75 div[id^="subscribe-modal"] .modal-footer, 76 div[id^="subscribe-modal"], 77 div[id^="updates-dropdown"] .updates-dropdown-section, 78 #uptime-tooltip .tooltip-box { 79 background-color:#ffffff; 80 } 81 82 #uptime-tooltip .pointer-container .pointer-smaller { 83 border-bottom-color:#ffffff; 84 } 85 86 87 88 89 /* PRIMARY FONT COLOR */ /* PRIMARY FONT COLOR */ /* PRIMARY FONT COLOR */ /* PRIMARY FONT COLOR */ 90 body.status, 91 .color-primary, 92 .color-primary:hover, 93 .layout-content.status-index .status-day .update-title.impact-none a, 94 .layout-content.status-index .status-day .update-title.impact-none a:hover, 95 .layout-content.status-index .timeframes-container .timeframe.active, 96 .layout-content.status-full-history .month .incident-container .impact-none, 97 .layout-content.status.status-index .incidents-list .incident-title.impact-none a, 98 .incident-history .impact-none, 99 .layout-content.status .grouped-items-selector.inline .grouped-item.active, 100 .layout-content.status.status-full-history .history-nav a.current, 101 .layout-content.status.status-full-history .history-nav a:not(.current):hover, 102 div[id^="subscribe-modal"] .modal-header .close, 103 .grouped-item-label, 104 #uptime-tooltip .tooltip-box .tooltip-content .related-events .related-event a.related-event-link { 105 color:#333333; 106 } 107 108 .layout-content.status.status-index .components-statuses .component-container .name { 109 color:#333333; 110 color:rgba(51,51,51,.8); 111 } 112 113 114 115 116 /* SECONDARY FONT COLOR */ /* SECONDARY FONT COLOR */ /* SECONDARY FONT COLOR */ /* SECONDARY FONT COLOR */ 117 small, 118 .layout-content.status .table-row .date, 119 .color-secondary, 120 .layout-content.status .grouped-items-selector.inline .grouped-item, 121 .layout-content.status.status-full-history .history-footer .pagination a.disabled, 122 .layout-content.status.status-full-history .history-nav a, 123 #uptime-tooltip .tooltip-box .tooltip-content .related-events #related-event-header { 124 color:#757575; 125 } 126 127 128 129 130 /* BORDER COLOR */ /* BORDER COLOR */ /* BORDER COLOR */ /* BORDER COLOR */ /* BORDER COLOR */ /* BORDER COLOR */ 131 body.status .layout-content.status .border-color, 132 hr, 133 .tooltip-base, 134 .markdown-display table, 135 div[id^="subscribe-modal"], 136 #uptime-tooltip .tooltip-box { 137 border-color:#E0E0E0; 138 } 139 140 div[id^="subscribe-modal"] .modal-footer, 141 .markdown-display table td { 142 border-top-color:#E0E0E0; 143 } 144 145 .markdown-display table td + td, .markdown-display table th + th { 146 border-left-color:#E0E0E0; 147 } 148 149 div[id^="subscribe-modal"] .modal-header, 150 #uptime-tooltip .pointer-container .pointer-larger { 151 border-bottom-color:#E0E0E0; 152 } 153 154 #uptime-tooltip .tooltip-box .outage-field { 155 /* 156 Generate the background-color for the outage-field from the css_body_background_color and css_border_color. 157 158 For the default background (#ffffff) and default css_border_color (#e0e0e0), use the luminosity of the default background with a magic number to arrive at 159 the original outage-field background color (#f4f5f7). I used the formula Target Color = Color * alpha + Background * (1 - alpha) to find the magic number of ~0.08. 160 161 For darker css_body_background_color, luminosity values are lower so alpha trends toward becoming transparent (thus outage-field background becomes same as css_body_background_color). 162 */ 163 background-color: rgba(224,224,224,0.31); 164 165 /* 166 outage-field border-color alpha is inverse to the luminosity of css_body_background_color. 167 That is to say, with a default white background this border is transparent, but on a black background, it's opaque css_border_color. 168 */ 169 border-color: rgba(224,224,224,0.0); 170 } 171 172 173 174 175 /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ 176 .layout-content.status.status-index .status-day .update-title.impact-critical a, 177 .layout-content.status.status-index .status-day .update-title.impact-critical a:hover, 178 .layout-content.status.status-index .page-status.status-critical, 179 .layout-content.status.status-index .unresolved-incident.impact-critical .incident-title, 180 .flat-button.background-red { 181 background-color:#de2f1b; 182 } 183 184 .layout-content.status-index .components-statuses .component-container.status-red:after, 185 .layout-content.status-full-history .month .incident-container .impact-critical, 186 .layout-content.status-incident .incident-name.impact-critical, 187 .layout-content.status.status-index .incidents-list .incident-title.impact-critical a, 188 .status-red .icon-indicator, 189 .incident-history .impact-critical, 190 .components-container .component-inner-container.status-red .component-status, 191 .components-container .component-inner-container.status-red .icon-indicator { 192 color:#de2f1b; 193 } 194 195 .layout-content.status.status-index .unresolved-incident.impact-critical .updates { 196 border-color:#de2f1b; 197 } 198 199 200 201 202 /* CSS ORANGES */ /* CSS ORANGES */ /* CSS ORANGES */ /* CSS ORANGES */ /* CSS ORANGES */ /* CSS ORANGES */ 203 .layout-content.status.status-index .status-day .update-title.impact-major a, 204 .layout-content.status.status-index .status-day .update-title.impact-major a:hover, 205 .layout-content.status.status-index .page-status.status-major, 206 .layout-content.status.status-index .unresolved-incident.impact-major .incident-title { 207 background-color:#b35e14; 208 } 209 210 .layout-content.status-index .components-statuses .component-container.status-orange:after, 211 .layout-content.status-full-history .month .incident-container .impact-major, 212 .layout-content.status-incident .incident-name.impact-major, 213 .layout-content.status.status-index .incidents-list .incident-title.impact-major a, 214 .status-orange .icon-indicator, 215 .incident-history .impact-major, 216 .components-container .component-inner-container.status-orange .component-status, 217 .components-container .component-inner-container.status-orange .icon-indicator { 218 color:#b35e14; 219 } 220 221 .layout-content.status.status-index .unresolved-incident.impact-major .updates { 222 border-color:#b35e14; 223 } 224 225 226 227 228 /* CSS YELLOWS */ /* CSS YELLOWS */ /* CSS YELLOWS */ /* CSS YELLOWS */ /* CSS YELLOWS */ /* CSS YELLOWS */ 229 .layout-content.status.status-index .status-day .update-title.impact-minor a, 230 .layout-content.status.status-index .status-day .update-title.impact-minor a:hover, 231 .layout-content.status.status-index .page-status.status-minor, 232 .layout-content.status.status-index .unresolved-incident.impact-minor .incident-title, 233 .layout-content.status.status-index .scheduled-incidents-container .tab { 234 background-color:#f1c40f; 235 } 236 237 .layout-content.status-index .components-statuses .component-container.status-yellow:after, 238 .layout-content.status-full-history .month .incident-container .impact-minor, 239 .layout-content.status-incident .incident-name.impact-minor, 240 .layout-content.status.status-index .incidents-list .incident-title.impact-minor a, 241 .status-yellow .icon-indicator, 242 .incident-history .impact-minor, 243 .components-container .component-inner-container.status-yellow .component-status, 244 .components-container .component-inner-container.status-yellow .icon-indicator, 245 .layout-content.status.manage-subscriptions .confirmation-infobox .fa { 246 color:#f1c40f; 247 } 248 249 .layout-content.status.status-index .unresolved-incident.impact-minor .updates, 250 .layout-content.status.status-index .scheduled-incidents-container { 251 border-color:#f1c40f; 252 } 253 254 255 256 257 /* CSS BLUES */ /* CSS BLUES */ /* CSS BLUES */ /* CSS BLUES */ /* CSS BLUES */ /* CSS BLUES */ 258 .layout-content.status.status-index .status-day .update-title.impact-maintenance a, 259 .layout-content.status.status-index .status-day .update-title.impact-maintenance a:hover, 260 .layout-content.status.status-index .page-status.status-maintenance, 261 .layout-content.status.status-index .unresolved-incident.impact-maintenance .incident-title, 262 .layout-content.status.status-index .scheduled-incidents-container .tab { 263 background-color:#207ab6; 264 } 265 266 .layout-content.status-index .components-statuses .component-container.status-blue:after, 267 .layout-content.status-full-history .month .incident-container .impact-maintenance, 268 .layout-content.status-incident .incident-name.impact-maintenance, 269 .layout-content.status.status-index .incidents-list .incident-title.impact-maintenance a, 270 .status-blue .icon-indicator, 271 .incident-history .impact-maintenance, 272 .components-container .component-inner-container.status-blue .component-status, 273 .components-container .component-inner-container.status-blue .icon-indicator { 274 color:#207ab6; 275 } 276 277 .layout-content.status.status-index .unresolved-incident.impact-maintenance .updates, 278 .layout-content.status.status-index .scheduled-incidents-container { 279 border-color:#207ab6; 280 } 281 282 283 284 285 /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ 286 .layout-content.status.status-index .page-status.status-none { 287 background-color:#1e8542; 288 } 289 .layout-content.status-index .components-statuses .component-container.status-green:after, 290 .status-green .icon-indicator, 291 .components-container .component-inner-container.status-green .component-status, 292 .components-container .component-inner-container.status-green .icon-indicator { 293 color:#1e8542; 294 } 295 296 297 298 299 /* CSS LINK COLOR */ /* CSS LINK COLOR */ /* CSS LINK COLOR */ /* CSS LINK COLOR */ /* CSS LINK COLOR */ /* CSS LINK COLOR */ 300 a, 301 a:hover, 302 .layout-content.status-index .page-footer span a:hover, 303 .layout-content.status-index .timeframes-container .timeframe:not(.active):hover, 304 .layout-content.status-incident .subheader a:hover { 305 color:#207ab6; 306 } 307 308 .flat-button, 309 .masthead .updates-dropdown-container .show-updates-dropdown, 310 .layout-content.status-full-history .show-filter.open { 311 background-color:#207ab6; 312 } 313 314 315 316 317 /* CUSTOM COLOR OVERRIDES FOR UPTIME SHOWCASE */ 318 .components-section .components-uptime-link { 319 color: #757575; 320 } 321 322 .layout-content.status .shared-partial.uptime-90-days-wrapper .legend .legend-item { 323 color: #757575; 324 opacity: 1; 325 } 326 .layout-content.status .shared-partial.uptime-90-days-wrapper .legend .legend-item.light { 327 color: #757575; 328 opacity: 1; 329 } 330 .layout-content.status .shared-partial.uptime-90-days-wrapper .legend .spacer { 331 background: #757575; 332 opacity: 1; 333 } 334</style> 335 336 337 <!-- custom css --> 338 339 <!-- polyfills --> 340
340<script crossorigin="anonymous" src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.js"></script>
340 341 342 <!-- Le HTML5 shim --> 343 <!--[if lt IE 9]> 344
344<script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
344 345 <![endif]--> 346 347 <!-- injection for static --> 348 349 350 351 </head> 352 353 354 <body class="status history status-none sp-a11y-status-focus-visibility a11y-focus-indicators"> 355 356 357<div class="layout-content status status-full-history starter"> 358 359 <div class="masthead-container basic"> 360 361 <div class="masthead has-logo"> 362 <div class="logo-container"> 363 <a href="https://www.beehiiv.com"><img alt="beehiiv logo" src="//dka575ofm4ao0.cloudfront.net/pages-transactional_logos/retina/840286/beehiiv_Logo-02-7bd77b15-c945-4734-ae80-864f5cbae746.png"></a> 364 </div> 365 366 367 <div class="updates-dropdown-container" data-js-hook="updates-dropdown-container"> 368 <a href="#" data-js-hook="show-updates-dropdown" id="show-updates-dropdown" class="show-updates-dropdown" aria-label="Subscribe to updates" aria-expanded="false" aria-haspopup="dialog" role="button"> 369 <span class="subscribe-text-full">Subscribe to Updates</span><span class="subscribe-text-short">Subscribe</span> 370 </a> 371 372<!-- Accessibility guidelines for tabs: https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-1/tabs.html --> 373 <div class="updates-dropdown" data-js-hook="updates-dropdown" id="updates-dropdown" style="display:none" role="dialog" aria-modal="false" aria-label="Subscribe to updates"> 374 <div class="updates-dropdown-nav nav-items-8" role="tablist" aria-label="Subscribe to updates"> 375 <a href="#updates-dropdown-email" aria-controls="updates-dropdown-email" aria-label="Subscribe via email" role="tab" aria-selected="true" id="updates-dropdown-email-btn"> 376 <span class="icon-container email"> 377 </a> 378 <a href="#updates-dropdown-sms" aria-controls="updates-dropdown-sms" aria-label="Subscribe via SMS" role="tab" id="updates-dropdown-sms-btn"> 379 <span class="icon-container sms"> 380 </a> 381 <a href="#updates-dropdown-slack" aria-controls="updates-dropdown-slack" aria-label="Subscribe via slack" role="tab" id="updates-dropdown-slack-btn"> 382 <span class="icon-container slack"> 383 </a> 384 <a href="#updates-dropdown-teams" aria-controls="updates-dropdown-teams" aria-label="Subscribe via teams" role="tab" id="updates-dropdown-teams-btn"> 385 <span class="icon-container teams"> 386 </a> 387 <a href="#updates-dropdown-twitter" aria-controls="updates-dropdown-twitter" aria-label="Subscribe via twitter" role="tab" id="updates-dropdown-twitter-btn"> 388 <span class="icon-container twitter"> 389 </a> 390 <a href="#updates-dropdown-support" aria-controls="updates-dropdown-support" aria-label="Contact support" role="tab" id="updates-dropdown-support-btn"> 391 <span class="icon-container support"> 392 </a> 393 <a href="#updates-dropdown-atom" aria-controls="updates-dropdown-atom" aria-label="Subscribe via RSS" role="tab" id="updates-dropdown-atom-btn"> 394 <span class="icon-container rss"> 395 </a> 396 <button data-js-hook="updates-dropdown-close" aria-label="Close subscribe form" id="updates-dropdown-close-btn"> 397 x 398 </button> 399 </div> 400 <div class="updates-dropdown-sections-container"> 401 <div class="updates-dropdown-section email" id="updates-dropdown-email" style="display:none" role="tabpanel" aria-labelledby="updates-dropdown-email-btn"> 402 <div class="directions"> 403 Get email notifications whenever beehiiv <strong>creates</strong>, <strong>updates</strong> or <strong>resolves</strong> an incident. 404 </div> 405 <form id="subscribe-form-email" action="/subscriptions/new-email" accept-charset="UTF-8" data-remote="true" method="post"><input type="hidden" name="authenticity_token" value="R-RP55q8bISuBykmEvQH3u6JJ3xWauDUM30fmA8vfW8eoytmYXVXC0hXInK_dfB2nsSZApXJwF_yzoM9597hCQ" autocomplete="off" /> 406 <input type="hidden" name="email_otp_verify_flow" id="email_otp_verify_flow" value="false" autocomplete="off" /> 407 <!-- make sure not to put cookie values in here since this gets cached --> 408 <label for="email">Email address:</label> 409 <input name="email" id="email" type="text" class="full-width" data-js-hook="email-notification-field" autocomplete="email"> 410 <input name="email_otp_auth_token" type='hidden' id="email-
410otp-token-field"> 411 <div class="opt-container-section" id="email-otp-container", style="display:none" > 412 <label for="email-otp">Enter OTP:</label> 413 <input name="otp" id="email-otp" type="text" value="" class="prepend full-width"> 414 <p id="email-otp-timer">Resend OTP in: <span id="email-otp-countdown"></span> seconds </p> 415 <p id="resend-email-otp"> 416 Didn't receive the OTP? 417 <a href="#" id="resend-email-otp-btn" >Resend OTP </a> 418 </p> 419 </div> 420 <input type="hidden" name="captcha_error" id="captcha_error" value="false" autocomplete="off" /> 421 <input type="submit" value="Subscribe via Email" class="flat-button full-width g-recaptcha" id="subscribe-btn-email" data-disabled-text="Subscribing..." data-sitekey=6LdTS8AUAAAAAOIbCKoCAP4LQku1olYGrywPTaZz data-callback="submitNewEmailSubscriber" data-error-callback="emailSubscriberCaptchaError" > 422 <div class="terms_and_privacy_information bottom small"> This site is protected by reCAPTCHA and the Google <a target="_blank" rel="noopener" class="accessible-link" href="https://policies.google.com/privacy">Privacy Policy</a> and <a target="_blank" rel="noopener" class="accessible-link" data-js-hook="captcha-terms-of-service-link" href="https://policies.google.com/terms">Terms of Service</a> apply.</div> 423</form> </div> 424 425 <div class="updates-dropdown-section phone" id="updates-dropdown-sms" style="display:none" role="tabpanel" aria-labelledby="updates-dropdown-sms-btn"> 426 <div class="directions"> 427 Get text message notifications whenever beehiiv <strong>creates</strong> or <strong>resolves</strong> an incident. 428 </div> 429 <form id="subscribe-form-sms" action="/subscriptions/new-sms" accept-charset="UTF-8" data-remote="true" method="post"><input type="hidden" name="authenticity_token" value="C7TZuJ8bbzu1Nl1l8O82AZ7XdEAgcC_7uJrnrrhO2vtS8705ZNJUtFNmVjFdbsGp7prKPuPTD3B5KXsLUL9GnQ" autocomplete="off" /> 430 <input type="hidden" name="otp_verify_flow" id="otp_verify_flow" value="false" autocomplete="off" /> 431 <input type="hidden" name="subscriber_code" id="subscriber_code" value="" autocomplete="off" /> 432 <div class="control-group"> 433 <div class="controls externalities-sms-container"> 434 <!-- make sure not to put cookie values in here since this gets cached --> 435 <label for="phone-country">Country code:</label> 436 <div id="phone-number-country-code" class="phone-country-wrapper" 437 data-otp-enabled="false"> 438 <select name="phone_country" id="phone-country" data-js-hook="phone-country" class="phone-country"><option value="af" data-otp-enabled="false" >Afghanistan (+93)</option> 439<option value="al" data-otp-enabled="false" >Albania (+355)</option> 440<option value="dz" data-otp-enabled="false" >Algeria (+213)</option> 441<option value="as" data-otp-enabled="false" >American Samoa (+1)</option> 442<option value="ad" data-otp-enabled="false" >Andorra (+376)</option> 443<option value="ao" data-otp-enabled="false" >Angola (+244)</option> 444<option value="ai" data-otp-enabled="false" >Anguilla (+1)</option> 445<option value="ag" data-otp-enabled="false" >Antigua and Barbuda (+1)</option> 446<option value="ar" data-otp-enabled="false" >Argentina (+54)</option> 447<option value="am" data-otp-enabled="false" >Armenia (+374)</option> 448<option value="aw" data-otp-enabled="false" >Aruba (+297)</option> 449<option value="au" data-otp-enabled="false" >Australia/Cocos/Christmas Island (+61)</option> 450<option value="at" data-otp-enabled="false" >Austria (+43)</option> 451<option value="az" data-otp-enabled="false" >Azerbaijan (+994)</option> 452<option value="bs" data-otp-enabled="false" >Bahamas (+1)</option> 453<option value="bh" data-otp-enabled="false" >Bahrain (+973)</option> 454<option value="bd" data-otp-enabled="false" >Bangladesh (+880)</option> 455<option value="bb" data-otp-enabled="false" >Barbados (+1)</option> 456<option value="by" data-otp-enabled="false" >Belarus (+375)</option> 457<option value="be" data-otp-enabled="false" >Belgium (+32)</option> 458<option value="bz" data-otp-enabled="false" >Belize (+501)</option> 459<option value="bj" data-otp-enabled="false" >Benin (+229)</option> 460<option value="bm" data-otp-enabled="false" >Bermuda (+1)</option> 461<option value="bo" data-otp-enabled="false" >Bolivia (+591)</option> 462<option value="ba" data-otp-enabled="false" >Bosnia and Herzegovina (+387)</option> 463<option value="bw" data-otp-enabled="false" >Botswana (+267)</option> 464<option value="br" data-otp-enabled="false" >Brazil (+55)</option> 465<option value="bn" data-otp-enabled="false" >Brunei (+673)</option> 466<option value="bg" data-otp-enabled="false" >Bulgaria (+359)</option> 467<option value="bf" data-otp-enabled="false" >Burkina Faso (+226)</option> 468<option value="bi" data-otp-enabled="false" >Burundi (+257)</option> 469<option value="kh" data-otp-enabled="false" >Cambodia (+855)</option> 470<option value="cm" data-otp-enabled="false" >Cameroon (+237)</option> 471<option value="ca" data-otp-enabled="false" >Canada (+1)</option> 472<option value="cv" data-otp-enabled="false" >Cape Verde (+238)</option> 473<option value="ky" data-otp-enabled="false" >Cayman Islands (+1)</option> 474<option value="cf" data-otp-enabled="false" >Central Africa (+236)</option> 475<option value="td" data-otp-enabled="false" >Chad (+235)</option> 476<option value="cl" data-otp-enabled="false" >Chile (+56)</option> 477<option value="cn" data-otp-enabled="false" >China (+86)</option> 478<option value="co" data-otp-enabled="false" >Colombia (+57)</option> 479<option value="km" data-otp-enabled="false" >Comoros (+269)</option> 480<option value="cg" data-otp-enabled="false" >Congo (+242)</option> 481<option value="cd" data-otp-enabled="false" >Congo, Dem Rep (+243)</option> 482<option value="cr" data-otp-enabled="false" >Costa Rica (+506)</option> 483<option value="hr" data-otp-enabled="false" >Croatia (+385)</option> 484<option value="cy" data-otp-enabled="false" >Cyprus (+357)</option> 485<option value="cz" data-otp-enabled="false" >Czech Republic (+420)</option> 486<option value="dk" data-otp-enabled="false" >Denmark (+45)</option> 487<option value="dj" data-otp-enabled="false" >Djibouti (+253)</option> 488<option value="dm" data-otp-enabled="false" >Dominica (+1)</option> 489<option value="do" data-otp-enabled="false" >Dominican Republic (+1)</option> 490<option value="eg" data-otp-enabled="false" >Egypt (+20)</option> 491<option value="sv" data-otp-enabled="false" >El Salvador (+503)</option> 492<option value="gq" data-otp-enabled="false" >Equatorial Guinea (+240)</option> 493<option value="ee" data-otp-enabled="false" >Estonia (+372)</option> 494<option value="et" data-otp-enabled="false" >Ethiopia (+251)</option> 495<option value="fo" data-otp-enabled="false" >Faroe Islands (+298)</option> 496<option value="fj" data-otp-enabled="false" >Fiji (+679)</option> 497<option value="fi" data-otp-enabled="false" >Finland/Aland Islands (+358)</option> 498<option value="fr" data-otp-enabled="false" >France (+33)</option> 499<option value="gf" data-otp-enabled="false" >French Guiana (+594)</option> 500<option value="pf" data-otp-enabled="false" >French Polynesia (+689)</option> 501<option value="ga" data-otp-enabled="false" >Gabon (+241)</option> 502<option value="gm" data-otp-enabled="false" >Gambia (+220)</option> 503<option value="ge" data-otp-enabled="false" >Georgia (+995)</option> 504<option value="de" data-otp-enabled="false" >Germany (+49)</option> 505<option value="gh" data-otp-enabled="false" >Ghana (+233)</option> 506<option value="gi" data-otp-enabled="false" >Gibraltar (+350)</option> 507<option value="gr" data-otp-enabled="false" >Greece (+30)</option> 508<option value="gl" data-otp-enabled="false" >Greenland (+299)</option> 509<option value="gd" data-otp-enabled="false" >Grenada (+1)</option> 510<option value="gp" data-otp-enabled="false" >Guadeloupe (+590)</option> 511<option value="gu" data-otp-enabled="false" >
511Guam (+1)</option> 512<option value="gt" data-otp-enabled="false" >Guatemala (+502)</option> 513<option value="gn" data-otp-enabled="false" >Guinea (+224)</option> 514<option value="gy" data-otp-enabled="false" >Guyana (+592)</option> 515<option value="ht" data-otp-enabled="false" >Haiti (+509)</option> 516<option value="hn" data-otp-enabled="false" >Honduras (+504)</option> 517<option value="hk" data-otp-enabled="false" >Hong Kong (+852)</option> 518<option value="hu" data-otp-enabled="false" >Hungary (+36)</option> 519<option value="is" data-otp-enabled="false" >Iceland (+354)</option> 520<option value="in" data-otp-enabled="false" >India (+91)</option> 521<option value="id" data-otp-enabled="false" >Indonesia (+62)</option> 522<option value="iq" data-otp-enabled="false" >Iraq (+964)</option> 523<option value="ie" data-otp-enabled="false" >Ireland (+353)</option> 524<option value="il" data-otp-enabled="false" >Israel (+972)</option> 525<option value="it" data-otp-enabled="false" >Italy (+39)</option> 526<option value="jm" data-otp-enabled="false" >Jamaica (+1)</option> 527<option value="jp" data-otp-enabled="false" >Japan (+81)</option> 528<option value="jo" data-otp-enabled="false" >Jordan (+962)</option> 529<option value="ke" data-otp-enabled="false" >Kenya (+254)</option> 530<option value="kr" data-otp-enabled="false" >Korea, Republic of (+82)</option> 531<option value="xk" data-otp-enabled="false" >Kosovo (+383)</option> 532<option value="kw" data-otp-enabled="false" >Kuwait (+965)</option> 533<option value="kg" data-otp-enabled="false" >Kyrgyzstan (+996)</option> 534<option value="la" data-otp-enabled="false" >Laos (+856)</option> 535<option value="lv" data-otp-enabled="false" >Latvia (+371)</option> 536<option value="lb" data-otp-enabled="false" >Lebanon (+961)</option> 537<option value="ls" data-otp-enabled="false" >Lesotho (+266)</option> 538<option value="lr" data-otp-enabled="false" >Liberia (+231)</option> 539<option value="ly" data-otp-enabled="false" >Libya (+218)</option> 540<option value="li" data-otp-enabled="false" >Liechtenstein (+423)</option> 541<option value="lt" data-otp-enabled="false" >Lithuania (+370)</option> 542<option value="lu" data-otp-enabled="false" >Luxembourg (+352)</option> 543<option value="mo" data-otp-enabled="false" >Macao (+853)</option> 544<option value="mk" data-otp-enabled="false" >Macedonia (+389)</option> 545<option value="mg" data-otp-enabled="false" >Madagascar (+261)</option> 546<option value="mw" data-otp-enabled="false" >Malawi (+265)</option> 547<option value="my" data-otp-enabled="false" >Malaysia (+60)</option> 548<option value="mv" data-otp-enabled="false" >Maldives (+960)</option> 549<option value="ml" data-otp-enabled="false" >Mali (+223)</option> 550<option value="mt" data-otp-enabled="false" >Malta (+356)</option> 551<option value="mq" data-otp-enabled="false" >Martinique (+596)</option> 552<option value="mr" data-otp-enabled="false" >Mauritania (+222)</option> 553<option value="mu" data-otp-enabled="false" >Mauritius (+230)</option> 554<option value="mx" data-otp-enabled="false" >Mexico (+52)</option> 555<option value="mc" data-otp-enabled="false" >Monaco (+377)</option> 556<option value="mn" data-otp-enabled="false" >Mongolia (+976)</option> 557<option value="me" data-otp-enabled="false" >Montenegro (+382)</option> 558<option value="ms" data-otp-enabled="false" >Montserrat (+1)</option> 559<option value="ma" data-otp-enabled="false" >Morocco/Western Sahara (+212)</option> 560<option value="mz" data-otp-enabled="false" >Mozambique (+258)</option> 561<option value="na" data-otp-enabled="false" >Namibia (+264)</option> 562<option value="np" data-otp-enabled="false" >Nepal (+977)</option> 563<option value="nl" data-otp-enabled="false" >Netherlands (+31)</option> 564<option value="nz" data-otp-enabled="false" >New Zealand (+64)</option> 565<option value="ni" data-otp-enabled="false" >Nicaragua (+505)</option> 566<option value="ne" data-otp-enabled="false" >Niger (+227)</option> 567<option value="ng" data-otp-enabled="false" >Nigeria (+234)</option> 568<option value="no" data-otp-enabled="false" >Norway (+47)</option> 569<option value="om" data-otp-enabled="false" >Oman (+968)</option> 570<option value="pk" data-otp-enabled="false" >Pakistan (+92)</option> 571<option value="ps" data-otp-enabled="false" >Palestinian Territory (+970)</option> 572<option value="pa" data-otp-enabled="false" >Panama (+507)</option> 573<option value="py" data-otp-enabled="false" >Paraguay (+595)</option> 574<option value="pe" data-otp-enabled="false" >Peru (+51)</option> 575<option value="ph" data-otp-enabled="false" >Philippines (+63)</option> 576<option value="pl" data-otp-enabled="false" >Poland (+48)</option> 577<option value="pt" data-otp-enabled="false" >Portugal (+351)</option> 578<option value="pr" data-otp-enabled="false" >Puerto Rico (+1)</option> 579<option value="qa" data-otp-enabled="false" >Qatar (+974)</option> 580<option value="re" data-otp-enabled="false" >Reunion/Mayotte (+262)</option> 581<option value="ro" data-otp-enabled="false" >Romania (+40)</option> 582<option value="ru" data-otp-enabled="false" >Russia/Kazakhstan (+7)</option> 583<option value="rw" data-otp-enabled="false" >Rwanda (+250)</option> 584<option value="ws" data-otp-enabled="false" >Samoa (+685)</option> 585<option value="sm" data-otp-enabled="false" >San Marino (+378)</option> 586<option value="sa" data-otp-enabled="false" >Saudi Arabia (+966)</option> 587<option value="sn" data-otp-enabled="false" >Senegal (+221)</option> 588<option value="rs" data-otp-enabled="false" >Serbia (+381)</option> 589<option value="sc" data-otp-enabled="false" >Seychelles (+248)</option> 590<option value="sl" data-otp-enabled="false" >Sierra Leone (+232)</option> 591<option value="sg" data-otp-enabled="false" >Singapore (+65)</option> 592<option value="sk" data-otp-enabled="false" >Slovakia (+421)</option> 593<option value="si" data-otp-enabled="false" >Slovenia (+386)</option> 594<option value="za" data-otp-enabled="false" >South Africa (+27)</option> 595<option value="es" data-otp-enabled="false" >Spain (+34)</option> 596<option value="lk" data-otp-enabled="false" >Sri Lanka (+94)</option> 597<option value="kn" data-otp-enabled="false" >St Kitts and Nevis (+1)</option> 598<option value="lc" data-otp-enabled="false" >St Lucia (+1)</option> 599<option value="vc" data-otp-enabled="false" >St Vincent Grenadines (+1)</option> 600<option value="sd" data-otp-enabled="false" >Sudan (+249)</option> 601<option value="sr" data-otp-enabled="false" >Suriname (+597)</option> 602<option value="sz" data-otp-enabled="false" >Swaziland (+268)</option> 603<option value="se" data-otp-enabled="false" >Sweden (+46)</option> 604<option value="ch" data-otp-enabled="false" >Switzerland (+41)</option> 605<option value="tw" data-otp-enabled="false" >Taiwan (+886)</option> 606<option value="tj" data-otp-enabled="false" >Tajikistan (+992)</option> 607<option value="tz" data-otp-enabled="false" >Tanzania (+255)</option> 608<option value="th" data-otp-enabled="false" >Thailand (+66)</option> 609<option value="tg" data-otp-enabled="false" >Togo (+228)</option> 610<option value="to" data-otp-enabled="false" >Tonga (+676)</option> 611<option value="tt" data-otp-enabled="false" >Trinidad and Tobago (+1)</option> 612<option value="tn" data-otp-enabled="false" >Tunisia (+216)</option> 613<option value="tr" data-otp-enabled="false" >Turkey (+90)</option> 614<option value="tc" data-otp-enabled="false" >Turks and Caicos Islands (+1)</option> 615<option value="ug" data-otp-enabled="false" >Uganda (+256)</option> 616<option value="ua" data-otp-enabled="false" >Ukraine (+380)</option> 617<option value="ae" data-otp-enabled="false" >United Arab Emirates (+971)</option> 618<option value="gb" data-otp-enabled="false" >United Kingdom (+44)</option> 619<option value="us" data-otp-enabled="false" selected>United States (+1)</option> 620<option value="uy" data-otp-enabled="false" >Uruguay (+598)</option> 621<option value="uz" data-otp-enabled="false" >Uzbekistan (+998)</option> 622<option value="ve" data-otp-enabled="false" >Venezuela (+58)</option> 623<option value="vn" data-otp-enabled="false" >Vietnam (+84)</option> 624<option value="vg" data-otp-enabled="false" >Virgin Islands, British (+1)</option> 625<option value="vi" data-otp-enabled="false" >Virgin Islands, U.S. (+1)</option> 626<option value="ye" data-otp-enabled="false" >Yemen (+967)</option> 627<option value="zm" data-otp-enabled="false" >Zambia (+260)</option> 628<option value="zw" data-otp-enabled="false" >Zimbabwe (+263)</option></select> 629 </div> 630 <label for="phone-number">Phone number:</label> 631 <input name="phone_number" id="phone-number" type="text" class="prepend full-width" data-js-hook="sms-notification-field"> 632 <div class="sms-atl-error" id="sms-atl-error"></div> 633 <div class="clearfix"></div> 634 <div class="opt-container-section" id="otp-container" style="display:none">
635 <a href="#" id="btn-subcriber-change-number">Change number</a> 636 <label for="otp">Enter OTP:</label> 637 <input name="otp" id="otp" type="text" class="prepend full-width"> 638 <p id="timer">Resend OTP in: <span id="countdown">30</span> seconds </p> 639 <p id="resend"> 640 Didn't receive the OTP? 641 <a href="#" id="resend-otp-btn" >Resend OTP </a> 642 </p> 643 </div> 644 </div> 645 </div> 646 647 <input type="hidden" name="captcha_error" id="captcha_error" value="false" autocomplete="off" /> 648 <input type="submit" value="Subscribe via Text Message" class="flat-button full-width g-recaptcha" id="subscribe-btn-sms" data-disabled-text="Subscribing..." data-sitekey=6LcH-b0UAAAAACVQtMb14LBhflMA9y0Nmu7l_W6d data-callback="submitNewSmsSubscriber" data-error-callback="smsSubscriberCaptchaError"> 649 <div class="terms_and_privacy_information bottom small">Message and data rates may apply. By subscribing you agree to the Atlassian <a target="_blank" rel="noopener" class="accessible-link" href="https://www.atlassian.com/legal/product-specific-terms#statuspage-specific-terms">Terms of Service</a>, and the Atlassian <a target="_blank" rel="noopener" class="accessible-link" href="https://www.atlassian.com/legal/privacy-policy">Privacy Policy</a>. This site is protected by reCAPTCHA and the Google <a target="_blank" rel="noopener" class="accessible-link" href="https://policies.google.com/privacy">Privacy Policy</a> and <a target="_blank" rel="noopener" class="accessible-link" data-js-hook="captcha-terms-of-service-link" href="https://policies.google.com/terms">Terms of Service</a> apply.</div> 650</form> </div> 651 652 <div class="updates-dropdown-section slack" id="updates-dropdown-slack" style="display:none" role="tabpanel" aria-labelledby="updates-dropdown-slack-btn"> 653 <div class="directions"> 654 Get incident updates and maintenance status messages in Slack. 655 </div> 656 <a value="Subscribe via Slack" class="flat-button full-width" id="subscribe-btn-slack" data-disabled-text="Subscribing..." data-revert-on-success="true" style="margin-top:.75rem" href="https://subscriptions.statuspage.io/slack_authentication/kickoff?page_code=qllwgqgxzymk">Subscribe via Slack</a> 657 <div class="terms_and_privacy_information bottom small">By subscribing you agree to the Atlassian <a target="_blank" rel="noopener" class="accessible-link" href="https://www.atlassian.com/legal/cloud-terms-of-service">Cloud Terms of Service</a> and acknowledge Atlassian's <a target="_blank" rel="noopener" class="accessible-link" href="https://www.atlassian.com/legal/privacy-policy">Privacy Policy</a>.</div> 658 </div> 659 660 <div class="updates-dropdown-section teams" id="updates-dropdown-teams" style="display:none" role="tabpanel" aria-labelledby="updates-dropdown-teams-btn"> 661 <div class="directions"> 662 Get incident updates and maintenance status messages in Microsoft Teams channel. 663 </div> 664 <form id="subscribe-form-teams" action="/subscriptions/teams.json" accept-charset="UTF-8" data-remote="true" method="post"><input type="hidden" name="authenticity_token" value="uF2QHYB99ou_ODdlSeM8qVSZb000nphZP0cq9gV9JSPhGvSce7TNBFloPDHkYssBJNTRM_c9uNL-9LZT7Yy5RQ" autocomplete="off" /> 665 <div class="control-group"> 666 <div class="controls"> 667 <label for="endpoint-webhooks">Channel's Webhook URL:</label> 668 <input type="text" name="endpoint" id="endpoint-webhooks" data-js-hook="endpoint" class="full-width" aria-describedby="url-help-block" /> 669 <p class="help-block" id="url-help-block"> <a target="_blank" rel="noopener" href="https://support.atlassian.com/statuspage/docs/set-up-microsoft-teams-integration/">Here's where to find</a> the URL of a teams channel</p> 670 </div> 671 </div> 672 <input type="submit" value="Subscribe via Teams" class="flat-button full-width" id="subscribe-btn-teams" data-disabled-text="Subscribing..." data-js-hook="updates-dropdown-close" > 673</form> <div class="terms_and_privacy_information bottom small">By subscribing you agree to the Atlassian <a target="_blank" rel="noopener" class="accessible-link" href="https://www.atlassian.com/legal/cloud-terms-of-service">Cloud Terms of Service</a> and acknowledge Atlassian's <a target="_blank" rel="noopener" class="accessible-link" href="https://www.atlassian.com/legal/privacy-policy">Privacy Policy</a>.</div> 674 </div> 675 676
677 <div class="updates-dropdown-section twitter" id="updates-dropdown-twitter" style="display:none" role="tabpanel" aria-labelledby="updates-dropdown-twitter-btn"> 678 <a href="https://twitter.com/beehiivstatus" class="twitter-follow-button" data-show-count="false" data-show-screen-name="true" data-width="59px">Follow @beehiivstatus</a> 679 or 680 <a href="https://twitter.com/beehiivstatus" target="_blank">view our profile</a>. 681 <style> 682 .twitter-follow-button { 683 margin-bottom: -6px; 684 } 685 </style> 686 687
687<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
687 688 </div> 689 690 <div class="updates-dropdown-section support" id="updates-dropdown-support" style="display:none" role="tabpanel" aria-labelledby="updates-dropdown-support-btn"> 691 Visit our <a href="https://support.beehiiv.com">support site</a>. 692 </div> 693 694 <div class="updates-dropdown-section atom" id="updates-dropdown-atom" role="tabpanel" aria-labelledby="updates-dropdown-atom-btn"> 695 Get the <a href="https://www.beehiivstatus.com/history.atom" target="_blank">Atom Feed</a> or <a href="https://www.beehiivstatus.com/history.rss" target="_blank">RSS Feed</a>. 696 </div> 697 </div> 698 </div> 699 </div> 700
701<script> 702 $(function () { 703 const phoneNumberInput = $('#phone-number'); 704 const errorDiv = $('#sms-atl-error') 705 if(errorDiv.length){ 706 function checkSelectedCountry() { 707 const selectedCountry = $('#phone-country').val(); 708 const isOtpEnabled = $('#phone-number-country-code').attr('data-otp-enabled') === 'true'; 709 const form = document.getElementById('subscribe-form-sms'); 710 form.action = '/subscriptions/new-sms'; 711 const isOtpFlow = document.getElementById('otp_verify_flow'); 712 document.getElementById('otp-container').style.display = "none"; 713 if(false && selectedCountry === 'sg') { // Replace 'SG' with the actual value representing Singapore in your select tag 714 phoneNumberInput.prop('disabled', true); 715 errorDiv.html(`Due to new Singapore government regulations, we're currently not supporting text subscriptions in Singapore.<a href="https://community.atlassian.com/t5/Statuspage-articles/Attention-SMS-notifications-will-be-disabled-on-August-1st-2023/ba-p/2424398" target="_blank"> Learn more.</a> <br> Select another method to subscribe.`); 716 } else { 717 phoneNumberInput.prop('readonly', false); 718 errorDiv.html(''); 719 if(false){ 720 if(isOtpEnabled){ 721 document.getElementById('subscribe-btn-sms').value = "Send OTP"; 722 } 723 else { 724 isOtpFlow.value = false; 725 document.getElementById('subscribe-btn-sms').value = "Subscribe via Text Message"; 726 } 727 } 728 } 729 } 730 731 $('#phone-country').on('change', checkSelectedCountry); 732 checkSelectedCountry(); 733 } 734 }); 735 736 document.addEventListener('DOMContentLoaded', function() { 737 const dropdown = document.querySelector('#phone-number-country-code .phone-country'); 738 if (dropdown){ 739 const wrapperDiv = document.getElementById('phone-number-country-code'); 740 const selectedOption = dropdown.options[dropdown.selectedIndex]; 741 const otpEnabled = selectedOption.getAttribute('data-otp-enabled'); 742 743 wrapperDiv.setAttribute('data-otp-enabled', otpEnabled); 744 745 dropdown.addEventListener('change', function() { 746 const selectedOption = dropdown.options[dropdown.selectedIndex]; 747 const otpEnabled = selectedOption.getAttribute('data-otp-enabled'); 748 749 wrapperDiv.setAttribute('data-otp-enabled', otpEnabled); 750 }); 751 } 752 }); 753 754 var countdownTimer; 755 var resendBtn = document.getElementById('resend'); 756 var timer = document.getElementById('timer'); 757 var form = document.getElementById('subscribe-form-sms'); 758 var RESEND_TIMER = 30; 759 $(function() { 760 $('#subscribe-form-sms').on('ajax:success', function(e, data, status, xhr){ 761 const form = this; 762 const action = form.getAttribute('action'); 763 if (data.type === 'success' && data.otp_flow === true) { 764 document.getElementById('subscriber_code').value = data.subscriber_code 765 document.getElementById('otp-container').style.display = "block"; 766 $('#phone-number').prop('readonly', true); 767 var display = document.getElementById('countdown'); 768 disableResend(); 769 startTimer(RESEND_TIMER, display) 770 document.getElementById('subscribe-btn-sms').value = "Verify OTP and Subscribe"; 771 document.getElementById('otp_verify_flow').value = true; 772 form.action = '/subscriptions/verify-otp'; 773 } else if (data.type === 'success' && action.includes('verify')){ 774 document.getElementById('otp-container').style.display = "none"; 775 $('#phone-number').val('').prop('readonly', false); 776 $('#otp').val(''); 777 document.getElementById('subscribe-btn-sms').value = "Send OTP"; 778 document.getElementById('otp_verify_flow').value = false; 779 form.action = '/subscriptions/new-sms'; 780 SP.currentPage.updatesDropdown.hide(); 781 } 782 }); 783 $("#btn-subcriber-change-number").on('click', () => { 784 document.getElementById('otp-container').style.display = "none"; 785 $('#phone-number').prop('readonly', false); 786 document.getElementById('subscribe-btn-sms').value = "Send OTP"; 787 form.action = '/subscriptions/new-sms'; 788 return false 789 }) 790 $('#resend-otp-btn').on('click', function(e) { 791 e.preventDefault(); 792 let phoneNumber = $('#phone-number').val(); 793 let countryCode = $('.phone-country').val(); 794 $.ajax({ 795 type: 'POST', 796 url: "/subscriptions/new-sms", 797 data: { 798 phone_number: phoneNumber, 799 phone_country: countryCode, 800 type: 'resend' 801 }, 802 }).done(function(data) { 803 var messageOptions = (data.type !== undefined && data.type !== null) ? { cssClass: data.type } : {}; 804 HRB.utils.notify(data.text, messageOptions); 805 var display = document.getElementById('countdown'); 806 disableResend(); 807 timer.style.display = "none" 808 if (data.type === 'success') { 809 startTimer(RESEND_TIMER, display); 810 } 811 }) 812 }); 813 }) 814 815 function startTimer(duration, display){ 816 var timer = duration, seconds; 817 clearInterval(countdownTimer); 818 countdownTimer = setInterval(function () { 819 seconds = parseInt(timer % 60, 10); 820 display.textContent = seconds; 821 if(--timer < 0){ 822 enableResend(); 823 clearInterval(countdownTimer); 824 } 825 }, 1000); 826 disableResend(); 827 } 828 function enableResend(){ 829 resendBtn.style.display = "block"; 830 timer.style.display = "none" 831 } 832 function disableResend(){ 833 resendBtn.style.display = "none"; 834 timer.style.display = "block" 835 } 836 837 $(function() { 838 $('#subscribe-form-email').on('submit', function() {
839 var tokenField = document.getElementById('email-otp-token-field'); 840 if (!tokenField) { 841 return; 842 } 843 let page_code = "qllwgqgxzymk" 844 let key = keyForEmailOtpToken($('#email').val(), page_code); 845 tokenField.value = localStorage.getItem(key); 846 }); 847 }); 848 849 var emailOtpCountdownTimer; 850 var emailOtpResendBtn = document.getElementById('resend-email-otp'); 851 var emailOtpTimer = document.getElementById('email-otp-timer'); 852 var emailOtpForm = document.getElementById('subscribe-form-email'); 853 var EMAIL_OTP_RESEND_TIMER = 600; 854 $(function() { 855 $('#subscribe-form-email').on('ajax:success', function(e, data, status, xhr){ 856 const form = this; 857 const action = form.getAttribute('action'); 858 if (data.type === 'success' && data.email_otp_verify_flow === true) { 859 document.getElementById('email-otp-container').style.display = "block"; 860 var display = document.getElementById('email-otp-countdown'); 861 display.textContent = EMAIL_OTP_RESEND_TIMER; 862 disableEmailOtpResend(); 863 startEmailOtpTimer(EMAIL_OTP_RESEND_TIMER, display) 864 document.getElementById('subscribe-btn-email').value = "Verify OTP and Subscribe"; 865 document.getElementById('email_otp_verify_flow').value = true; 866 form.action = '/subscriptions/verify-email-otp'; 867 } else if (data.type === 'success' && action.includes('verify')){ 868 let email = $('#email') 869 let page_code = "qllwgqgxzymk" 870 let key = keyForEmailOtpToken(email.val(), page_code); 871 localStorage.setItem(key, data.email_otp_auth_token); 872 873 document.getElementById('email-otp-container').style.display = "none"; 874 email.val('').prop('readonly', false); 875 $('#email-otp').val(''); 876 document.getElementById('subscribe-btn-email').value = "Send OTP"; 877 document.getElementById('email_otp_verify_flow').value = false; 878 form.action = '/subscriptions/new-email'; 879 SP.currentPage.updatesDropdown.hide(); 880 } 881 }); 882 $('#resend-email-otp-btn').on('click', function(e) { 883 e.preventDefault(); 884 let email = $('#email').val(); 885 $.ajax({ 886 type: 'POST', 887 url: "/subscriptions/new-email", 888 data: { 889 email: email 890 }, 891 }).done(function(data) { 892 var messageOptions = (data.type !== undefined && data.type !== null) ? { cssClass: data.type } : {}; 893 HRB.utils.notify(data.text, messageOptions); 894 if (data.type === 'success') { 895 var display = document.getElementById('email-otp-countdown'); 896 display.textContent = EMAIL_OTP_RESEND_TIMER; 897 disableEmailOtpResend(); 898 emailOtpTimer.style.display = "none" 899 startEmailOtpTimer(EMAIL_OTP_RESEND_TIMER, display); 900 } 901 }) 902 }); 903 }) 904 905 function startEmailOtpTimer(duration, display){ 906 var timer = duration, seconds; 907 clearInterval(emailOtpCountdownTimer); 908 emailOtpCountdownTimer = setInterval(function () { 909 seconds = parseInt(timer, 10); 910 display.textContent = seconds; 911 if(--timer < 0){ 912 enableEmailOtpResend(); 913 clearInterval(emailOtpCountdownTimer); 914 } 915 }, 1000); 916 disableEmailOtpResend(); 917 } 918 919 function enableEmailOtpResend(){ 920 emailOtpResendBtn.style.display = "block"; 921 emailOtpTimer.style.display = "none" 922 } 923 function disableEmailOtpResend(){ 924 emailOtpResendBtn.style.display = "none"; 925 emailOtpTimer.style.display = "block" 926 } 927 function keyForEmailOtpToken(email, pageCode) { 928 return email + '|' + pageCode+ '|SUBSCRIBE_VIA_EMAIL'; 929 } 930</script>
930 931 932 <div class="clearfix"></div> 933 </div> 934 935</div> 936 <!-- this is outside of the .container so that the cover photo can go full width on mobile --> 937 938 939 <div class="container"> 940 <div class="history-nav border-color"> 941 <ul> 942 <li> 943 <a class="button current border-color" href="https://www.beehiivstatus.com/history" aria-label="Incidents" aria-current=page>Incidents</a> 944 </li> 945 <li> 946 <a class="button border-color" href="https://www.beehiivstatus.com/uptime" aria-label="Uptime" >Uptime</a> 947 </li> 948 </ul> 949</div> 950 951 952 <div data-react-class="HistoryIndex" data-react-props="{"page_status":{"page":{"name":"beehiiv","subdomain":"beehiiv1","domain":"www.beehiivstatus.com","created_at":"2024-04-05T13:20:37.349-04:00","updated_at":"2026-10-04T15:54:13.288-04:00","url":"https://www.beehiiv.com","hidden_from_search":false,"css_body_background_color":"ffffff","css_font_color":"333333","css_light_font_color":"757575","css_greens":"1e8542","css_yellows":"f1c40f","css_oranges":"b35e14","css_reds":"de2f1b","allow_page_subscribers":true,"allow_incident_subscribers":true,"notifications_from_email":null,"allow_email_subscribers":true,"allow_sms_subscribers":true,"twitter_username":"beehiivstatus","branding":"basic","support_url":"https://support.beehiiv.com","allow_webhook_subscribers":false,"css_border_color":"E0E0E0","css_graph_color":"3498db","css_link_color":"207ab6","page_description":"Welcome to beehiiv's status page. We will report incidents, outages, and scheduled maintenance here for the beehiiv.com newsletter platform","activity_score":153,"headline":null,"viewers_must_be_team_members":false,"ip_filters":null,"css_blues":"207ab6","time_zone":"Eastern Time (US \u0026 Canada)","notifications_reply_to_email":null,"notifications_email_footer":"You received this email because you are subscribed to beehiiv's service status notifications.","allow_rss_atom_feeds":true,"black_hole":null,"over_allocations_cohort":null,"over_allocations_resolved_at":null,"custom_components_limit":null,"allow_slack_subscribers":true,"css_no_data":"b3bac5","deleted_at":null,"allow_teams_subscription":true,"max_maintenance_automation_allowed":null,"custom_email_template":false,"hero_cover":{"updated_at":null,"original_url":"","size":null,"normal_url":"","retina_url":""},"transactional_logo":{"updated_at":"2024-04-08T02:03:15.000+00:00","original_url":"//dka575ofm4ao0.cloudfront.net/pages-transactional_logos/original/840286/beehiiv_Logo-02-7bd77b15-c945-4734-ae80-864f5cbae746.png","size":17437,"normal_url":"//dka575ofm4ao0.cloudfront.net/pages-transactional_logos/normal/840286/beehiiv_Logo-02-7bd77b15-c945-4734-ae80-864f5cbae746.png","retina_url":"//dka575ofm4ao0.cloudfront.net/pages-transactional_logos/retina/840286/beehiiv_Logo-02-7bd77b15-c945-4734-ae80-864f5cbae746.png"},"favicon_logo":{"updated_at":"2024-04-08T17:30:51.000+00:00","size":17437,"url":"//dka575ofm4ao0.cloudfront.net/pages-favicon_logos/original/840286/beehiiv_Logo-02-882dd988-6bb5-4046-81e5-ea45cb176f34.png"},"email_logo":{"updated_at":null,"original_url":"","size":null,"normal_url":"","retina_url":""},"twitter_logo":{"updated_at":null,"size":null,"url":""},"id":"qllwgqgxzymk","organization_id":"8697tylzx817"}},"components":[{"status":"operational","name":"Publication websites","created_at":"2024-04-05T13:22:11.881-04:00","updated_at":"2026-05-31T20:15:07.152-04:00","position":1,"description":"Public facing newsletter websites, e.g. https://product.beehiiv.com/","showcase":true,"start_date":"2024-04-04T20:00:00.000-04:00","id":"p7kr6bq5v16q","group_id":null,"page_id":"qllwgqgxzymk","group":false,"only_show_if_degraded":false},{"status":"operational","name":"App Admin","created_at":"2024-04-05T13:22:39.344-04:00","updated_at":"2026-05-31T20:15:07.173-04:00","position":2,"description":"The newsletter management portal at https://app.beehiiv.com","showcase":true,"start_date":"2024-04-04T20:00:00.000-04:00","id":"tkx51qw4sch6","group_id":null,"page_id":"qllwgqgxzymk","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Public API","created_at":"2024-04-05T13:22:57.350-04:00","updated_at":"2026-05-31T20:15:07.190-04:00","position":3,"description":"beehiiv's public API, documented at developer.beehiiv.com","showcase":true,"start_date":"2024-04-04T20:00:00.000-04:00","id":"h31bmgcqm77d","group_id":null,"page_id":"qllwgqgxzymk","group":false,"only_show_if_degraded":false},{"status":"operational","name":"MCP","created_at":"2026-04-07T15:17:43.139-04:00","updated_at":"2026-05-31T20:15:07.209-04:00","position":4,"description":"AI assistant integrations via the Model Context Protocol at mcp.beehiiv.com","showcase":true,"start_date":"2026-03-23T20:00:00.000-04:00","id":"mzgf0f0y9f6v","group_id":null,"page_id":"qllwgqgxzymk","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Sending emails","created_at":"2024-04-05T13:23:55.515-04:00","updated_at":"2026-08-21T14:44:21.563-04:00","position":5,"description":"Newsletters and other emails sent out through the beehiiv platform","showcase":true,"start_date":"2024-04-04T20:00:00.000-04:00","id":"85z78gl8ymqk","group_id":null,"page_id":"qllwgqgxzymk","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Email Metrics","created_at":"2024-04-05T13:25:05.095-04:00","updated_at":"2026-05-31T20:15:07.245-04:00","position":6,"description":"Reporting on activity in emails sent through beehiiv (e.g. opens, clicks, unsubscribes)","showcase":true,"start_date":"2024-04-04T20:00:00.000-04:00","id":"lv0cd35f0gwk","group_id":null,"page_id":"qllwgqgxzymk","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Embed forms","created_at":"2024-04-05T13:25:35.273-04:00","updated_at":"2026-05-31T20:15:07.263-04:00","position":7,"description":"Newsletter subscribe forms that can be embedded on other websites","showcase":true,"start_date":"2024-04-04T20:00:00.000-04:00","id":"vy62xdnr6rh1","group_id":null,"page_id":"qllwgqgxzymk","group":false,"only_show_if_degraded":false},{"status":"operational","name":"SendGrid API v3","created_at":"2024-04-12T18:00:37.623-04:00","updated_at":"2026-08-21T14:44:21.576-04:00","position":8,"description":null,"showcase":false,"start_date":null,"id":"sq3lz7k15xgw","group_id":null,"page_id":"qllwgqgxzymk","group":false,"only_show_if_degraded":false},{"status":"operational","name":"SendGrid Event Webhook","created_at":"2024-04-12T18:00:43.432-04:00","updated_at":"2026-04-07T15:18:13.673-04:00","position":9,"description":null,"showcase":false,"start_date":null,"id":"6vbhrwc1xhdj","group_id":null,"page_id":"qllwgqgxzymk","group":false,"only_show_if_degraded":false},{"status":"operational","name":"Email statistics collection","created_at":"
9522024-04-12T18:00:49.109-04:00","updated_at":"2026-05-05T12:17:26.180-04:00","position":10,"description":null,"showcase":true,"start_date":null,"id":"wyv94wwynlwn","group_id":null,"page_id":"qllwgqgxzymk","group":false,"only_show_if_degraded":false}],"months":[{"name":"October","year":2026,"starts_on":4,"days":31,"incidents":[]},{"name":"September","year":2026,"starts_on":2,"days":30,"incidents":[]},{"name":"August","year":2026,"starts_on":6,"days":31,"incidents":[{"code":"mlwn8q7ld7rs","name":"Some newsletters are experiencing incomplete post sends","message":"This incident has been resolved.","impact":"major","timestamp":"Aug \u003cvar data-var='date'\u003e21\u003c/var\u003e, \u003cvar data-var='time'\u003e10:31\u003c/var\u003e - \u003cvar data-var='time'\u003e14:44\u003c/var\u003e EDT"}]}],"show_component_filter":false,"show_uptime_calendar":true,"component_filter":null,"start_time":"2026-08-01T00:00:00-04:00","end_time":"2026-10-31T23:59:59-04:00","a11yHeadings":true}"></div> 953 954 <div class="page-footer border-color font-small"> 955 <a href="/" aria-label="Back to current status"> 956 <span class="current-status-arrow">←</span> Current Status 957 </a> 958 <span class="color-secondary powered-by"><a class="color-secondary" target="_blank" rel="noopener noreferrer nofollow" href="https://www.atlassian.com/software/statuspage?utm_campaign=www.beehiivstatus.com&utm_content=SP-notifications&utm_medium=powered-by&utm_source=inapp">Powered by Atlassian Statuspage</a></span> 959</div> 960 961 </div> 962 963 964 965</div> 966 967 968
968<script src="https://dka575ofm4ao0.cloudfront.net/assets/status_manifest-b790849ccb41192b3f7d9c14d5a4a6d5142add81fc8522649ca5c82f6a1fbb0e.js"></script>
968 969 <div id="cpt-notification-container" role="status" aria-live="polite" aria-atomic="true"></div> 970 971 972 973 974 975 <!-- all of the content_for stuff --> 976
976<script src="https://dka575ofm4ao0.cloudfront.net/assets/register_subscription_form-589b657fec607087fc5c740c568270907310bc4f6aaa20256e70f01b103025ca.js"></script>
976 977 978
978<script type="text/javascript"> 979 $(function() { 980 SP.currentPage.registerSubscriptionForm('email'); 981 982 SP.currentPage.registerSubscriptionForm('sms'); 983 984 985 SP.currentPage.registerSubscriptionForm('teams'); 986 }); 987 988 989 990 991 992 </script>
992 993
993<script src="https://dka575ofm4ao0.cloudfront.net/assets/status_common-a7b1e9f22a2c94a83d347ec517cabf21494ca11867ebf891f46f89c9b4101811.js"></script>
993 994 995 996 997
997<script> 998 /** INITIALIZATION **/ 999 var recaptchaIds = {} 1000 1001 // Unfortunately there's no unique selectors on the parent divs that recaptcha adds. The first unique selector 1002 // is the iframe rendered 2 levels deep. So this waits until the iframes are added to the page, then finds 1003 // the parent div and sets the z index so that it'll render above our modals & dropdowns from the start. 1004 function setZIndex(captchaCount, startTime) { 1005 // bail after 10s just in case so we don't do this forever if something whaky happens 1006 if (new Date() - startTime > 10000) { 1007 return; 1008 } 1009 1010 var iframes = document.querySelectorAll('iframe[title="recaptcha challenge"]'); 1011 if (iframes.length != captchaCount) { 1012 setTimeout(function() { 1013 setZIndex(captchaCount, startTime); 1014 }, 500); 1015 } 1016 1017 for (var i = 0; i < iframes.length; i++) { 1018 // incident subscribe modal is 1050, so this has to be above that 1019 iframes[i].parentElement.parentElement.style.zIndex = "1100"; 1020 } 1021 } 1022 1023 function updateCaptchaIframeTitle(captchaCount, startTime, updates=0) { 1024 1025 if (new Date() - startTime > 10000 || captchaCount === updates) { 1026 return; 1027 } 1028 var iframesWithTitle = document.querySelectorAll('iframe[title="recaptcha challenge expires in two minutes"]'); 1029 1030 if (iframesWithTitle.length != captchaCount) { 1031 setTimeout(function() { 1032 updateCaptchaIframeTitle(captchaCount, startTime, iframesWithTitle.length + updates); 1033 }, 500); 1034 } 1035 1036 for (var i = 0; i < iframesWithTitle.length; i++) { 1037 iframesWithTitle[i].title = "recaptcha"; 1038 } 1039 } 1040 1041 function addIncidentCaptcha() { 1042 var incidentCaptcha = document.createElement('div'); 1043 incidentCaptcha.setAttribute('id', 'subscribe-incident-recaptcha'); 1044 incidentCaptcha.setAttribute('class', 'g-recaptcha'); 1045 incidentCaptcha.setAttribute('data-sitekey', '6LcZ-b0UAAAAAENi956aWzynTT2ZJ80dGU3F80Op'); 1046 incidentCaptcha.setAttribute('data-callback', 'submitIncidentSubscriberSuccess'); 1047 incidentCaptcha.setAttribute('data-error-callback', 'submitIncidentSubscriberError'); 1048 incidentCaptcha.setAttribute('data-size', 'invisible'); 1049 document.body.appendChild(incidentCaptcha); 1050 var incidentCode = document.createElement('input'); 1051 incidentCode.setAttribute('type', 'hidden'); 1052 incidentCode.setAttribute('id', 'submit_incident_code'); 1053 document.body.appendChild(incidentCode); 1054 } 1055 1056 var onloadCallback = function() { 1057 // if there is an incident, then add incident captcha element 1058 if (document.getElementsByClassName('modal-open-incident-subscribe').length > 0) { 1059 addIncidentCaptcha(); 1060 } 1061 1062 var captchas = document.getElementsByClassName("g-recaptcha"); 1063 1064 for(var i = 0; i < captchas.length; i++) { 1065 var elId = captchas[i].id; 1066 recaptchaIds[elId] = grecaptcha.enterprise.render(elId); 1067 } 1068 1069 setZIndex(captchas.length, new Date()); 1070 updateCaptchaIframeTitle(captchas.length, new Date()); 1071 } 1072 1073 1074 /** SUBSCRIBE DROPDOWN */ 1075 1076 // callbacks for captcha success 1077 function submitNewSubscriber(type, error) { 1078 if (error) document.querySelector('#subscribe-form-' + type + ' #captcha_error').value = 'true'; 1079 1080 document.getElementById('subscribe-form-' + type).dispatchEvent(new Event('submit', {bubbles: true, cancelable: true})); 1081 grecaptcha.enterprise.reset(recaptchaIds['subscribe-btn-' + type]); 1082 } 1083 function submitNewEmailSubscriber(token) { 1084 submitNewSubscriber('email'); 1085 } 1086 function submitNewSmsSubscriber(token) { 1087 submitNewSubscriber('sms'); 1088 } 1089 function submitNewWebhookSubscriber(token) { 1090 submitNewSubscriber('webhook'); 1091 } 1092 function submitIncidentSubscriber(token, error, incidentCodeOverride) { 1093 var incidentCode = incidentCodeOverride; 1094 if (!incidentCode) { 1095 var incidentCodeEl = document.getElementById('submit_incident_code'); 1096 incidentCode = incidentCodeEl && incidentCodeEl.value; 1097 } 1098 var incidentForm = incidentCode && document.getElementById('subscribe-form-' + incidentCode); 1099 if (!incidentForm) { 1100 return; 1101 } 1102 1103 var captchaError = incidentForm.querySelector('input[name="captcha_error"]'); 1104 var recaptchaResponse = incidentForm.querySelector('input[name="g-recaptcha-response"]'); 1105 if (captchaError) { 1106 captchaError.value = error; 1107 } 1108 if (recaptchaResponse) { 1109 recaptchaResponse.value = token; 1110 } 1111 incidentForm.dispatchEvent(new Event('submit', {bubbles: true, cancelable: true})); 1112 if (window.grecaptcha && grecaptcha.enterprise && recaptchaIds['subscribe-incident-recaptcha'] != null) { 1113 grecaptcha.enterprise.reset(recaptchaIds['subscribe-incident-recaptcha']); 1114 } 1115 } 1116 function submitIncidentSubscriberSuccess(token) { 1117 submitIncidentSubscriber(token, 'false'); 1118 } 1119 1120 // callbacks if we get captcha network errors 1121 function emailSubscriberCaptchaError(token) { 1122 submitNewSubscriber('email', true); 1123 } 1124 function smsSubscriberCaptchaError(token) { 1125 submitNewSubscriber('sms', true); 1126 } 1127 function webhookSubscriberCaptchaError(token) { 1128 submitNewSubscriber('webhook', true); 1129 } 1130 function submitIncidentSubscriberError(token) { 1131 submitIncidentSubscriber(token, 'true'); 1132 } 1133 1134 // tracking clicks 1135 ['email', 'sms', 'webhook'].forEach(function(type) { 1136 var el = document.getElementById('subscribe-btn-' + type); 1137 el && el.addEventListener("click", function() { 1138 $.ajax({ 1139 type: "POST", 1140 url: "/subscriptions/track_attempt", 1141 data: { 1142 type: type 1143 } 1144 }) 1145 }) 1146 }) 1147 1148 // form submission success callbacks 1149 $('#subscribe-form-email').on('ajax:success', function(e, data, status, xhr){ 1150 if (data.type === 'success') { 1151 SP.currentPage.updatesDropdown.hide(); 1152 var emailField = document.getElementById('email'); 1153 if (emailField) { 1154 emailField.value = ''; 1155 } 1156 } 1157 }); 1158 $('#subscribe-form-sms').on('ajax:success', function(e, data, status, xhr){ 1159 if (data.type === 'success' && data.otp_flow !== true) { 1160 SP.currentPage.updatesDropdown.hide(); 1161 var phoneField = document.getElementById('phone-number'); 1162 if (phoneField) { 1163 phoneField.value = ''; 1164 } 1165 } 1166 }); 1167 $('#subscribe-form-webhook').on('ajax:success', function(e, data, status, xhr){ 1168 if (data.type === 'success') { 1169 SP.currentPage.updatesDropdown.hide(); 1170 document.getElementById('endpoint-webhooks').value = ''; 1171 document.getElementById('email-webhooks').value = ''; 1172 } 1173 }); 1174 1175 $('a.subscribe').on('click', function() { 1176 document.body.style.overflow = "hidden"; 1177 document.body.style.height = "100vh"; 1178 }); 1179 1180 $('div.modal-open-incident-subscribe').on('hidden', function(){ 1181 document.body.style.overflow = ""; 1182 document.body.style.height = ""; 1183 }); 1184 1185 function submitCaptchaIncidentSubscribe(event) { 1186 var incidentCode = event.target.id.split('-')[2]; 1187 event.preventDefault(); 1188 1189 $.ajax({ 1190 type: "POST", 1191 url: "/subscriptions/track_attempt", 1192 data: { 1193 type: 'incident' 1194 } 1195 }) 1196 1197 var incidentCodeField = document.getElementById('submit_incident_code'); 1198 if (incidentCodeField) { 1199 incidentCodeField.value = incidentCode; 1200 } 1201 1202 // Recaptcha's onloadCallback is what creates #submit_incident_code and the 1203 // widget id. If the enterprise.js script is blocked (ad blockers, CI url 1204 // blacklist), execute() and .value on a null node throw and the subscribe 1205 // click never reaches the server. 1206 var recaptchaId = recaptchaIds['subscribe-incident-recaptcha']; 1207 if (window.grecaptcha && grecaptcha.enterprise && typeof grecaptcha.enterprise.execute === 'function' && recaptchaId != null) { 1208 grecaptcha.enterprise.execute(recaptchaId); 1209 } else { 1210 submitIncidentSubscriber('', 'true', incidentCode); 1211 } 1212 } 1213</script>
vendor: 135 bytes, lines 1213-1219
1213 1214 1215<script src='https://www.recaptcha.net/recaptcha/enterprise.js?onload=onloadCallback&render=explicit' async defer></script> 1216 1217 1218 1219
1219<script src="https://dka575ofm4ao0.cloudfront.net/packs/common-b57e85f6a60348cdd566.chunk.js"></script>
1219 1220
1220<script src="https://dka575ofm4ao0.cloudfront.net/packs/globals-79d49f8cfe179f020629.chunk.js"></script>
1220 1221 1222
1222<script src="https://dka575ofm4ao0.cloudfront.net/packs/runtime-e9fe27ac357824763c7d.js"></script>
1222 1223 1224 1225
1225<script src="https://dka575ofm4ao0.cloudfront.net/packs/status-46c9a85ee33b4106a045.chunk.js"></script>
1225 1226
1226<script src="https://dka575ofm4ao0.cloudfront.net/packs/components-95f0cadd8954a909f19d.chunk.js"></script>
1226 1227 1228 1229
1229<script> 1230 window.addEventListener('load', function () { 1231 const urlParams = new URLSearchParams(window.location.search); 1232 const messageToken = urlParams.get('slack_message_token'); 1233 const channelName = escape(urlParams.get('channel_name')); 1234 1235 if(!!messageToken) { 1236 switch(messageToken) { 1237 case 'slack_auth_error': 1238 HRB.utils.notify('The Slack authorization attempt was unsuccessful. Try again.', {cssClass:'error'}); 1239 break; 1240 case 'subscribers_disabled_error': 1241 HRB.utils.notify('Slack subscriptions are not enabled on this page.', {cssClass:'error'}); 1242 break; 1243 case 'direct_message_channel_error': 1244 HRB.utils.notify('Subscriptions arenât supported in direct messages. Try subscribing again and choose a channel instead.', {cssClass:'error'}); 1245 break 1246 case 'duplicate_error': 1247 HRB.utils.notify("You're already subscribed to get Slack notifications in that channel.", {cssClass:'error'}); 1248 break; 1249 case 'duplicate_private_channel_error': 1250 HRB.utils.notify(`You're already subscribed to get Slack notifications in #${channelName}. Invite the @Statuspage app to that channel to start getting status updates.`, {cssClass: 'error'}); 1251 break; 1252 case 'default_success': 1253 HRB.utils.notify("You're now subscribed to get Statuspage updates in Slack!", {cssClass:'success'}); 1254 break; 1255 case 'private_channel_success': 1256 HRB.utils.notify(`IMPORTANT: Invite the @Statuspage app to your Slack channel #${channelName} to start getting status updates.`, {cssClass:'success'}); 1257 break; 1258 } 1259 } 1260 }); 1261</script>
1261 1262 1263 1264<!-- FOR FLASH NOTICES --> 1265 1266<!-- FOR ERROR --> 1267 1268 1269
1269<script> 1270 $(function() { 1271 var $link = $('<span class="color-secondary powered-by"><a class="color-secondary" target="_blank" rel="noopener noreferrer nofollow" href="https://www.atlassian.com/software/statuspage?utm_campaign=www.beehiivstatus.com&utm_content=SP-notifications&utm_medium=powered-by&utm_source=inapp">Powered by Atlassian Statuspage</a></span>'); 1272 1273 var setPoweredByStyles = function() { 1274 if (!$('.powered-by').length) { 1275 $link.appendTo($('.page-footer')) 1276 } 1277 $('.powered-by').attr('style', 'display: inline !important; visibility:visible !important; opacity: 1 !important; position:static !important; text-indent:0px !important; transform:scale(1) !important'); 1278 } 1279 1280 setInterval(setPoweredByStyles, 1000); 1281 }); 1282</script>
1282 1283 1284 1285 1286 1287 1288 </body> 1289</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.