{"id":320,"date":"2022-07-12T09:10:00","date_gmt":"2022-07-12T09:10:00","guid":{"rendered":"https:\/\/blog.spike.sh\/2022\/07\/12\/title-remapper\/"},"modified":"2025-06-06T12:45:20","modified_gmt":"2025-06-06T07:15:20","slug":"title-remapper","status":"publish","type":"post","link":"https:\/\/blog.spike.sh\/title-remapper\/","title":{"rendered":"Introducing Title Remapper"},"content":{"rendered":"\n<nav aria-label=\"Table of Contents\" class=\"wp-block-table-of-contents\"><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/blog.spike.sh\/title-remapper\/#title-remapper-empowers-you-to-programmatically-change-incident-title-in-real-time-for-better-context-\">Title Remapper empowers you to programmatically change incident title in real-time for better context.<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/blog.spike.sh\/title-remapper\/#background\">Background<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/blog.spike.sh\/title-remapper\/#speed\">Speed<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/blog.spike.sh\/title-remapper\/#least-learning-curve\">Least learning curve<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/blog.spike.sh\/title-remapper\/#extensibility\">Extensibility<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/blog.spike.sh\/title-remapper\/#time-for-some-examples\">Time for some examples<\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/blog.spike.sh\/title-remapper\/#for-basic-control\">For basic control<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/blog.spike.sh\/title-remapper\/#for-advanced-control\">For advanced control<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/blog.spike.sh\/title-remapper\/#swag-helpers-example\">Swag helpers example<\/a><\/li><\/ol><\/li><\/ol><\/nav>\n\n\n\n<p class=\"wp-block-paragraph\">Over the last few months, a number of our users have asked if we can add more context to their alerts. We spoke with them on our live chat on dashboard and brainstormed the idea of Title Remapper. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"title-remapper-empowers-you-to-programmatically-change-incident-title-in-real-time-for-better-context-\">Title Remapper empowers you to programmatically change incident title in real-time for better context.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Let&#8217;s take Sentry as an example. The incident title is clear but it will do us as incident responders better if we add the project name. Just makes it tad bit clear.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Without title remapper &#8211; <strong>var temp is not defined<\/strong><br>With Title remapper &#8211; <strong>var temp is not defined for Notification service<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">See the difference? it immediately adds more context. So much nicer to get this additional info especially on phone call and sms alerts. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here&#8217;s how we accomplished this &#8212;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Sentry Integration Payload <\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><!--kg-card-begin: markdown--><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  project: {\n    name: 'Notification service',\n    id: project-987\n  },\n  error: {\n    message: 'var temp is not defined',\n    id: 1234,\n    context: {\n      user: 'John Doe',\n      customer: 'Acme Inc',\n      subscription: 'Pro'\n    }\n  }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><!--kg-card-end: markdown--><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">By default, our internal parsing logic for Sentry will pick the error message and set it as incident title. However, you can now remap the title to add project name to it. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Here is the Title remapper Handelbars JS code &#8212;<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><!--kg-card-begin: markdown--><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{{data.error.message}} for {{project.name}}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><!--kg-card-end: markdown--><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">{{data.error.message}} = <strong>var temp is not defined<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">{{project.name}} = <strong>Notification service<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">By clubbing multiple variables, we are adding better context for all alerts. Super handy and super easy to get started. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Caveats<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>One Title remapper can be linked to multiple integrations. <\/li>\n\n\n\n<li>Ensure to link a remapper created for, say AWS, to only be linked with other AWS integrations. If not, there could be errors and your title will be missing<\/li>\n\n\n\n<li>If you link multiple Title remappers to an integration, only the last linked remapper will be taken into consideration.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"background\">Background<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">To test, at first, we monkey-patched the solution in the backend for select customers. Programmatic access essentially had us ideating on giving API access but it seemed impossible since we had to change the incident title while we are creating an incident.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There were 3 main factors to be considered.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Speed<\/li>\n\n\n\n<li>Least learning curve<\/li>\n\n\n\n<li>Flexibility<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">At the end of the day, we are parsing payloads sent to us at <a href=\"https:\/\/hooks.spike.sh\">hooks.spike.sh<\/a>. Changing the title programmatically could be best suited for something like <a href=\"https:\/\/handlebarsjs.com\">Handlebars JS<\/a>. We \u2764\ufe0fHandlebars JS<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"speed\">Speed<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Sending alerts as fast as I can is incredibly important.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Parsing payload sent to us, changing incident title, creating an incident, determining who to alert, and then sending alerts within <strong>800 milliseconds <\/strong>is crucial. So, speed was definitely one factor to be considered.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Handlebars JS is <a href=\"https:\/\/github.com\/handlebars-lang\/handlebars.js\/issues\/1451\">fast<\/a>. Our instant thought to create a middleware that users can write their own code came was right. <em>We took some inspiration from <a href=\"https:\/\/www.checklyhq.com\/\">Checkly<\/a> on this. They have done stellar work with adding a similar layer.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"least-learning-curve\">Least learning curve<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">It&#8217;s incredibly easy for anyone with pretty basic programming knowledge to pick up Handlebars JS. Created by <a href=\"https:\/\/github.com\/wycats\">@wycats<\/a>, it reliably provides very easy templating solutions. To change dynamic titles, all users need to do it access the data and reformat it for more context. There isn&#8217;t much logic layer that would be needed besides re-formatting your payload into a more meaningful title. It&#8217;s also safe and reliable.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"extensibility\">Extensibility<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Since re-formatting is easy with Handlebars JS, we can further extend this feature by providing more context like total suppressed and repeated incident metrics, who resolved it the last time, current responders added, etc. Users can then use data for their ongoing incident and mix it with a simple logic layer and more context. <\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">So, yeah, Handlebars JS ftw.<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"time-for-some-examples\">Time for some examples<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">All examples below are showcased with the below payload.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Common payload<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><!--kg-card-begin: markdown--><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>data: {\n  \"body\": {\n    \"event_definition_id\": \"this-is-a-test-notification\",\n    \"event_definition_type\": \"test-dummy-v1\",\n    \"event_definition_title\": \"Event Definition Test Title\",\n    \"event_definition_description\": \"Event Definition Test Description\",\n    \"job_definition_id\": \"163\",\n    \"job_trigger_id\": \"8999\",\n    \"event\": {\n      \"id\": \"NotificationTestId\",\n      \"event_definition_type\": \"notification-test-v1\",\n      \"event_definition_id\": \"EventDefinitionTestId\",\n      \"origin_context\": \"urn:graylog:message:es:testIndex_42:b5etest--id-4-90ed-0dbeefbaz\",\n      \"timestamp\": \"2021-05-05T09:42:42.823Z\",\n      \"timestamp_processing\": \"2021-05-05T09:42:42.823Z\",\n      \"timerange_start\": null,\n      \"timerange_end\": null,\n      \"streams\": &#91;\n        \"802109582109518290\"\n      ],\n      \"source_streams\": &#91;],\n      \"message\": \"Notification test message triggered from user &lt;richard&gt;\",\n      \"source\": \"12837126856181276589235717181276589235716\",\n      \"key_tuple\": &#91;\n        \"testkey\"\n      ],\n      \"key\": \"testkey\",\n      \"priority\": 2,\n      \"alert\": true,\n      \"fields\": {\n        \"field1\": \"value1\",\n        \"field2\": \"value2\"\n      }\n    },\n    \"backlog\": &#91;]\n  },\n  \"message\": \"Notification test message triggered from user &lt;richard&gt;\"\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><!--kg-card-end: markdown--><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"for-basic-control\">For basic control<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><!--kg-card-begin: markdown--><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>{{data.message}}<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><!--kg-card-end: markdown--><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Output<\/em><br>Notification test message triggered from user &lt;richard&gt;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><!--kg-card-begin: markdown--><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>{{data.body.event_definition_title}}<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><!--kg-card-end: markdown--><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Output<\/em><br>Event Definition Test Title<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><!--kg-card-begin: markdown--><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>[{{data.body.event_definition_type}}] has incident =&gt; {{data.body.event_definition_title}}<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><!--kg-card-end: markdown--><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Output<\/em><br>[test-dummy-v1] has incident =&gt; Event Definition Test Title<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"for-advanced-control\">For advanced control<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">You can use in-built helpers provided by Handlebars JS. Alongside, we also support a number of helpful helpers on our <a href=\"https:\/\/github.com\/spikehq\/swag\">own fork of Swag.<\/a><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Avoid #each and #unless or basically all for.. loops<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\"><!--kg-card-begin: markdown--><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{{#if data.body.event_definition_desc}}\n  Title: {{data.body.event_definition_title}}\n{{else if data.body.event.message}}\n  Message: &#91;{{data.body.event.key}}] - {{data.body.event.message}}\n{{else}}\n  {{data.message}}\n{{\/if}}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><!--kg-card-end: markdown--><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Output<\/em><br>Message: [testkey] &#8211; Notification test message triggered from user &lt;richard&gt;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"swag-helpers-example\">Swag helpers example<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><!--kg-card-begin: markdown--><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>{{uppercase data.message}} with priority {{add data.body.event.priority 1}}<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><!--kg-card-end: markdown--><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Output<\/em><br>NOTIFICATION TEST MESSAGE TRIGGERED FROM USER &lt;RICHARD&gt; with priority 3<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">Super happy to see this feature go live for everybody. Do ping us from your dashboard of write us at <strong>hello@spike.sh<\/strong> with your ideas &#8216;cos we would love to hear them.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Special thanks to Erik Symonds.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Title remapper empowers you to programmatically change incident title in real-time.<\/p>\n","protected":false},"author":191914268,"featured_media":778,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","_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_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":[1442],"tags":[1384],"class_list":["post-320","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-announcement","tag-new-feature"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Introducing Title Remapper<\/title>\n<meta name=\"description\" content=\"Easily add context to incident alerts with Spike\u2019s title remapper. Customize incident titles in real-time using Handlebars JS.\" \/>\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\/title-remapper\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Introducing Title Remapper\" \/>\n<meta property=\"og:description\" content=\"Easily add context to incident alerts with Spike\u2019s title remapper. Customize incident titles in real-time using Handlebars JS.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.spike.sh\/title-remapper\/\" \/>\n<meta property=\"og:site_name\" content=\"Spike&#039;s blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-07-12T09:10:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-06T07:15:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.spike.sh\/wp-content\/uploads\/2022\/07\/Title-remapper-3-.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2400\" \/>\n\t<meta property=\"og:image:height\" content=\"1110\" \/>\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=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/title-remapper\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/title-remapper\\\/\"},\"author\":{\"name\":\"Kaushik\",\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/#\\\/schema\\\/person\\\/b137e57ace218547f02b86fdcb2d0e64\"},\"headline\":\"Introducing Title Remapper\",\"datePublished\":\"2022-07-12T09:10:00+00:00\",\"dateModified\":\"2025-06-06T07:15:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/title-remapper\\\/\"},\"wordCount\":753,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/title-remapper\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.spike.sh\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/Title-remapper-3-.png\",\"keywords\":[\"new feature\"],\"articleSection\":[\"Announcement\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blog.spike.sh\\\/title-remapper\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/title-remapper\\\/\",\"url\":\"https:\\\/\\\/blog.spike.sh\\\/title-remapper\\\/\",\"name\":\"Introducing Title Remapper\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/title-remapper\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/title-remapper\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.spike.sh\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/Title-remapper-3-.png\",\"datePublished\":\"2022-07-12T09:10:00+00:00\",\"dateModified\":\"2025-06-06T07:15:20+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/#\\\/schema\\\/person\\\/b137e57ace218547f02b86fdcb2d0e64\"},\"description\":\"Easily add context to incident alerts with Spike\u2019s title remapper. Customize incident titles in real-time using Handlebars JS.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/title-remapper\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blog.spike.sh\\\/title-remapper\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/title-remapper\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blog.spike.sh\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/Title-remapper-3-.png\",\"contentUrl\":\"https:\\\/\\\/blog.spike.sh\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/Title-remapper-3-.png\",\"width\":2400,\"height\":1110},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.spike.sh\\\/title-remapper\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blog.spike.sh\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introducing Title Remapper\"}]},{\"@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":"Introducing Title Remapper","description":"Easily add context to incident alerts with Spike\u2019s title remapper. Customize incident titles in real-time using Handlebars JS.","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\/title-remapper\/","og_locale":"en_GB","og_type":"article","og_title":"Introducing Title Remapper","og_description":"Easily add context to incident alerts with Spike\u2019s title remapper. Customize incident titles in real-time using Handlebars JS.","og_url":"https:\/\/blog.spike.sh\/title-remapper\/","og_site_name":"Spike&#039;s blog","article_published_time":"2022-07-12T09:10:00+00:00","article_modified_time":"2025-06-06T07:15:20+00:00","og_image":[{"width":2400,"height":1110,"url":"https:\/\/blog.spike.sh\/wp-content\/uploads\/2022\/07\/Title-remapper-3-.png","type":"image\/png"}],"author":"Kaushik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kaushik","Estimated reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.spike.sh\/title-remapper\/#article","isPartOf":{"@id":"https:\/\/blog.spike.sh\/title-remapper\/"},"author":{"name":"Kaushik","@id":"https:\/\/blog.spike.sh\/#\/schema\/person\/b137e57ace218547f02b86fdcb2d0e64"},"headline":"Introducing Title Remapper","datePublished":"2022-07-12T09:10:00+00:00","dateModified":"2025-06-06T07:15:20+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.spike.sh\/title-remapper\/"},"wordCount":753,"commentCount":0,"image":{"@id":"https:\/\/blog.spike.sh\/title-remapper\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.spike.sh\/wp-content\/uploads\/2022\/07\/Title-remapper-3-.png","keywords":["new feature"],"articleSection":["Announcement"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.spike.sh\/title-remapper\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.spike.sh\/title-remapper\/","url":"https:\/\/blog.spike.sh\/title-remapper\/","name":"Introducing Title Remapper","isPartOf":{"@id":"https:\/\/blog.spike.sh\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.spike.sh\/title-remapper\/#primaryimage"},"image":{"@id":"https:\/\/blog.spike.sh\/title-remapper\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.spike.sh\/wp-content\/uploads\/2022\/07\/Title-remapper-3-.png","datePublished":"2022-07-12T09:10:00+00:00","dateModified":"2025-06-06T07:15:20+00:00","author":{"@id":"https:\/\/blog.spike.sh\/#\/schema\/person\/b137e57ace218547f02b86fdcb2d0e64"},"description":"Easily add context to incident alerts with Spike\u2019s title remapper. Customize incident titles in real-time using Handlebars JS.","breadcrumb":{"@id":"https:\/\/blog.spike.sh\/title-remapper\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.spike.sh\/title-remapper\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/blog.spike.sh\/title-remapper\/#primaryimage","url":"https:\/\/blog.spike.sh\/wp-content\/uploads\/2022\/07\/Title-remapper-3-.png","contentUrl":"https:\/\/blog.spike.sh\/wp-content\/uploads\/2022\/07\/Title-remapper-3-.png","width":2400,"height":1110},{"@type":"BreadcrumbList","@id":"https:\/\/blog.spike.sh\/title-remapper\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.spike.sh\/"},{"@type":"ListItem","position":2,"name":"Introducing Title Remapper"}]},{"@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\/2022\/07\/Title-remapper-3-.png","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfMe4Q-5a","jetpack-related-posts":[{"id":321,"url":"https:\/\/blog.spike.sh\/powerful-incident-management-platform\/","url_meta":{"origin":320,"position":0},"title":"Our Journey to Become Powerful Incident Management Platform","author":"Kaushik","date":"19th September, 2022","format":false,"excerpt":"We spoke with our users. Understood the problems and started on a long journey to fix them. Here's where we are so far.","rel":"","context":"In &quot;Announcement&quot;","block_context":{"text":"Announcement","link":"https:\/\/blog.spike.sh\/category\/announcement\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2022\/09\/feature-image.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2022\/09\/feature-image.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2022\/09\/feature-image.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2022\/09\/feature-image.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2022\/09\/feature-image.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2022\/09\/feature-image.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":5449,"url":"https:\/\/blog.spike.sh\/how-to-set-up-incident-alert-routing-rules-effectively\/","url_meta":{"origin":320,"position":1},"title":"How to set up Incident Alert Routing rules effectively","author":"Sreekar","date":"11th March, 2026","format":false,"excerpt":"A well set-up alert routing system means your team only sees what actually needs attention. This guide covers the three conditions that drive an effective routing setup and how to use each one.","rel":"","context":"In &quot;Guides&quot;","block_context":{"text":"Guides","link":"https:\/\/blog.spike.sh\/category\/guides\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/OpsGenie-Shutdown_-Everything-You-Need-To-Know-2.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/OpsGenie-Shutdown_-Everything-You-Need-To-Know-2.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/OpsGenie-Shutdown_-Everything-You-Need-To-Know-2.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/OpsGenie-Shutdown_-Everything-You-Need-To-Know-2.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/OpsGenie-Shutdown_-Everything-You-Need-To-Know-2.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/OpsGenie-Shutdown_-Everything-You-Need-To-Know-2.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":5652,"url":"https:\/\/blog.spike.sh\/alert-routing-setup-that-never-misses-critical-incidents\/","url_meta":{"origin":320,"position":2},"title":"Building an Alert Routing setup that never misses a critical incident","author":"Sreekar","date":"29th March, 2026","format":false,"excerpt":"Critical incidents need to reach the right person the moment they trigger. This guide covers how to set up an alert routing system that make sure they always do.","rel":"","context":"In &quot;Guides&quot;","block_context":{"text":"Guides","link":"https:\/\/blog.spike.sh\/category\/guides\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/OpsGenie-Shutdown_-Everything-You-Need-To-Know-5.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/OpsGenie-Shutdown_-Everything-You-Need-To-Know-5.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/OpsGenie-Shutdown_-Everything-You-Need-To-Know-5.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/OpsGenie-Shutdown_-Everything-You-Need-To-Know-5.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/OpsGenie-Shutdown_-Everything-You-Need-To-Know-5.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/OpsGenie-Shutdown_-Everything-You-Need-To-Know-5.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":5605,"url":"https:\/\/blog.spike.sh\/alert-routing-based-on-incident-payload\/","url_meta":{"origin":320,"position":3},"title":"How to route incidents based on what their payload says","author":"Sreekar","date":"26th March, 2026","format":false,"excerpt":"Every incident payload carries signals worth acting on. This guide covers how to read those signals and use them to set severity, load the right escalation policy, and reduce noise automatically.","rel":"","context":"In &quot;Guides&quot;","block_context":{"text":"Guides","link":"https:\/\/blog.spike.sh\/category\/guides\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/OpsGenie-Shutdown_-Everything-You-Need-To-Know-4.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/OpsGenie-Shutdown_-Everything-You-Need-To-Know-4.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/OpsGenie-Shutdown_-Everything-You-Need-To-Know-4.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/OpsGenie-Shutdown_-Everything-You-Need-To-Know-4.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/OpsGenie-Shutdown_-Everything-You-Need-To-Know-4.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/OpsGenie-Shutdown_-Everything-You-Need-To-Know-4.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":344,"url":"https:\/\/blog.spike.sh\/6-common-challenges-in-incident-management\/","url_meta":{"origin":320,"position":4},"title":"6 Common Challenges in Incident Management","author":"Sreekar","date":"20th February, 2024","format":false,"excerpt":"1. Poor Incident Prioritization2. Ineffective Alerting and Escalation3. Insufficient Incident Data4. Lack of Automation5. Overloaded Teams6. Lack of Post-Incident AnalysisWrap Up $1.81 trillion\u2014that\u2019s how much software operational failures cost US companies in 2022. But you can avoid such software mishaps. How? With robust incident management! However, running an incident management\u2026","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\/6-common-incident-challenges.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2024\/02\/6-common-incident-challenges.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2024\/02\/6-common-incident-challenges.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2024\/02\/6-common-incident-challenges.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":5468,"url":"https:\/\/blog.spike.sh\/turning-team-knowledge-into-alert-routing-rules\/","url_meta":{"origin":320,"position":5},"title":"Turning team knowledge into Alert Routing rules","author":"Sreekar","date":"12th March, 2026","format":false,"excerpt":"Your team knows incidents inside out. This guide walks you through four ways to build Alert Routing rules from that knowledge.","rel":"","context":"In &quot;Guides&quot;","block_context":{"text":"Guides","link":"https:\/\/blog.spike.sh\/category\/guides\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/OpsGenie-Shutdown_-Everything-You-Need-To-Know-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/OpsGenie-Shutdown_-Everything-You-Need-To-Know-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/OpsGenie-Shutdown_-Everything-You-Need-To-Know-1.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/OpsGenie-Shutdown_-Everything-You-Need-To-Know-1.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/OpsGenie-Shutdown_-Everything-You-Need-To-Know-1.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/blog.spike.sh\/wp-content\/uploads\/2026\/03\/OpsGenie-Shutdown_-Everything-You-Need-To-Know-1.png?resize=1400%2C800&ssl=1 4x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/posts\/320","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=320"}],"version-history":[{"count":2,"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/posts\/320\/revisions"}],"predecessor-version":[{"id":781,"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/posts\/320\/revisions\/781"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/media\/778"}],"wp:attachment":[{"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/media?parent=320"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/categories?post=320"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.spike.sh\/wp-json\/wp\/v2\/tags?post=320"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}