PageSourceSearch

https://www.beehiivstatus.com/history

html beehiivstatus.com collected 2026-10-04 21:27:09 UTC 75,392 bytes, 1,289 lines download raw bytes

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&#39;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&#39;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&nbsp;
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="{&quot;page_status&quot;:{&quot;page&quot;:{&quot;name&quot;:&quot;beehiiv&quot;,&quot;subdomain&quot;:&quot;beehiiv1&quot;,&quot;domain&quot;:&quot;www.beehiivstatus.com&quot;,&quot;created_at&quot;:&quot;2024-04-05T13:20:37.349-04:00&quot;,&quot;updated_at&quot;:&quot;2026-10-04T15:54:13.288-04:00&quot;,&quot;url&quot;:&quot;https://www.beehiiv.com&quot;,&quot;hidden_from_search&quot;:false,&quot;css_body_background_color&quot;:&quot;ffffff&quot;,&quot;css_font_color&quot;:&quot;333333&quot;,&quot;css_light_font_color&quot;:&quot;757575&quot;,&quot;css_greens&quot;:&quot;1e8542&quot;,&quot;css_yellows&quot;:&quot;f1c40f&quot;,&quot;css_oranges&quot;:&quot;b35e14&quot;,&quot;css_reds&quot;:&quot;de2f1b&quot;,&quot;allow_page_subscribers&quot;:true,&quot;allow_incident_subscribers&quot;:true,&quot;notifications_from_email&quot;:null,&quot;allow_email_subscribers&quot;:true,&quot;allow_sms_subscribers&quot;:true,&quot;twitter_username&quot;:&quot;beehiivstatus&quot;,&quot;branding&quot;:&quot;basic&quot;,&quot;support_url&quot;:&quot;https://support.beehiiv.com&quot;,&quot;allow_webhook_subscribers&quot;:false,&quot;css_border_color&quot;:&quot;E0E0E0&quot;,&quot;css_graph_color&quot;:&quot;3498db&quot;,&quot;css_link_color&quot;:&quot;207ab6&quot;,&quot;page_description&quot;:&quot;Welcome to beehiiv&#39;s status page. We will report incidents, outages, and scheduled maintenance here for the beehiiv.com newsletter platform&quot;,&quot;activity_score&quot;:153,&quot;headline&quot;:null,&quot;viewers_must_be_team_members&quot;:false,&quot;ip_filters&quot;:null,&quot;css_blues&quot;:&quot;207ab6&quot;,&quot;time_zone&quot;:&quot;Eastern Time (US \u0026 Canada)&quot;,&quot;notifications_reply_to_email&quot;:null,&quot;notifications_email_footer&quot;:&quot;You received this email because you are subscribed to beehiiv&#39;s service status notifications.&quot;,&quot;allow_rss_atom_feeds&quot;:true,&quot;black_hole&quot;:null,&quot;over_allocations_cohort&quot;:null,&quot;over_allocations_resolved_at&quot;:null,&quot;custom_components_limit&quot;:null,&quot;allow_slack_subscribers&quot;:true,&quot;css_no_data&quot;:&quot;b3bac5&quot;,&quot;deleted_at&quot;:null,&quot;allow_teams_subscription&quot;:true,&quot;max_maintenance_automation_allowed&quot;:null,&quot;custom_email_template&quot;:false,&quot;hero_cover&quot;:{&quot;updated_at&quot;:null,&quot;original_url&quot;:&quot;&quot;,&quot;size&quot;:null,&quot;normal_url&quot;:&quot;&quot;,&quot;retina_url&quot;:&quot;&quot;},&quot;transactional_logo&quot;:{&quot;updated_at&quot;:&quot;2024-04-08T02:03:15.000+00:00&quot;,&quot;original_url&quot;:&quot;//dka575ofm4ao0.cloudfront.net/pages-transactional_logos/original/840286/beehiiv_Logo-02-7bd77b15-c945-4734-ae80-864f5cbae746.png&quot;,&quot;size&quot;:17437,&quot;normal_url&quot;:&quot;//dka575ofm4ao0.cloudfront.net/pages-transactional_logos/normal/840286/beehiiv_Logo-02-7bd77b15-c945-4734-ae80-864f5cbae746.png&quot;,&quot;retina_url&quot;:&quot;//dka575ofm4ao0.cloudfront.net/pages-transactional_logos/retina/840286/beehiiv_Logo-02-7bd77b15-c945-4734-ae80-864f5cbae746.png&quot;},&quot;favicon_logo&quot;:{&quot;updated_at&quot;:&quot;2024-04-08T17:30:51.000+00:00&quot;,&quot;size&quot;:17437,&quot;url&quot;:&quot;//dka575ofm4ao0.cloudfront.net/pages-favicon_logos/original/840286/beehiiv_Logo-02-882dd988-6bb5-4046-81e5-ea45cb176f34.png&quot;},&quot;email_logo&quot;:{&quot;updated_at&quot;:null,&quot;original_url&quot;:&quot;&quot;,&quot;size&quot;:null,&quot;normal_url&quot;:&quot;&quot;,&quot;retina_url&quot;:&quot;&quot;},&quot;twitter_logo&quot;:{&quot;updated_at&quot;:null,&quot;size&quot;:null,&quot;url&quot;:&quot;&quot;},&quot;id&quot;:&quot;qllwgqgxzymk&quot;,&quot;organization_id&quot;:&quot;8697tylzx817&quot;}},&quot;components&quot;:[{&quot;status&quot;:&quot;operational&quot;,&quot;name&quot;:&quot;Publication websites&quot;,&quot;created_at&quot;:&quot;2024-04-05T13:22:11.881-04:00&quot;,&quot;updated_at&quot;:&quot;2026-05-31T20:15:07.152-04:00&quot;,&quot;position&quot;:1,&quot;description&quot;:&quot;Public facing newsletter websites, e.g. https://product.beehiiv.com/&quot;,&quot;showcase&quot;:true,&quot;start_date&quot;:&quot;2024-04-04T20:00:00.000-04:00&quot;,&quot;id&quot;:&quot;p7kr6bq5v16q&quot;,&quot;group_id&quot;:null,&quot;page_id&quot;:&quot;qllwgqgxzymk&quot;,&quot;group&quot;:false,&quot;only_show_if_degraded&quot;:false},{&quot;status&quot;:&quot;operational&quot;,&quot;name&quot;:&quot;App Admin&quot;,&quot;created_at&quot;:&quot;2024-04-05T13:22:39.344-04:00&quot;,&quot;updated_at&quot;:&quot;2026-05-31T20:15:07.173-04:00&quot;,&quot;position&quot;:2,&quot;description&quot;:&quot;The newsletter management portal at https://app.beehiiv.com&quot;,&quot;showcase&quot;:true,&quot;start_date&quot;:&quot;2024-04-04T20:00:00.000-04:00&quot;,&quot;id&quot;:&quot;tkx51qw4sch6&quot;,&quot;group_id&quot;:null,&quot;page_id&quot;:&quot;qllwgqgxzymk&quot;,&quot;group&quot;:false,&quot;only_show_if_degraded&quot;:false},{&quot;status&quot;:&quot;operational&quot;,&quot;name&quot;:&quot;Public API&quot;,&quot;created_at&quot;:&quot;2024-04-05T13:22:57.350-04:00&quot;,&quot;updated_at&quot;:&quot;2026-05-31T20:15:07.190-04:00&quot;,&quot;position&quot;:3,&quot;description&quot;:&quot;beehiiv&#39;s public API, documented at developer.beehiiv.com&quot;,&quot;showcase&quot;:true,&quot;start_date&quot;:&quot;2024-04-04T20:00:00.000-04:00&quot;,&quot;id&quot;:&quot;h31bmgcqm77d&quot;,&quot;group_id&quot;:null,&quot;page_id&quot;:&quot;qllwgqgxzymk&quot;,&quot;group&quot;:false,&quot;only_show_if_degraded&quot;:false},{&quot;status&quot;:&quot;operational&quot;,&quot;name&quot;:&quot;MCP&quot;,&quot;created_at&quot;:&quot;2026-04-07T15:17:43.139-04:00&quot;,&quot;updated_at&quot;:&quot;2026-05-31T20:15:07.209-04:00&quot;,&quot;position&quot;:4,&quot;description&quot;:&quot;AI assistant integrations via the Model Context Protocol at mcp.beehiiv.com&quot;,&quot;showcase&quot;:true,&quot;start_date&quot;:&quot;2026-03-23T20:00:00.000-04:00&quot;,&quot;id&quot;:&quot;mzgf0f0y9f6v&quot;,&quot;group_id&quot;:null,&quot;page_id&quot;:&quot;qllwgqgxzymk&quot;,&quot;group&quot;:false,&quot;only_show_if_degraded&quot;:false},{&quot;status&quot;:&quot;operational&quot;,&quot;name&quot;:&quot;Sending emails&quot;,&quot;created_at&quot;:&quot;2024-04-05T13:23:55.515-04:00&quot;,&quot;updated_at&quot;:&quot;2026-08-21T14:44:21.563-04:00&quot;,&quot;position&quot;:5,&quot;description&quot;:&quot;Newsletters and other emails sent out through the beehiiv platform&quot;,&quot;showcase&quot;:true,&quot;start_date&quot;:&quot;2024-04-04T20:00:00.000-04:00&quot;,&quot;id&quot;:&quot;85z78gl8ymqk&quot;,&quot;group_id&quot;:null,&quot;page_id&quot;:&quot;qllwgqgxzymk&quot;,&quot;group&quot;:false,&quot;only_show_if_degraded&quot;:false},{&quot;status&quot;:&quot;operational&quot;,&quot;name&quot;:&quot;Email Metrics&quot;,&quot;created_at&quot;:&quot;2024-04-05T13:25:05.095-04:00&quot;,&quot;updated_at&quot;:&quot;2026-05-31T20:15:07.245-04:00&quot;,&quot;position&quot;:6,&quot;description&quot;:&quot;Reporting on activity in emails sent through beehiiv (e.g. opens, clicks, unsubscribes)&quot;,&quot;showcase&quot;:true,&quot;start_date&quot;:&quot;2024-04-04T20:00:00.000-04:00&quot;,&quot;id&quot;:&quot;lv0cd35f0gwk&quot;,&quot;group_id&quot;:null,&quot;page_id&quot;:&quot;qllwgqgxzymk&quot;,&quot;group&quot;:false,&quot;only_show_if_degraded&quot;:false},{&quot;status&quot;:&quot;operational&quot;,&quot;name&quot;:&quot;Embed forms&quot;,&quot;created_at&quot;:&quot;2024-04-05T13:25:35.273-04:00&quot;,&quot;updated_at&quot;:&quot;2026-05-31T20:15:07.263-04:00&quot;,&quot;position&quot;:7,&quot;description&quot;:&quot;Newsletter subscribe forms that can be embedded on other websites&quot;,&quot;showcase&quot;:true,&quot;start_date&quot;:&quot;2024-04-04T20:00:00.000-04:00&quot;,&quot;id&quot;:&quot;vy62xdnr6rh1&quot;,&quot;group_id&quot;:null,&quot;page_id&quot;:&quot;qllwgqgxzymk&quot;,&quot;group&quot;:false,&quot;only_show_if_degraded&quot;:false},{&quot;status&quot;:&quot;operational&quot;,&quot;name&quot;:&quot;SendGrid API v3&quot;,&quot;created_at&quot;:&quot;2024-04-12T18:00:37.623-04:00&quot;,&quot;updated_at&quot;:&quot;2026-08-21T14:44:21.576-04:00&quot;,&quot;position&quot;:8,&quot;description&quot;:null,&quot;showcase&quot;:false,&quot;start_date&quot;:null,&quot;id&quot;:&quot;sq3lz7k15xgw&quot;,&quot;group_id&quot;:null,&quot;page_id&quot;:&quot;qllwgqgxzymk&quot;,&quot;group&quot;:false,&quot;only_show_if_degraded&quot;:false},{&quot;status&quot;:&quot;operational&quot;,&quot;name&quot;:&quot;SendGrid Event Webhook&quot;,&quot;created_at&quot;:&quot;2024-04-12T18:00:43.432-04:00&quot;,&quot;updated_at&quot;:&quot;2026-04-07T15:18:13.673-04:00&quot;,&quot;position&quot;:9,&quot;description&quot;:null,&quot;showcase&quot;:false,&quot;start_date&quot;:null,&quot;id&quot;:&quot;6vbhrwc1xhdj&quot;,&quot;group_id&quot;:null,&quot;page_id&quot;:&quot;qllwgqgxzymk&quot;,&quot;group&quot;:false,&quot;only_show_if_degraded&quot;:false},{&quot;status&quot;:&quot;operational&quot;,&quot;name&quot;:&quot;Email statistics collection&quot;,&quot;created_at&quot;:&quot;
9522024-04-12T18:00:49.109-04:00&quot;,&quot;updated_at&quot;:&quot;2026-05-05T12:17:26.180-04:00&quot;,&quot;position&quot;:10,&quot;description&quot;:null,&quot;showcase&quot;:true,&quot;start_date&quot;:null,&quot;id&quot;:&quot;wyv94wwynlwn&quot;,&quot;group_id&quot;:null,&quot;page_id&quot;:&quot;qllwgqgxzymk&quot;,&quot;group&quot;:false,&quot;only_show_if_degraded&quot;:false}],&quot;months&quot;:[{&quot;name&quot;:&quot;October&quot;,&quot;year&quot;:2026,&quot;starts_on&quot;:4,&quot;days&quot;:31,&quot;incidents&quot;:[]},{&quot;name&quot;:&quot;September&quot;,&quot;year&quot;:2026,&quot;starts_on&quot;:2,&quot;days&quot;:30,&quot;incidents&quot;:[]},{&quot;name&quot;:&quot;August&quot;,&quot;year&quot;:2026,&quot;starts_on&quot;:6,&quot;days&quot;:31,&quot;incidents&quot;:[{&quot;code&quot;:&quot;mlwn8q7ld7rs&quot;,&quot;name&quot;:&quot;Some newsletters are experiencing incomplete post sends&quot;,&quot;message&quot;:&quot;This incident has been resolved.&quot;,&quot;impact&quot;:&quot;major&quot;,&quot;timestamp&quot;:&quot;Aug \u003cvar data-var=&#39;date&#39;\u003e21\u003c/var\u003e, \u003cvar data-var=&#39;time&#39;\u003e10:31\u003c/var\u003e - \u003cvar data-var=&#39;time&#39;\u003e14:44\u003c/var\u003e EDT&quot;}]}],&quot;show_component_filter&quot;:false,&quot;show_uptime_calendar&quot;:true,&quot;component_filter&quot;:null,&quot;start_time&quot;:&quot;2026-08-01T00:00:00-04:00&quot;,&quot;end_time&quot;:&quot;2026-10-31T23:59:59-04:00&quot;,&quot;a11yHeadings&quot;: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">&larr;</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&amp;utm_content=SP-notifications&amp;utm_medium=powered-by&amp;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&amp;utm_content=SP-notifications&amp;utm_medium=powered-by&amp;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.