{"id":288,"date":"2020-09-14T07:02:18","date_gmt":"2020-09-14T07:02:18","guid":{"rendered":"https:\/\/blog.spike.sh\/2020\/09\/14\/a-design-episode-in-spike-how-we-built-the-on-call-feature\/"},"modified":"2025-06-07T10:57:48","modified_gmt":"2025-06-07T05:27:48","slug":"a-design-episode-in-spike-how-we-built-the-on-call-feature","status":"publish","type":"post","link":"https:\/\/blog.spike.sh\/a-design-episode-in-spike-how-we-built-the-on-call-feature\/","title":{"rendered":"A Design Episode in Spike: How We Built the On-call Feature"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Being an incident management service, having an On-call feature is all the more important for Spike. On-call is essential for easy and efficient handling of new incidents so that no incident is missed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">An incident is an event that is not part of normal operations that disrupts operational processes. Without effective incident management, an incident can disrupt business operations, information security, IT systems, employees, customers, or other vital business functions. <\/p>\n\n\n\n<figure class=\"wp-block-image kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/XhzGm3_IEENHbcoyKrXIFNB2qdHSNb7fdc_YMBWgcRuqSv17UIb8H_SjdmbzzN7JnOuhwQbAXIjEvzIn6lEAeEuVL0blMyoUBx9MaKNpNuLoeu7ZhZ9zgIh6pM7_Ed33qWZqtRxx\" alt=\"\"\/><figcaption class=\"wp-element-caption\">The incident cycle<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">So whenever we get an incident, it is assigned to the right person and an alert is sent to them.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Having<\/strong> <strong>on-call management prevents overloading a sole assignee and evenly distributes the responsibility of handling alerts amongst dedicated on-call members<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So here we will talk about how the Oncall feature was designed, keeping in mind that we wanted to make a Minimal Viable Product that\u2019d be easy to use.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image kg-card kg-image-card\"><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/KAVfmWgJTSLbuulR5yGv7mwUOqutFFPERMFCC5WJnnD1vErtryOKE63WEFF9YwTW59DtnS45m5fE5cjhr9SwjZUvyXl4IqESvXDlWAHXCLAVcHPRgpGVZaf3C_u_knDvuV1fGNeP\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Design process<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The design process involves 1) understanding and defining the problem, 2) research, 3) coming up with different solutions, 4) designing, and 5) testing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To create the on-call feature we first had to understand and define the problem statement. At this moment, whenever an incident occurs, Spike would alert the respective assignees associated with that incident.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>So the problem was defined as creating an on-call management feature that ensures an even distribution of responsibilities amongst team members. No single person is overloaded with the stress of responding to incidents.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The next step involved competitive research. I researched and looked into the likes of Pagerduty and Opsgenie to understand the basic requirements of an efficient on-call feature.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">An on-call schedule ensures that the right person is always available to immediately respond to incidents. The MVP version of &nbsp;On-call would have just enough features to meet basic user needs like setting the rotation type and adding members. This would provide ample feedback for the future development of the on-call feature. After figuring out the basic needs, we came up with a simple user flow that involved the different prerequisites of an on-call schedule: choosing the on-call members, selecting the rotation type, and the starting date and time and ending date, and time). After deciding the user flow we worked on the wireframes<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full kg-card kg-image-card\"><img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"500\" data-attachment-id=\"939\" data-permalink=\"https:\/\/blog.spike.sh\/a-design-episode-in-spike-how-we-built-the-on-call-feature\/3-10\/\" data-orig-file=\"https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/3.png\" data-orig-size=\"900,500\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"3\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/3.png\" src=\"https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/3.png\" alt=\"\" class=\"wp-image-939\" srcset=\"https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/3.png 900w, https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/3-300x167.png 300w, https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/3-768x427.png 768w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Where can the user view their on-call schedule?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Users can view their on-call schedules by clicking on \u201cwhen am I on call?\u201d Inside the on-call dropdown present on the header. The dropdown also mentions who is On-call which enables everyone to figure out the current on-call member.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full kg-card kg-image-card\"><img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"500\" data-attachment-id=\"941\" data-permalink=\"https:\/\/blog.spike.sh\/a-design-episode-in-spike-how-we-built-the-on-call-feature\/4-9\/\" data-orig-file=\"https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/4.png\" data-orig-size=\"900,500\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"4\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/4.png\" src=\"https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/4.png\" alt=\"\" class=\"wp-image-941\" srcset=\"https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/4.png 900w, https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/4-300x167.png 300w, https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/4-768x427.png 768w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Calendar view<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The calendar view in Spike enables all team members to view the ongoing and upcoming on-call schedules. It is displayed inside schedule details.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full kg-card kg-image-card\"><img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"500\" data-attachment-id=\"942\" data-permalink=\"https:\/\/blog.spike.sh\/a-design-episode-in-spike-how-we-built-the-on-call-feature\/5-3\/\" data-orig-file=\"https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/5.png\" data-orig-size=\"900,500\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"5\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/5.png\" src=\"https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/5.png\" alt=\"\" class=\"wp-image-942\" srcset=\"https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/5.png 900w, https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/5-300x167.png 300w, https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/5-768x427.png 768w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Overrides<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In some instances the present on-call members might not be available to respond to incidents, they might be on leave or a vacation. To solve this problem, Spike lets you swap the existing shifts between members, i.e overriding. Overriding allows modifying the schedule without altering it as a whole.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full kg-card kg-image-card\"><img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"500\" data-attachment-id=\"945\" data-permalink=\"https:\/\/blog.spike.sh\/a-design-episode-in-spike-how-we-built-the-on-call-feature\/6-2\/\" data-orig-file=\"https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/6.png\" data-orig-size=\"900,500\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"6\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/6.png\" src=\"https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/6.png\" alt=\"\" class=\"wp-image-945\" srcset=\"https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/6.png 900w, https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/6-300x167.png 300w, https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/6-768x427.png 768w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Adding escalation policies to the On-call schedule<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">After an on-call schedule is created, users can then add a specific schedule to an escalation policy. Select the On-call schedule name from the users dropdown present in the escalation steps while creating an escalation policy. <\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full kg-card kg-image-card\"><img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"500\" data-attachment-id=\"946\" data-permalink=\"https:\/\/blog.spike.sh\/a-design-episode-in-spike-how-we-built-the-on-call-feature\/7-2\/\" data-orig-file=\"https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/7.png\" data-orig-size=\"900,500\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"7\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/7.png\" src=\"https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/7.png\" alt=\"\" class=\"wp-image-946\" srcset=\"https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/7.png 900w, https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/7-300x167.png 300w, https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/7-768x427.png 768w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Next steps <\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">After designing the first approved iteration, we wanted to test the feature. A major issue that arose was that the on-call didn\u2019t have a 12-hour shift or the ability to add two members in a single day shift. This means having two people being on-call at the same time is the right approach as it would take a lot of the stress off of the primary on-call member. This would also ensure that there is always a backup when the primary on-call member misses a notification. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Being an incident management service, having an On-call feature is all the more important for Spike. On-call is essential for easy and efficient handling of new incidents so that no incident is missed. An incident is an event that is not part of normal operations that disrupts operational processes. Without effective incident management, an incident [&hellip;]<\/p>\n","protected":false},"author":191914268,"featured_media":1184,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","_lmt_disableupdate":"","_lmt_disable":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":false},"categories":[1424],"tags":[],"class_list":["post-288","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-building-spike"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>A Design Episode in Spike: How We Built the On-call Feature<\/title>\n<meta name=\"description\" content=\"Discover how Spike\u2019s oncall feature streamlines incident response with fair rotations, overrides, and flexible scheduling for teams.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.spike.sh\/a-design-episode-in-spike-how-we-built-the-on-call-feature\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A Design Episode in Spike: How We Built the On-call Feature\" \/>\n<meta property=\"og:description\" content=\"Discover how Spike\u2019s oncall feature streamlines incident response with fair rotations, overrides, and flexible scheduling for teams.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.spike.sh\/a-design-episode-in-spike-how-we-built-the-on-call-feature\/\" \/>\n<meta property=\"og:site_name\" content=\"Spike&#039;s blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-09-14T07:02:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-07T05:27:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/Designing-On-call-How-we-did-it_.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1040\" \/>\n\t<meta property=\"og:image:height\" content=\"564\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Kaushik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kaushik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/a-design-episode-in-spike-how-we-built-the-on-call-feature\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/a-design-episode-in-spike-how-we-built-the-on-call-feature\\\/\"},\"author\":{\"name\":\"Kaushik\",\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/#\\\/schema\\\/person\\\/b137e57ace218547f02b86fdcb2d0e64\"},\"headline\":\"A Design Episode in Spike: How We Built the On-call Feature\",\"datePublished\":\"2020-09-14T07:02:18+00:00\",\"dateModified\":\"2025-06-07T05:27:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/a-design-episode-in-spike-how-we-built-the-on-call-feature\\\/\"},\"wordCount\":626,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/a-design-episode-in-spike-how-we-built-the-on-call-feature\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.spike.sh\\\/wp-content\\\/uploads\\\/2020\\\/09\\\/Designing-On-call-How-we-did-it_.png\",\"articleSection\":[\"Building Spike\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blog.spike.sh\\\/a-design-episode-in-spike-how-we-built-the-on-call-feature\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/a-design-episode-in-spike-how-we-built-the-on-call-feature\\\/\",\"url\":\"https:\\\/\\\/blog.spike.sh\\\/a-design-episode-in-spike-how-we-built-the-on-call-feature\\\/\",\"name\":\"A Design Episode in Spike: How We Built the On-call Feature\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/a-design-episode-in-spike-how-we-built-the-on-call-feature\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/a-design-episode-in-spike-how-we-built-the-on-call-feature\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.spike.sh\\\/wp-content\\\/uploads\\\/2020\\\/09\\\/Designing-On-call-How-we-did-it_.png\",\"datePublished\":\"2020-09-14T07:02:18+00:00\",\"dateModified\":\"2025-06-07T05:27:48+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/#\\\/schema\\\/person\\\/b137e57ace218547f02b86fdcb2d0e64\"},\"description\":\"Discover how Spike\u2019s oncall feature streamlines incident response with fair rotations, overrides, and flexible scheduling for teams.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/a-design-episode-in-spike-how-we-built-the-on-call-feature\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blog.spike.sh\\\/a-design-episode-in-spike-how-we-built-the-on-call-feature\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/a-design-episode-in-spike-how-we-built-the-on-call-feature\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blog.spike.sh\\\/wp-content\\\/uploads\\\/2020\\\/09\\\/Designing-On-call-How-we-did-it_.png\",\"contentUrl\":\"https:\\\/\\\/blog.spike.sh\\\/wp-content\\\/uploads\\\/2020\\\/09\\\/Designing-On-call-How-we-did-it_.png\",\"width\":1040,\"height\":564},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/a-design-episode-in-spike-how-we-built-the-on-call-feature\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blog.spike.sh\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A Design Episode in Spike: How We Built the On-call Feature\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/#website\",\"url\":\"https:\\\/\\\/blog.spike.sh\\\/\",\"name\":\"Spike&#039;s blog\",\"description\":\"Learnings and opinions in a changing world\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blog.spike.sh\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/#\\\/schema\\\/person\\\/b137e57ace218547f02b86fdcb2d0e64\",\"name\":\"Kaushik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c7ec6b633161978fc09ed325cefde9061797a65a730e4b98c0eb26bc6925bc81?s=96&d=robohash&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c7ec6b633161978fc09ed325cefde9061797a65a730e4b98c0eb26bc6925bc81?s=96&d=robohash&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c7ec6b633161978fc09ed325cefde9061797a65a730e4b98c0eb26bc6925bc81?s=96&d=robohash&r=g\",\"caption\":\"Kaushik\"},\"description\":\"Founder of Spike. I like sharing how we are building Spike and the intricacies of building a startup by waking people up for critical incidents.\",\"url\":\"https:\\\/\\\/blog.spike.sh\\\/author\\\/spikehq\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"A Design Episode in Spike: How We Built the On-call Feature","description":"Discover how Spike\u2019s oncall feature streamlines incident response with fair rotations, overrides, and flexible scheduling for teams.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.spike.sh\/a-design-episode-in-spike-how-we-built-the-on-call-feature\/","og_locale":"en_GB","og_type":"article","og_title":"A Design Episode in Spike: How We Built the On-call Feature","og_description":"Discover how Spike\u2019s oncall feature streamlines incident response with fair rotations, overrides, and flexible scheduling for teams.","og_url":"https:\/\/blog.spike.sh\/a-design-episode-in-spike-how-we-built-the-on-call-feature\/","og_site_name":"Spike&#039;s blog","article_published_time":"2020-09-14T07:02:18+00:00","article_modified_time":"2025-06-07T05:27:48+00:00","og_image":[{"width":1040,"height":564,"url":"https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/Designing-On-call-How-we-did-it_.png","type":"image\/png"}],"author":"Kaushik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kaushik","Estimated reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.spike.sh\/a-design-episode-in-spike-how-we-built-the-on-call-feature\/#article","isPartOf":{"@id":"https:\/\/blog.spike.sh\/a-design-episode-in-spike-how-we-built-the-on-call-feature\/"},"author":{"name":"Kaushik","@id":"https:\/\/blog.spike.sh\/#\/schema\/person\/b137e57ace218547f02b86fdcb2d0e64"},"headline":"A Design Episode in Spike: How We Built the On-call Feature","datePublished":"2020-09-14T07:02:18+00:00","dateModified":"2025-06-07T05:27:48+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.spike.sh\/a-design-episode-in-spike-how-we-built-the-on-call-feature\/"},"wordCount":626,"commentCount":0,"image":{"@id":"https:\/\/blog.spike.sh\/a-design-episode-in-spike-how-we-built-the-on-call-feature\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/Designing-On-call-How-we-did-it_.png","articleSection":["Building Spike"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.spike.sh\/a-design-episode-in-spike-how-we-built-the-on-call-feature\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.spike.sh\/a-design-episode-in-spike-how-we-built-the-on-call-feature\/","url":"https:\/\/blog.spike.sh\/a-design-episode-in-spike-how-we-built-the-on-call-feature\/","name":"A Design Episode in Spike: How We Built the On-call Feature","isPartOf":{"@id":"https:\/\/blog.spike.sh\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.spike.sh\/a-design-episode-in-spike-how-we-built-the-on-call-feature\/#primaryimage"},"image":{"@id":"https:\/\/blog.spike.sh\/a-design-episode-in-spike-how-we-built-the-on-call-feature\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/Designing-On-call-How-we-did-it_.png","datePublished":"2020-09-14T07:02:18+00:00","dateModified":"2025-06-07T05:27:48+00:00","author":{"@id":"https:\/\/blog.spike.sh\/#\/schema\/person\/b137e57ace218547f02b86fdcb2d0e64"},"description":"Discover how Spike\u2019s oncall feature streamlines incident response with fair rotations, overrides, and flexible scheduling for teams.","breadcrumb":{"@id":"https:\/\/blog.spike.sh\/a-design-episode-in-spike-how-we-built-the-on-call-feature\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.spike.sh\/a-design-episode-in-spike-how-we-built-the-on-call-feature\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/blog.spike.sh\/a-design-episode-in-spike-how-we-built-the-on-call-feature\/#primaryimage","url":"https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/Designing-On-call-How-we-did-it_.png","contentUrl":"https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/Designing-On-call-How-we-did-it_.png","width":1040,"height":564},{"@type":"BreadcrumbList","@id":"https:\/\/blog.spike.sh\/a-design-episode-in-spike-how-we-built-the-on-call-feature\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.spike.sh\/"},{"@type":"ListItem","position":2,"name":"A Design Episode in Spike: How We Built the On-call Feature"}]},{"@type":"WebSite","@id":"https:\/\/blog.spike.sh\/#website","url":"https:\/\/blog.spike.sh\/","name":"Spike&#039;s blog","description":"Learnings and opinions in a changing world","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.spike.sh\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Person","@id":"https:\/\/blog.spike.sh\/#\/schema\/person\/b137e57ace218547f02b86fdcb2d0e64","name":"Kaushik","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/c7ec6b633161978fc09ed325cefde9061797a65a730e4b98c0eb26bc6925bc81?s=96&d=robohash&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c7ec6b633161978fc09ed325cefde9061797a65a730e4b98c0eb26bc6925bc81?s=96&d=robohash&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c7ec6b633161978fc09ed325cefde9061797a65a730e4b98c0eb26bc6925bc81?s=96&d=robohash&r=g","caption":"Kaushik"},"description":"Founder of Spike. I like sharing how we are building Spike and the intricacies of building a startup by waking people up for critical incidents.","url":"https:\/\/blog.spike.sh\/author\/spikehq\/"}]}},"modified_by":"Sreekar","jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/blog.spike.sh\/wp-content\/uploads\/2020\/09\/Designing-On-call-How-we-did-it_.png","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfMe4Q-4E","jetpack-related-posts":[{"id":348,"url":"https:\/\/blog.spike.sh\/your-incident-management-questions-answered-a-guide-for-the-curious-and-the-concerned\/","url_meta":{"origin":288,"position":0},"title":"Your Incident Management Questions Answered: A Guide for the Curious and the Concerned","author":"Sreekar","date":"20th February, 2024","format":false,"excerpt":"What Is the Goal of Incident Management? How to integration incident management with continuous deployment?","rel":"","context":"In &quot;Incident Management&quot;","block_context":{"text":"Incident Management","link":"https:\/\/blog.spike.sh\/category\/incident-management\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2024\/02\/Q-A.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2024\/02\/Q-A.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2024\/02\/Q-A.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2024\/02\/Q-A.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":3326,"url":"https:\/\/blog.spike.sh\/squadcast-vs-spike-detailed-comparison\/","url_meta":{"origin":288,"position":1},"title":"Squadcast vs. Spike: A Detailed Comparison (2026)","author":"Sreekar","date":"1st October, 2025","format":false,"excerpt":"This in-depth\u00a0Squadcast vs. Spike\u00a0comparison helps you choose the right incident management tool. I tested both platforms on alerting, on-call management, incident response, and pricing to see how they stack up. Find out which one is the best fit for your team's needs in 2026.","rel":"","context":"In &quot;Squadcast&quot;","block_context":{"text":"Squadcast","link":"https:\/\/blog.spike.sh\/category\/comparison\/squadcast\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/10\/Basics-of-Incident-Management-12.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/10\/Basics-of-Incident-Management-12.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/10\/Basics-of-Incident-Management-12.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/10\/Basics-of-Incident-Management-12.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":2816,"url":"https:\/\/blog.spike.sh\/pagerduty-vs-spike-incident-management\/","url_meta":{"origin":288,"position":2},"title":"PagerDuty vs. Spike: Which Incident Management Tool is Better in 2026","author":"Sreekar","date":"19th August, 2025","format":false,"excerpt":"If you\u2019re stuck between PagerDuty vs. Spike for incident management, this comparison will help you decide. I signed up for both tools, tested their incident management capabilities, and compared them across some key criteria and a checklist (you\u2019ll find out more about these as you read). To make things easy,\u2026","rel":"","context":"In &quot;Comparison&quot;","block_context":{"text":"Comparison","link":"https:\/\/blog.spike.sh\/category\/comparison\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/08\/background-39-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/08\/background-39-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/08\/background-39-1.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/08\/background-39-1.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":3507,"url":"https:\/\/blog.spike.sh\/incidentio-vs-spike-comparison-2026\/","url_meta":{"origin":288,"position":3},"title":"Incident.io vs. Spike: A Detailed Comparison (2026)","author":"Sreekar","date":"7th October, 2025","format":false,"excerpt":"This in-depth\u00a0Incident.io vs. Spike\u00a0comparison helps you choose the right incident management tool. I tested both platforms on alerting, on-call management, incident response, and pricing to see how they stack up. Find out which one is the best fit for your team's needs in 2026.","rel":"","context":"In &quot;Comparison&quot;","block_context":{"text":"Comparison","link":"https:\/\/blog.spike.sh\/category\/comparison\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/10\/Basics-of-Incident-Management-10.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/10\/Basics-of-Incident-Management-10.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/10\/Basics-of-Incident-Management-10.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/10\/Basics-of-Incident-Management-10.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":3396,"url":"https:\/\/blog.spike.sh\/zenduty-vs-spike-detailed-comparison-2026\/","url_meta":{"origin":288,"position":4},"title":"Zenduty vs. Spike: A Detailed Comparison (2026)","author":"Sreekar","date":"1st October, 2025","format":false,"excerpt":"This in-depth\u00a0Zenduty vs. Spike\u00a0comparison helps you choose the right incident management tool. I tested both platforms on alerting, on-call management, incident response, and pricing to see how they stack up. Find out which one is the best fit for your team's needs in 2026.","rel":"","context":"In &quot;Zenduty&quot;","block_context":{"text":"Zenduty","link":"https:\/\/blog.spike.sh\/category\/comparison\/zenduty\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/10\/Basics-of-Incident-Management-14.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/10\/Basics-of-Incident-Management-14.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/10\/Basics-of-Incident-Management-14.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/10\/Basics-of-Incident-Management-14.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":3362,"url":"https:\/\/blog.spike.sh\/zenduty-review-for-incident-management-2026\/","url_meta":{"origin":288,"position":5},"title":"Zenduty Review for Incident Management (2026)","author":"Sreekar","date":"1st October, 2025","format":false,"excerpt":"Detailed Zenduty review based on hands-on testing. Discover the platform's strengths, limitations, and whether it fits your incident management needs.","rel":"","context":"In &quot;Zenduty&quot;","block_context":{"text":"Zenduty","link":"https:\/\/blog.spike.sh\/category\/comparison\/zenduty\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/10\/Basics-of-Incident-Management-13.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/10\/Basics-of-Incident-Management-13.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/10\/Basics-of-Incident-Management-13.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2025\/10\/Basics-of-Incident-Management-13.png?resize=700%2C400&ssl=1 2x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/posts\/288","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/users\/191914268"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/comments?post=288"}],"version-history":[{"count":4,"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/posts\/288\/revisions"}],"predecessor-version":[{"id":1825,"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/posts\/288\/revisions\/1825"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/media\/1184"}],"wp:attachment":[{"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/media?parent=288"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/categories?post=288"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/tags?post=288"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}