CINXE.COM
How to Create a Developer-Friendly On-Call Schedule in 7 steps | Better Stack Community
<!DOCTYPE html> <html lang='en' prefix='og: https://ogp.me/ns#'> <head> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'> <title>How to Create a Developer-Friendly On-Call Schedule in 7 steps | Better Stack Community</title> <meta content='width=device-width,initial-scale=1' name='viewport'> <link href='https://cdnjs.betterstack.com' rel='preconnect'> <link href='https://cdnjs.betterstack.com' rel='dns-prefetch'> <link href='https://www.googletagmanager.com' rel='preconnect'> <link href='https://www.googletagmanager.com' rel='dns-prefetch'> <link href='https://plausible.io' rel='preconnect'> <link href='https://plausible.io' rel='dns-prefetch'> <link href='https://forms.hsforms.com' rel='preconnect'> <link href='https://forms.hsforms.com' rel='dns-prefetch'> <link href='https://js.hsforms.net' rel='preconnect'> <link href='https://js.hsforms.net' rel='dns-prefetch'> <link href='https://connect.facebook.net' rel='preconnect'> <link href='https://connect.facebook.net' rel='dns-prefetch'> <link href='https://static.ads-twitter.com' rel='preconnect'> <link href='https://static.ads-twitter.com' rel='dns-prefetch'> <link href='https://bat.bing.com' rel='preconnect'> <link href='https://bat.bing.com' rel='dns-prefetch'> <link href='https://snap.licdn.com' rel='preconnect'> <link href='https://snap.licdn.com' rel='dns-prefetch'> <link href='https://googleads.g.doubleclick.net' rel='preconnect'> <link href='https://googleads.g.doubleclick.net' rel='dns-prefetch'> <link href='https://analytics.twitter.com' rel='preconnect'> <link href='https://analytics.twitter.com' rel='dns-prefetch'> <link href='/assets/favicon-ad4a170f31b6075c4d7ea5e23ce36677b3412bdd2fabc48d1b688bc535c8821c.png' rel='shortcut icon'> <meta content='Trying to build a new on-call schedule or just fix an existing one that doesn't work? Here is how to do it the right way.' name='description'> <meta content='website' property='og:type'> <meta content='How to Create a Developer-Friendly On-Call Schedule in 7 steps | Better Stack Community' property='og:title'> <meta content='Trying to build a new on-call schedule or just fix an existing one that doesn't work? Here is how to do it the right way.' property='og:description'> <meta content='https://betterstack.com/og-image/on-call-scheduling.png' property='og:image'> <meta content='summary_large_image' property='twitter:card'> <meta content='betterstackhq' property='twitter:site'> <meta content='How to Create a Developer-Friendly On-Call Schedule in 7 steps | Better Stack Community' property='twitter:title'> <meta content='Trying to build a new on-call schedule or just fix an existing one that doesn't work? Here is how to do it the right way.' property='twitter:description'> <meta content='https://betterstack.com/og-image/on-call-scheduling.png' property='twitter:image'> <meta content='no-cache' name='turbo-cache-control'> <link href='https://betterstack.com/community/guides/incident-management/on-call-scheduling/' rel='canonical'> <meta content='https://betterstack.com/community/guides/incident-management/on-call-scheduling/' property='og:url'> <meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="pXubocJ0DiAGF6NgT-SYw1zBMjS6OTAMcQ7jnaQSPw01AJuN35d088wuSZfaWleJvSODMLDqV3DN5DcUe8fjXQ" /> <meta name="csp-nonce" content="511316a23e6ed45b33fbddc9431be69e" /> <link href='https://cdnjs.betterstack.com/@vueform/multiselect@2.5.7/themes/default.css' rel='stylesheet'> <link href='https://cdnjs.betterstack.com/floating-vue@2.0.0-beta.24/dist/style.css' rel='stylesheet'> <link href='https://cdnjs.betterstack.com/@docsearch/css@3.5.2/dist/style.css' rel='stylesheet'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-Regular.woff2' rel='preload'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-Regular.woff' rel='preload'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-Medium.woff2' rel='preload'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-Medium.woff' rel='preload'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-SemiBold.woff2' rel='preload'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-SemiBold.woff' rel='preload'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-Bold.woff2' rel='preload'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-Bold.woff' rel='preload'> <style> @font-face { font-family: "Roobert"; font-style: normal; font-weight: 400; font-display: swap; src: url("/static/fonts/Roobert/Roobert-Regular.woff2") format("woff2"), url("/static/fonts/Roobert/Roobert-Regular.woff") format("woff"); } @font-face { font-family: "Roobert"; font-style: normal; font-weight: 500; font-display: swap; src: url("/static/fonts/Roobert/Roobert-Medium.woff2") format("woff2"), url("/static/fonts/Roobert/Roobert-Medium.woff") format("woff"); } @font-face { font-family: "Roobert"; font-style: normal; font-weight: 600; font-display: swap; src: url("/static/fonts/Roobert/Roobert-SemiBold.woff2") format("woff2"), url("/static/fonts/Roobert/Roobert-SemiBold.woff") format("woff"); } @font-face { font-family: "Roobert"; font-style: normal; font-weight: 700; font-display: swap; src: url("/static/fonts/Roobert/Roobert-Bold.woff2") format("woff2"), url("/static/fonts/Roobert/Roobert-Bold.woff") format("woff"); } </style> <link rel="preload" href="/static/fonts/Helvetica/HelveticaNowText-Regular.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link rel="preload" href="/static/fonts/Helvetica/HelveticaNowText-Medium.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link rel="preload" href="/static/fonts/Helvetica/HelveticaNowText-Bold.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link rel="preload" href="/static/fonts/Helvetica/HelveticaNowDisplay-Medium.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link rel="preload" href="/static/fonts/Helvetica/HelveticaNowDisplay-Bold.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <style> @font-face { font-family: 'Helvetica Now Text'; src: local('Helvetica Now Text Regular'), local('HelveticaNowText-Regular'), url('/static/fonts/Helvetica/HelveticaNowText-Regular.woff2') format('woff2'); font-weight: 400; font-style: normal; font-display: swap; } @font-face { font-family: 'Helvetica Now Text'; src: local('Helvetica Now Text Medium'), local('HelveticaNowText-Medium'), url('/static/fonts/Helvetica/HelveticaNowText-Medium.woff2') format('woff2'); font-weight: 500; font-style: normal; font-display: swap; } @font-face { font-family: 'Helvetica Now Text'; src: local('Helvetica Now Text Bold'), local('HelveticaNowText-Bold'), url('/static/fonts/Helvetica/HelveticaNowText-Bold.woff2') format('woff2'); font-weight: 700; font-style: normal; font-display: swap; } @font-face { font-family: 'Helvetica Now Display'; src: local('Helvetica Now Display Medium'), local('HelveticaNowDisplay-Medium'), url('/static/fonts/Helvetica/HelveticaNowDisplay-Medium.woff2') format('woff2'); font-weight: 500; font-style: normal; font-display: swap; } @font-face { font-family: 'Helvetica Now Display'; src: local('Helvetica Now Display Bold'), local('HelveticaNowDisplay-Bold'), url('/static/fonts/Helvetica/HelveticaNowDisplay-Bold.woff2') format('woff2'); font-weight: 700; font-style: normal; font-display: swap; } </style> <script defer='' src='https://www.googletagmanager.com/gtag/js?id=G-9FLKD0MQYY'></script> <script defer='' nonce='511316a23e6ed45b33fbddc9431be69e'> window.dataLayer = window.dataLayer || []; function gtag(){window.dataLayer.push(arguments);} gtag('js', new Date()); gtag('set', 'linker', { 'domains': ["betterstack.com","betteruptime.com","uptime.betterstack.com","logtail.com","telemetry.betterstack.com"] }); gtag('config', 'G-9FLKD0MQYY', { linker: { domains: ["betterstack.com","betteruptime.com","uptime.betterstack.com","logtail.com","telemetry.betterstack.com"] }}); gtag('config', 'AW-10805602682', { linker: { domains: ["betterstack.com","betteruptime.com","uptime.betterstack.com","logtail.com","telemetry.betterstack.com"] }}); </script> <script defer='' nonce='511316a23e6ed45b33fbddc9431be69e'> !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '1062799887416376'); </script> <script defer='' nonce='511316a23e6ed45b33fbddc9431be69e'> !function(e,t,n,s,u,a){e.twq||(s=e.twq=function(){s.exe?s.exe.apply(s,arguments):s.queue.push(arguments); },s.version='1.1',s.queue=[],u=t.createElement(n),u.async=!0,u.src='https://static.ads-twitter.com/uwt.js', a=t.getElementsByTagName(n)[0],a.parentNode.insertBefore(u,a))}(window,document,'script'); twq('config','o7hjd'); </script> <script data-domain='betterstack.com' defer='' src='https://plausible.io/js/plausible.js'></script> <script defer='' nonce='511316a23e6ed45b33fbddc9431be69e'> !function(e,t,n,a,o){var c,r,d;e[o]=e[o]||[],c=function(){var t={ti:"17516957"};t.q=e[o],e[o]=new UET(t),e[o].push("pageLoad")}, (r=t.createElement(n)).src="//bat.bing.com/bat.js",r.async=1,r.onload=r.onreadystatechange=function(){var e=this.readyState;e&&"loaded"!==e&&"complete"!==e|| (c(),r.onload=r.onreadystatechange=null)},m=t.querySelector("[nonce]"),m&&r.setAttribute("nonce",m.nonce||m.getAttribute("nonce")),(d=t.getElementsByTagName(n) [0]).parentNode.insertBefore(r,d)}(window,document,"script",0,"uetq"); </script> <script defer='' nonce='511316a23e6ed45b33fbddc9431be69e'> _linkedin_partner_id = "3533474"; window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || []; window._linkedin_data_partner_ids.push(_linkedin_partner_id); (function(l) {if (!l){window.lintrk = function(a,b){window.lintrk.q.push([a,b])}; window.lintrk.q=[]}var s = document.getElementsByTagName("script")[0]; var b = document.createElement("script");b.type = "text/javascript";b.async = true; b.nonce = "511316a23e6ed45b33fbddc9431be69e"; b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js"; s.parentNode.insertBefore(b, s);})(window.lintrk); </script> <script defer='' nonce='511316a23e6ed45b33fbddc9431be69e'> !function(w,d){if(!w.rdt){var p=w.rdt=function(){p.sendEvent?p.sendEvent.apply(p,arguments):p.callQueue.push(arguments)};p.callQueue=[];var t=d.createElement("script");t.src="https://www.redditstatic.com/ads/pixel.js",t.async=!0;var s=d.getElementsByTagName("script")[0];s.parentNode.insertBefore(t,s)}}(window,document); rdt('init', 't2_bywzx23t', {"optOut":false,"useDecimalCurrencyValues":true}); rdt('track', 'PageVisit'); </script> <script defer='' nonce='511316a23e6ed45b33fbddc9431be69e'> document.addEventListener('turbo:load', function(event) { if (typeof gtag === 'function') { gtag('set', 'page_path', location.pathname); fbq('track', 'PageView'); twq('track','PageView'); uetq.push('event', 'page_view', { 'page_path': location.pathname }); rdt('track', 'PageVisit'); return gtag('event', 'page_view'); } }); // remove noscript elements which break DOMParser document.addEventListener('turbo:before-render', function (event) { event.detail.newBody.querySelectorAll('noscript').forEach((e) => e.remove()); }); </script> <script type="importmap" data-turbo-track="reload" nonce="511316a23e6ed45b33fbddc9431be69e">{ "imports": { "admin_controllers/article_form_controller": "/assets/admin_controllers/article_form_controller-093d791912986e6d67b7a2fcd5295875dd92901ff6ce65d2c7a244ff95cbaf9d.js", "admin_controllers": "/assets/admin_controllers/index-251bd0d37d81d4101c7746067926201b8ccb0a3fcb4ced1e27a144e7f27e1964.js", "api/NaturalLanguageParserApi": "/assets/api/NaturalLanguageParserApi-85e7f98db0cb7fc89adeed477ecc3f68b1fa7ff41237591b77ec5e9b7c5714f0.js", "application_controllers/account_settings_controller": "/assets/application_controllers/account_settings_controller-0c78fc0dde7cb83830c6a6e0cd69488dacbbb2165ba18fce9831accd172a22ce.js", "application_controllers/command_controller": "/assets/application_controllers/command_controller-033b711b2e0fe9561562f0f7fc741976a65edd54294a5b074bd416954e15af99.js", "application_controllers/command_palette_controller": "/assets/application_controllers/command_palette_controller-63c7905f99026161d164192e26e7bbc822673d236189d07573a0faecae9fcca1.js", "application_controllers/command_palette_hierarchy_controller": "/assets/application_controllers/command_palette_hierarchy_controller-03324b50b668dbc97fa3d4cfaff34614d2016dd4bd6ca7e6188663af1e23b282.js", "application_controllers/dropdown_controller": "/assets/application_controllers/dropdown_controller-52e7f44fe04d4fd1035d23198a9a61730bf5f56373eb3119f1395308d14f1fbe.js", "application_controllers/front_chat_controller": "/assets/application_controllers/front_chat_controller-f743662f29f7afe23a682e2351074dce796cdcf3103169e268dbcc9e9a5e5fe4.js", "application_controllers/hotkeys_controller": "/assets/application_controllers/hotkeys_controller-2c32447898227cf3b026adcb96a6477228ee6dd66de62902226ae75e768764b5.js", "application_controllers": "/assets/application_controllers/index-aa644584c697bee855575cba40aec5cf05a967074d1fc12f678362f238447604.js", "application_controllers/input_self_select_controller": "/assets/application_controllers/input_self_select_controller-587ca3c4027f85377bf8d801166f68c26ff22a37c0efd6f5fd16fab4aa377631.js", "application_controllers/marketing_banner_controller": "/assets/application_controllers/marketing_banner_controller-ad11b32b6cc2cef94caf518358a6a61653f0276a130078720ab96569480f696a.js", "application_controllers/marketing_banner_form_controller": "/assets/application_controllers/marketing_banner_form_controller-bc9c74d362d3cfbcf515e7775015dbf660b424f3e7cc23f3326767f338bd1d44.js", "application_controllers/menu_controller": "/assets/application_controllers/menu_controller-1242dee1a020ff79d024cc107b27fe751d9bab822201808bbae462f96f5e04d1.js", "application_controllers/nav_toggle_controller": "/assets/application_controllers/nav_toggle_controller-a5303aa9c92cf2089a725ef839eec0eb899179be7bad2bf937e71a0da318937d.js", "application_controllers/notification_toast_controller": "/assets/application_controllers/notification_toast_controller-4a7916ac3cb0201a02f4a2035f135dbce18fe0c68c29db6b55772e1278fc3f85.js", "application_controllers/notification_toasts_controller": "/assets/application_controllers/notification_toasts_controller-cc673788aa19747ae5b1cad480442d3bacc4e72b485f486e1f21a1f47c599d22.js", "application_controllers/payment/calculator_controller": "/assets/application_controllers/payment/calculator_controller-bc992e3fcd9906bc2478a5403899565dc768c659116f59cc74514ad873eaea70.js", "application_controllers/payment/change_plan_controller": "/assets/application_controllers/payment/change_plan_controller-6e868397ee1bc2e35e99187d69834227c09c2d507098607a30496f8e83bca3a6.js", "application_controllers/payment/enter_card_controller": "/assets/application_controllers/payment/enter_card_controller-bdc191a9092986bc6a53fff514dadd5fffae6bbcbfa0a56394d47a35b17119cf.js", "application_controllers/payment/plan_controller": "/assets/application_controllers/payment/plan_controller-e001672c9f0dbe0d5f3db235e637a0de7a06db10e56b1438ffbb2829e7c879f6.js", "application_controllers/payment/refund_controller": "/assets/application_controllers/payment/refund_controller-f0e76d028f19f14a902b7ee94c74e88cf03e97c41d9e4d767bf7ff1fab9bfbea.js", "application_controllers/plan_product_controller": "/assets/application_controllers/plan_product_controller-fd3609dcf56b5849a034dde2558bf83a0021412185845b83299aa1e18051240b.js", "application_controllers/plan_product_variable_controller": "/assets/application_controllers/plan_product_variable_controller-4ce92a01c700b623202a39711276a6c832dbec7e3d228a3f5b32ad6eb64b9d0a.js", "application_controllers/prefilled_demo_modal_controller": "/assets/application_controllers/prefilled_demo_modal_controller-b903f7bba8a860dd64a1242a732ee55951f2ca90393f43e4c73d46fea1ecee53.js", "application_controllers/push_notifications_controller": "/assets/application_controllers/push_notifications_controller-2e004a7d669fdc2fef6802fefde8d63b22521a447d2876ac5b886b8bbfe7abb2.js", "application_controllers/roles/permission_toggle_controller": "/assets/application_controllers/roles/permission_toggle_controller-239116552b060934f75fb7dc5456c23929b0123d4f15b66de7c4e2d01c79f434.js", "application_controllers/search/base_controller": "/assets/application_controllers/search/base_controller-70ebd53d1732fed0f93af77b0a5641d2756c359bfcce5aea6fa19319aedc4abb.js", "application_controllers/single_sign_on/generic_controller": "/assets/application_controllers/single_sign_on/generic_controller-8a38c9acced8bc901e4389e11632c56533bd287d7660db4727eb3ee2da02a24e.js", "application_controllers/single_sign_on/okta_controller": "/assets/application_controllers/single_sign_on/okta_controller-301c6f5ef5ba086f7fe432ff24e4ac3c031c06102b7a0da6ba94d1453f0bacb8.js", "application_controllers/transition_controller": "/assets/application_controllers/transition_controller-c6a61c0df4f842c56ee6f48e8c615d5c5828536643c801b0cdca2e2fd6086ed3.js", "articles/tabs": "/assets/articles/tabs-111303381549055f8295ac48a24c41debb4a2d570160fc669b83e56e16b6dcd3.js", "articles_controllers/body_controller": "/assets/articles_controllers/body_controller-e46956b8ad9bdb57ef53871c70b0152582b9f9c2c516eb6fc0960194252d0c45.js", "articles_controllers/clipboard_controller": "/assets/articles_controllers/clipboard_controller-c3fe3cf960ab3975ae45ae7534d18a183cd0b7aa0cb52c8cc3c6a9486e3e5f5c.js", "articles_controllers/code_controller": "/assets/articles_controllers/code_controller-ba91cc6d90f367aabd0aea8d58fe3457a029e81dba595656792ba46d233345f0.js", "articles_controllers": "/assets/articles_controllers/index-111d288d1c02d07a6e35f2e5a183c1684ebc430f926dc285e2ac90577f0cc90a.js", "articles_controllers/lightbox_controller": "/assets/articles_controllers/lightbox_controller-47f223cbbc128ac82d59fe796e6b00ccd3d42cff086ab52631cfaf0c34b24a0c.js", "articles_controllers/search_controller": "/assets/articles_controllers/search_controller-0d3a342441e0713b1930414fb0e7c1716dead6fb5ce47f9c35dfccb2ea554069.js", "articles_controllers/toc_controller": "/assets/articles_controllers/toc_controller-c9ec659d078e715f8447e6bb4ea289b29b6c4e68dc17a97e168cf6e15b7a1386.js", "articles_controllers/toggle_controller": "/assets/articles_controllers/toggle_controller-e7d2aef0234491a5b059688097a6f1d6d9557abc7fe579f2063ead389c57800b.js", "betterstack_v2/carousel": "/assets/betterstack_v2/carousel-05024cefdac5d83dea490e1df67ba50fedb91d6a3e537540e2bb2c1b92e00694.js", "betterstack_v2/collapse": "/assets/betterstack_v2/collapse-1cdfd31392c35357359391ba794e3ef0f13a72bcb9c5b8270316b2e0d4f8d11e.js", "betterstack_v2/gallery": "/assets/betterstack_v2/gallery-4c68f91383c831f5389efe2679042b625754e0ac00bf09c02f36bc2ce3cb683a.js", "betterstack_v2/menu": "/assets/betterstack_v2/menu-b1ec6baad54fa8b78965f501426b1d58ec12eb070d399ff582cae7078cfd260f.js", "betterstack_v2/search": "/assets/betterstack_v2/search-09cfb8e126e955ecaeaf2e90deb83fd79a6cda9ee26433f97a0e577e7f7c3a33.js", "betterstack_v2/slide": "/assets/betterstack_v2/slide-c6d35378bfed6bea175bc7493e0d5a18b4700f2bd773959c4d869dd645a79adf.js", "betterstack_v2/toggle": "/assets/betterstack_v2/toggle-65841dc64993ca0e98881ed758b2f7533eaded5a4b8b405b47d55d8dbe9fca45.js", "channels": "/assets/channels/index-0c17d2125cae6f89a5c8d36d4e8d48d7e46b72e792349605b94a92822223fedf.js", "common/aos": "/assets/common/aos-2b4aafcba2495ae196d810350e01a2acc682c5aedec5bd77cbfe0d520dc2957f.js", "common/billing": "/assets/common/billing-2a4ae4655f472eab99b30ded483e7ecbc32d1ca1d10054f3ff83dbb8b8e6a157.js", "common/copy": "/assets/common/copy-0a1dad74b3201175c8b20b23d840f49ea78d3e8109602788431b95d09a218c4d.js", "common/data-disable-with-spinner": "/assets/common/data-disable-with-spinner-c136ea5779d65691524fb4e83a37bd3339094233087f672b7338c58cd77493bf.js", "common/drag-n-drop": "/assets/common/drag-n-drop-ec4c29d70a9bf14961617ae1aa3e723519650724c12bf4c406f8be026ae8d4da.js", "common/lazy": "/assets/common/lazy-3eb764101958480a12b2c50eb92af3adde35463ada26d277a0982026c785195f.js", "common/links": "/assets/common/links-09ddbfd3c3bb198b2b6cc37b95c788d284719599f065ca503cd6de55331c8e29.js", "common/modals": "/assets/common/modals-d6289315eb7bfe84680ec1d1f59d05419c173e09fa01528edb2bb6d7ef4e93e2.js", "common/posthog": "/assets/common/posthog-8b1f452704e4760f10ee4ffdac9f26024a09304f9f6e77dd4984bc0eed6a28ec.js", "common/railsSetup": "/assets/common/railsSetup-cfed4802124d3231b1c6441c95ff599b7444e257b726f77735da40bf9ce77b0b.js", "common/recaptchaSubmit": "/assets/common/recaptchaSubmit-00b44082803b95854afff50a43affb332ddebb2a0b83a68a26109aca6b46aab9.js", "common/side-menu-scroll": "/assets/common/side-menu-scroll-116ba69456d0ee789bbce8270028d1a58c82f1b3a6e9d99b44362611ddd833d2.js", "common/stripe": "/assets/common/stripe-400cea45a8d5db0115d23e22e7657e2c8fe6a7e0f7bc8e86e4f448ac91817638.js", "common_controllers/auth_controller": "/assets/common_controllers/auth_controller-2ddea9a34a33af3c43af3bfe03115096e458ef609eee2456817031f375b55f48.js", "common_controllers/carousel_controller": "/assets/common_controllers/carousel_controller-a7d37f67debce15a3533d3827e50aab4128acd45bca67e63df420ab0db11915d.js", "common_controllers/collapse_controller": "/assets/common_controllers/collapse_controller-3dcbee04b1fc36d249c8c9276f073e999824690035244732f7fad43f4bfc4a84.js", "common_controllers/dev_bar_controller": "/assets/common_controllers/dev_bar_controller-887fb16bd45969b56a36edd42d408a732b6a1b4e76373251fabb68e80839e461.js", "common_controllers": "/assets/common_controllers/index-58bf1184d6faabc80d3f76de9c58175eedd057ad900d7d2680bc46a21dcc04a5.js", "common_controllers/modal_opener_controller": "/assets/common_controllers/modal_opener_controller-76dc29e7081350175d5acdd51e81b5e7afbd56f8f59bc43634ab79f106085ebe.js", "common_controllers/onboarding/features_controller": "/assets/common_controllers/onboarding/features_controller-58f75dd4c42bf73a8409dc211caa29fea5bf4a063c4fcaed64acc7ff02ee314f.js", "common_controllers/onboarding/payment_controller": "/assets/common_controllers/onboarding/payment_controller-77824ffe892ec1f4fc2a9ca248c0a16a1fdb2d545daa2c5a58b30f014a7d2126.js", "common_controllers/onboarding/plan_controller": "/assets/common_controllers/onboarding/plan_controller-8b9dea50d1829d05f98c51ffa5f5262af554e2ccc4cc20fa128f21733fb4c7c4.js", "common_controllers/onboarding/telemetry_bundles_controller": "/assets/common_controllers/onboarding/telemetry_bundles_controller-a5251c236c4c6791370c0ac9421646c0a2b13745fc185682589a3b7c7dd92b6f.js", "common_controllers/onboarding/test_call_controller": "/assets/common_controllers/onboarding/test_call_controller-a09824d3d123e665bac0e1ca71970f826a3adee506a57f7295e95ac33df5100e.js", "common_controllers/pricing_controller": "/assets/common_controllers/pricing_controller-969fc984b6aca9d334d635a0c3c7111b74902fc639e74144aeb327704de83c89.js", "common_controllers/recaptcha_controller": "/assets/common_controllers/recaptcha_controller-2f82655e7318b3437aaee278e2523503bf200b01ed0c44c52aead72842128b61.js", "common_controllers/side_nav_controller": "/assets/common_controllers/side_nav_controller-f1670d9245c9eea0c10cabf3eebebc767f2014dff8ef3c4ceb4937ff1cbe06e0.js", "common_controllers/signup_controller": "/assets/common_controllers/signup_controller-b364ca84cf5a3f6d726e5d2daaa7c69d675d6eaced1a6c39e30ce5a09c6530ac.js", "common_controllers/status_page_layout_controller": "/assets/common_controllers/status_page_layout_controller-5be87013e73028cf0c53abbf4e9e2a8bbe1de3e0771be144d1e98a4a528bec5f.js", "common_controllers/timezone_controller": "/assets/common_controllers/timezone_controller-20295f334d67021c59bedd4825c9451b7ad43a7c60d6e725f945da602a0f42ea.js", "components/DatePicker": "/assets/components/DatePicker-436e54a842303f7aa138ce40f4aadd818d868002b208a8deb6d4035eea97fae3.js", "components/Modal": "/assets/components/Modal-766a80275c4b760bc5b7f328e36d077a52dc0ca79f64ce89f621fc3714a5015a.js", "components/NativeSelect": "/assets/components/NativeSelect-f3126370c0f01f32db87fc66d24be93959ecbcbf6eed7e2a790407c8bd07975d.js", "components/SideNavigation": "/assets/components/SideNavigation-af526abe8db98cc22cf7675518f35a4273ce5403df799d2990f67b8c85e2fc88.js", "components/ThemeSwitcher": "/assets/components/ThemeSwitcher-6c10857ff3cb51d1a2cb1b5e67dcb0237862e2e2660775d538c9a2aa696b27ff.js", "components/Toasts": "/assets/components/Toasts-9447093534129b4505773265eb726c5d74e8e461ad4171701de749ce1270e0a5.js", "components/UserMenu": "/assets/components/UserMenu-a929287b16464b4f65cca5c0561c868cbd2b892ff328346639ad0bc3a57d3613.js", "components/WithSpinner": "/assets/components/WithSpinner-9551c08ac773d33332213e2910656ba3d169a292b542433c4010e658544e3d6d.js", "components/admin/ArticleLink": "/assets/components/admin/ArticleLink-6548e3ec0ab7c7d7f20d10be9008e4c2a9478c8c94a29b51d20de8ef160fc8d8.js", "components/admin/ArticlesSelect": "/assets/components/admin/ArticlesSelect-3037dc73bb5c65ad133ded2306231f402d6fbfcfc9340ea792ccb6f957d7eb1c.js", "components/billing/BillableBadge": "/assets/components/billing/BillableBadge-324fcfb6af55f6bcf1307da02550c99214742543b6ec604e5da2315514c18a63.js", "components/billing/ChangePlans": "/assets/components/billing/ChangePlans-6e7f795c5c9f9c8752a7c0f1f7662daeaf56d716ab5692177fa1b56b24ac4cab.js", "components/billing/FeatureCountSlider": "/assets/components/billing/FeatureCountSlider-0ae3feb80b9b35d26f66beab8b2a1eea0e6ffc3f6f5bdd70f36daf14e339f9d4.js", "components/billing/PaymentMethodsSelect": "/assets/components/billing/PaymentMethodsSelect-302a8e448eaf713fb47d636139b3d5d16253e05a0f683d3bb6608318e8d2aafc.js", "components/billing/ProductVariables": "/assets/components/billing/ProductVariables-55783b5fdfc4e11926b3f24a7cb71c3ca371d9bb8a8b70928ff7ddad9f251450.js", "components/billing/ResponderSeatsSelector": "/assets/components/billing/ResponderSeatsSelector-817ba186dfed0791532a95c046649ef4acf8ed17e562673f114e7963aa860c36.js", "components/billing/UpcomingPlan": "/assets/components/billing/UpcomingPlan-6d193369bd135f182d4d44a7d4a7b50c9da5f4418ac07870e4b87c6024ab9282.js", "components/charts/BarChart": "/assets/components/charts/BarChart-bc4ce8200eddd395f14d2a1702e44c72210d4b734288daee4ffee2c623e65c92.js", "components/charts/theme": "/assets/components/charts/theme-91f17631e1543059e1bd76591747cc904857d5a6b3c92cd2d5fd4f97aef047de.js", "components/charts/utils/formatTooltip": "/assets/components/charts/utils/formatTooltip-31c7869ec007a414ad48ff05015b6b051216e66292847eaa2e585f407a674347.js", "components/docs/Code": "/assets/components/docs/Code-79511ae7d67e91832582328b130a1e5101633742564841d729d5420590a37453.js", "components/docs/CodeTab": "/assets/components/docs/CodeTab-744ff814f71bcbb737fa0e56d63d7e6f2c9cb70d8220b3a376e963d69ace3acc.js", "components/docs/TokenLoader": "/assets/components/docs/TokenLoader-fb07b2b2fdae0c20e0d89549f581a8adfeb53b7378021b6fa7f621023804474c.js", "components/docs/TokenNotice": "/assets/components/docs/TokenNotice-917f947c52668c272e9446aca305c2a2648c636652e4f83ac33ccde822e049fd.js", "components/docs/TokenPicker": "/assets/components/docs/TokenPicker-54e7327cdc8a42ef204b76063bfe6ede07517b8e96f69e8e36ad75e3c7a86904.js", "components/forms/AuditLogsToggle": "/assets/components/forms/AuditLogsToggle-218441a865c39560f29feea542bdea35638a757811eaaedfbff99d32b5d70198.js", "components/forms/BasicForm": "/assets/components/forms/BasicForm-61c5576c0c29b259abdf208fd812c3a0d6851e864d9aee87671c9bd865c185fe.js", "components/forms/Collapse": "/assets/components/forms/Collapse-81b332eae8af2cf0786548067b2f25e0ce8307c073e43a04b7b41d390cae5bbb.js", "components/forms/CopyOnClick": "/assets/components/forms/CopyOnClick-bb61fb00b51260d3aaf3651ca3cebb58d144fc5e0a52a09d952a47543d29d616.js", "components/forms/DotsDropdown": "/assets/components/forms/DotsDropdown-9f004c65e18a56f941167f550d24a28ba5c2e4e750be16633c65fe7e9b606423.js", "components/forms/Dropdown": "/assets/components/forms/Dropdown-f34b6de45049e8444220aa92199d58221552c245d498e7f6672a288c90ae2904.js", "components/forms/GatedToggle": "/assets/components/forms/GatedToggle-eac499fb5b20c94e1ad4611dfbb4f041e49710067a1473e6f8dd6556f864de11.js", "components/forms/HeadersJson": "/assets/components/forms/HeadersJson-3b4042d0035e077ea32f2cbb1e3e731664e7d6f89d7a6d0088a5bbc3b8a808dc.js", "components/forms/HighlightedTextarea": "/assets/components/forms/HighlightedTextarea-deb48b71df7a329d622f3b94590573bd3ff3d8c9b9f670d4f16163e17649ec18.js", "components/forms/HolidayModeForm": "/assets/components/forms/HolidayModeForm-69a117484e82dd5fcadda2177cd7b78876a2bc787f43ffd04fa012342eb5f638.js", "components/forms/IncidentSilencingForm": "/assets/components/forms/IncidentSilencingForm-730d2e9e0f4b14c3207ccf7eff428865018256abb5328d80fe9aed9df8f2bad3.js", "components/forms/LogoField": "/assets/components/forms/LogoField-ba2e7c78192d56d093ca4785f0891fc33dac0af8e01ba9744ae6694cb9fdf6a0.js", "components/forms/ModalTemplate": "/assets/components/forms/ModalTemplate-5b81c90cc376daae97f10af81ff234ef71ce1d4e94d7581e4d371dbbd4bb6202.js", "components/forms/MultiplyingInput": "/assets/components/forms/MultiplyingInput-56cdc061458582b995fb7dd7e0a74da4a7dc3a1c43ba8ebfd68721333616cff1.js", "components/forms/Select": "/assets/components/forms/Select-432a60a8168bd7622134d1a1ab7e4160c7b24aa2d28f21c02c27b904b546ca19.js", "components/forms/SelectWithSearch": "/assets/components/forms/SelectWithSearch-ed9e092ca47f10b9600a879d4f657ce2aa88fb1fee2b8254b5febe75f7264b40.js", "components/forms/SessionsForm": "/assets/components/forms/SessionsForm-c803dab2561e01cb48eda8bd0d3a8899349a19d65425aa99aeb1ec07f8782085.js", "components/forms/Slider": "/assets/components/forms/Slider-90f7010ecac763bf7233f35543741d8c859f11bf9be10b9e201ad333a078f25f.js", "components/forms/Spinner": "/assets/components/forms/Spinner-75db6d9f6d60b5eff5865ea90f129f6375b97e4c1127a6d9fd88942cc5d92259.js", "components/forms/TimezoneSelect": "/assets/components/forms/TimezoneSelect-a76a65022a969771e1ed22474ac69b7d0807a01c125b7e6c8786f418fe714d5c.js", "components/forms/Toggle": "/assets/components/forms/Toggle-3671691165989f989c10f5c4437322cb9bdcff290995748ef3e376cc5c107242.js", "components/forms/Tooltip": "/assets/components/forms/Tooltip-dcc2db1d673193afb8a7ad151c095309960a79c7f83f1c3d0f7b3a8651131bdd.js", "components": "/assets/components/index-64b4e9c85048a4acebe0d5ba7381340b40cee2b2ab4926fe765f31d6c866fb35.js", "components/notifications/Dropdown": "/assets/components/notifications/Dropdown-7d7ecf89e5cd8dcf47d1b26a1a5fff1a7b5360c271cc751032b79bf49756812c.js", "components/notifications/Item": "/assets/components/notifications/Item-343b52de1b1ee25e42e187660d689010f529cd54446505ae7e95a3ea0cf84f3d.js", "components/onboarding/PhonePrefixSelect": "/assets/components/onboarding/PhonePrefixSelect-0063c7eaba8bd54369451470c3b47d573b2a07d11b3c72df344808eab3097f83.js", "components/sessions/EmailPrompt": "/assets/components/sessions/EmailPrompt-03e0f0a98e73f7100ba92693a6a0864b341963182ddd9cbea095deb34fb787e1.js", "components/shared/DatePickerRangeSelector": "/assets/components/shared/DatePickerRangeSelector-08034d92ea3c4ea836b49f0c28975dec8571bcc6518f431e81301df06a3a256e.js", "components/shared/DateRangeSelector": "/assets/components/shared/DateRangeSelector-ac430d44c7317119204fcb38d35ea55c98d4e85d589a19b9ca2b30f3bcecb680.js", "components/stores/DocsStore": "/assets/components/stores/DocsStore-1c7507c869081858851f726d209e719b1a4d0c6c297930d41da5a472b7aa564d.js", "components/stores/FollowerStore": "/assets/components/stores/FollowerStore-5b78631dc93e290b65508617b7a63640ac5333377d1e20e95c085f9d86b9387b.js", "components/stores/MainStore": "/assets/components/stores/MainStore-fedba35ede04c4bce2be7c47969d6490d863ee416be80673288cf0e54a6f708a.js", "components/stores/ToastStore": "/assets/components/stores/ToastStore-b345053ac094eb51397158d55b71fc6d093a32087b8005bd9b0743967da3de48.js", "components/stores/UsageStore": "/assets/components/stores/UsageStore-78313fd41a5780117d579b9d5c86593e07ae981a87a8c015c417d36fa3274f79.js", "components/stores/index": "/assets/components/stores/index-790f621e33d661fa7aaaaadb06ba15928ffd964ceebe34b753720e997c7f3034.js", "components/usage/Chart": "/assets/components/usage/Chart-1fc66e48818350d300b70366d9aaca429b09689f6a9549399c1db930c690c5d9.js", "components/usage/DateRangeSelector": "/assets/components/usage/DateRangeSelector-8a093aedd6ccb36ad67886b307727d0cfb5311655e9aef5b421db4ccd22bb378.js", "components/usage/DimensionTab": "/assets/components/usage/DimensionTab-67e4ca9896636c3a88d508919ffaad7692b43b7d283f617ac6d83484bbf94390.js", "components/usage/ProductLink": "/assets/components/usage/ProductLink-6a5c70201ae98b5bf510d38c930e0b336ea0161a355e47d7d2fac57f0ac3c310.js", "components/usage/ResolutionSelector": "/assets/components/usage/ResolutionSelector-29e54e93195b8b9ef6753706f40ce43c1137c034c91a5259c244279f8a48a187.js", "components/usage/Table": "/assets/components/usage/Table-ee861fb508aca3d8cdf56c3aa10b24a1f736711c86167020238cf02ab6d4b646.js", "composables/useCollapseHeight": "/assets/composables/useCollapseHeight-17aee4ad47813c68e489fbc5ada535c42e74858948cbf17b8e70654cda85c0cf.js", "composables/useCommand": "/assets/composables/useCommand-d60c11f032654ef93461e8a4f4595edd0360ec0f6a0133d543feddcddd51ee8f.js", "composables/useHotkey": "/assets/composables/useHotkey-8e49d44a9a27667af72bc8cdb64df15b234137457afbd29278f8cf86de89cbe0.js", "composables/useTheme": "/assets/composables/useTheme-4aadc05e800ed3f5402a2eb253a109cbcae04dd915decf9f80852a0b10218db9.js", "entrypoints/admin_articles": "/assets/entrypoints/admin_articles-33e05ea74198c1755e1dac82e75f35077da3140092d5b7e1dfe453e02da93242.js", "entrypoints/application": "/assets/entrypoints/application-f0b5c4dad0df513cb8e55b3acdd8a0f2ba8c435bdb004d47a84e33ed96d081f4.js", "entrypoints/articles": "/assets/entrypoints/articles-228b5e6202a0dc83e8b7700983cf58b7cc84b06398dd3c854d3437809c6abb3d.js", "entrypoints/auth": "/assets/entrypoints/auth-b4745d7dbd024e9dc2c5617b2baf7c19205d5ef748d38418eeacd382a574240e.js", "entrypoints/betterstack_v2": "/assets/entrypoints/betterstack_v2-f0c8f8db93692df43bc1d4b430e854d39e123457a2b985ec1d8da9abc290ea82.js", "entrypoints/front": "/assets/entrypoints/front-300178d82dbd1adeb592bbd9f8b2d6421df8e5ae963041d808a67fa28e37ad79.js", "entrypoints/logtail": "/assets/entrypoints/logtail-86206ffccef010b24d771ebce8a91addc7d4391907d8dce3aea1a696dc31a15c.js", "entrypoints/mobile": "/assets/entrypoints/mobile-22d02a6569bac82bff507b79aad8172155ec4c9631ded334c8a9ba9a27ff0321.js", "entrypoints/onboarding": "/assets/entrypoints/onboarding-61bd5234ef3e2513b0a93ae8a2d127aba7450ed26f91d14aaf056f67e2e05415.js", "entrypoints/playwright": "/assets/entrypoints/playwright-2bca3f78b1face6d4bc3c50726d00fcb2823ebc7b9d64ace23b1729e6879dac4.js", "entrypoints/uptime": "/assets/entrypoints/uptime-d57f0cee58d22bac0679c1e7e06ed8afdaeb911306265cd118fe56e38a307f09.js", "front/router": "/assets/front/router-15f34318361051c9844c70c974ab777afc4e6402411fcbd694e757a877cbec40.js", "logtail_controllers": "/assets/logtail_controllers/index-1595afa1409ee5bf0188e35ef178b9ed9ec5a58fe15b68da82703e39dc78e194.js", "logtail_controllers/plans_controller": "/assets/logtail_controllers/plans_controller-e216365c38db8814403c45b7f26dab79fa9995d42f75df5fdbdc22db943b429e.js", "mobile_controllers/ButtonBridgeComponent": "/assets/mobile_controllers/ButtonBridgeComponent-30626673e61f0e3c26c3d8b6002b7fa66012d9e1b445cb4d02074bdd077861e2.js", "mobile_controllers/EventBridgeComponent": "/assets/mobile_controllers/EventBridgeComponent-313b96e5de16ed230efe1370792c3815796df581467629a23e85a78842f25cab.js", "mobile_controllers": "/assets/mobile_controllers/index-18b25ed766e85c735e5a0f22e4aede8bab9e362b6975609f0f26dac171c0063a.js", "mobile_controllers/otp_entry_controller": "/assets/mobile_controllers/otp_entry_controller-b3220a52d53f3907aebe6d65788e5dcbecd109e69a12880c9aaf3bb1d467b131.js", "routes": "/assets/routes-31d0c1b39b018cca46f0bb5fe5be4f3c54526839cdffc7d21adb34d812fa4817.js", "shared/channels/appearance_subscription": "/assets/shared/channels/appearance_subscription-91167fdabc87648c3d424e872db9c0f3d009423fe043fdfce071f5319ef1b50e.js", "shared/channels/consumer": "/assets/shared/channels/consumer-54d75b5b4059931e8792cb76161d6ec1d2da116317920038eef3567eab056919.js", "shared/channels/create_follower_subscription": "/assets/shared/channels/create_follower_subscription-73d61d46010b368240046908b53bb2b1ae047b2a69313a2e1ca4b2e998d84066.js", "shared/channels/followee_subscription": "/assets/shared/channels/followee_subscription-fddf3cb73d8e828fced66aef456dec5d9b4a076fbea3a9b9af0caf58a52da8a1.js", "shared/collaboration/Appearances": "/assets/shared/collaboration/Appearances-36a2551e217b7db1563b745bdef25aea353036bd3748f5e274ba093b13bca260.js", "shared/collaboration/GhostCursors": "/assets/shared/collaboration/GhostCursors-d1819bfc45e3af8bfd0ee66639eb9b2d638e649808228941a76099a878180c3e.js", "shared/collaboration/follower/Controls": "/assets/shared/collaboration/follower/Controls-7174c73834b0413b127d83513ce202ac5e088bbf5957fc9a8d53a483f8fe4403.js", "shared/collaboration/follower/DirectFollower": "/assets/shared/collaboration/follower/DirectFollower-b02f601917eaec374b07937ab49c11357c34cf8e2b0ebc6915c84b83d17a3e44.js", "shared/collaboration/follower/Error": "/assets/shared/collaboration/follower/Error-c60522f4be41a4f7adf14b78b983ff6ca81253de314a1ef756d1161ae45fda92.js", "shared/collaboration/follower/Follower": "/assets/shared/collaboration/follower/Follower-5bbd7f6a41eeb931c5a521c8218c74a1397bbcd19816de35c729d14f7bfa2895.js", "shared/collaboration/follower/FollowerGhostCursors": "/assets/shared/collaboration/follower/FollowerGhostCursors-09b7222dde8cf5701d0faa8e311c2b5f37306732470b0be77a669fb4dead5d4d.js", "shared/collaboration/follower/LoadingScreen": "/assets/shared/collaboration/follower/LoadingScreen-b82a0ba91ca92c1183aa0aa8dc5051e93597fdd78dcc5f3878dd895b11e7f811.js", "shared/collaboration/follower/ProxyFollower": "/assets/shared/collaboration/follower/ProxyFollower-371025b83b92fb933005e7071692af402665f136f0180b5a4aec9b2911317708.js", "shared/collaboration/utils": "/assets/shared/collaboration/utils-67288c5f49092d9f154fd39c22fc4872f246af59e155f64a212d807ba40e129d.js", "shared/command_palette/CommandIndexWorker": "/assets/shared/command_palette/CommandIndexWorker-73e6e06432c6c072acbad94b5f191c7c016e735354d526b44998f2ecda4ac654.js", "shared/command_palette/CommandPalette": "/assets/shared/command_palette/CommandPalette-45d56d89e1abc0c01e621bad55f0f57e8934989ebe6cba2158919febb00a2a72.js", "shared/command_palette/CommandsManager": "/assets/shared/command_palette/CommandsManager-2f4f67654c9291f9bba5a7060071e783c852ddae39ccb180825bd1992b1bb219.js", "shared/command_palette/HotkeyManager": "/assets/shared/command_palette/HotkeyManager-cd94c551611c0f03e112789955a6ec415dce5060970b723ec7f00ee3d6f8e8e2.js", "shared/hubspot_demo_form": "/assets/shared/hubspot_demo_form-6812046f945724db91d38fc0b7a5b68ac6557fd3dcccdb2cf171bdfa1ed16bd4.js", "shared/utils/DelayedBuffer": "/assets/shared/utils/DelayedBuffer-c668422bf7cd1f0c74b85a84b43d4cd6c8ef9aaff720b9b567f9696e1cc70860.js", "shared/utils/interop": "/assets/shared/utils/interop-9f5c1743e3cd5f0de6006fa2749e139cdd0475e08002581d4fe2eaaa69bb50f7.js", "shared/utils/is-mac": "/assets/shared/utils/is-mac-93b71cfbb5b2734018e4113b6b1d7fa3532ea1f8d206e0bd20f31c0548c446f5.js", "shared/utils/script-loader": "/assets/shared/utils/script-loader-92764982164c12f674e90cd2f95a691992d89fa92621c0508f34450d80714f66.js", "uptime_controllers": "/assets/uptime_controllers/index-aec018857a67541da9db4f59349cfe9a7ca3ff1923e40b8d21d8999711a4fbbe.js", "uptime_controllers/plans_controller": "/assets/uptime_controllers/plans_controller-385a4b447247383d60bded305bfcaaaeabc0bccbb521b118028627f0152d619b.js", "utils/RangeTimestamp": "/assets/utils/RangeTimestamp-d19d11ed00082000ed6e4ba5df4e1240d27a3e654c61962d09a05a1da8670c0c.js", "utils/RelativeTimestamp": "/assets/utils/RelativeTimestamp-9855b55b1a0069362546519a1f9196ee9e16bee020bb4212099e1eedad14ee03.js", "utils/authToken": "/assets/utils/authToken-c7a1cd63fcf0ad9de31981d3f453c8076d16ca1255b6046017ed2272f3641a71.js", "utils/cardBrands": "/assets/utils/cardBrands-ea5db81e7561737ed83b636a4b6febb5db7cf6057e3dda81eba750d94eacbf01.js", "utils/chartTooltipPosition": "/assets/utils/chartTooltipPosition-527b42ecc40c85cf2336bdf7c11bdc0767d1258b5ef803df7aaeda87a78b6f4d.js", "utils/date": "/assets/utils/date-d3fcf0323a2830e49539b258684b7a73164cb6852b92d4101ce3112d5dde00ed.js", "utils/externalRoutes": "/assets/utils/externalRoutes-8202a3c23971ea5777421ceb02d30d91068394c8dc0a3050359e8df537009f7f.js", "utils/fetchJson": "/assets/utils/fetchJson-85e0da5d35050a520878375b5fba9b8c528671d2dfa2ff52cf48567bbb6a3156.js", "utils/formatters": "/assets/utils/formatters-ed707477386ff3c1040838ed28f6b17bbef0360968f058c9fac62a1a45355af9.js", "utils/highlight": "/assets/utils/highlight-458c91c22b204a7cee20df25793dc516179b84951bfe420948bf3097ac913b61.js", "utils/hotkeyLabel": "/assets/utils/hotkeyLabel-c7dc521969055b65497a498c7b57b828980e5431fdfc9632d05548d8c3b3adda.js", "utils/importmap": "/assets/utils/importmap-3fb68c776ce85b3790bb9b5753ab4e0ab2ceb0abdcc8014953cdfec2c5645cea.js", "utils/isTouchDevice": "/assets/utils/isTouchDevice-eedba28010f2ea6c3bf74f5717049a1580d0a4d78727a3cd79bdb93abd35cd56.js", "utils/miniBindVueApp": "/assets/utils/miniBindVueApp-db826ead93378a6b0fb33e4206bf12fa42895b140f7331a988030771c8370175.js", "utils/naturalLanguageTimeParser": "/assets/utils/naturalLanguageTimeParser-584f895f2ec4c4df8aa78843d8548c50c2f6df0200fed52197b79217ea8ee588.js", "utils/permissions": "/assets/utils/permissions-4327b486a3b260c0fdab95dbd2c4c4c901ff02028cb9fdd3f4476b238b40e596.js", "utils/platforms": "/assets/utils/platforms-dfbf6f3cc0a3ba42522e6d46da025f610a68024f9db9984b419f523b8ff5ad88.js", "utils/queryParams": "/assets/utils/queryParams-313f382500c03f6ae5609c10871ff0836ff1eb43cf6a68fa1addcc455fa27799.js", "utils/rebindComponents": "/assets/utils/rebindComponents-f30d606edfa41b43cad6c2a6d4656a1df83a3c73cf2fb6f8479e18203426f87d.js", "utils/timeago": "/assets/utils/timeago-2b7286c271bbc61d1258a0f65dc709e3288edd5c37e9e17f4058325a59b2517b.js", "utils/timestampToDayjs": "/assets/utils/timestampToDayjs-2b2c7c6e6b3b998b5cf23a9d9424d253ba071689d163abe9aae21df65c8a8424.js", "utils/timezone": "/assets/utils/timezone-b1171452a6a2b4d7f1a322a671886690f1647a264fb488f1e477edce29d7dd01.js", "utils/timezoneList": "/assets/utils/timezoneList-e24ecbd5932e311e8e63f2eddc66165fd12c6c0f5c99e10a0c821945d092398c.js", "vendor/aos@2.3.4": "/assets/vendor/aos@2.3.4-685eb7c655b107524a998227037e3774b68de3aae7d7d9c4778ad93f28da0134.js", "vendor/cuid@2.1.8": "/assets/vendor/cuid@2.1.8-04b3f7922ef09493e6de1674985aa9e6db1ef22b5b459ff55dfebfc7fb223403.js", "vendor/domurl@2.3.4": "/assets/vendor/domurl@2.3.4-db15c581b8052eb19b45e8d67676e0029de117dd052d52fb9b4dff92cb3c80cd.js", "vendor/floating-vue@5.2.0": "/assets/vendor/floating-vue@5.2.0-e493e91064e9956ff82c5c23defd763087421f0c97b889cf33239d802a5e8fa8.js", "vendor/frontapp-ui-bridge@2.0.0-beta1": "/assets/vendor/frontapp-ui-bridge@2.0.0-beta1-d3b766ae248a8ed4ac11ebfd6f6ac7a31294dde9cb3d9f047192921b6c1ca1c4.js", "vendor/mime-match@1.0.2": "/assets/vendor/mime-match@1.0.2-4d959bda662997b61e998d18ad41c2ae215771ae130d85a5f05ced0541000c37.js", "vendor/namespace-emitter@2.0.1": "/assets/vendor/namespace-emitter@2.0.1-b396e60bd4150b092d9eb238c73ef723dd54dfdc6c7bbe40e903efbd9659903d.js", "vendor/primevue@4.0.7": "/assets/vendor/primevue@4.0.7-292f4d15f9e736212277eaa302e66b4c72e27d267baa75f557b19221f20d4d57.js", "vendor/sentry-vue@8.13.0": "/assets/vendor/sentry-vue@8.13.0-167743aecd5b6cc9aa2899beec92879d0753ed6df2b78e8ea834dc25bbc8b375.js", "vendor/stimulus@2.0.0": "/assets/vendor/stimulus@2.0.0-5b5f813e2414d6e786a903c4ba38ba495cafe9705d1172a88e85eedf8f4bf25a.js", "vendor/transloadit-prettier-bytes@0.0.9": "/assets/vendor/transloadit-prettier-bytes@0.0.9-7d84b56abd9a347840cc75802bff997f4d80aa98226989b3b531586ca83de8de.js", "vendor/wildcard@1.1.2": "/assets/vendor/wildcard@1.1.2-5fe9351108ff44f2fe5e044f79bc7858778c58ba61c8cb6b5fd60e6bf5684bb1.js", "@betterstack/shared/channels/appearance_subscription": "/assets/shared/channels/appearance_subscription-91167fdabc87648c3d424e872db9c0f3d009423fe043fdfce071f5319ef1b50e.js", "@betterstack/shared/channels/consumer": "/assets/shared/channels/consumer-54d75b5b4059931e8792cb76161d6ec1d2da116317920038eef3567eab056919.js", "@betterstack/shared/channels/create_follower_subscription": "/assets/shared/channels/create_follower_subscription-73d61d46010b368240046908b53bb2b1ae047b2a69313a2e1ca4b2e998d84066.js", "@betterstack/shared/channels/followee_subscription": "/assets/shared/channels/followee_subscription-fddf3cb73d8e828fced66aef456dec5d9b4a076fbea3a9b9af0caf58a52da8a1.js", "@betterstack/shared/collaboration/Appearances": "/assets/shared/collaboration/Appearances-36a2551e217b7db1563b745bdef25aea353036bd3748f5e274ba093b13bca260.js", "@betterstack/shared/collaboration/GhostCursors": "/assets/shared/collaboration/GhostCursors-d1819bfc45e3af8bfd0ee66639eb9b2d638e649808228941a76099a878180c3e.js", "@betterstack/shared/collaboration/follower/Controls": "/assets/shared/collaboration/follower/Controls-7174c73834b0413b127d83513ce202ac5e088bbf5957fc9a8d53a483f8fe4403.js", "@betterstack/shared/collaboration/follower/DirectFollower": "/assets/shared/collaboration/follower/DirectFollower-b02f601917eaec374b07937ab49c11357c34cf8e2b0ebc6915c84b83d17a3e44.js", "@betterstack/shared/collaboration/follower/Error": "/assets/shared/collaboration/follower/Error-c60522f4be41a4f7adf14b78b983ff6ca81253de314a1ef756d1161ae45fda92.js", "@betterstack/shared/collaboration/follower/Follower": "/assets/shared/collaboration/follower/Follower-5bbd7f6a41eeb931c5a521c8218c74a1397bbcd19816de35c729d14f7bfa2895.js", "@betterstack/shared/collaboration/follower/FollowerGhostCursors": "/assets/shared/collaboration/follower/FollowerGhostCursors-09b7222dde8cf5701d0faa8e311c2b5f37306732470b0be77a669fb4dead5d4d.js", "@betterstack/shared/collaboration/follower/LoadingScreen": "/assets/shared/collaboration/follower/LoadingScreen-b82a0ba91ca92c1183aa0aa8dc5051e93597fdd78dcc5f3878dd895b11e7f811.js", "@betterstack/shared/collaboration/follower/ProxyFollower": "/assets/shared/collaboration/follower/ProxyFollower-371025b83b92fb933005e7071692af402665f136f0180b5a4aec9b2911317708.js", "@betterstack/shared/collaboration/utils": "/assets/shared/collaboration/utils-67288c5f49092d9f154fd39c22fc4872f246af59e155f64a212d807ba40e129d.js", "@betterstack/shared/command_palette/CommandIndexWorker": "/assets/shared/command_palette/CommandIndexWorker-73e6e06432c6c072acbad94b5f191c7c016e735354d526b44998f2ecda4ac654.js", "@betterstack/shared/command_palette/CommandPalette": "/assets/shared/command_palette/CommandPalette-45d56d89e1abc0c01e621bad55f0f57e8934989ebe6cba2158919febb00a2a72.js", "@betterstack/shared/command_palette/CommandsManager": "/assets/shared/command_palette/CommandsManager-2f4f67654c9291f9bba5a7060071e783c852ddae39ccb180825bd1992b1bb219.js", "@betterstack/shared/command_palette/HotkeyManager": "/assets/shared/command_palette/HotkeyManager-cd94c551611c0f03e112789955a6ec415dce5060970b723ec7f00ee3d6f8e8e2.js", "@betterstack/shared/hubspot_demo_form": "/assets/shared/hubspot_demo_form-6812046f945724db91d38fc0b7a5b68ac6557fd3dcccdb2cf171bdfa1ed16bd4.js", "@betterstack/shared/utils/DelayedBuffer": "/assets/shared/utils/DelayedBuffer-c668422bf7cd1f0c74b85a84b43d4cd6c8ef9aaff720b9b567f9696e1cc70860.js", "@betterstack/shared/utils/interop": "/assets/shared/utils/interop-9f5c1743e3cd5f0de6006fa2749e139cdd0475e08002581d4fe2eaaa69bb50f7.js", "@betterstack/shared/utils/is-mac": "/assets/shared/utils/is-mac-93b71cfbb5b2734018e4113b6b1d7fa3532ea1f8d206e0bd20f31c0548c446f5.js", "@betterstack/shared/utils/script-loader": "/assets/shared/utils/script-loader-92764982164c12f674e90cd2f95a691992d89fa92621c0508f34450d80714f66.js", "vue": "https://cdnjs.betterstack.com/vue@3.4.31/dist/vue.esm-browser.prod.js", "@vue/devtools-api": "https://cdnjs.betterstack.com/@vue/devtools-api@6.6.3/lib/esm/index.js", "vue-demi": "https://cdnjs.betterstack.com/vue-demi@0.14.8/lib/index.mjs", "pinia": "https://cdnjs.betterstack.com/pinia@2.1.7/dist/pinia.esm-browser.js", "vue-turbolinks": "https://cdnjs.betterstack.com/vue-turbolinks@2.2.2/index.js", "@sentry/vue": "/assets/vendor/sentry-vue@8.13.0-167743aecd5b6cc9aa2899beec92879d0753ed6df2b78e8ea834dc25bbc8b375.js", "@headlessui/vue": "https://cdnjs.betterstack.com/@headlessui/vue@1.7.4/dist/headlessui.esm.js", "primevue": "/assets/vendor/primevue@4.0.7-292f4d15f9e736212277eaa302e66b4c72e27d267baa75f557b19221f20d4d57.js", "vueform-multiselect": "https://cdnjs.betterstack.com/@vueform/multiselect@2.6.10/dist/multiselect.js", "vueform-slider": "https://cdnjs.betterstack.com/@vueform/slider@2.1.10/dist/slider.js", "@hotwired/turbo-rails": "https://cdnjs.betterstack.com/@hotwired/turbo-rails@8.0.4/app/assets/javascripts/turbo.js", "@hotwired/hotwire-native-bridge": "https://cdnjs.betterstack.com/@hotwired/hotwire-native-bridge@1.0.0/dist/hotwire-native-bridge.js", "@rails/actioncable": "https://cdnjs.betterstack.com/@rails/actioncable@7.0.4/app/assets/javascripts/actioncable.esm.js", "@rails/activestorage": "https://cdnjs.betterstack.com/@rails/activestorage@6.0.0/app/assets/javascripts/activestorage.js", "js-cookie": "https://cdnjs.betterstack.com/js-cookie@3.0.1/dist/js.cookie.min.mjs", "lazysizes": "https://cdnjs.betterstack.com/lazysizes@5.3.2/lazysizes.min.js", "posthog-js": "https://cdnjs.betterstack.com/posthog-js@1.64.0/dist/es.js", "el-transition": "https://cdnjs.betterstack.com/el-transition@0.0.7/index.js", "dayjs": "https://cdnjs.betterstack.com/dayjs@1.11.7/esm/index.js", "dayjs/": "https://cdnjs.betterstack.com/dayjs@1.11.7/esm/", "dayjs/plugin/quarterOfYear.js": "https://cdnjs.betterstack.com/dayjs@1.11.7/esm/plugin/quarterOfYear/index.js", "dayjs/plugin/timezone.js": "https://cdnjs.betterstack.com/dayjs@1.11.7/esm/plugin/timezone/index.js", "dayjs/plugin/utc.js": "https://cdnjs.betterstack.com/dayjs@1.11.7/esm/plugin/utc/index.js", "underscore/": "https://cdnjs.betterstack.com/underscore@1.13.6/modules/", "nanoevents": "https://cdnjs.betterstack.com/nanoevents@7.0.1/index.js", "decimal": "https://cdnjs.betterstack.com/decimal.js@10.4.3/decimal.mjs", "lodash/": "https://cdnjs.betterstack.com/lodash-es@4.17.21/", "lodash.throttle": "https://cdnjs.betterstack.com/lodash-es@4.17.21/throttle", "aos": "/assets/vendor/aos@2.3.4-685eb7c655b107524a998227037e3774b68de3aae7d7d9c4778ad93f28da0134.js", "stimulus": "/assets/vendor/stimulus@2.0.0-5b5f813e2414d6e786a903c4ba38ba495cafe9705d1172a88e85eedf8f4bf25a.js", "@hotwired/stimulus": "/assets/vendor/stimulus@2.0.0-5b5f813e2414d6e786a903c4ba38ba495cafe9705d1172a88e85eedf8f4bf25a.js", "domurl": "/assets/vendor/domurl@2.3.4-db15c581b8052eb19b45e8d67676e0029de117dd052d52fb9b4dff92cb3c80cd.js", "@floating-ui/dom": "https://cdnjs.betterstack.com/@floating-ui/dom@1.4.4/dist/floating-ui.dom.browser.min.mjs", "@floating-ui/core": "https://cdnjs.betterstack.com/@floating-ui/core@1.3.1/dist/floating-ui.core.browser.min.mjs", "floating-vue": "/assets/vendor/floating-vue@5.2.0-e493e91064e9956ff82c5c23defd763087421f0c97b889cf33239d802a5e8fa8.js", "echarts": "https://cdnjs.betterstack.com/echarts@5.4.0/dist/echarts.esm.min.js", "echarts/core": "https://cdnjs.betterstack.com/echarts@5.4.0/dist/echarts.esm.min.js", "vue-echarts": "https://cdnjs.betterstack.com/vue-echarts@6.6.1/dist/index.esm.min.js", "resize-detector": "https://cdnjs.betterstack.com/resize-detector@0.3.0/esm/index.js", "@uppy/aws-s3": "https://cdnjs.betterstack.com/@uppy/aws-s3@3.2.0/lib/index.js", "@uppy/aws-s3-multipart": "https://cdnjs.betterstack.com/@uppy/aws-s3-multipart@3.4.0/lib/index.js", "@uppy/core": "https://cdnjs.betterstack.com/@uppy/core@3.2.1/lib/index.js", "@uppy/core/": "https://cdnjs.betterstack.com/@uppy/core@3.2.1/", "@uppy/companion-client": "https://cdnjs.betterstack.com/@uppy/companion-client@3.1.3/lib/index.js", "@uppy/utils/": "https://cdnjs.betterstack.com/@uppy/utils@5.4.0/", "@uppy/store-default": "https://cdnjs.betterstack.com/@uppy/store-default@3.0.3/lib/index.js", "mime-match": "/assets/vendor/mime-match@1.0.2-4d959bda662997b61e998d18ad41c2ae215771ae130d85a5f05ced0541000c37.js", "namespace-emitter": "/assets/vendor/namespace-emitter@2.0.1-b396e60bd4150b092d9eb238c73ef723dd54dfdc6c7bbe40e903efbd9659903d.js", "nanoid/non-secure": "https://cdnjs.betterstack.com/nanoid@4.0.1/non-secure/index.js", "preact": "https://cdnjs.betterstack.com/preact@10.11.0/dist/preact.module.js", "@transloadit/prettier-bytes": "/assets/vendor/transloadit-prettier-bytes@0.0.9-7d84b56abd9a347840cc75802bff997f4d80aa98226989b3b531586ca83de8de.js", "wildcard": "/assets/vendor/wildcard@1.1.2-5fe9351108ff44f2fe5e044f79bc7858778c58ba61c8cb6b5fd60e6bf5684bb1.js", "@frontapp/plugin-sdk": "https://cdnjs.betterstack.com/@frontapp/plugin-sdk@1.0.1/dist/index.es.js", "@frontapp/ui-bridge": "/assets/vendor/frontapp-ui-bridge@2.0.0-beta1-d3b766ae248a8ed4ac11ebfd6f6ac7a31294dde9cb3d9f047192921b6c1ca1c4.js", "cuid": "/assets/vendor/cuid@2.1.8-04b3f7922ef09493e6de1674985aa9e6db1ef22b5b459ff55dfebfc7fb223403.js", "rxjs": "https://cdnjs.betterstack.com/rxjs@^7.4.0/dist/esm/index.js", "rxjs/": "https://cdnjs.betterstack.com/rxjs@^7.4.0/dist/esm/", "tslib": "https://cdnjs.betterstack.com/tslib@2.3.1/tslib.es6.js", "virtua": "https://cdnjs.betterstack.com/virtua@0.39.0/lib/vue/index.mjs", "flexsearch": "https://cdnjs.betterstack.com/flexsearch@0.7.43/dist/flexsearch.light.module.min.js" } }</script> <link rel="modulepreload" href="https://cdnjs.betterstack.com/vue@3.4.31/dist/vue.esm-browser.prod.js" nonce="511316a23e6ed45b33fbddc9431be69e"> <link rel="modulepreload" href="https://cdnjs.betterstack.com/@vue/devtools-api@6.6.3/lib/esm/index.js" nonce="511316a23e6ed45b33fbddc9431be69e"> <link rel="modulepreload" href="https://cdnjs.betterstack.com/vue-demi@0.14.8/lib/index.mjs" nonce="511316a23e6ed45b33fbddc9431be69e"> <link rel="modulepreload" href="https://cdnjs.betterstack.com/pinia@2.1.7/dist/pinia.esm-browser.js" nonce="511316a23e6ed45b33fbddc9431be69e"> <link rel="modulepreload" href="https://cdnjs.betterstack.com/vue-turbolinks@2.2.2/index.js" nonce="511316a23e6ed45b33fbddc9431be69e"> <script type="esms-options" nonce="511316a23e6ed45b33fbddc9431be69e">{"nonce":"511316a23e6ed45b33fbddc9431be69e"}</script> <script src="/assets/es-module-shims.min-d89e73202ec09dede55fb74115af9c5f9f2bb965433de1c2446e1faa6dac2470.js" defer="defer" data-turbo-track="reload" nonce="511316a23e6ed45b33fbddc9431be69e"></script> <script type="module" nonce="511316a23e6ed45b33fbddc9431be69e"> //<![CDATA[ import * as Sentry from '@sentry/vue' Sentry.init({ dsn: "https://5d12720845819aced5e1d8d5ed797725@o1399417.ingest.sentry.io/4507566687649792", // integrations: [Sentry.browserProfilingIntegration(), Sentry.browserTracingIntegration()], ignoreErrors: ["ignore:service_returned_401", "No error message"], environment: "production", release: window.cfg.app_version, // tracesSampleRate: 0.1, // profilesSampleRate: 0.1, denyUrls: [/chat-assets\.frontapp\.com/i], app: [], }); Sentry.setUser({ email: "" }); window.Sentry = Sentry; //]]> </script> <script type="module" nonce="511316a23e6ed45b33fbddc9431be69e">import "entrypoints/articles"</script> <script type="application/javascript" nonce="511316a23e6ed45b33fbddc9431be69e"> //<![CDATA[ if (!HTMLScriptElement?.supports?.('importmap')) { alert('Your browser is not supported. Please upgrade to a newer version of Chrome, Firefox, Safari or other modern browser.') } //]]> </script> <script type="module" nonce="511316a23e6ed45b33fbddc9431be69e">import "channels"</script> <link rel="stylesheet" href="/assets/articles-e782bbfd0f7a58752013ae536af8456bd01826ea482194f5af657ddc02a9430b.css" media="all" data-turbo-track="reload" /> <style> @supports (-webkit-hyphens:none) { .book, .book:hover { filter: unset; } } </style> <script type="application/ld+json" nonce="511316a23e6ed45b33fbddc9431be69e"> //<![CDATA[ [ { "@context": "https://schema.org", "@type": "Article", "headline": "How to Create a Developer-Friendly On-Call Schedule in 7 steps", "author": "Jan Tovarys and Andrej Hoos", "image": "/og-image/on-call-scheduling.png", "genre": "", "keywords": "", "publisher": { "@type": "Organization", "name": "Better Stack", "logo": { "@type": "ImageObject", "url": "https://betterstack.com/assets/logo-e81f7f79f9298e052fa7d3111a4311cd18f731f3fdf99859cb63e70002365bb3.png" } }, "url": "https://betterstack.com/community/guides/incident-management/on-call-scheduling/", "mainEntityOfPage": { "@type": "WebPage", "@id": "https://google.com/article" }, "datePublished": "2022-06-27T15:49:31Z", "dateCreated": "2022-06-27T15:49:31Z", "dateModified": "2023-11-10T09:19:58Z", "description": "Trying to build a new on-call schedule or just fix an existing one that doesn't work? Here is how to do it the right way." } ] //]]> </script><link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-Regular.woff2' rel='preload'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-Regular.woff' rel='preload'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-Medium.woff2' rel='preload'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-Medium.woff' rel='preload'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-SemiBold.woff2' rel='preload'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-SemiBold.woff' rel='preload'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-Bold.woff2' rel='preload'> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Roobert/Roobert-Bold.woff' rel='preload'> <style> @font-face { font-family: "Roobert"; font-style: normal; font-weight: 400; font-display: swap; src: url("/static/fonts/Roobert/Roobert-Regular.woff2") format("woff2"), url("/static/fonts/Roobert/Roobert-Regular.woff") format("woff"); } @font-face { font-family: "Roobert"; font-style: normal; font-weight: 500; font-display: swap; src: url("/static/fonts/Roobert/Roobert-Medium.woff2") format("woff2"), url("/static/fonts/Roobert/Roobert-Medium.woff") format("woff"); } @font-face { font-family: "Roobert"; font-style: normal; font-weight: 600; font-display: swap; src: url("/static/fonts/Roobert/Roobert-SemiBold.woff2") format("woff2"), url("/static/fonts/Roobert/Roobert-SemiBold.woff") format("woff"); } @font-face { font-family: "Roobert"; font-style: normal; font-weight: 700; font-display: swap; src: url("/static/fonts/Roobert/Roobert-Bold.woff2") format("woff2"), url("/static/fonts/Roobert/Roobert-Bold.woff") format("woff"); } </style> <link as='font' crossorigin='anonymous' href='https://betterstack.com/static/fonts/Inter/Inter-latin.woff2' rel='preload'> <style> @font-face { font-family: 'Inter'; font-style: normal; font-weight: 400 700; font-display: swap; src: url("/static/fonts/Inter/Inter-latin.woff2") format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } </style> <link rel="preload" href="/static/fonts/Helvetica/HelveticaNowText-Regular.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link rel="preload" href="/static/fonts/Helvetica/HelveticaNowText-Medium.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link rel="preload" href="/static/fonts/Helvetica/HelveticaNowText-Bold.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link rel="preload" href="/static/fonts/Helvetica/HelveticaNowDisplay-Medium.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link rel="preload" href="/static/fonts/Helvetica/HelveticaNowDisplay-Bold.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <style> @font-face { font-family: 'Helvetica Now Text'; src: local('Helvetica Now Text Regular'), local('HelveticaNowText-Regular'), url('/static/fonts/Helvetica/HelveticaNowText-Regular.woff2') format('woff2'); font-weight: 400; font-style: normal; font-display: swap; } @font-face { font-family: 'Helvetica Now Text'; src: local('Helvetica Now Text Medium'), local('HelveticaNowText-Medium'), url('/static/fonts/Helvetica/HelveticaNowText-Medium.woff2') format('woff2'); font-weight: 500; font-style: normal; font-display: swap; } @font-face { font-family: 'Helvetica Now Text'; src: local('Helvetica Now Text Bold'), local('HelveticaNowText-Bold'), url('/static/fonts/Helvetica/HelveticaNowText-Bold.woff2') format('woff2'); font-weight: 700; font-style: normal; font-display: swap; } @font-face { font-family: 'Helvetica Now Display'; src: local('Helvetica Now Display Medium'), local('HelveticaNowDisplay-Medium'), url('/static/fonts/Helvetica/HelveticaNowDisplay-Medium.woff2') format('woff2'); font-weight: 500; font-style: normal; font-display: swap; } @font-face { font-family: 'Helvetica Now Display'; src: local('Helvetica Now Display Bold'), local('HelveticaNowDisplay-Bold'), url('/static/fonts/Helvetica/HelveticaNowDisplay-Bold.woff2') format('woff2'); font-weight: 700; font-style: normal; font-display: swap; } </style> <meta content='Guides' name='meta-docsearch-hierarchy1'> <meta content='Incident Management' name='meta-docsearch-hierarchy2'> <meta content='Incident Response and On-Call' name='meta-docsearch-hierarchy3'> <meta content='How to Create a Developer-Friendly On-Call Schedule in 7 steps' name='meta-docsearch-hierarchy4'> <meta content='How to Create a Developer-Friendly On-Call Schedule in 7 steps' name='meta-docsearch-name'> <meta content='How to Create a Developer-Friendly On-Call Schedule in 7 steps' name='meta-docsearch-title'> <meta content='Trying to build a new on-call schedule or just fix an existing one that doesn't work? Here is how to do it the right way.' name='meta-docsearch-description'> <meta content='Trying to build a new on-call schedule or just fix an existing one that doesn't work? Here is how to do it the right way.' name='meta-docsearch-og_description'> <meta content='Jan Tovarys,Andrej Hoos' name='meta-docsearch-authors'> </head> <body> <script type="application/javascript" nonce="511316a23e6ed45b33fbddc9431be69e"> //<![CDATA[ window.cfg = {"base_host":"betterstack.com","base_url":"https://betterstack.com","better_stack_url":"https://betterstack.com","uptime_url":"https://uptime.betterstack.com","logtail_url":"https://telemetry.betterstack.com","posthog":{"api_host":"https://t.betterstack.com","api_key":"phc_Tbfg4EiRsr5iefFoth2Y1Hi3sttTeLQ5RV5TLg4hL1W","related_domains":["betteruptime.com","logtail.com"]},"permissions":{},"controller":"articles","action":"show","app":"betterstack","theme":"system","organization_id":null,"team_id":null,"environment":"production","browser_timezone":null,"signed_in":false,"team_switcher_items":[]}; //]]> </script> <div class='main articles bg-[#0B0C14]'> <header class='z-40 top-0 left-0 right-0 flex justify-center helvetica bg-[#0B0C14]/80 relative before:absolute before:-z-10 before:inset-0 before:backdrop-blur-2xl' id='navbar'> <nav class='grow flex justify-between border-b mx-5 max-w-[1110px] h-[52px] text-[13px] leading-[100%] text-[#C9D3EE] border-[#727DA1]/15'> <div class='flex items-stretch gap-3'> <a aria-label='Go to homepage' class='flex items-center py-3' href='/'> <svg width='154' height='21' class='scale-[65%] -mx-6' alt='Better Stack' style='--currentColor: currentColor;'><use href='/assets/v2/better-stack-logo-0dd586683a61184ea953948d207470eeec73c76d81d57cd8af24bf56b36a90db.svg#root' /></svg> </a> <div class='hidden md:flex items-stretch gap-4'> <button aria-controls='platform-menu' aria-haspopup='menu' class='pl-3 py-3 pr-6 -mr-3 group relative flex items-center'> <div class='transition group-hover:text-white'>Platform</div> <span class='absolute right-2 text-[#656A7B]'><svg class='group-hover:rotate-180 transition w-[11px] h-[11px] inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/chevron-down-ca9a5c77e9dbeb8f579d14aa09540c2e7fd1df2b870baf7bb2b697d8628d2237.svg#root' /></svg></span> <div class='hidden group-hover:block absolute z-40 top-full left-0 text-left' id='platform-menu' role='menu' tabindex='-1'> <div class='rounded-lg border backdrop-blur-2xl flex w-[650px] p-[6px] bg-[#181926]/80 border-[#1F2433]/75'> <div class='flex-1 md:px-2 py-3 flex flex-col gap-1 border-b md:border-b-0 md:border-r relative border-[#1F2433]/40'> <div class='absolute -top-7 bottom-full left-0 right-0'></div> <a class='-my-1 p-1 flex items-center gap-3 group/uptime ml-[6px]' href='/uptime'> <svg width='69' height='20' alt='' style='--currentColor: currentColor;'><use href='/assets/v2/uptime-logo-fcc6a01850aa0409e3743c6b70051bfc042504854c76a833ef52512d92dccc16.svg#root' /></svg> <div class='border-l relative top-[1px] h-[12px] border-[#727DA1]/30'></div> <div class='text-sm text-neutral-200 flex items-center'> <span class='mr-1'>Better Stack</span> <svg class='transition-all relative top-[1px] h-4 w-0 group-hover/uptime:w-4 inline' alt='' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/mini/arrow-right-c07cd271c9c8d131084c513571295decfe8bf410e675cdde2686c1adf90b494b.svg#root' /></svg> <svg class='transition-all relative top-[1px] h-4 w-4 group-hover/uptime:w-0 inline' alt='' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/mini/chevron-right-ee58bdc22e1fb683dd9ffd95ba0c4df56d8a2a0904d7ddbe63b6e2b4ab82f090.svg#root' /></svg> </div> </a> <hr class='mt-2 border-t border-[#1F2433]/40'> <a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/uptime"><span class='mr-1 text-[#7C87F7]'><svg class='relative top-[-2px] left-[2px] brand-primary-text-100 w-5 h-5 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/globe-alt-5353caa43f8b313373d83572e4ad34e7a563836c16aa6096a14a264330713862.svg#root' /></svg></span> <div> <div class='font-medium'>Uptime monitoring</div> <div class='mt-1 text-xs text-neutral-200'>Get 10 monitors, and a status page totally free.</div> </div> </a><a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/incident-management"><span class='text-[#7C87F7]'><svg width='25' height='24' alt='' class='relative top-[-2px] scale-[90%]' style='--currentColor: currentColor;'><use href='/assets/v2/calendar-6357844552d3ab90ba30b8f0b220de1523ff3aeee8c314a7805eecc7c7393754.svg#root' /></svg></span> <div> <div class='font-medium'>Incident management & on-call</div> <div class='mt-1 text-xs text-neutral-200'>Get a call when your website goes down</div> </div> </a><a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/status-page"><span class='mr-1 text-[#7C87F7]'><svg width='20' height='20' alt='' class='relative top-[-1px] left-[2px]' style='--currentColor: currentColor;'><use href='/assets/v2/page-e138419398f9cc3e22fdf0693bc55a06d3cc6daec37069e878be827b24d07521.svg#root' /></svg></span> <div> <div class='font-medium'>Status page</div> <div class='mt-1 text-xs text-neutral-200'>Communicate downtime & build trust</div> </div> </a><a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/incident-silencing"><span class='mr-1 text-[#7C87F7]'><svg class='relative top-[-1px] left-[2px] brand-primary-text-100 w-5 h-5 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/bell-alert-bae43eae97d5f8f065ac7cfc69ecfb8325b06acf5014e922db6f5ed2b0da780c.svg#root' /></svg></span> <div> <div class='font-medium'>Incident silencing</div> <div class='mt-1 text-xs text-neutral-200'>Reduce alert noise & prevent alert fatigue</div> </div> </a><a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/slack-incident-management"><div class='mr-1 w-[18px] h-[18px] mt-[2px] text-brand-primary-100'><svg alt='' class='w-full h-full relative top-[-1px] left-[2px]' style='--currentColor: currentColor;'><use href='/assets/v2/slack-77d755b1a6198a50134d9500924a07b2a55cfb06d5d704776cddd5d419701977.svg#root' /></svg></div> <div> <div class='font-medium'>Slack-based incident management</div> <div class='mt-1 text-xs text-neutral-200'>Resolve incidents directly in Slack</div> </div> </a></div> <div class='flex-1 mt-2 md:mt-0 md:px-2 py-3 flex flex-col gap-1'> <a class='ml-1 -my-1 p-1 flex items-center gap-3 group/logtail' href='/telemetry'> <svg width='227' height='48' alt='' class='w-[95px] h-5' style='--currentColor: currentColor;'><use href='/assets/v2/telemetry-logo-9698cd9133dcc1454659c661f4632fb8d4453b2e62bd2f98a248c69a3767fb8a.svg#root' /></svg> <div class='border-l relative top-[1px] h-[12px] border-[#727DA1]/30'></div> <div class='text-sm text-neutral-200 flex items-center'> <span class='mr-1'>Better Stack</span> <svg class='transition-all relative top-[1px] h-4 w-0 group-hover/logtail:w-4 inline' alt='' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/mini/arrow-right-c07cd271c9c8d131084c513571295decfe8bf410e675cdde2686c1adf90b494b.svg#root' /></svg> <svg class='transition-all relative top-[1px] h-4 w-4 group-hover/logtail:w-0 inline' alt='' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/mini/chevron-right-ee58bdc22e1fb683dd9ffd95ba0c4df56d8a2a0904d7ddbe63b6e2b4ab82f090.svg#root' /></svg> </div> </a> <hr class='mt-2 border-t border-[#1F2433]/40'> <a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/telemetry"><span class='text-[#7C87F7]'><svg width='25' height='24' alt='' class='relative top-[-2px] scale-[90%]' style='--currentColor: currentColor;'><use href='/assets/v2/code-insert-b8f283aedd6b241eb85334d4566ca3fbe15a8fc15c4ecf8638bc97f7da00e854.svg#root' /></svg></span> <div> <div class='font-medium'>Log management</div> <div class='mt-1 text-xs text-neutral-200'>Collect insights across your stack</div> </div> </a><a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/infrastructure-monitoring"><span class='mr-1 text-[#7C87F7]'><svg class='relative top-[-1px] left-[2px] brand-primary-text-100 w-5 h-5 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/solid/server-stack-d9821d67c85b098d180212edfdab2f04b882ab293f52834aa72d0fd2fbe06b0d.svg#root' /></svg></span> <div> <div class='font-medium'>Infrastructure monitoring</div> <div class='mt-1 text-xs text-neutral-200'>OpenTelemetry-native infrastructure monitoring</div> </div> </a><a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/dashboards"><span class='text-[#7C87F7]'><svg width='25' height='24' alt='' class='relative top-[-2px] scale-[90%]' style='--currentColor: currentColor;'><use href='/assets/v2/flipchart-2cc00e4a7089a6b436dc7686bb14f3cac3ebb97a628e5824ead4ee4b38f179b3.svg#root' /></svg></span> <div> <div class='font-medium'>Observability dashboards</div> <div class='mt-1 text-xs text-neutral-200'>Analyze metrics across your services</div> </div> </a></div> </div> </div> </button> <a class='hidden lg:flex p-3 hover:text-white transition items-center' href='https://betterstack.com/docs/uptime'> <span>Documentation</span> </a> <a class='hidden lg:flex p-3 hover:text-white transition items-center' href='/pricing'> <span>Pricing</span> </a> <form action='https://betterstack.com/community' class='m-0 flex items-stretch'> <button aria-controls='community-menu' aria-haspopup='menu' class='p-3 group relative flex items-center' type='submit'> <div class='transition group-hover:text-white'>Community</div> <span class='absolute -right-1 text-[#656A7B]'><svg class='group-hover:rotate-180 transition w-[11px] h-[11px] inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/chevron-down-ca9a5c77e9dbeb8f579d14aa09540c2e7fd1df2b870baf7bb2b697d8628d2237.svg#root' /></svg></span> <div class='hidden group-hover:block absolute z-40 top-full left-0 text-left' id='community-menu' role='menu' tabindex='-1'> <div class='rounded-lg border backdrop-blur-2xl flex flex-col gap-1 w-[174px] p-[6px] bg-[#181926]/80 border-[#1F2433]/75'> <a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%] md:hidden" href="https://betterstack.com/community"><span class='text-neutral-200'><svg class='mx-[2px] w-4 h-4 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/solid/users-26c9af687d35d046de38f868bdfb06189d53f15b4a1c1593671ce07998a8ccb0.svg#root' /></svg></span> Community home </a><a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" href="https://betterstack.com/community/guides"><span class='text-neutral-200'><svg width='20' height='20' alt='' style='--currentColor: currentColor;'><use href='/assets/v2/guides-3c7383ba1af5330b1c7df20232fb7c2df8ca63a0fad8de36a12930eefd4d23f5.svg#root' /></svg></span> Guides </a><a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" href="https://betterstack.com/community/questions"><span class='text-neutral-200'><svg width='20' height='20' alt='' style='--currentColor: currentColor;'><use href='/assets/v2/questions-f8bf552415b1338196322c800af25f02649065803debc56e35284dc8817f4f62.svg#root' /></svg></span> Questions </a><a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" href="https://betterstack.com/community/comparisons"><span class='text-neutral-200'><svg width='20' height='20' alt='' style='--currentColor: currentColor;'><use href='/assets/v2/comparisons-fb6863a2e083bb6469dc4f30df33fda11ca8ddb21e20b705fee14bbd01f921e1.svg#root' /></svg></span> Comparisons </a><a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" href="https://betterstack.com/community/blog"><span class='text-neutral-200'><svg width='20' height='20' alt='' style='--currentColor: currentColor;'><use href='/assets/v2/blog-b6395fefdf95ecf0d620f4edb28e3684d1bf00f1f7ed3450247f3822d54413e5.svg#root' /></svg></span> Blog </a><a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" target="_blank" href="https://newsletter.betterstack.com/"><span class='text-neutral-200'><svg class=' w-5 h-5 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/solid/newspaper-c03849807579231cbe11aab7bb71b8810c2ad486782add5cc373e187b9fd211a.svg#root' /></svg></span> Newsletter </a> </div> </div> </button> </form> <button aria-controls='company-menu' aria-haspopup='menu' class='p-3 group relative flex items-center'> <div class='transition group-hover:text-white'>Company</div> <span class='absolute -right-1 text-[#656A7B]'><svg class='group-hover:rotate-180 transition w-[11px] h-[11px] inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/chevron-down-ca9a5c77e9dbeb8f579d14aa09540c2e7fd1df2b870baf7bb2b697d8628d2237.svg#root' /></svg></span> <div class='hidden group-hover:block absolute z-40 top-full left-0 text-left' id='company-menu' role='menu' tabindex='-1'> <div class='rounded-lg border backdrop-blur-2xl flex flex-col gap-1 w-[190px] p-[6px] bg-[#181926]/80 border-[#1F2433]/75'> <a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" href="/careers"><span class='text-neutral-200'><svg width='20' height='20' alt='' style='--currentColor: currentColor;'><use href='/assets/v2/ship-fac80f771cb6bf9b83f75566358b7f7f55096ead16224af4a5017c66d7c95d2d.svg#root' /></svg></span> Work at Better Stack </a><a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" href="/careers/engineering"><span class='text-neutral-200'><svg width='20' height='20' alt='' style='--currentColor: currentColor;'><use href='/assets/v2/code-962cf453e652fb895c84780aeeef1b4b86dfe3746a37745c329574151171174e.svg#root' /></svg></span> Engineering </a><a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" href="/security"><span class='text-neutral-200'><svg width='20' height='20' alt='' class=' w-5 h-5 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/solid/shield-check-3c099ada976d7267d4d10e6a1989b201b1a2bc19e24d8d856d2267b25b355423.svg#root' /></svg></span> Security </a> </div> </div> </button> <a class='hidden lg:flex p-3 hover:text-white transition items-center' href='/enterprise'> <span>Enterprise</span> </a> </div> </div> <div class='flex items-center sm:gap-2 whitespace-nowrap -mr-3 md:mr-0'> <a class="p-2 transition hover:text-white" data-turbo="false" href="/users/sign-in">Sign in</a> <a class="px-2 h-[27px] flex items-center rounded bg-button-gradient text-white font-medium" data-turbo="false" href="/users/sign-up">Sign up</a> <button aria-label='Open menu' class='p-2 group relative md:hidden text-neutral-300' id='open-menu'> <svg class=' w-5 h-5 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/bars-3-351934c6c1a4098059288510d0dae400e4c50af0fb9ab0861217099dae52d243.svg#root' /></svg> </button> <button aria-label='Close menu' class='hidden p-2 group relative md:hidden text-neutral-300' id='close-menu'> <svg class=' w-5 h-5 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/x-mark-79d01b614be655fe3c9476bfc5894abf50a46176906bb008c2d4837615e51312.svg#root' /></svg> </button> </div> <div class='hidden md:hidden p-5 fixed z-40 left-0 right-0 backdrop-blur-2xl top-[52px] bg-[#181926]/80 text-[#C9D3EE]' id='mobile-menu'> <div class='js-menu-section flex flex-col gap-1' data-section='root'> <button class='p-3 group relative flex items-center' data-section='platform'> Platform <span class='text-[#656A7B]'><svg class='ml-[6px] w-[11px] h-[11px] inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/chevron-right-3f07eda912c8d37d8cf5af5275dde316fd9aa22bf0aca16e515d4bb8f25196c3.svg#root' /></svg></span> </button> <a class="p-3" href="https://betterstack.com/docs/">Documentation</a> <a class="p-3" href="/pricing">Pricing</a> <button class='p-3 group relative flex items-center' data-section='community'> Community <span class='text-[#656A7B]'><svg class='ml-[6px] w-[11px] h-[11px] inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/chevron-right-3f07eda912c8d37d8cf5af5275dde316fd9aa22bf0aca16e515d4bb8f25196c3.svg#root' /></svg></span> </button> <button class='p-3 group relative flex items-center' data-section='company'> Company <span class='text-[#656A7B]'><svg class='ml-[6px] w-[11px] h-[11px] inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/chevron-right-3f07eda912c8d37d8cf5af5275dde316fd9aa22bf0aca16e515d4bb8f25196c3.svg#root' /></svg></span> </button> <a class="p-3" href="/enterprise">Enterprise</a> </div> <div class='js-menu-section hidden' data-section='platform'> <button class='mb-2 p-3 group relative flex items-center' data-section='root'> <svg class='mr-[6px] w-[11px] h-[11px] inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/chevron-left-1fa568d125ef223858e7f0d6c6c1ea990e71ddf434f875a8a2c4bbb23fc692a6.svg#root' /></svg> Back </button> <div class='flex-1 md:px-2 py-3 flex flex-col gap-1 border-b md:border-b-0 md:border-r relative border-[#1F2433]/40'> <div class='absolute -top-7 bottom-full left-0 right-0'></div> <a class='-my-1 p-1 flex items-center gap-3 group/uptime ml-[6px]' href='/uptime'> <svg width='69' height='20' alt='' style='--currentColor: currentColor;'><use href='/assets/v2/uptime-logo-fcc6a01850aa0409e3743c6b70051bfc042504854c76a833ef52512d92dccc16.svg#root' /></svg> <div class='border-l relative top-[1px] h-[12px] border-[#727DA1]/30'></div> <div class='text-sm text-neutral-200 flex items-center'> <span class='mr-1'>Better Stack</span> <svg class='transition-all relative top-[1px] h-4 w-0 group-hover/uptime:w-4 inline' alt='' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/mini/arrow-right-c07cd271c9c8d131084c513571295decfe8bf410e675cdde2686c1adf90b494b.svg#root' /></svg> <svg class='transition-all relative top-[1px] h-4 w-4 group-hover/uptime:w-0 inline' alt='' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/mini/chevron-right-ee58bdc22e1fb683dd9ffd95ba0c4df56d8a2a0904d7ddbe63b6e2b4ab82f090.svg#root' /></svg> </div> </a> <hr class='mt-2 border-t border-[#1F2433]/40'> <a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/uptime"><span class='mr-1 text-[#7C87F7]'><svg class='relative top-[-2px] left-[2px] brand-primary-text-100 w-5 h-5 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/globe-alt-5353caa43f8b313373d83572e4ad34e7a563836c16aa6096a14a264330713862.svg#root' /></svg></span> <div> <div class='font-medium'>Uptime monitoring</div> <div class='mt-1 text-xs text-neutral-200'>Get 10 monitors, and a status page totally free.</div> </div> </a><a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/incident-management"><span class='text-[#7C87F7]'><svg width='25' height='24' alt='' class='relative top-[-2px] scale-[90%]' style='--currentColor: currentColor;'><use href='/assets/v2/calendar-6357844552d3ab90ba30b8f0b220de1523ff3aeee8c314a7805eecc7c7393754.svg#root' /></svg></span> <div> <div class='font-medium'>Incident management & on-call</div> <div class='mt-1 text-xs text-neutral-200'>Get a call when your website goes down</div> </div> </a><a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/status-page"><span class='mr-1 text-[#7C87F7]'><svg width='20' height='20' alt='' class='relative top-[-1px] left-[2px]' style='--currentColor: currentColor;'><use href='/assets/v2/page-e138419398f9cc3e22fdf0693bc55a06d3cc6daec37069e878be827b24d07521.svg#root' /></svg></span> <div> <div class='font-medium'>Status page</div> <div class='mt-1 text-xs text-neutral-200'>Communicate downtime & build trust</div> </div> </a><a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/incident-silencing"><span class='mr-1 text-[#7C87F7]'><svg class='relative top-[-1px] left-[2px] brand-primary-text-100 w-5 h-5 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/bell-alert-bae43eae97d5f8f065ac7cfc69ecfb8325b06acf5014e922db6f5ed2b0da780c.svg#root' /></svg></span> <div> <div class='font-medium'>Incident silencing</div> <div class='mt-1 text-xs text-neutral-200'>Reduce alert noise & prevent alert fatigue</div> </div> </a><a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/slack-incident-management"><div class='mr-1 w-[18px] h-[18px] mt-[2px] text-brand-primary-100'><svg alt='' class='w-full h-full relative top-[-1px] left-[2px]' style='--currentColor: currentColor;'><use href='/assets/v2/slack-77d755b1a6198a50134d9500924a07b2a55cfb06d5d704776cddd5d419701977.svg#root' /></svg></div> <div> <div class='font-medium'>Slack-based incident management</div> <div class='mt-1 text-xs text-neutral-200'>Resolve incidents directly in Slack</div> </div> </a></div> <div class='flex-1 mt-2 md:mt-0 md:px-2 py-3 flex flex-col gap-1'> <a class='ml-1 -my-1 p-1 flex items-center gap-3 group/logtail' href='/telemetry'> <svg width='227' height='48' alt='' class='w-[95px] h-5' style='--currentColor: currentColor;'><use href='/assets/v2/telemetry-logo-9698cd9133dcc1454659c661f4632fb8d4453b2e62bd2f98a248c69a3767fb8a.svg#root' /></svg> <div class='border-l relative top-[1px] h-[12px] border-[#727DA1]/30'></div> <div class='text-sm text-neutral-200 flex items-center'> <span class='mr-1'>Better Stack</span> <svg class='transition-all relative top-[1px] h-4 w-0 group-hover/logtail:w-4 inline' alt='' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/mini/arrow-right-c07cd271c9c8d131084c513571295decfe8bf410e675cdde2686c1adf90b494b.svg#root' /></svg> <svg class='transition-all relative top-[1px] h-4 w-4 group-hover/logtail:w-0 inline' alt='' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/mini/chevron-right-ee58bdc22e1fb683dd9ffd95ba0c4df56d8a2a0904d7ddbe63b6e2b4ab82f090.svg#root' /></svg> </div> </a> <hr class='mt-2 border-t border-[#1F2433]/40'> <a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/telemetry"><span class='text-[#7C87F7]'><svg width='25' height='24' alt='' class='relative top-[-2px] scale-[90%]' style='--currentColor: currentColor;'><use href='/assets/v2/code-insert-b8f283aedd6b241eb85334d4566ca3fbe15a8fc15c4ecf8638bc97f7da00e854.svg#root' /></svg></span> <div> <div class='font-medium'>Log management</div> <div class='mt-1 text-xs text-neutral-200'>Collect insights across your stack</div> </div> </a><a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/infrastructure-monitoring"><span class='mr-1 text-[#7C87F7]'><svg class='relative top-[-1px] left-[2px] brand-primary-text-100 w-5 h-5 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/solid/server-stack-d9821d67c85b098d180212edfdab2f04b882ab293f52834aa72d0fd2fbe06b0d.svg#root' /></svg></span> <div> <div class='font-medium'>Infrastructure monitoring</div> <div class='mt-1 text-xs text-neutral-200'>OpenTelemetry-native infrastructure monitoring</div> </div> </a><a class="block px-2 flex gap-2 transition py-[10px] hover:bg-[#727DA1]/15 rounded leading-[145%]" href="/dashboards"><span class='text-[#7C87F7]'><svg width='25' height='24' alt='' class='relative top-[-2px] scale-[90%]' style='--currentColor: currentColor;'><use href='/assets/v2/flipchart-2cc00e4a7089a6b436dc7686bb14f3cac3ebb97a628e5824ead4ee4b38f179b3.svg#root' /></svg></span> <div> <div class='font-medium'>Observability dashboards</div> <div class='mt-1 text-xs text-neutral-200'>Analyze metrics across your services</div> </div> </a></div> </div> <div class='js-menu-section hidden flex flex-col gap-1' data-section='community'> <button class='mb-2 p-3 group relative flex items-center' data-section='root'> <svg class='mr-[6px] w-[11px] h-[11px] inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/chevron-left-1fa568d125ef223858e7f0d6c6c1ea990e71ddf434f875a8a2c4bbb23fc692a6.svg#root' /></svg> Back </button> <a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%] md:hidden" href="https://betterstack.com/community"><span class='text-neutral-200'><svg class='mx-[2px] w-4 h-4 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/solid/users-26c9af687d35d046de38f868bdfb06189d53f15b4a1c1593671ce07998a8ccb0.svg#root' /></svg></span> Community home </a><a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" href="https://betterstack.com/community/guides"><span class='text-neutral-200'><svg width='20' height='20' alt='' style='--currentColor: currentColor;'><use href='/assets/v2/guides-3c7383ba1af5330b1c7df20232fb7c2df8ca63a0fad8de36a12930eefd4d23f5.svg#root' /></svg></span> Guides </a><a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" href="https://betterstack.com/community/questions"><span class='text-neutral-200'><svg width='20' height='20' alt='' style='--currentColor: currentColor;'><use href='/assets/v2/questions-f8bf552415b1338196322c800af25f02649065803debc56e35284dc8817f4f62.svg#root' /></svg></span> Questions </a><a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" href="https://betterstack.com/community/comparisons"><span class='text-neutral-200'><svg width='20' height='20' alt='' style='--currentColor: currentColor;'><use href='/assets/v2/comparisons-fb6863a2e083bb6469dc4f30df33fda11ca8ddb21e20b705fee14bbd01f921e1.svg#root' /></svg></span> Comparisons </a><a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" href="https://betterstack.com/community/blog"><span class='text-neutral-200'><svg width='20' height='20' alt='' style='--currentColor: currentColor;'><use href='/assets/v2/blog-b6395fefdf95ecf0d620f4edb28e3684d1bf00f1f7ed3450247f3822d54413e5.svg#root' /></svg></span> Blog </a><a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" target="_blank" href="https://newsletter.betterstack.com/"><span class='text-neutral-200'><svg class=' w-5 h-5 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/solid/newspaper-c03849807579231cbe11aab7bb71b8810c2ad486782add5cc373e187b9fd211a.svg#root' /></svg></span> Newsletter </a> </div> <div class='js-menu-section hidden pb-5 flex flex-col gap-1' data-section='company'> <button class='mb-2 p-3 group relative flex items-center' data-section='root'> <svg class='mr-[6px] w-[11px] h-[11px] inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/chevron-left-1fa568d125ef223858e7f0d6c6c1ea990e71ddf434f875a8a2c4bbb23fc692a6.svg#root' /></svg> Back </button> <a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" href="/careers"><span class='text-neutral-200'><svg width='20' height='20' alt='' style='--currentColor: currentColor;'><use href='/assets/v2/ship-fac80f771cb6bf9b83f75566358b7f7f55096ead16224af4a5017c66d7c95d2d.svg#root' /></svg></span> Work at Better Stack </a><a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" href="/careers/engineering"><span class='text-neutral-200'><svg width='20' height='20' alt='' style='--currentColor: currentColor;'><use href='/assets/v2/code-962cf453e652fb895c84780aeeef1b4b86dfe3746a37745c329574151171174e.svg#root' /></svg></span> Engineering </a><a class="block px-2 flex items-center gap-2 transition py-[6px] hover:bg-[#727DA1]/15 rounded-[6px] leading-[145%]" href="/security"><span class='text-neutral-200'><svg width='20' height='20' alt='' class=' w-5 h-5 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/solid/shield-check-3c099ada976d7267d4d10e6a1989b201b1a2bc19e24d8d856d2267b25b355423.svg#root' /></svg></span> Security </a> </div> </div> </nav> </header> <header class='dark sticky top-0 z-30 flex justify-center leading-none w-full backdrop-blur-2xl bg-[#0B0C14]/80 text-[13px]'> <div class='mx-2 sm:mx-5 flex grow overflow-x-scroll no-scrollbars relative max-w-[1110px]'> <nav class='grow flex items-center border-b h-[49px] border-[#727DA1]/15'> <a class='block mr-5 ml-2 p-2 hover:text-white mt-[-2px]' href='/community/?utm_content&utm_medium=guides&utm_source=community&utm_term=on-call-scheduling'> Community </a> <div class='grow flex items-stretch gap-5 md:justify-between'> <ul class='flex items-center gap-5 whitespace-nowrap'> <li class='flex relative dropdown-trigger hover:text-white'> <a class='w-full p-2 text-white rounded bg-[#98A4F714]' href='/community/guides/?utm_content&utm_medium=guides&utm_source=community&utm_term=on-call-scheduling'> Guides </a> </li> <li class='flex relative dropdown-trigger hover:text-white'> <a class='w-full p-2' href='/community/questions/?utm_content&utm_medium=guides&utm_source=community&utm_term=on-call-scheduling'> Questions </a> </li> <li class='flex relative dropdown-trigger hover:text-white'> <a class='w-full p-2' href='/community/comparisons/?utm_content&utm_medium=guides&utm_source=community&utm_term=on-call-scheduling'> Comparisons </a> </li> <li class='flex relative dropdown-trigger hover:text-white'> <a class='w-full p-2' href='/community/blog/?utm_content&utm_medium=guides&utm_source=community&utm_term=on-call-scheduling'> Blog </a> </li> </ul> <a class='flex items-center hover:text-white md:hidden' href='https://betterstack.com/docs/'>Docs</a> <div class='sticky md:absolute z-10 right-2 md:right-0 top-0 bottom-0 flex items-center gap-5 whitespace-nowrap'> <a class='hover:text-white hidden md:block' href='https://betterstack.com/docs/'>Documentation</a> <div id='docsearch-container'></div> <script src='https://cdnjs.betterstack.com/@docsearch/js@3.5.2/dist/umd/index.js'></script> <script nonce="511316a23e6ed45b33fbddc9431be69e"> //<![CDATA[ function loadDocsearch() { if (!window.docsearch) { setTimeout(loadDocsearch, 50); return; } window.docsearch({ container: '#docsearch-container', appId: '4N04E5JBP3', indexName: 'betterstack22', apiKey: '1acd2b32f9173069cd6467c9d186e21f', maxResultsPerGroup: 20, searchParameters: { hitsPerPage: 20, }, }); // This hack prevents scrolling after closing the modal in Safari. // https://github.com/algolia/docsearch/issues/1260 document.getElementsByClassName('DocSearch DocSearch-Button')[0]?.addEventListener('click', function (event) { document.querySelectorAll('.js-docsearch-anchor').forEach((element) => { element.parentNode.removeChild(element); }); const input = document.createElement('input') input.setAttribute('type', 'text') const div = document.createElement('div'); div.appendChild(input); div.classList.add('fixed', 'js-docsearch-anchor'); document.body.appendChild(div); }); // Without this CMD+K would open one modal per visited page with the search. // Docsearch does not support 'destroy', so we need to hack it. document.addEventListener('keydown', function (event) { if (event.key === 'k' && event.metaKey) { event.stopPropagation(); document.getElementsByClassName('DocSearch DocSearch-Button')[0]?.click(); } }); } loadDocsearch(); //]]> </script> </div> </div> </nav> </div> <div class='absolute pointer-events-none top-0 bottom-0 right-0 bg-gradient-to-l md:hidden w-28 from-[#0B0C14] via-[#0B0C14]'></div> </header> <div class='bg-white'><main> <div class='dark bg-primary-hero'> <div class='mx-auto pt-4 pb-8 px-7 max-w-[1130px]'> <a class='text-base text-[#C9D3EE]' href='/community/guides/incident-management/'> <svg class='inline mr-2 -mt-[2px] w-4 h-4 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/outline/arrow-left-ed700dfed9514ccfb810fa7a4d596df346b95f0b52f9f415dc3fd98fdde23853.svg#root' /></svg> Back to Incident Management guides </a> <div class='pt-10 md:pt-16 lg:pt-20'> <h1 class='font-helveticaDisplay font-bold text-center text-white overflow-hidden text-ellipsis mx-auto text-[36px] md:text-[48px] lg:text-[54px] leading-[120%] max-w-[640px]'> How to Create a Developer-Friendly On-Call Schedule in 7 steps </h1> <div class='mt-4 flex justify-center text-base flex-wrap'> <a class="px-[10px] py-[2px] mr-2 mt-2 rounded-lg bg-white/[0.04] hover:bg-white/[0.05] border border-white/[0.05] text-white whitespace-nowrap" href="/tag/incident-management?utm_content&utm_medium=guides&utm_source=community&utm_term=on-call-scheduling">Incident Management</a> <a class="px-[10px] py-[2px] mr-2 mt-2 rounded-lg bg-white/[0.04] hover:bg-white/[0.05] border border-white/[0.05] text-white whitespace-nowrap" href="/tag/on-call?utm_content&utm_medium=guides&utm_source=community&utm_term=on-call-scheduling">On-call</a> </div> <div class='mt-10 md:mt-16 mt-20 text-center'> <div class='text-white'>Jenda Tovarys</div> <div class='mt-1 uppercase whitespace-nowrap text-xs font-medium text-neutral-300 tracking-[1.56px]'> Updated on November 10, 2023 </div> </div> </div> </div> </div> <div class='container mx-auto py-8 lg:py-16 max-w-[1130px]'> <div class='lg:flex' data-controller='toc'> <div class='grow xl:flex'> <div class='sticky hidden xl:block mr-12 shrink-0 w-[190px]' data-toc-target='toc'> <div class='text-base text-neutral-300 sticky scroll-smooth overflow-y-auto pretty-scrollbars max-h-screen top-[100px] pb-40'> <h6 class='text-neutral-800 font-bold'>Contents</h6> <div class='table-of-contents flat'> <ul> <li> <a href="#what-is-an-on-call-schedule">What is an on-call schedule?</a> </li> <li> <a href="#how-to-create-an-on-call-schedule">How to create an on-call schedule</a> </li> <li> <a href="#step-1-understand-team-preferences">Step 1: Understand team preferences</a> </li> <li> <a href="#step-2-pick-one-of-the-common-schedules">Step 2: Pick one of the common schedules</a> </li> <li> <a href="#step-3-create-primary-and-backup-on-call-duties">Step 3: Create primary and backup on-call duties</a> </li> <li> <a href="#step-4-define-the-on-call-process-and-responsibilities">Step 4: Define the on-call process and responsibilities</a> </li> <li> <a href="#step-5-ditch-the-spreadsheet-and-select-a-tool">Step 5: Ditch the spreadsheet and select a tool</a> </li> <li> <a href="#step-6-nurture-a-supportive-culture">Step 6: Nurture a supportive culture</a> </li> <li> <a href="#step-7-measure-iterate-and-improve">Step 7: Measure, iterate, and improve</a> </li> <li> <a href="#learn-more">Learn more</a> </li> </ul> </div> </div> </div> <div class='grow shrink-0 prose max-w-[616px]' data-controller='body' data-toc-target='content'> <p>It’s 4:00 in the morning. Phone rings. The website is down. Here we go again.</p><p>On-call is often the most stressful part of the job for developers. But it rarely gets the care it really deserves.</p><p>Here are actionable tips for both managers and individual developers that can significantly improve resolving downtimes.</p> <h2 id="what-is-an-on-call-schedule">What is an on-call schedule?</h2> <p><strong>On-Call</strong> is a practice of always having a team member on standby, ready to respond in case of an urgent incident, even if it occurs outside of regular working hours. It’s one of the core processes of <a rel="" target="" class="" href="/community/guides/incident-management/what-is-incident-management/">incident management</a> and a key to minimizing downtime and ensuring a reliable service.</p><p><strong>On-Call schedule</strong> is a dedicated calendar allowing teams to assign and monitor the on-call shifts.</p> <article class='callout flex py-[13px] pl-4 pr-5 my-8 rounded-lg border text-brand-primary-200 marker:text-brand-primary-200 border-[#BECCFB]/80 bg-brand-primary-100/10'> <div class='shrink-0 not-prose mr-3 -mt-1'><svg class=' text-brand-primary-100 w-4 h-4 inline' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/icons/heroicons_v2/mini/information-circle-2371734370481cdc89067ae4b4a66a6c5bc5d9d981bf75702d3378795cde439a.svg#root' /></svg></div> <div class='content'><h3 id="how-others-do-it-on-call-scheduling-at-google"><strong>💡 How others do it: On-call scheduling at Google</strong></h3> <p>Google SRE (site reliability engineering) teams usually have a schedule where each engineer is on-call for one week every month. During this week, they are ready to respond to incidents at any time of the day and night.</p><p>They spend the rest of the month on engineering (ideally 50% of their time) and on other operational, non-project tasks (around 25% of their time).</p><p><strong>Read more:</strong> <a rel="" target="_blank" class="" href="https://sre.google/sre-book/being-on-call/">Google SRE Book: Being On-call<span class="whitespace-nowrap"><svg class='relative -top-[1px] ml-1 w-4 h-4 inline' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/icons/heroicons_v2/mini/arrow-top-right-on-square-d4a4b2dfe559997065a0de05c441ef56d661be449bf96d9ce30eb4e0af2516cf.svg#root' /></svg></span></a></p></div> </article> <h2 id="how-to-create-an-on-call-schedule">How to create an on-call schedule</h2> <p>Creating a quality on-call is challenging because there is no one-fits-all model. But on-call doesn’t have to be difficult, sleep-depriving, or inevitably leading to burnout.</p><p>Here is how to approach it.</p> <h2 id="step-1-understand-team-preferences">Step 1: Understand team preferences</h2> <p>Everyone is different. Some people like to start working at 11 am and finish late at night. Some start at 7 am and want to spend the afternoons with the kids.</p><p>Before pushing pre-build templates used at Google, see what everyone prefers and centralize your findings into a single document. For each team member, you should know the following.</p> <ul> <li><strong>Timezone</strong></li> <li><strong>Regular working hours preference</strong></li> <li><strong>On-call preference</strong></li> </ul> <p>Once that’s done, you will have something similar to this table.</p><div class='table-container'> <table> <thead> <tr> <th>Team member</th> <th>Timezone</th> <th>Regular working hours preference</th> <th>On-call preference</th> </tr> </thead> <tbody> <tr> <td>Katie</td> <td>+0 UTM (London)</td> <td>9:00 - 17:00</td> <td>Prefers full-week on-call duty once a month and then the rest off.</td> </tr> <tr> <td>Brandon</td> <td>-8 UTM (San Francisco)</td> <td>10:00 - 18:00</td> <td>Can work Saturdays or Sundays from time to time if compensated for it.</td> </tr> <tr> <td>Cecelia</td> <td>-5 UTM (Atlanta)</td> <td>7:00 - 15:00</td> <td>No preference</td> </tr> <tr> <td>David</td> <td>+4 UTM (Dubai)</td> <td>9:00 - 17:00</td> <td>Can work on Sundays but wants Saturdays off.</td> </tr> </tbody> </table> </div> <p>This mini research will give you a great starting position to fully understand what your teams’ preferences and capabilities are.</p> <h2 id="step-2-pick-one-of-the-common-schedules">Step 2: Pick one of the common schedules</h2> <p>With team preferences in place, you can start drafting the schedule.</p><p>If your initial research doesn’t land a schedule out of the gate, you can start by picking one of the battle-tested schedules.</p> <h3 id="workweek-and-weekend">Workweek and weekend</h3> <p>Engineers are on-call during the workweek and weekend — 7 days in a row. The on-call week is intense. However, the rest of the month is on-call free. This practice is used in Google and is also doable for teams of any size. Depending on your team size, you have several options.</p> <ul> <li><strong>Workweek and weekend (monthly)</strong>: One workweek and weekend every month, then the rest of the month is free. For this, you’ll need at least four team members.</li> <li><strong>Workweek and weekend (bi-weekly)</strong>: One workweek and weekend, then one week and weekend off. You can do this with only two people in a team.</li> </ul> <p><div data-controller='lightbox' class='relative cursor-pointer'> <figure data-action='click->lightbox#open' data-lightbox-target='picture'> <picture> <source media="(max-width: 800px)" data-srcset="https://imagedelivery.net/xZXo0QFi-1_4Zimer-T0XQ/3e8e1faf-7140-4271-54da-a5252de7e600/md1x 1x, https://imagedelivery.net/xZXo0QFi-1_4Zimer-T0XQ/3e8e1faf-7140-4271-54da-a5252de7e600/md2x 2x" width=500 height=374 /> <source media="(min-width: 801px)" data-srcset="https://imagedelivery.net/xZXo0QFi-1_4Zimer-T0XQ/3e8e1faf-7140-4271-54da-a5252de7e600/lg1x 1x, https://imagedelivery.net/xZXo0QFi-1_4Zimer-T0XQ/3e8e1faf-7140-4271-54da-a5252de7e600/lg2x 2x" width=650 height=486 /> <img alt="Xnapper-2023-10-31-17.16.45 (1).png" width="1004" height="752" class="w-full lazyload" data-src="https://imagedelivery.net/xZXo0QFi-1_4Zimer-T0XQ/3e8e1faf-7140-4271-54da-a5252de7e600/orig" src="" /> </picture> </figure> <figure class='hidden lightbox' data-lightbox-target='container'> <img alt="Xnapper-2023-10-31-17.16.45 (1).png" width="1004" height="752" loading="lazy" data-action="click->lightbox#close" data-lightbox-target="img" src="https://imagedelivery.net/xZXo0QFi-1_4Zimer-T0XQ/3e8e1faf-7140-4271-54da-a5252de7e600/orig" /> </figure> </div> </p> <h3 id="follow-the-sun"><strong>Follow-the-sun</strong></h3> <p>This model leverages the timezone difference between different team members. It allows all on-call engineers to have only business hours duties and avoid night shifts. It’s the most protective of a healthy sleep schedule.</p><p>Completely eliminating night shifts requires specific team locations across different time zones. The reality in most cases is that the follow the sun eliminates only some parts of the night shifts but only rarely creates a smooth nine-to-five on-call schedule.</p><p>You can of course, implement follow the sun model only with two people, given that they have a reasonable time difference, and eliminate at least some non-standard working hours.</p><p><div data-controller='lightbox' class='relative cursor-pointer'> <figure data-action='click->lightbox#open' data-lightbox-target='picture'> <picture> <source media="(max-width: 800px)" data-srcset="https://imagedelivery.net/xZXo0QFi-1_4Zimer-T0XQ/539abdc4-435b-420a-0f06-84eedadae000/md1x 1x, https://imagedelivery.net/xZXo0QFi-1_4Zimer-T0XQ/539abdc4-435b-420a-0f06-84eedadae000/md2x 2x" width=500 height=375 /> <source media="(min-width: 801px)" data-srcset="https://imagedelivery.net/xZXo0QFi-1_4Zimer-T0XQ/539abdc4-435b-420a-0f06-84eedadae000/lg1x 1x, https://imagedelivery.net/xZXo0QFi-1_4Zimer-T0XQ/539abdc4-435b-420a-0f06-84eedadae000/lg2x 2x" width=650 height=487 /> <img alt="Xnapper-2023-10-31-17.19.52 (1).png" width="1008" height="756" class="w-full lazyload" data-src="https://imagedelivery.net/xZXo0QFi-1_4Zimer-T0XQ/539abdc4-435b-420a-0f06-84eedadae000/orig" src="" /> </picture> </figure> <figure class='hidden lightbox' data-lightbox-target='container'> <img alt="Xnapper-2023-10-31-17.19.52 (1).png" width="1008" height="756" loading="lazy" data-action="click->lightbox#close" data-lightbox-target="img" src="https://imagedelivery.net/xZXo0QFi-1_4Zimer-T0XQ/539abdc4-435b-420a-0f06-84eedadae000/orig" /> </figure> </div> </p><p><strong>Read more</strong>: <a rel="" target="" class="" href="/community/guides/incident-management/on-call-templates/">4 On-Call Schedule Templates (With Benefits and Downsides)</a>.</p> <h2 id="step-3-create-primary-and-backup-on-call-duties">Step 3: Create primary and backup on-call duties</h2> <p>If you have the luxury of a larger team and want to be extra safe, then set up primary and secondary (backup) schedules.</p><p>How it works is that If the primary on-call person doesn’t acknowledge the incident within a given timeframe, it’s escalated to the backup. Backup on-call carries the same responsibilities as the primary one, and it needs to be treated that way.</p><p>First, the team needs to understand that being a backup is no different from being a primary — you must be ready to react within minutes.</p><p>Secondly, managers must treat it that way and consider being a backup on-call engineer equivalent to regular on-call duties, especially regarding compensation.</p><p><div data-controller='lightbox' class='relative cursor-pointer'> <figure data-action='click->lightbox#open' data-lightbox-target='picture'> <picture> <source media="(max-width: 800px)" data-srcset="https://imagedelivery.net/xZXo0QFi-1_4Zimer-T0XQ/815c075e-6df2-485b-81fe-db7c0536c200/md1x 1x, https://imagedelivery.net/xZXo0QFi-1_4Zimer-T0XQ/815c075e-6df2-485b-81fe-db7c0536c200/md2x 2x" width=500 height=375 /> <source media="(min-width: 801px)" data-srcset="https://imagedelivery.net/xZXo0QFi-1_4Zimer-T0XQ/815c075e-6df2-485b-81fe-db7c0536c200/lg1x 1x, https://imagedelivery.net/xZXo0QFi-1_4Zimer-T0XQ/815c075e-6df2-485b-81fe-db7c0536c200/lg2x 2x" width=650 height=487 /> <img alt="backup on-call (1).png" width="1484" height="1113" class="w-full lazyload" data-src="https://imagedelivery.net/xZXo0QFi-1_4Zimer-T0XQ/815c075e-6df2-485b-81fe-db7c0536c200/orig" src="" /> </picture> </figure> <figure class='hidden lightbox' data-lightbox-target='container'> <img alt="backup on-call (1).png" width="1484" height="1113" loading="lazy" data-action="click->lightbox#close" data-lightbox-target="img" src="https://imagedelivery.net/xZXo0QFi-1_4Zimer-T0XQ/815c075e-6df2-485b-81fe-db7c0536c200/orig" /> </figure> </div> </p> <article class='callout flex py-[13px] pl-4 pr-5 my-8 rounded-lg border text-brand-primary-200 marker:text-brand-primary-200 border-[#BECCFB]/80 bg-brand-primary-100/10'> <div class='shrink-0 not-prose mr-3 -mt-1'><svg class=' text-brand-primary-100 w-4 h-4 inline' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/icons/heroicons_v2/mini/information-circle-2371734370481cdc89067ae4b4a66a6c5bc5d9d981bf75702d3378795cde439a.svg#root' /></svg></div> <div class='content'><p>There is an option for a third on-call tier, which escalates to the team lead. If everything is set up correctly with the team, the escalation to the third tier should be only an infrequent occurrence event.</p><p>The image above shows how this setup looks in <a rel="" target="" class="" href="https://betterstack.com/uptime?utm_content=callout&utm_medium=guides&utm_source=community&utm_term=on-call-scheduling">Better Stack</a>.</p></div> </article> <h2 id="step-4-define-the-on-call-process-and-responsibilities">Step 4: Define the on-call process and responsibilities</h2> <p>Write down all the responsibilities of on-call engineers and make it crystal clear what is expected of everyone.</p><p>Responsibilities are specific to a given organization, but good questions to answer and write down include:</p> <ul> <li><strong>Defining success:</strong> Are there specific metrics like MTTR that determine success?</li> <li><strong>Working during on-call:</strong> Are developers doing development work during on-call time? And if yes, how are the deliverables (development work) checked in the context of incidents?</li> <li><strong>Working vs. non-working hours responsibilities</strong>: Is there a difference between what is expected from an on-call person during working hours and non-working hours (night-time)?</li> <li><strong>SLAs/SLOs:</strong> Are there any contractual obligations that must be achieved?</li> <li><strong>Vacations</strong>: When and how does one apply for a vacation to make on-call planning possible?</li> <li><strong>Ad-hoc changes</strong>: What is the process of changing on-call on the same day (for example, due to sickness)?</li> <li><strong>Compensation:</strong> What is the compensation for on-call employees? What’s the maximum time a single person can be on-call every month?</li> </ul> <p><strong>Read more:</strong></p> <ul> <li><a rel="" target="" class="" href="/community/guides/incident-management/on-call-pay/">On-call Compensation Models (and How to Solve On-Call Pay)</a></li> <li><a rel="" target="" class="" href="/community/guides/incident-management/sla-vs-slo-vs-sli/">SLAs and SLOs Explained</a></li> </ul> <h2 id="step-5-ditch-the-spreadsheet-and-select-a-tool">Step 5: Ditch the spreadsheet and select a tool</h2> <p>Managing on-call from a spreadsheet is a thing of the past. There are dedicated tools built just for this. Here are the options.</p> <ul> <li><strong>Option 1: Selecting a SaaS solution to manage it —</strong> easiest to set up and manage since everything is handled by a provider like <a rel="" target="" class="" href="https://betterstack.com/uptime">Better Stack</a>. This way, you can create on-call calendars and manage alerting in one place.</li> <li><strong>Option 2: Combining Google or Microsoft Calendar with an alerting tool —</strong> if you already have a schedule in your calendar, you can pick a combined setup. Better Stack offers a native calendar integration, which gives you the ability to manage scheduling there but also to get access to all alerting capabilities (phone calls, SMS, emails, Slack & Teams notifications, and more).</li> <li><strong>Option 3: Self-hosting an open-source project —</strong> this potentially gives you more control, but comes at the cost of more management. The most popular open-source tools are: <a rel="" target="_blank" class="" href="https://github.com/arachnys/cabot">Cabot<span class="whitespace-nowrap"><svg class='relative -top-[1px] ml-1 w-4 h-4 inline' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/icons/heroicons_v2/mini/arrow-top-right-on-square-d4a4b2dfe559997065a0de05c441ef56d661be449bf96d9ce30eb4e0af2516cf.svg#root' /></svg></span></a>,<a rel="" target="_blank" class="" href="https://github.com/Netflix/dispatch">Dispatch<span class="whitespace-nowrap"><svg class='relative -top-[1px] ml-1 w-4 h-4 inline' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/icons/heroicons_v2/mini/arrow-top-right-on-square-d4a4b2dfe559997065a0de05c441ef56d661be449bf96d9ce30eb4e0af2516cf.svg#root' /></svg></span></a>,<a rel="" target="_blank" class="" href="https://github.com/openduty/openduty">Openduty<span class="whitespace-nowrap"><svg class='relative -top-[1px] ml-1 w-4 h-4 inline' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/icons/heroicons_v2/mini/arrow-top-right-on-square-d4a4b2dfe559997065a0de05c441ef56d661be449bf96d9ce30eb4e0af2516cf.svg#root' /></svg></span></a> (now archived), and <a rel="" target="_blank" class="" href="https://github.com/monzo/response">Response<span class="whitespace-nowrap"><svg class='relative -top-[1px] ml-1 w-4 h-4 inline' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/icons/heroicons_v2/mini/arrow-top-right-on-square-d4a4b2dfe559997065a0de05c441ef56d661be449bf96d9ce30eb4e0af2516cf.svg#root' /></svg></span></a>.</li> </ul> <p><strong>Read more:</strong> <a rel="" target="" class="" href="/community/comparisons/pagerduty-vs-opsgenie/">Better Stack vs. Pagerduty vs. Opsgenie</a></p> <h2 id="step-6-nurture-a-supportive-culture">Step 6: Nurture a supportive culture</h2> <p>Often dismissed as obvious by many, but it’s usually not that obvious.</p><p>Creating a supportive culture within a team can significantly improve both employee happiness and incident response effectiveness.</p><p>Every once in a while, personal emergencies or important life events come up. Encouraging team members to help each other and switch duties to step in for others makes all the difference. When teams care for each other, the on-call challenge feels much more manageable.</p> <h2 id="step-7-measure-iterate-and-improve">Step 7: Measure, iterate, and improve</h2> <p>As products, organizations, and teams develop, there is always a need to iterate and fine-tune to accommodate for changes. Don’t be afraid to revisit old processes and ask your team for feedback frequently. On-call is not a static process.</p><p><strong>Measuring on-call performance</strong></p><p>The end goal of having an on-call team is usually a target uptime that is usually based on a company SLA. This <a rel="" target="" class="" href="/community/guides/incident-management/availability-table/">availability table</a> shows the different target levels of uptime from 99.9% up to 99.999% (so-called five nines).</p><p><a rel="" target="" class="" href="/community/guides/incident-management/mttr-and-other-incident-metrics/">Incident metrics</a> like MTTR (mean time to resolve) are also common KPIs for on-call teams. Those are usually useful only once there is an established structure within the on-call process. They give a unique insight into how effective are the specific parts of the incident management process.</p><p><strong>Measuring on-call well-being</strong></p><p>Measuring the happiness of on-call engineers is equally important to any performance metrics. The best way to do this is by regular 1:1s with the team, which yields qualitative feedback.</p><p>The quantitative data to collect include:</p> <ul> <li><strong>Number of false positives</strong>: How many alerts were not actionable, and engineers investigated something that actually wasn’t a problem? How can this be prevented?</li> <li><strong>Number of duplicate alerts:</strong> How many alerts were duplicated, and what can we iterate to prevent engineers from being called multiple times for the incident they are already aware of?</li> <li><strong>Number of low-priority alerts:</strong> How many alerts didn’t require immediate reaction from the on-call team, and how many of those were outside business hours?</li> <li><strong>Number of all alerts:</strong> Is the current number of alerts manageable for the number of people on-call?</li> </ul> <p>Here is an example of a split of incident alert types one might receive. Minimizing the low-priority, false positives, and duplicate alerts once should be one of the easy wins for quick on-call optimization.</p><p><div data-controller='lightbox' class='relative cursor-pointer'> <figure data-action='click->lightbox#open' data-lightbox-target='picture'> <picture> <source media="(max-width: 800px)" data-srcset="https://imagedelivery.net/xZXo0QFi-1_4Zimer-T0XQ/739c8b53-d8d3-4fd4-1faf-e369e78c2000/md1x 1x, https://imagedelivery.net/xZXo0QFi-1_4Zimer-T0XQ/739c8b53-d8d3-4fd4-1faf-e369e78c2000/md2x 2x" width=500 height=500 /> <source media="(min-width: 801px)" data-srcset="https://imagedelivery.net/xZXo0QFi-1_4Zimer-T0XQ/739c8b53-d8d3-4fd4-1faf-e369e78c2000/lg1x 1x, https://imagedelivery.net/xZXo0QFi-1_4Zimer-T0XQ/739c8b53-d8d3-4fd4-1faf-e369e78c2000/lg2x 2x" width=650 height=650 /> <img alt="common URL fortmats of status pages (1000 x 1000 px) (1).png" width="1000" height="1000" class="w-full lazyload" data-src="https://imagedelivery.net/xZXo0QFi-1_4Zimer-T0XQ/739c8b53-d8d3-4fd4-1faf-e369e78c2000/orig" src="" /> </picture> </figure> <figure class='hidden lightbox' data-lightbox-target='container'> <img alt="common URL fortmats of status pages (1000 x 1000 px) (1).png" width="1000" height="1000" loading="lazy" data-action="click->lightbox#close" data-lightbox-target="img" src="https://imagedelivery.net/xZXo0QFi-1_4Zimer-T0XQ/739c8b53-d8d3-4fd4-1faf-e369e78c2000/orig" /> </figure> </div> </p><p>And of course, the fewer alerts an on-call person receives, the lower the chance of something like alert fatigue developing. </p> <h2 id="learn-more">Learn more</h2> <p>Still unsure about your optimal on-call setup? Read the <a rel="" target="" class="" href="/community/guides/incident-management/on-call-templates/">pros and cons of the 4 most popular templates</a>.</p><p>If you want to understand the workings of incident management, start with our <a rel="" target="" class="" href="/community/guides/incident-management/what-is-incident-management/">beginner’s guide</a>.</p><p>Any questions or comments? Let us know at <a rel="" target="" class="" href="mailto:hello@betterstack.com">hello@betterstack.com</a>.</p><p>If you’re working on a new on-call schedule, you can book a <a rel="" target="_blank" class="" href="https://calendly.com/betterstack/meeting">free consultancy call<span class="whitespace-nowrap"><svg class='relative -top-[1px] ml-1 w-4 h-4 inline' style='--currentColor: currentColor;'><use href='https://betterstack.com/assets/icons/heroicons_v2/mini/arrow-top-right-on-square-d4a4b2dfe559997065a0de05c441ef56d661be449bf96d9ce30eb4e0af2516cf.svg#root' /></svg></span></a> with us.</p> <div class='docsearch-ignore'> <a class='block w-0 h-0' id='author-card'></a> <div class='border border-neutral-50 shadow-lg rounded-xl text-base text-neutral-600 flex flex-col px-9 py-6 gap-6 mt-12'> <div class='flex flex-wrap gap-3'> <div><img width="64" height="64" alt="Author's avatar" class="!rounded-none m-0 lazyload" data-src="/assets/articles/authors/jenda-28fd772109ddcc0adc7927b9e14d95e115a39756f2bd015fb319e21a88933a56.png" src="" /></div> <div class='flex flex-col justify-end mb-1'> <div class='text-neutral-400'>Article by</div> <div class='text-neutral-800 font-bold text-xl'>Jenda Tovarys</div> </div> <div class='flex grow justify-end items-end content-end gap-3 mb-1'> <a class='p-1 hover:bg-neutral-50 rounded' href='https://www.linkedin.com/in/jantovarys/' rel='nofollow noopener noreferrer' target='_blank'> <svg width='16' height='16' alt='LinkedIn' class='!rounded-none m-0' style='--currentColor: currentColor;'><use href='/assets/articles/icons/linkedin-7b0f1d7d2ae8b921a7e101c21f2e1c3bdb6bd10a67ee8bab3989f4b5198d8771.svg#root' /></svg> </a> <a class='p-1 hover:bg-neutral-50 rounded' href='https://twitter.com/jantovarys' rel='nofollow noopener noreferrer' target='_blank'> <svg width='16' height='16' alt='Twitter' class='!rounded-none m-0' style='--currentColor: currentColor;'><use href='/assets/articles/icons/twitter-0a71c82dff1d94a2c2cec482547d6393d7341e4f4be980ed508136a75b3d1527.svg#root' /></svg> </a> </div> </div> <div class='text-neutral-400 whitespace-pre-wrap'>Jenda leads Growth at Better Stack. For the past 5 years, Jenda has been writing about exciting learnings from working with hundreds of developers across the world. When he's not spreading the word about the amazing software built at Better Stack, he enjoys traveling, hiking, reading, and playing tennis.</div> </div> <iframe class='mt-16 rounded-xl' frameborder='0' height='320' scrolling='no' src='https://betterstack.substack.com/embed' style='border:1px solid #EEE; background:white;' width='100%'></iframe> <div class='mt-11 text-center'> <div class='text-neutral-300 mt-6'> Got an article suggestion? <a class="!underline !text-neutral-300" href="mailto:hello@betterstack.com?subject=Suggestion%20for%20How%20to%20Create%20a%20Developer-Friendly%20On-Call%20Schedule%20in%207%20steps&body=">Let us know</a> </div> <div class='flex justify-center items-center space-x-3 mt-4'> <a href='https://twitter.com/share?ref_src=twsrc%5Etfw&url=https://betterstack.com/community/guides/incident-management/on-call-scheduling/&text=How+to+Create+a+Developer-Friendly+On-Call+Schedule+in+7+steps+%7C+Better+Stack+Community&via=betterstackhq' rel='nofollow noopener' target='_blank'> <svg width='16' height='16' alt='Share on Twitter' class='!rounded-none m-0' style='--currentColor: currentColor;'><use href='/assets/articles/icons/twitter-0a71c82dff1d94a2c2cec482547d6393d7341e4f4be980ed508136a75b3d1527.svg#root' /></svg> </a> <a href='https://www.facebook.com/sharer/sharer.php?u=https://betterstack.com/community/guides/incident-management/on-call-scheduling/' rel='nofollow noopener' target='_blank'> <svg width='16' height='16' alt='Share on Facebook' class='!rounded-none m-0' style='--currentColor: currentColor;'><use href='/assets/articles/icons/facebook-6ffe06602047bc3abd84874b8b66c4f962ff5e90b8974b83782cbc1c37b32c44.svg#root' /></svg> </a> <a href='mailto:?subject=How%20to%20Create%20a%20Developer-Friendly%20On-Call%20Schedule%20in%207%20steps&body=https%3A%2F%2Fbetterstack.com%2Fcommunity%2Fguides%2Fincident-management%2Fon-call-scheduling%2F'> <svg width='16' height='16' alt='Share via e-mail' class='!rounded-none m-0' style='--currentColor: currentColor;'><use href='/assets/articles/icons/mail-023765f22acbe30ad587791edbf15dc0ac019d9617046176376561282b997023.svg#root' /></svg> </a> </div> </div> <div class='mt-20 text-center heading-h5'>Next article</div> <a class='mt-5 bg-neutral-40 rounded-lg flex hover:!no-underline' href='/community/guides/incident-management/on-call-templates/'> <div class='p-5 grow'> <div class='text-xl font-bold text-neutral-800'>4 On-Call Schedule Templates (With Benefits and Downsides)</div> </div> <div class='p-5 flex items-center'>→</div> </a> <div class='mt-24 flex flex-col items-center'> <a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' rel='nofollow noopener' target='_blank'> <img alt="Licensed under CC-BY-NC-SA" class="m-0 lazyload" width="89" height="31" data-src="/assets/articles/cc-by-nc-sa-1fa5a2f7978211f24b8230a7e79097dd1f8a36be35e813693c49348cf1689f42.png" src="" /> </a> <p class='mt-5 text-center text-neutral-300 max-w-[365px]'>This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.</p> </div> </div> </div> </div> <div class='hidden lg:block ml-12 xl:-mr-8 shrink-0 w-[205px]'> <ol class='-mt-2 mb-7 text-base overflow-y-auto pb-24'> <li class='text-neutral-300' data-controller='collapse'> <div class='flex space-x-2 text-neutral-800 open py-1 side-menu-item cursor-pointer font-bold border-b border-neutral-50' data-action='click->collapse#toggle'> <a class='grow py-2' href=''>Incident Response and On-Call</a> </div> <ol class='mb-4' data-collapse-target='content'> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/incident-management/what-is-incident-management/'>What Is Incident Management? Beginner’s Guide</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a aria-current='page' class='grow py-2 text-deprecated-primary-700' href='/community/guides/incident-management/on-call-scheduling/'>How to Create a Developer-Friendly On-Call Schedule in 7 steps</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/incident-management/on-call-templates/'>4 On-Call Schedule Templates (With Benefits and Downsides)</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/incident-management/on-call-pay/'> On-call Compensation Models (and How to Solve On-Call Pay)</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/incident-management/escalation-policies/'>How to Design Escalation Policies (for Easy Incident Management)?</a> </div> </li> </ol> </li> <li class='text-neutral-300' data-controller='collapse'> <div class='flex space-x-2 py-1 side-menu-item cursor-pointer font-bold border-b border-neutral-50' data-action='click->collapse#toggle'> <a class='grow py-2' href=''>Incident Communication</a> </div> <ol class='mb-4 hidden' data-collapse-target='content'> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/incident-management/what-is-status-page/'>What Is a Status Page? (And 5 Benefits of Getting One)</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/incident-management/why-are-status-pages-important/'>Why are status pages important: 5 Reasons (And How to Get Started)</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/incident-management/incident-templates/'>4 Copy-Pastable Incident Templates for Status Pages</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/incident-management/status-page-examples/'>7 Great Status Page Examples to Learn From</a> </div> </li> </ol> </li> <li class='text-neutral-300' data-controller='collapse'> <div class='flex space-x-2 py-1 side-menu-item cursor-pointer font-bold border-b border-neutral-50' data-action='click->collapse#toggle'> <a class='grow py-2' href=''>Incident Metrics</a> </div> <ol class='mb-4 hidden' data-collapse-target='content'> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/incident-management/mttr-and-other-incident-metrics/'>Explained: All Meanings of MTTR and Other Incident Metrics</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/incident-management/severity-levels/'>What Are Incident Severity Levels? (SEV1 to SEV3 explained)</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/incident-management/availability-table/'>Availability Table (90%-99.999% Uptime)</a> </div> </li> <li class='text-neutral-300'> <div class='flex space-x-2'> <a class='grow py-2' href='/community/guides/incident-management/sla-vs-slo-vs-sli/'>SLA vs. SLO vs. SLI: What’s the Difference? (Plus 5 Tips to Make a Great SLA)</a> </div> </li> </ol> </li> </ol> </div> </div> </div> <div class='mt-20 pt-10 text-neutral-200 bg-[#0B0C14]'> <section class='pt-16 md:pt-20 px-5 md:px-10 pb-16 md:pb-32 bg-[#0B0C14]'> <div class='container mx-auto max-w-[950px]'> <h4 class='sm:ml-10 text-white font-bold whitespace-nowrap text-[36px]'>Make your mark</h4> <div class='mt-12 flex flex-col md:flex-row gap-5'> <div class='flex-1 rounded-xl border border-[#727DA1]/20 bg-[#171824]/80'> <div class='p-8 h-full flex flex-col justify-between'> <div class='grow'> <h5 class='md:mx-3 text-white font-bold text-[20px] leading-[130%]'>Join the writer's program</h5> <p class='mt-3 md:mx-3'> Are you a developer and love writing and sharing your knowledge with the world? Join our guest writing program and get paid for writing amazing technical guides. We'll get them to the right readers that will appreciate them. </p> <a class='block mt-3 md:mx-3 text-[#7C87F7]' href='https://betterstack.com/community/write-for-us'> Write for us <svg class=' w-4 h-4 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/mini/chevron-right-ee58bdc22e1fb683dd9ffd95ba0c4df56d8a2a0904d7ddbe63b6e2b4ab82f090.svg#root'></svg> </a> </div> <div> <div class='mt-10 md:mx-3'>Writer of the month</div> <div class='relative mt-5 px-3 py-4 rounded-xl flex items-start gap-3 bg-[#7C87F7] ring-[6px] ring-[#7C87F7]/10'> <img alt="" width="40" height="40" class="shrink-0 mt-1 lazyload" data-src="/assets/articles/authors/marin-0d19fe482115fe2b15c8429a7ee4eb88d803984eaa7c1d8c7309241049f3d402.png" src="" /> <div class='text-white'> <div class='font-bold'>Marin Bezhanov</div> <div class='mt-1 text-ellipsis text-base line-clamp-2'>Marin is a software engineer and architect with a broad range of experience working...</div> </div> <div class='absolute top-[10px] right-[10px]'> <svg class=' text-white w-5 h-5 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/solid/sparkles-a7c4acf0bcb9f170420cb9484c35a2db6d1ed4ef2796d19929b9d9b792002eb4.svg#root'></svg> </div> </div> </div> </div> </div> <div class='flex-1'> <div class='rounded-xl border border-[#727DA1]/20'> <div class='p-10 bg-github-community rounded-t-xl bg-[#171824]/80'> <h5 class='md:mx-3 text-white font-bold text-[20px] leading-[130%]'>Build on top of Better Stack</h5> <p class='mt-3 md:mx-3'> Write a script, app or project on top of Better Stack and share it with the world. Make a public repository and share it with us at our email. </p> <a class='block mt-3 md:mx-3 whitespace-nowrap text-[#7C87F7]' href='mailto:community@betterstack.com?subject=Better%20Stack%20community%20project&body='> <svg size='w-[18px] h-[18px]' class='hidden sm:inline w-[18px] h-[18px] inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/solid/envelope-11bb634875b80bcbea772441a6edd1fc99b92bfea2a5bbd20b1976622bb05e90.svg#root'></svg> community@betterstack.com </a> </div> <div class='px-6 py-4 border-t text-13 border-[#727DA1]/20'> <p class='max-w-[320px]'>or submit a pull request and help us build better products for everyone.</p> </div> </div> <a class='relative mt-5 p-12 rounded-xl border text-neutral-200 flex flex-col items-center border-[#727DA1]/20' href='https://github.com/betterstack-community/projects' target='_blank'> <svg alt='' width='20' height='20' class='block' style='--currentColor: currentColor;'><use href='/assets/v2/github-e74d48ed6bd519eddfaac1a76a313eed359b3ab311dccab980003682a3d3a05e.svg#root'></svg> <p class='mt-2 text-13 text-center max-w-[180px]'>See the full list of amazing projects on github</p> <div class='absolute top-4 right-4'> <svg size='w-4 h-4' class=' w-4 h-4 inline' style='--currentColor: currentColor;'><use href='/assets/icons/heroicons_v2/solid/arrow-up-right-8a7bd4b24ec9b699f4169848a75b04c0ced5cd1a7016c513456e14b68c71381f.svg#root'></svg> </div> </a> </div> </div> </div> </section> </div> </main> </div> <div class='dark'> <nav class='bg-white text-base border-t dark:bg-[#0B0C14] border-neutral-300/10 text-[#363D4E] dark:text-neutral-200'> <div class='mx-auto px-5 md:px-10 pt-8 lg:pt-14 pb-10 md:pb-20 md:flex max-w-[1110px]'> <div class='flex-2 lg:grow flex gap-5'> <div class='flex-1 lg:flex-2 flex flex-col lg:flex-row'> <div class='lg:mr-16 flex-1'> <div class='mb-16 hidden md:block'> <div class='font-medium text-black dark:text-white'>Platform</div> <a class="inline-block -mx-1 px-1 mt-3" href="/enterprise">Enterprise</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="/uptime">Uptime</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="/telemetry">Telemetry</a> </div> <div class='mb-16'> <div class='font-medium text-black dark:text-white'>Solutions</div> <a class="inline-block -mx-1 px-1 mt-3" href="/telemetry">Log management</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="/infrastructure-monitoring">Infrastructure monitoring</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="/uptime">Uptime monitoring</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="/website-monitoring">Website monitoring</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="/incident-management">Incident management</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="/status-page">Status page</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="/incident-silencing">Incident silencing</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="/slack-incident-management">Slack-based incident management</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="/dashboards">Dashboards</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="/integrations">Integrations</a> </div> </div> <div class='flex-1'> <div class='mb-16 hidden lg:block'> <div class='font-medium text-black dark:text-white'>Resources</div> <a class="inline-block -mx-1 px-1 mt-3 whitespace-nowrap" href="/help">Help & Support</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="https://betterstack.com/docs/uptime">Uptime docs</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="https://betterstack.com/docs/logs">Logs docs</a> </div> <div class='mb-16 lg:hidden'> <div class='font-medium text-black dark:text-white'>Company</div> <a class="inline-block -mx-1 px-1 mt-3" href="/careers">Work at Better Stack</a> <br class='lg:hidden'> <a class="inline-block -mx-1 px-1 mt-3" href="/careers/engineering">Engineering</a> <br class='lg:hidden'> <a class="inline-block -mx-1 px-1 mt-3" href="/security">Security</a> </div> <div class='mb-16'> <div class='font-medium text-black dark:text-white'>Community</div> <a class="inline-block -mx-1 px-1 mt-3" href="https://betterstack.com/community/guides">Guides</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="https://betterstack.com/community/questions">Questions</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="https://betterstack.com/community/comparisons">Comparisons</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="https://betterstack.com/community/blog">Blog</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="https://betterstack.com/community/write-for-us">Write for us</a> </div> </div> </div> <div class='lg:ml-12 flex-1 flex flex-col'> <div class='mb-16 hidden lg:flex flex-col items-start'> <div class='font-medium text-black dark:text-white'>Company</div> <a class="inline-block -mx-1 px-1 mt-3" href="/careers">Work at Better Stack</a> <br class='lg:hidden'> <a class="inline-block -mx-1 px-1 mt-3" href="/careers/engineering">Engineering</a> <br class='lg:hidden'> <a class="inline-block -mx-1 px-1 mt-3" href="/security">Security</a> </div> <div class='mb-16 lg:hidden'> <div class='font-medium text-black dark:text-white'>Resources</div> <a class="inline-block -mx-1 px-1 mt-3 whitespace-nowrap" href="/help">Help & Support</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="https://betterstack.com/docs/uptime">Uptime docs</a> <br> <a class="inline-block -mx-1 px-1 mt-3" href="https://betterstack.com/docs/logs">Logs docs</a> </div> <div class='flex flex-col items-start'> <div class='font-medium text-black dark:text-white'>Compare</div> <a class="inline-block -mx-1 px-1 mt-3" href="/pingdom-alternative">Pingdom</a> <a class="inline-block -mx-1 px-1 mt-3" href="/pagerduty-alternative">Pagerduty</a> <a class="inline-block -mx-1 px-1 mt-3" href="/statuspage-io-alternative">StatusPage.io</a> <a class="inline-block -mx-1 px-1 mt-3" href="/uptime-robot-alternative">Uptime Robot</a> <a class="inline-block -mx-1 px-1 mt-3" href="/statuscake-alternative">StatusCake</a> <a class="inline-block -mx-1 px-1 mt-3" href="/opsgenie-alternative">Opsgenie</a> <a class="inline-block -mx-1 px-1 mt-3" href="/victorops-alternative">VictorOps</a> </div> </div> </div> <div class='md:ml-12 flex-1 flex flex-col items-start grow max-w-[450px]'> <div class='font-medium text-black dark:text-white'>From the community</div> <a class="inline-block -mx-1 px-1 mt-4" href="https://betterstack.com/community/guides/incident-management/what-is-incident-management/">What Is Incident Management? Beginner’s Guide</a> <a class="inline-block -mx-1 px-1 mt-4" href="https://betterstack.com/community/guides/incident-management/on-call-scheduling/">How to Create a Developer-Friendly On-Call Schedule in 7 steps</a> <a class="inline-block -mx-1 px-1 mt-4" href="https://betterstack.com/community/comparisons/free-status-page-tools/">8 Best Free & Open Source Status Page Tools in 2024</a> <a class="inline-block -mx-1 px-1 mt-4" href="https://betterstack.com/community/comparisons/api-monitoring-tools/">10 Best API Monitoring Tools in 2024</a> <a class="inline-block -mx-1 px-1 mt-4" href="https://betterstack.com/community/comparisons/incident-management-tools/">5 Most Used Incident Management Tools (Reviewed & Ranked)</a> </div> </div> </nav> <footer class='bg-[#F3F4F7] dark:bg-[#05060F]'> <div class='mx-auto text-base lg:px-5 max-w-[1110px] text-[#363D4E] dark:text-neutral-200'> <div class='px-5 pt-9 flex flex-col lg:flex-row justify-between items-center lg:items-end border-t border-neutral-300/10'> <div> <svg width='154' height='21' alt='' class='text-black dark:text-white scale-75 lg:scale-100' style='--currentColor: currentColor;'><use href='/assets/v2/better-stack-logo-0dd586683a61184ea953948d207470eeec73c76d81d57cd8af24bf56b36a90db.svg#root' /></svg> <p class='mt-3 hidden lg:block max-w-[342px]'> Better Stack lets you see inside any stack, debug any issue, and resolve any incident. </p> </div> <div class='flex items-center gap-6 whitespace-nowrap'> <a class="hidden lg:block -mx-1 px-1" href="tel:+1 (201) 500-2007">+1 (201) 500-2007</a> <a class="hidden lg:block -mx-1 px-1" href="mailto:hello@betterstack.com">hello@betterstack.com</a> <div class='hidden lg:block h-4 border-l border-neutral-300/10'></div> <div class='hidden lg:flex'><div class='flex gap-4 text-neutral-300'> <a aria-label='Better Stack on Instagram' href='https://www.instagram.com/betterstackhq/' rel='nofollow noopener' target='_blank'><svg width='16' height='17' style='--currentColor: currentColor;'><use href='/assets/v2/instagram-4cc4103de28d49cc15040cfbf4b7a5e62fc76726f8a740f0135e777242b972b5.svg#root' /></svg></a> <a aria-label='Better Stack on TikTok' href='https://www.tiktok.com/@betterstack' rel='nofollow noopener' target='_blank'><svg width='16' height='17' style='--currentColor: currentColor;'><use href='/assets/v2/tiktok-88d69bb11d499d82c7fefe4023153cd0152cbbd72809576171915fb9bd69a083.svg#root' /></svg></a> <a aria-label='Better Stack on LinkedIn' href='https://www.linkedin.com/company/betterstack' rel='nofollow noopener' target='_blank'><svg width='16' height='17' style='--currentColor: currentColor;'><use href='/assets/v2/linkedin-4f511cfd40812cf617fa6ca9fbeff362681a975a1f4f911261bdbeaa2b1cbe19.svg#root' /></svg></a> <a aria-label='Better Stack on Twitter' href='https://twitter.com/betterstackhq' rel='nofollow noopener' target='_blank'><svg width='16' height='16' style='--currentColor: currentColor;'><use href='/assets/v2/twitter-c4218c9e217942ebbf4db83a3dec654ce97a94806c3d0fe7ebe31d7d7d2aa9b9.svg#root' /></svg></a> <a aria-label='Better Stack on Github' href='https://github.com/BetterStackHQ/' rel='nofollow noopener' target='_blank'><svg width='16' height='17' style='--currentColor: currentColor;'><use href='/assets/v2/github-e74d48ed6bd519eddfaac1a76a313eed359b3ab311dccab980003682a3d3a05e.svg#root' /></svg></a> <a aria-label='Better Stack on YouTube' href='https://www.youtube.com/@betterstack' rel='nofollow noopener' target='_blank'><svg width='22' height='17' style='--currentColor: currentColor;'><use href='/assets/v2/youtube-30a10afcb8b82cfd3a8ee62842a5d0651fa8d01ac0e6e472349f4359ea683cae.svg#root' /></svg></a> </div> </div> </div> </div> <div class='px-5 lg:px-2 lg:mx-3 mt-5 py-3 lg:border-t flex flex-col lg:flex-row justify-between items-center border-neutral-300/10 dark:border-[#1F2433]/70 text-[12px] leading-[18px]'> <div class='flex items-center gap-6 whitespace-nowrap dark:text-neutral-300'> <a class="-mx-1 px-1" href="/terms">Terms of Use</a> <a class="-mx-1 px-1" href="/privacy">Privacy Policy</a> <a class="-mx-1 px-1" href="/dpa">GDPR</a> <a class='hidden sm:block -mx-1 px-1' href='https://status.betterstack.com/' target='_blank'> <svg width='14' height='15' alt='All services are up' class='mr-1 hidden lg:inline' style='--currentColor: currentColor;'><use href='/assets/v2/status-green-9b323a3710393221033993056c8b5de0999eaf3139262ab0625db787dee99f00.svg#root' /></svg> System status </a> </div> <div class='mt-8 mb-2 flex lg:hidden'><div class='flex gap-4 text-neutral-300'> <a aria-label='Better Stack on Instagram' href='https://www.instagram.com/betterstackhq/' rel='nofollow noopener' target='_blank'><svg width='16' height='17' style='--currentColor: currentColor;'><use href='/assets/v2/instagram-4cc4103de28d49cc15040cfbf4b7a5e62fc76726f8a740f0135e777242b972b5.svg#root' /></svg></a> <a aria-label='Better Stack on TikTok' href='https://www.tiktok.com/@betterstack' rel='nofollow noopener' target='_blank'><svg width='16' height='17' style='--currentColor: currentColor;'><use href='/assets/v2/tiktok-88d69bb11d499d82c7fefe4023153cd0152cbbd72809576171915fb9bd69a083.svg#root' /></svg></a> <a aria-label='Better Stack on LinkedIn' href='https://www.linkedin.com/company/betterstack' rel='nofollow noopener' target='_blank'><svg width='16' height='17' style='--currentColor: currentColor;'><use href='/assets/v2/linkedin-4f511cfd40812cf617fa6ca9fbeff362681a975a1f4f911261bdbeaa2b1cbe19.svg#root' /></svg></a> <a aria-label='Better Stack on Twitter' href='https://twitter.com/betterstackhq' rel='nofollow noopener' target='_blank'><svg width='16' height='16' style='--currentColor: currentColor;'><use href='/assets/v2/twitter-c4218c9e217942ebbf4db83a3dec654ce97a94806c3d0fe7ebe31d7d7d2aa9b9.svg#root' /></svg></a> <a aria-label='Better Stack on Github' href='https://github.com/BetterStackHQ/' rel='nofollow noopener' target='_blank'><svg width='16' height='17' style='--currentColor: currentColor;'><use href='/assets/v2/github-e74d48ed6bd519eddfaac1a76a313eed359b3ab311dccab980003682a3d3a05e.svg#root' /></svg></a> <a aria-label='Better Stack on YouTube' href='https://www.youtube.com/@betterstack' rel='nofollow noopener' target='_blank'><svg width='22' height='17' style='--currentColor: currentColor;'><use href='/assets/v2/youtube-30a10afcb8b82cfd3a8ee62842a5d0651fa8d01ac0e6e472349f4359ea683cae.svg#root' /></svg></a> </div> </div> <div class='flex items-center text-neutral-300'> © 2025 Better Stack, Inc. <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="root" fill="none" height="15" viewBox="0 0 14 15" width="14" class="ml-2 transition hover:-rotate-[15deg] hidden lg:inline"><mask id="a" fill="#000" height="14" maskUnits="userSpaceOnUse" width="14" x=".84082" y=".910156"><path d="m.84082.910156h14v14h-14z" fill="#fff"></path><path clip-rule="evenodd" d="m12.4541 1.91016h-4.37651v.54686h-.54823v.54771 1.85936 1.2038h-.54617v.54725h-.87535v.54642h-.87576v.54777h-.54616v.54551h-.0011-.54589-.54734v-.65488h-.54706v2.84474h.54616v.6549h.54824v.547h.54699v.4392.6557.5469.4376.0003h.65647v-.0003h.43765v-.4376h-.43765v-.5469h.43765v-.6557h.54706v-.5478h.65609v.5472h.43768v.1982h1.09412v-.4377h-.54709v-.8541h.54701v-.5472h.54712v-.87494h.54616v-1.86076h.65821v.43832h.547v-.54706h-.0011v-.43832h-1.20411v-1.2027h.65671v-1.09465h2.1892v-.0002h.5459v-2.40707h-.5459zm-9.41064 5.25148h-.54617v-1.20358h-.65647v3.50119h.54616v.43769h.65648zm7.22294-1.74985h1.6412v.54706h-1.6412zm-1.62526-2.63729h.00042v-.00005h.80045v.00013h.26677v1.06726h-.26682v-.00107h-.8004v-.26582h-.00042zm.26682.79945h.534v-.53268h-.534z" fill="#000" fill-rule="evenodd"></path></mask><path d="m8.07759 1.91016v-.952682h-.95268v.952682zm4.37651 0h.9527v-.952682h-.9527zm-4.37651.54686v.95268h.95268v-.95268zm-.54823 0v-.95268h-.95268v.95268zm0 3.61087v.95268h.95268v-.95268zm-.54617 0v-.95268h-.95267v.95268zm0 .54725v.95268h.95268v-.95268zm-.87535 0v-.95268h-.95267v.95268zm0 .54642v.95268h.95268v-.95268zm-.87576 0v-.95268h-.95268v.95268zm0 .54777v.95268h.95268v-.95268zm-.54616 0v-.95268h-.95268v.95268zm0 .54551v.95268h.95268v-.95268zm-1.09433 0h-.95268v.95268h.95268zm0-.65488h.95268v-.95268h-.95268zm-.54706 0v-.95268h-.95268v.95268zm0 2.84474h-.95268v.9527h.95268zm.54616 0h.95268v-.9527h-.95268zm0 .6549h-.95268v.9526h.95268zm.54824 0h.95268v-.9527h-.95268zm0 .547h-.95268v.9527h.95268zm.54699 0h.95268v-.9527h-.95268zm0 2.0797h-.95268v.9527h.95268zm.65647 0v.9527h.95268v-.9527zm0-.0003v-.9526h-.95268v.9526zm.43765 0v.9527h.95268v-.9527zm0-.4376h.95268v-.9527h-.95268zm-.43765 0h-.95268v.9527h.95268zm0-.5469v-.9527h-.95268v.9527zm.43765 0v.9527h.95268v-.9527zm0-.6557v-.9527h-.95268v.9527zm.54706 0v.9527h.95268v-.9527zm0-.5478v-.9526h-.95268v.9526zm.65609 0h.95268v-.9526h-.95268zm0 .5472h-.95267v.9527h.95267zm.43768 0h.95268v-.9527h-.95268zm0 .1982h-.95268v.9526h.95268zm1.09412 0v.9526h.95268v-.9526zm0-.4377h.95268v-.9527h-.95268zm-.54709 0h-.95267v.9527h.95267zm0-.8541v-.9527h-.95267v.9527zm.54701 0v.9527h.95268v-.9527zm0-.5472v-.9527h-.95268v.9527zm.54712 0v.9527h.95267v-.9527zm0-.87494v-.95267h-.95268v.95267zm.54616 0v.95264h.95271v-.95264zm0-1.86076v-.95268h-.95268v.95268zm.65821 0h.9527v-.95268h-.9527zm0 .43832h-.9527v.95268h.9527zm.547 0v.95268h.9527v-.95268zm0-.54706h.9527v-.95268h-.9527zm-.0011 0h-.95264v.95268h.95264zm0-.43832h.9527v-.95268h-.9527zm-1.20411 0h-.95268v.95268h.95268zm0-1.2027v-.95268h-.95268v.95268zm.65671 0v.95268h.9527v-.95268zm0-1.09465v-.95268h-.95267v.95268zm2.1892 0v.95267h.9527v-.95267zm0-.0002v-.95268h-.9527v.95268zm.5459 0v.95267h.9526v-.95267zm0-2.40707h.9526v-.95268h-.9526zm-.5459 0h-.9527v.95268h.9527zm-9.95681 4.70462h-.95268v.95268h.95268zm.54617 0h.95267v-.95268h-.95267zm-.54617-1.20358h.95268v-.95268h-.95268zm-.65647 0v-.95268h-.952678v.95268zm0 3.50119h-.952678v.95265h.952678zm.54616 0h.95268v-.95268h-.95268zm0 .43769h-.95268v.95266h.95268zm.65648 0v.95266h.95267v-.95266zm8.86414-4.48515h.9526v-.95268h-.9526zm-1.6412 0v-.95268h-.9527v.95268zm1.6412.54706v.95268h.9526v-.95268zm-1.6412 0h-.9527v.95268h.9527zm-1.62484-3.18435v.95268h.95268v-.95268zm-.00042 0v-.95268h-.95267v.95268zm.00042-.00005v-.95268h-.95268v.95268zm.80045 0h.95269v-.95268h-.95269zm0 .00013h-.95268v.95268h.95268zm.26677 0h.95272v-.95268h-.95272zm0 1.06726v.95268h.95272v-.95268zm-.26682 0h-.95268v.95268h.95268zm0-.00107h.95264v-.95268h-.95264zm-.8004 0h-.95268v.95267h.95268zm0-.26582h.95268v-.95268h-.95268zm-.00042 0h-.95267v.95268h.95267zm.26682-.001h-.95268v.95268h.95268zm.534 0v.95268h.95264v-.95268zm0-.53268h.95264v-.95268h-.95264zm-.534 0v-.95268h-.95268v.95268zm-.83037-.17844h4.37651v-1.905352h-4.37651zm.95268-.40581v-.54686h-1.90536v.54686zm-1.50091.95268h.54823v-1.90536h-.54823zm.95268-.40497v-.54771h-1.90536v.54771zm0 1.85936v-1.85936h-1.90536v1.85936zm0 1.2038v-1.2038h-1.90536v1.2038zm-1.49885.95268h.54617v-1.90536h-.54617zm.95268-.40543v-.54725h-1.90535v.54725zm-1.82803.95268h.87535v-1.90536h-.87535zm.95268-.40626v-.54642h-1.90535v.54642zm-1.82844.95268h.87576v-1.90536h-.87576zm.95268-.40491v-.54777h-1.90536v.54777zm-1.49884.95268h.54616v-1.90536h-.54616zm.95268-.40717v-.54551h-1.90536v.54551zm-.95378.95268h.0011v-1.90535h-.0011zm-.54589 0h.54589v-1.90535h-.54589zm-.54734 0h.54734v-1.90535h-.54734zm-.95268-1.60756v.65488h1.90536v-.65488zm.40562.95268h.54706v-1.90536h-.54706zm.95268 1.89206v-2.84474h-1.90536v2.84474zm-.40652-.9527h-.54616v1.9054h.54616zm.95268 1.6076v-.6549h-1.90536v.6549zm-.40444-.9527h-.54824v1.9053h.54824zm.95268 1.4997v-.547h-1.90536v.547zm-.40569-.9527h-.54699v1.9054h.54699zm.95268 1.3919v-.4392h-1.90536v.4392zm0 .6557v-.6557h-1.90536v.6557zm0 .5469v-.5469h-1.90536v.5469zm0 .4376v-.4376h-1.90536v.4376zm0 .0003v-.0003h-1.90536v.0003zm-.29621-.9526h-.65647v1.9053h.65647zm-.95268.9523v.0003h1.90536v-.0003zm1.39033-.9526h-.43765v1.9053h.43765zm-.95268.515v.4376h1.90536v-.4376zm.51503.9527h.43765v-1.9054h-.43765zm-.95268-1.4996v.5469h1.90536v-.5469zm1.39033-.9527h-.43765v1.9054h.43765zm-.95268.297v.6557h1.90536v-.6557zm1.49974-.9527h-.54706v1.9054h.54706zm-.95268.4049v.5478h1.90536v-.5478zm1.60877-.9526h-.65609v1.9053h.65609zm.95268 1.4998v-.5472h-1.90535v.5472zm-.515-.9527h-.43768v1.9054h.43768zm.95268 1.1509v-.1982h-1.90536v.1982zm.14144-.9527h-1.09412v1.9053h1.09412zm-.95268.515v.4377h1.90536v-.4377zm.40559.9527h.54709v-1.9054h-.54709zm-.95267-1.8068v.8541h1.90535v-.8541zm1.49968-.9527h-.54701v1.9054h.54701zm-.95268.4055v.5472h1.90536v-.5472zm1.4998-.9527h-.54712v1.9054h.54712zm-.95268.07776v.87494h1.90535v-.87494zm1.49884-.95267h-.54616v1.90531h.54616zm-.95268-.90809v1.86076h1.90539v-1.86076zm1.61089-.95268h-.65821v1.90536h.65821zm.9527 1.391v-.43832h-1.9054v.43832zm-.4057-.95268h-.547v1.90536h.547zm-.95264.40562v.54706h1.90534v-.54706zm.95154.95268h.0011v-1.90536h-.0011zm-.95264-1.391v.43832h1.90534v-.43832zm-.25147.95268h1.20411v-1.90536h-1.20411zm-.95268-2.15538v1.2027h1.90539v-1.2027zm1.60939-.95268h-.65671v1.90536h.65671zm-.95267-.14197v1.09465h1.90537v-1.09465zm3.14187-.95268h-2.1892v1.90535h2.1892zm-.9527.95248v.0002h1.9054v-.0002zm1.4986-.95268h-.5459v1.90535h.5459zm-.9527-1.45439v2.40707h1.9053v-2.40707zm.4068.95268h.5459v-1.90536h-.5459zm-.9527-1.49954v.54686h1.9054v-.54686zm-9.00411 6.20416h.54617v-1.90536h-.54617zm-.95268-2.15626v1.20358h1.90536v-1.20358zm.29621.95268h.65647v-1.90536h-.65647zm.95268 2.54851v-3.50119h-1.905358v3.50119zm-.40652-.95268h-.54616v1.90533h.54616zm.95268 1.39037v-.43769h-1.90536v.43769zm-.2962-.95268h-.65648v1.90534h.65648zm-.95268-1.78262v2.7353h1.90535v-2.7353zm9.81682-2.70253h-1.6412v1.90536h1.6412zm.9526 1.49974v-.54706h-1.9053v.54706zm-2.5938.95268h1.6412v-1.90536h-1.6412zm-.9527-1.49974v.54706h1.9054v-.54706zm-.67214-3.58997h-.00042v1.90536h.00042zm-.95268.95263v.00005h1.90536v-.00005zm1.75313-.95268h-.80045v1.90536h.80045zm.95269.95281v-.00013h-1.90537v.00013zm-.68592-.95268h-.26677v1.90536h.26677zm.95272 2.01994v-1.06726h-1.9054v1.06726zm-1.21954.95268h.26682v-1.90536h-.26682zm-.95268-.95375v.00107h1.90532v-.00107zm.95268-.95268h-.8004v1.90535h.8004zm.15228.95268v-.26582h-1.90536v.26582zm-.9531.68686h.00042v-1.90536h-.00042zm-.95267-1.75313v.80045h1.90535v-.80045zm1.21949 1.75213h.534v-1.90536h-.534zm-.41868-1.48536v.53268h1.90532v-.53268zm.41868.95268h.534v-1.90536h-.534zm.95268-.42v-.53268h-1.90536v.53268z" fill="#646e87" mask="url(#a)"></path></svg> </div> </div> </div> </footer> </div> </div> <script src='https://cdnjs.betterstack.com/prismjs@1.29.0/components/prism-core.min.js'></script> <script src='https://cdnjs.betterstack.com/prismjs@1.29.0/plugins/autoloader/prism-autoloader.min.js'></script> <script src='https://cdnjs.betterstack.com/prismjs@1.29.0/plugins/keep-markup/prism-keep-markup.min.js'></script> </body> </html>