Files
nexus/sreweekly/articles/274/05-implementing-chatops-into-our-incident-management-procedure.html
2026-09-12 17:23:01 +08:00

201 lines
250 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html><html lang="en" dir="ltr"><head><script data-pre-hydration-monitor="true">(()=>{try{if(typeof MutationObserver>"u")return;const r=20,f=120,s={injectedElements:[],removedElements:[],attributesChanged:[]},c=t=>t?t.length>f?`${t.slice(0,f)}...`:t:"",N=["cdn.shopify.com","shopify.com","shopifycloud"],b=t=>t?N.some(e=>t.includes(e)):!1,m=t=>{const e=t.nodeName;if(!e||e==="#text"||e==="#comment")return null;const n=t.id?`#${t.id}`:"";let o="";if(t.className&&typeof t.className=="string"){const p=t.className.trim().split(/\s+/).slice(0,2).join(".");p&&(o=`.${p}`)}const u=t.getAttribute?.("src"),l=t.getAttribute?.("href"),g=t.getAttribute?.("type"),i=[];u?i.push(`src=${c(u)}`):l&&i.push(`href=${c(l)}`),g&&i.push(`type=${g}`);const E=i.length>0?`[${i.join(",")}]`:"",A=u||l||"";return{desc:[e,n,o,E].filter(Boolean).join(""),internal:b(A)}},d=t=>{const{target:e}=t,n=e.nodeName||"";return e.id?`${n}#${e.id}`:n},y=t=>{for(const e of t.addedNodes){const n=m(e);!n||n.internal||s.injectedElements.length<r&&s.injectedElements.push(`${n.desc} -> ${d(t)}`)}},$=t=>{for(const e of t.removedNodes){const n=m(e);!n||n.internal||s.removedElements.length<r&&s.removedElements.push(`${n.desc} <- ${d(t)}`)}},v=t=>{const e=d(t),n=t.target.getAttribute?.(t.attributeName)||"",o=`${e}.${t.attributeName}=${c(n)}`;s.attributesChanged.length<r&&s.attributesChanged.push(o)},h=new MutationObserver(t=>{for(const e of t){const n=e.type==="childList",o=e.type==="attributes";if(n){y(e),$(e);continue}o&&v(e)}}),a=()=>{h.observe(document.documentElement,{childList:!0,subtree:!0,attributes:!0})};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",a):a(),window.__preHydrationData=s,window.__stopPreHydrationMonitor=()=>{h.disconnect(),document.removeEventListener("DOMContentLoaded",a),delete window.__preHydrationData,delete window.__stopPreHydrationMonitor}}catch{}})();
</script><title>Implementing ChatOps into our Incident Management Procedure - Shopify</title><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta http-equiv="Accept-CH" content="ECT, Save-Data, Device-Memory, Downlink"/><meta name="description" content="8 minute read Production engineers (PE) are expected to be incident management experts. Still, incident handling is difficult, often messy, and exhausting. We encounter new incidents, search high and low for possible explanations, sometimes tunnel on symptoms, and, under pressure, forget some best practices. At Shopify, we care not only about handling incidents quickly and efficiently, but also PE well-being. We have a special IMOC (incident manager on call) rotation and an incident chatbot to assist IMOCs. This post provides an overview of incident management at Shopify, the responsibility of different roles during an incident, and how our chatbot works to support our team."/><meta property="fb:pages" content="20409006880"/><meta property="fb:app_id" content="847460188612391"/><meta property="og:type" content="website"/><meta property="og:site_name" content="Shopify"/><meta property="og:title" content="Implementing ChatOps into our Incident Management Procedure - Shopify"/><meta property="og:description" content="8 minute read Production engineers (PE) are expected to be incident management experts. Still, incident handling is difficult, often messy, and exhausting. We encounter new incidents, search high and low for possible explanations, sometimes tunnel on symptoms, and, under pressure, forget some best practices. At Shopify, we care not only about handling incidents quickly and efficiently, but also PE well-being. We have a special IMOC (incident manager on call) rotation and an incident chatbot to assist IMOCs. This post provides an overview of incident management at Shopify, the responsibility of different roles during an incident, and how our chatbot works to support our team."/><meta property="og:image" content="https://cdn.shopify.com/s/files/1/0779/4361/articles/Screen_Shot_2018-02-13_at_11.11.53_AM.png?v=1518538342"/><meta name="twitter:image" content="https://cdn.shopify.com/s/files/1/0779/4361/articles/Screen_Shot_2018-02-13_at_11.11.53_AM.png?v=1518538342"/><meta property="og:url" content="https://shopify.engineering/implementing-chatops-into-our-incident-management-procedure"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:site" content="Shopify"/><meta name="twitter:account_id" content="17136315"/><meta name="twitter:title" content="Implementing ChatOps into our Incident Management Procedure - Shopify"/><meta name="twitter:description" content="8 minute read Production engineers (PE) are expected to be incident management experts. Still, incident handling is difficult, often messy, and exhausting. We encounter new incidents, search high and low for possible explanations, sometimes tunnel on symptoms, and, under pressure, forget some best practices. At Shopify, we care not only about handling incidents quickly and efficiently, but also PE well-being. We have a special IMOC (incident manager on call) rotation and an incident chatbot to assist IMOCs. This post provides an overview of incident management at Shopify, the responsibility of different roles during an incident, and how our chatbot works to support our team."/><link href="https://cdn.shopify.com" rel="preconnect"/><link href="https://cdn.shopify.com" rel="preconnect" crossorigin="anonymous"/><link href="https://gtm.shopify.com" rel="preconnect"/><link href="https://www.googletagmanager.com" rel="preconnect"/><link rel="preload" as="font" type="font/woff2" crossorigin="anonymous" href="https://cdn.shopify.com/b/shopify-brochure2-assets/b2ba26f35a9189c443bbbd74242e6b0e.woff2"/><link rel="stylesheet" href="https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/blog-QDhcGZJl.css"/><link rel="alternate" type="application/atom+xml" title="Shopify Engineering" href="/blog.atom"/><script data-async-css-loader="true">(function(){function n(e){if(!e||e.media==="all")return;function t(){e.media="all"}e.sheet?t():e.addEventListener("load",t,{once:!0})}document.querySelectorAll("link[data-async-css]").forEach(n),typeof MutationObserver<"u"&&new MutationObserver(function(e){e.forEach(function(t){t.addedNodes.forEach(function(a){a.nodeType===1&&a.tagName==="LINK"&&a.hasAttribute("data-async-css")&&n(a)})})}).observe(document.head,{childList:!0,subtree:!0})})();
</script><link rel="icon" href="https://cdn.shopify.com/shopifycloud/web/assets/v1/favicon-default-6cbad9de243dbae3.ico" type="image/x-icon"/><link rel="apple-touch-icon" href="https://cdn.shopify.com/b/shopify-brochure2-assets/c97c60ca19c64a8b5378d9f9e971f7bd.png"/><link rel="apple-touch-icon" sizes="120x120" href="https://cdn.shopify.com/b/shopify-brochure2-assets/c97c60ca19c64a8b5378d9f9e971f7bd.png"/><link rel="apple-touch-icon" sizes="114x114" href="https://cdn.shopify.com/b/shopify-brochure2-assets/b13486e5693b246af63c66ab047a6b6b.png"/><link rel="apple-touch-icon" sizes="72x72" href="https://cdn.shopify.com/b/shopify-brochure2-assets/8734d76c98437c8ae8a628bbeed3750a.png"/><link rel="apple-touch-icon" sizes="57x57" href="https://cdn.shopify.com/b/shopify-brochure2-assets/193f18e4855704ef1716dc0cd750c1ee.png"/><link rel="canonical" href="https://shopify.engineering/implementing-chatops-into-our-incident-management-procedure"/><link href="https://shopify.engineering/implementing-chatops-into-our-incident-management-procedure" hrefLang="x-default" rel="alternate"/><link href="https://shopify.engineering/implementing-chatops-into-our-incident-management-procedure" hrefLang="en-US" rel="alternate"/><link href="https://shopify.engineering/implementing-chatops-into-our-incident-management-procedure" hrefLang="en" rel="alternate"/></head><body class="overscroll-y-none"><script>window.__brochureDuxConfig={"eventHandlerEndpoint":"/.well-known/dux?v2&_pri=1"}</script><div class="absolute top-2 left-2 z-[100] pointer-events-none"><a href="#main" class="inline-block self-center overflow-hidden max-w-full px-button-px py-button-py ring-inset rounded-button text-button-size font-button-font font-button-weight tracking-button-tracking focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-state-focus focus-visible:outline border-2 text-button-dark-primary-text bg-button-dark-primary-bg border-button-dark-primary-border ring-button-dark-primary-border hover:text-button-dark-primary-text-hover hover:bg-button-dark-primary-bg-hover hover:border-button-dark-primary-border-hover hover:ring-button-dark-primary-border-hover focus:text-button-dark-primary-text-focus focus:bg-button-dark-primary-bg-focus focus:border-button-dark-primary-border-focus focus:ring-button-dark-primary-border-focus active:text-button-dark-primary-text-active active:bg-button-dark-primary-bg-active active:border-button-dark-primary-border-active active:ring-button-dark-primary-border-active disabled:text-button-dark-primary-text-disabled disabled:bg-button-dark-primary-bg-disabled disabled:border-button-dark-primary-border-disabled disabled:ring-button-dark-primary-border-disabled transition-transform duration-300 translate-y-[-200%] motion-reduce:transition-none focus:translate-y-0" data-component-name="button" data-mode="dark" target="">Skip to Content</a></div><div class="relative bg-engineering-dark-bg text-engineering-dark-text [&amp;_.app-signup-links]:hidden"><div class="bg-enginneering-dark bg-top bg-auto bg-no-repeat"><header class="font-sans absolute h-full w-full pointer-events-none z-50 overflow-x-clip" data-component-name="global-nav" data-viewable-component="true" data-component-extra-variant="brochureV2-newNav-header" data-has-secondary-navigation="true"><div class="after:absolute after:top-0 after:left-0 after:will-change-opacity after:pointer-events-none after:h-full after:w-full after:z-10 after:transition-opacity after:duration-200 w-full z-50 [&amp;:has(.level1-item:hover)]:after:opacity-100 [&amp;:has(.level1-item:focus-within)]:after:opacity-100 text-white after:opacity-0 -top-global-header pointer-events-auto [&amp;:has(.level1-item)]:after:delay-[350ms] [&amp;:has(.level1-item:hover)]:after:delay-100 [&amp;:has(.level1-item:focus-within)]:after:delay-100 before:absolute before:top-0 before:left-0 before:will-change-opacity before:pointer-events-none before:h-full before:w-full before:z-100 before:transition-opacity before:duration-200 before:opacity-0 before:translate-y-full [&amp;:has(.level1-item:hover)]:before:opacity-100 [&amp;:has(.level1-item:focus-within)]:before:opacity-100 [&amp;:has(.level1-item)]:before:delay-[350ms] [&amp;:has(.level1-item:hover)]:before:delay-100 [&amp;:has(.level1-item:focus-within)]:before:delay-100 before:bg-[linear-gradient(180deg,#02090A_0px,transparent_40px)] sticky after:bg-[#02090A]"><div class="h-global-header px-margin xl:px-auto-xl flex items-center z-20 relative"><a href="/" data-component-name="logo-home" class="inline-block shrink-0 mr-12 lg:w-[125px] w-[98px]"><img src="https://cdn.shopify.com/b/shopify-brochure2-assets/d9340911ca8c679b148dd4a205ad2ffa.svg" alt="Shopify" class="h-9" data-component-name="shopify-logo"/></a><nav class="max-lg:hidden flex h-full grow" aria-label="Main" itemscope="" itemType="https://schema.org/SiteNavigationElement" data-click-outside="dismiss" data-component-name="desktop-main-navigation" data-viewable-component="true"><ul class="flex h-full group"><li class="text-base mr-8"><div class="relative flex h-full after:block after:h-[3px] after:w-full after:absolute after:bottom-0 after:scale-0 after:origin-left after:transition-transform after:duration-[350ms] after:ease-[bezier(0.66,0.66,0.34,1.00)] after:motion-reduce:transition-none hover:underline after:bg-white text-white"><button type="button" class="bg-transparent whitespace-nowrap" data-component-name="Solutions-toggle-open" aria-expanded="false" aria-haspopup="true"><span class="font-semi-medium mr-3">Solutions</span><div aria-hidden="true" class="relative inline-block h-[7px] w-3 cursor-pointer"><div class="inline-block rounded border-b-8 h-2 w-[2px] origin-center transition-all ease-[bezier(0.66, 0.66, 0.34, 1.00)] duration-[350ms] motion-reduce:transition-none border-white bg-white -translate-x-[3px] rotate-[135deg]"></div><div class="inline-block rounded border-b-8 h-2 w-[2px] origin-center transition-all ease-[bezier(0.66, 0.66, 0.34, 1.00)] duration-[350ms] motion-reduce:transition-none border-white bg-white -rotate-[135deg]"></div></div></button></div><div id="SolutionsDesktopMenu" class="absolute inset-x-0 top-global-header z-[21] transition-transform duration-[452ms] ease-[cubic-bezier(0.26,1.00,0.48,1.00)] motion-reduce:transition-none before:absolute before:inset-x-0 before:top-0 before:w-full before:h-full before:left-0 before:shadow-xl before:pointer-events-none before:z-10 bg-black text-white opacity-0 pointer-events-none -translate-y-[10px]"><div class="relative no-scrollbar overflow-y-auto overflow-x-clip max-h-[calc(100vh-72px)] z-20 pb-28"><div class="container grid grid-cols-4 sm:grid-cols-8 md:grid-cols-12 gap-x-gutter gap-y-2xl"><div class="col-span-3 col-start-1 pt-8 text-white -translate-y-[30px]" data-background="transparent_dark"><div class="flex items-center border-shade-30 mb-6 border-b pb-4 text-lg border-shade-70"><span aria-hidden="true" class="-ml-2 lg:ml-0 mr-3 md:mr-3 inline-block h-10 w-10"><svg width="40" height="40" fill="none"><g clip-path="url(#white_circle_svg__a)"><path d="M19 21.5v-3h-2.5v1a1 1 0 0 1-1 1H14a1 1 0 0 1-1-1V14a1 1 0 0 1 1-1h1.5a1 1 0 0 1 1 1v1h6.75s4.25 0 4.25 4.5c0 0-2.25-1-5-1v3m-3.5 0h3.5m-3.5 0v6m3.5-6v6M39.25 20c0 10.631-8.619 19.25-19.25 19.25S.75 30.631.75 20 9.369.75 20 .75 39.25 9.369 39.25 20Z" stroke="url(#start_svg__b)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></g></svg></span><span id="sub-nav-item-start" class="text-t7 inline-block text-white">Start</span></div><ul class="pb-2" aria-labelledby="sub-nav-item-start"><li class="flex mb-6 pr-4"><a class="group inline-block w-full text-white hover:text-white" href="https://www.shopify.com/start" aria-label="External source: Start your business . Build your brand"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Start your business<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">Build your brand</div></a></li><li class="flex mb-6 pr-4"><a class="group inline-block w-full text-white hover:text-white" href="https://www.shopify.com/website/builder" aria-label="External source: Create your website . Online store editor"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Create your website<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">Online store editor</div></a></li><li class="flex mb-6 pr-4"><a class="group inline-block w-full text-white hover:text-white" href="https://themes.shopify.com/" aria-label="External source: Customize your store . Store themes"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Customize your store<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">Store themes</div></a></li><li class="flex mb-6 pr-4"><a class="group inline-block w-full text-white hover:text-white" href="https://apps.shopify.com/" aria-label="External source: Find business apps . Shopify app store"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Find business apps<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">Shopify app store</div></a></li><li class="flex mb-6 pr-4"><a class="group inline-block w-full text-white hover:text-white" href="https://www.shopify.com/domains" aria-label="External source: Own your site domain . Domains &amp; hosting"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Own your site domain<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">Domains &amp; hosting</div></a></li><li class="flex mb-6 pr-4"><a class="group inline-block w-full text-white hover:text-white" href="https://www.shopify.com/tools" aria-label="External source: Explore free business tools . Tools to run your business"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Explore free business tools<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">Tools to run your business</div></a></li></ul></div><div class="col-span-3 col-start-4 pt-8 text-white -translate-y-[30px]" data-background="transparent_dark"><div class="flex items-center border-shade-30 mb-6 border-b pb-4 text-lg border-shade-70"><span aria-hidden="true" class="-ml-2 lg:ml-0 mr-3 md:mr-3 inline-block h-10 w-10"><svg width="40" height="40" fill="none"><g clip-path="url(#white_circle_svg__a)"><path d="M12.75 21.5v4c0 .966 2.35 1.75 5.25 1.75s5.25-.784 5.25-1.75v-4m4-7c0 .966-2.35 1.75-5.25 1.75s-5.25-.784-5.25-1.75m10.5 0c0-.966-2.35-1.75-5.25-1.75s-5.25.784-5.25 1.75m10.5 0v4.25c0 .46-.533.88-1.405 1.192M16.75 14.5V17m6.5 4.25c0 .966-2.35 1.75-5.25 1.75s-5.25-.784-5.25-1.75S15.1 19.5 18 19.5s5.25.784 5.25 1.75Zm16-1.25c0 10.631-8.619 19.25-19.25 19.25S.75 30.631.75 20 9.369.75 20 .75 39.25 9.369 39.25 20Z" stroke="url(#sell_svg__a)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></g></svg></span><span id="sub-nav-item-sell" class="text-t7 inline-block text-white">Sell</span></div><ul class="pb-2" aria-labelledby="sub-nav-item-sell"><li class="flex mb-6 pr-4"><a class="group inline-block w-full text-white hover:text-white" href="https://www.shopify.com/sell" aria-label="External source: Sell your products . Sell online or in person"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Sell your products<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">Sell online or in person</div></a></li><li class="flex mb-6 pr-4"><a class="group inline-block w-full text-white hover:text-white" href="https://www.shopify.com/checkout" aria-label="External source: Check out customers . World-class checkout"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Check out customers<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">World-class checkout</div></a></li><li class="flex mb-6 pr-4"><a class="group inline-block w-full text-white hover:text-white" href="https://www.shopify.com/online" aria-label="External source: Sell online . Grow your business online"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Sell online<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">Grow your business online</div></a></li><li class="flex mb-6 pr-4"><a class="group inline-block w-full text-white hover:text-white" href="https://www.shopify.com/channels" aria-label="External source: Sell across channels . Reach millions of shoppers and boost sales"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Sell across channels<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">Reach millions of shoppers and boost sales</div></a></li><li class="flex mb-6 pr-4"><a class="group inline-block w-full text-white hover:text-white" href="https://www.shopify.com/international" aria-label="External source: Sell globally . International sales"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Sell globally<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">International sales</div></a></li><li class="flex mb-6 pr-4"><a class="group inline-block w-full text-white hover:text-white" href="https://www.shopify.com/plus/solutions/b2b-ecommerce" aria-label="External source: Sell wholesale &amp; direct . Business-to-business (B2B)"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Sell wholesale &amp; direct<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">Business-to-business (B2B)</div></a></li></ul></div><div class="col-span-3 col-start-7 pt-8 text-white -translate-y-[30px]" data-background="transparent_dark"><div class="flex items-center border-shade-30 mb-6 border-b pb-4 text-lg border-shade-70"><span aria-hidden="true" class="-ml-2 lg:ml-0 mr-3 md:mr-3 inline-block h-10 w-10"><svg width="40" height="40" fill="none"><g clip-path="url(#white_circle_svg__a)"><path d="m12.75 19.25 5.5-5.5m1 2.5v-3.5h-3.5m-2 14.5h.5a1 1 0 0 0 1-1v-2.5a1 1 0 0 0-1-1h-.5a1 1 0 0 0-1 1v2.5a1 1 0 0 0 1 1Zm6 0h.5a1 1 0 0 0 1-1v-5.5a1 1 0 0 0-1-1h-.5a1 1 0 0 0-1 1v5.5a1 1 0 0 0 1 1Zm6 0h.5a1 1 0 0 0 1-1v-12.5a1 1 0 0 0-1-1h-.5a1 1 0 0 0-1 1v12.5a1 1 0 0 0 1 1ZM39.25 20c0 10.631-8.619 19.25-19.25 19.25S.75 30.631.75 20 9.369.75 20 .75 39.25 9.369 39.25 20Z" stroke="url(#market_svg__a)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></g></svg></span><span id="sub-nav-item-market" class="text-t7 inline-block text-white">Market</span></div><ul class="pb-2" aria-labelledby="sub-nav-item-market"><li class="flex mb-6 pr-4"><a class="group inline-block w-full text-white hover:text-white" href="https://www.shopify.com/market" aria-label="External source: Market your business . Reach &amp; retain customers"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Market your business<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">Reach &amp; retain customers</div></a></li><li class="flex mb-6 pr-4"><a class="group inline-block w-full text-white hover:text-white" href="https://www.shopify.com/facebook-instagram" aria-label="External source: Market across social . Social media integrations"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Market across social<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">Social media integrations</div></a></li><li class="flex mb-6 pr-4"><a class="group inline-block w-full text-white hover:text-white" href="https://www.shopify.com/inbox" aria-label="External source: Chat with customers . Shopify Inbox"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Chat with customers<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">Shopify Inbox</div></a></li><li class="flex mb-6 pr-4"><a class="group inline-block w-full text-white hover:text-white" href="https://www.shopify.com/email-marketing" aria-label="External source: Nurture customers . Shopify Messaging"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Nurture customers<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">Shopify Messaging</div></a></li><li class="flex mb-6 pr-4"><a class="group inline-block w-full text-white hover:text-white" href="https://www.shopify.com/segmentation" aria-label="External source: Know your audience . Gain customer insights"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Know your audience<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">Gain customer insights</div></a></li></ul></div><div class="col-span-3 col-start-10 pt-8 text-white -translate-y-[30px]" data-background="transparent_dark"><div class="flex items-center border-shade-30 mb-6 border-b pb-4 text-lg border-shade-70"><span aria-hidden="true" class="-ml-2 lg:ml-0 mr-3 md:mr-3 inline-block h-10 w-10"><svg width="40" height="40" fill="none"><g clip-path="url(#white_circle_svg__a)"><path d="M12.75 15.75c0 1.243.75 2.5 2.25 2.5s2.5-1.257 2.5-2.5c0 1.243 1 2.5 2.5 2.5s2.5-1.257 2.5-2.5c0 1.243 1 2.5 2.5 2.5s2.25-1.257 2.25-2.5m-12.5 11.5h10.5a2 2 0 0 0 2-2v-9.067a2 2 0 0 0-.179-.827l-.538-1.184A2 2 0 0 0 24.713 13h-9.425a2 2 0 0 0-1.82 1.172l-.538 1.184a2 2 0 0 0-.18.827v9.067a2 2 0 0 0 2 2Zm3-3.5a2 2 0 0 1 2-2h.5a2 2 0 0 1 2 2v3.5h-4.5v-3.5ZM39.25 20c0 10.631-8.619 19.25-19.25 19.25S.75 30.631.75 20 9.369.75 20 .75 39.25 9.369 39.25 20Z" stroke="url(#manage_svg__a)" stroke-width="1.5" stroke-linecap="round"></path></g></svg></span><span id="sub-nav-item-manage" class="text-t7 inline-block text-white">Manage</span></div><ul class="pb-2" aria-labelledby="sub-nav-item-manage"><li class="flex mb-6 pr-4"><a class="group inline-block w-full text-white hover:text-white" href="https://www.shopify.com/manage" aria-label="External source: Manage your business . Track sales, orders &amp; analytics"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Manage your business<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">Track sales, orders &amp; analytics</div></a></li><li class="flex mb-6 pr-4"><a class="group inline-block w-full text-white hover:text-white" href="https://www.shopify.com/analytics" aria-label="External source: Measure your performance . Analytics and Reporting"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Measure your performance<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">Analytics and Reporting</div></a></li><li class="flex mb-6 pr-4"><a class="group inline-block w-full text-white hover:text-white" href="https://www.shopify.com/orders" aria-label="External source: Manage your stock &amp; orders . Inventory &amp; order management"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Manage your stock &amp; orders<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">Inventory &amp; order management</div></a></li><li class="flex mb-6 pr-4"><a class="group inline-block w-full text-white hover:text-white" href="https://www.shopify.com/flow" aria-label="External source: Automate your business . Shopify Flow"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Automate your business<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">Shopify Flow</div></a></li></ul></div></div></div><div class="absolute bottom-0 inset-x-0 overflow-hidden z-20"><div class="container grid grid-cols-4 sm:grid-cols-8 md:grid-cols-12 gap-x-gutter gap-y-2xl"><div class="col-span-12 col-start-1 scheme-white:bg-shade-10 scheme-transparent-light:bg-shade-10 scheme-black:bg-shade-90 scheme-transparent-dark:bg-shade-90 relative after:absolute after:left-full after:top-[-1px] after:w-[100vw] after:h-[calc(100%+1px)] scheme-white:after:bg-shade-10 scheme-transparent-light:after:bg-shade-10 scheme-black:after:bg-shade-90 scheme-transparent-dark:after:bg-shade-90 scheme-black:text-white scheme-transparent-dark:text-white -ml-[var(--margin)] -mt-8 md:mt-0 pl-[var(--margin)] pt-6 before:content-[&#x27;&#x27;] before:absolute before:right-full before:top-[-1px] before:w-[100vw] before:h-[calc(100%+1px)] scheme-white:before:bg-shade-10 scheme-transparent-light:before:bg-shade-10 scheme-black:before:bg-shade-90 scheme-transparent-dark:before:bg-shade-90 border-t scheme-white:border-shade-20 scheme-transparent-light:border-shade-20 scheme-black:border-shade-70 scheme-transparent-dark:border-shade-70 before:border-t scheme-white:before:border-shade-20 scheme-transparent-light:before:border-shade-20 scheme-black:before:border-shade-70 scheme-transparent-dark:before:border-shade-70 after:border-t scheme-white:after:border-shade-20 scheme-transparent-light:after:border-shade-20 scheme-black:after:border-shade-70 scheme-transparent-dark:after:border-shade-70 text-black -translate-y-[30px]" data-background="transparent_dark"><ul class="grid grid-cols-12 gap-x-gutter gap-y-0 pb-0"><li class="flex mb-6 pr-4 border-r border-shade-30 last:border-0 col-span-3"><a class="group inline-block w-full text-white hover:text-white" href="https://shopify.dev" aria-label="External source: Shopify Developers . Build with Shopify&#x27;s powerful APIs"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Shopify Developers<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">Build with Shopify&#x27;s powerful APIs</div></a></li><li class="flex mb-6 pr-4 border-r border-shade-30 last:border-0 col-span-3"><a class="group inline-block w-full text-white hover:text-white" href="https://www.shopify.com/plus" aria-label="External source: Plus . A commerce solution for growing digital brands"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Plus<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">A commerce solution for growing digital brands</div></a></li><li class="flex mb-6 pr-4 border-r border-shade-30 last:border-0 col-span-3"><a class="group inline-block w-full text-white hover:text-white" href="https://www.shopify.com/products" aria-label="External source: All Products . Explore all Shopify products &amp; features"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">All Products<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">Explore all Shopify products &amp; features</div></a></li></ul></div></div></div></div></li><li class="text-base mr-8"><div class="flex h-full items-center"><a class="flex items-center hover:underline text-white hover:text-white" href="https://www.shopify.com/pricing" aria-label="External source: Pricing">Pricing</a></div></li><li class="text-base mr-8"><div class="relative flex h-full after:block after:h-[3px] after:w-full after:absolute after:bottom-0 after:scale-0 after:origin-left after:transition-transform after:duration-[350ms] after:ease-[bezier(0.66,0.66,0.34,1.00)] after:motion-reduce:transition-none hover:underline after:bg-white text-white"><button type="button" class="bg-transparent whitespace-nowrap" data-component-name="Resources-toggle-open" aria-expanded="false" aria-haspopup="true"><span class="font-semi-medium mr-3">Resources</span><div aria-hidden="true" class="relative inline-block h-[7px] w-3 cursor-pointer"><div class="inline-block rounded border-b-8 h-2 w-[2px] origin-center transition-all ease-[bezier(0.66, 0.66, 0.34, 1.00)] duration-[350ms] motion-reduce:transition-none border-white bg-white -translate-x-[3px] rotate-[135deg]"></div><div class="inline-block rounded border-b-8 h-2 w-[2px] origin-center transition-all ease-[bezier(0.66, 0.66, 0.34, 1.00)] duration-[350ms] motion-reduce:transition-none border-white bg-white -rotate-[135deg]"></div></div></button></div><div id="ResourcesDesktopMenu" class="absolute inset-x-0 top-global-header z-[21] transition-transform duration-[452ms] ease-[cubic-bezier(0.26,1.00,0.48,1.00)] motion-reduce:transition-none before:absolute before:inset-x-0 before:top-0 before:w-full before:h-full before:left-0 before:shadow-xl before:pointer-events-none before:z-10 bg-black text-white opacity-0 pointer-events-none -translate-y-[10px]"><div class="relative no-scrollbar overflow-y-auto overflow-x-clip max-h-[calc(100vh-72px)] z-20"><div class="container grid grid-cols-4 sm:grid-cols-8 md:grid-cols-12 gap-x-gutter gap-y-2xl"><div class="col-span-3 col-start-1 pt-8 text-white -translate-y-[30px]" data-background="transparent_dark"><div class="flex items-center border-shade-30 mb-6 border-b pb-4 text-lg border-shade-70"><span aria-hidden="true" class="-ml-2 lg:ml-0 mr-3 md:mr-3 inline-block h-10 w-10"><svg width="40" height="40" fill="none"><g clip-path="url(#help-and-support_svg__a)"><circle cx="20" cy="20" r="19.25" stroke="currentColor" stroke-width="1.5"></circle><path d="M20 20v6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path><path d="M20 16.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z" fill="currentColor"></path></g></svg></span><span id="sub-nav-item-help-and-support" class="text-t7 inline-block text-white">Help and support</span></div><ul class="pb-2" aria-labelledby="sub-nav-item-help-and-support"><li class="flex mb-6 pr-4"><a class="group inline-block w-full text-white hover:text-white" href="https://help.shopify.com/en/" aria-label="External source: Help and support . Get 24/7 support"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Help and support<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">Get 24/7 support</div></a></li><li class="flex mb-6 pr-4"><a class="group inline-block w-full text-white hover:text-white" href="https://www.shopifyacademy.com" aria-label="External source: Business courses . Learn from proven experts"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Business courses<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">Learn from proven experts</div></a></li></ul></div><div class="col-span-6 col-start-4 pt-8 text-white -translate-y-[30px]" data-background="transparent_dark"><div class="flex items-center border-shade-30 mb-6 border-b pb-4 text-lg border-shade-70"><span aria-hidden="true" class="-ml-2 lg:ml-0 mr-3 md:mr-3 inline-block h-10 w-10"><svg width="40" height="40" fill="none"><g clip-path="url(#white_circle_svg__a)" stroke="currentColor" stroke-width="1.5"><circle cx="20" cy="20" r="19.25"></circle><path d="m22.023 15.04 3 3M12.75 27.25l4.25-1 9.95-9.95a1 1 0 0 0 0-1.413l-1.837-1.836a1 1 0 0 0-1.414 0L13.75 23l-1 4.25Z" stroke-linecap="round" stroke-linejoin="round"></path></g></svg></span><span id="sub-nav-item-popular-topics" class="text-t7 inline-block text-white">Popular topics</span></div><ul class="pb-2 columns-2" aria-labelledby="sub-nav-item-popular-topics"><li class="flex mb-6 pr-4"><a class="group inline-block w-full text-white hover:text-white" href="https://www.shopify.com/blog/what-is-shopify" aria-label="External source: What is Shopify? . How our commerce platform works"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">What is Shopify?<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">How our commerce platform works</div></a></li></ul></div><div class="col-span-3 col-start-10 pt-8 scheme-white:bg-shade-10 scheme-transparent-light:bg-shade-10 scheme-black:bg-shade-90 scheme-transparent-dark:bg-shade-90 pl-10 relative after:absolute after:left-full after:top-[-1px] after:w-[100vw] after:h-[calc(100%+1px)] scheme-white:after:bg-shade-10 scheme-transparent-light:after:bg-shade-10 scheme-black:after:bg-shade-90 scheme-transparent-dark:after:bg-shade-90 scheme-black:text-white scheme-transparent-dark:text-white border-l scheme-white:border-shade-20 scheme-transparent-light:border-shade-20 scheme-black:border-shade-70 scheme-transparent-dark:border-shade-70 text-black -translate-y-[30px]" data-background="transparent_dark"><div class="flex items-center border-shade-30 mb-6 border-b pb-4 text-lg border-shade-70"><span aria-hidden="true" class="-ml-2 lg:ml-0 mr-3 md:mr-3 inline-block h-10 w-10"><svg width="40" height="40" fill="none"><g clip-path="url(#white_circle_svg__a)" stroke="currentColor" stroke-width="1.5"><circle cx="20" cy="20" r="19.25"></circle><path d="M16.75 16.75v-2a2 2 0 0 1 2-2h2.5a2 2 0 0 1 2 2v2m-2 4v1.5a1 1 0 0 1-1 1h-.5a1 1 0 0 1-1-1v-1.5m2.5 0a1 1 0 0 0-1-1h-.5a1 1 0 0 0-1 1m2.5 0h6m-8.5 0h-6m2 6.5h10.5a2 2 0 0 0 2-2v-6.5a2 2 0 0 0-2-2h-10.5a2 2 0 0 0-2 2v6.5a2 2 0 0 0 2 2Z"></path></g></svg></span><span id="sub-nav-item-essential-tools" class="text-t7 inline-block text-white">Essential tools</span></div><ul class="pb-2" aria-labelledby="sub-nav-item-essential-tools"><li class="flex mb-6 pr-4"><a class="group inline-block w-full text-white hover:text-white" href="https://www.shopify.com/tools/business-name-generator" aria-label="External source: Business name generator ."><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Business name generator <span class="sr-only">.</span></span></div></a></li><li class="flex mb-6 pr-4"><a class="group inline-block w-full text-white hover:text-white" href="https://www.shopify.com/tools/logo-maker" aria-label="External source: Logo maker ."><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Logo maker<span class="sr-only">.</span></span></div></a></li><li class="flex mb-6 pr-4"><a class="group inline-block w-full text-white hover:text-white" href="https://www.shopify.com/stock-photos" aria-label="External source: Stock photography ."><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Stock photography<span class="sr-only">.</span></span></div></a></li><li class="flex mb-6 pr-4"><a class="group inline-block w-full text-white hover:text-white" href="https://www.shopify.com/tools/qr-code-generator" aria-label="External source: QR code generator ."><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">QR code generator<span class="sr-only">.</span></span></div></a></li></ul></div></div></div></div></li><li class="text-base mr-8"><div class="relative flex h-full after:block after:h-[3px] after:w-full after:absolute after:bottom-0 after:scale-0 after:origin-left after:transition-transform after:duration-[350ms] after:ease-[bezier(0.66,0.66,0.34,1.00)] after:motion-reduce:transition-none hover:underline after:bg-white text-white"><button type="button" class="bg-transparent whitespace-nowrap" data-component-name="What’s new-toggle-open" aria-expanded="false" aria-haspopup="true"><span class="font-semi-medium mr-3">What’s new</span><div aria-hidden="true" class="relative inline-block h-[7px] w-3 cursor-pointer"><div class="inline-block rounded border-b-8 h-2 w-[2px] origin-center transition-all ease-[bezier(0.66, 0.66, 0.34, 1.00)] duration-[350ms] motion-reduce:transition-none border-white bg-white -translate-x-[3px] rotate-[135deg]"></div><div class="inline-block rounded border-b-8 h-2 w-[2px] origin-center transition-all ease-[bezier(0.66, 0.66, 0.34, 1.00)] duration-[350ms] motion-reduce:transition-none border-white bg-white -rotate-[135deg]"></div></div></button></div><div id="What’s newDesktopMenu" class="absolute inset-x-0 top-global-header z-[21] transition-transform duration-[452ms] ease-[cubic-bezier(0.26,1.00,0.48,1.00)] motion-reduce:transition-none before:absolute before:inset-x-0 before:top-0 before:w-full before:h-full before:left-0 before:shadow-xl before:pointer-events-none before:z-10 bg-black text-white opacity-0 pointer-events-none -translate-y-[10px]"><div class="relative no-scrollbar overflow-y-auto overflow-x-clip max-h-[calc(100vh-72px)] z-20"><div class="container grid grid-cols-4 sm:grid-cols-8 md:grid-cols-12 gap-x-gutter gap-y-2xl"><div class="col-span-12 col-start-1 pt-8 text-white -translate-y-[30px]" data-background="transparent_dark"><ul class="grid grid-cols-12 gap-x-gutter gap-y-0 pb-0"><li class="flex mb-6 pr-4 border-r border-shade-30 last:border-0 col-span-3"><span aria-hidden="true" class="-ml-2 lg:ml-0 mr-3 md:mr-3 inline-block h-10 w-10"><svg width="41" height="42" viewBox="0 0 41 42" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_213_1921)"><path d="M39.5 21C39.5 31.6315 30.8815 40.25 20.25 40.25C9.61852 40.25 1 31.6315 1 21C1 10.3685 9.61852 1.75 20.25 1.75C30.8815 1.75 39.5 10.3685 39.5 21Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><rect x="13" y="14" width="15" height="14" rx="2" stroke="currentColor" stroke-width="1.5"></rect><path d="M25 24L19 24" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path><path d="M25 21L19 21" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path><path d="M25 18L19 18" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path><path d="M17 18L16 18" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path><path d="M17 21L16 21" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path><path d="M17 24L16 24" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path></g><defs><clipPath id="clip0_213_1921"><rect width="40.5" height="40.5" fill="white" transform="translate(0 0.75)"></rect></clipPath></defs></svg></span><a class="group inline-block w-full text-white hover:text-white" href="https://changelog.shopify.com" aria-label="External source: Changelog . Your source for recent updates"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Changelog<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">Your source for recent updates</div></a></li><li class="flex mb-6 pr-4 border-r border-shade-30 last:border-0 col-span-3"><span aria-hidden="true" class="-ml-2 lg:ml-0 mr-3 md:mr-3 inline-block h-10 w-10"><svg width="42" height="42" viewBox="0 0 42 42" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M40.25 21C40.25 31.6315 31.6315 40.25 21 40.25C10.3685 40.25 1.75 31.6315 1.75 21C1.75 10.3685 10.3685 1.75 21 1.75C31.6315 1.75 40.25 10.3685 40.25 21Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><path d="M17.341 24.6079L18.8363 26.9574" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path><path d="M26.9609 14.7523C28.2811 15.4085 29.324 16.6069 29.7356 18.1429C30.1472 19.679 29.8432 21.2382 29.028 22.4667" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path><path d="M26.9769 20.7052C27.2556 20.1447 27.3388 19.4842 27.164 18.832C26.9893 18.1799 26.587 17.6495 26.0654 17.3034" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path><path d="M14.5357 20.5604C14.4233 20.1409 14.5945 19.6968 14.9595 19.4613L21.4187 15.2941C21.9885 14.9265 22.7512 15.2206 22.9267 15.8756L24.9726 23.5109C25.1481 24.1659 24.6346 24.802 23.9574 24.7685L16.2799 24.3892C15.8461 24.3678 15.4758 24.0688 15.3633 23.6493L14.5357 20.5604Z" stroke="currentColor" stroke-width="1.5"></path><path d="M12.0335 21.5081L12.7226 24.0796" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path></svg></span><a class="group inline-block w-full text-white hover:text-white" href="https://www.shopify.com/news" aria-label="External source: Newsroom . All company news and press releases"><div class="text-base font-semi-medium"><span class="inline-block arrow-animation">Newsroom<span class="sr-only">.</span></span></div><div class="text-sm text-shade-30 group-hover:text-white">All company news and press releases</div></a></li></ul></div></div></div></div></li></ul></nav><div class="ml-auto transition-opacity duration-200 opacity-100 delay-100"><ul class="flex items-center lg:hidden mr-[-15px]"><li><button class="flex h-12 w-12 cursor-pointer select-none flex-col items-center justify-center gap-1" aria-label="Menu" aria-expanded="false" aria-haspopup="true" type="button" data-component-name="navigation-toggle-open"><div class="h-0.5 w-[1.125rem] transition-all ease-out-in duration-500 motion-reduce:transition-none bg-white"></div><div class="h-0.5 w-[1.125rem] transition-all ease-out-in duration-500 motion-reduce:transition-none bg-white"></div><div class="h-0.5 w-[1.125rem] transition-all ease-out-in duration-500 motion-reduce:transition-none bg-white"></div></button></li></ul></div></div></div><div class="top-0 w-full z-20 before:absolute before:top-0 before:left-0 before:pointer-events-none before:w-full before:h-global-header-with-border before:z-20 after:absolute after:top-0 after:left-0 after:will-change-opacity after:pointer-events-none after:h-full after:w-full after:z-10 after:transition-opacity after:duration-200 text-white before:border-y before:border-white/20 after:opacity-0 pointer-events-auto before:opacity-0 sticky after:bg-[#02090A]"><div class="h-global-header container flex items-center relative z-20"><div data-component-name="secondary-navigation" class="flex items-center gap-x-8 w-full h-14 sm:h-global-header text-white"><a href="/" data-component-name="logo-home" class="inline-block shrink-0 absolute left-0 top-1/2 -translate-y-1/2 transform-opacity will-change-opacity duration-200 z-20 w-9 opacity-0 pointer-events-none"><img src="https://cdn.shopify.com/b/shopify-brochure2-assets/cac815e4ee0f383f7b4b5302b5a7a29a.svg" alt="Shopify" class="h-9" data-component-name="shopify-logo"/></a><nav aria-label="Secondary" class="hidden lg:block h-full transition-transform will-change-transform duration-200 translate-x-0" data-click-outside="dismiss"><ul class="flex items-center gap-x-8 h-full"><li class="relative flex flex-col items-center h-full border-white/30"><a href="/" class="font-bold flex items-center h-full hover:underline outline-4 outline-state-focus focus-visible:outline">Engineering Blog</a></li><li class="relative flex flex-col items-center h-full after:absolute after:w-full after:h-[3px] after:bottom-0 hover:underline after:hidden after:bg-white"><a href="/topics/ai-machine-learning" class="flex items-center h-full outline-state-focus outline-4 focus-visible:outline" data-secondary-nav-tier="1">AI &amp; Machine Learning</a></li><li class="relative flex flex-col items-center h-full after:absolute after:w-full after:h-[3px] after:bottom-0 hover:underline after:hidden after:bg-white"><a href="/topics/mobile" class="flex items-center h-full outline-state-focus outline-4 focus-visible:outline" data-secondary-nav-tier="1">Mobile</a></li><li class="relative flex flex-col items-center h-full after:absolute after:w-full after:h-[3px] after:bottom-0 hover:underline after:hidden after:bg-white"><a href="/topics/infrastructure" class="flex items-center h-full outline-state-focus outline-4 focus-visible:outline" data-secondary-nav-tier="1">Infrastructure</a></li><li class="relative flex flex-col items-center h-full after:absolute after:w-full after:h-[3px] after:bottom-0 hover:underline after:hidden after:bg-white"><a href="/topics/culture" class="flex items-center h-full outline-state-focus outline-4 focus-visible:outline" data-secondary-nav-tier="1">Culture</a></li><li class="relative flex flex-col items-center h-full after:absolute after:w-full after:h-[3px] after:bottom-0 hover:underline after:hidden after:bg-white"><a href="/latest" class="flex items-center h-full outline-state-focus outline-4 focus-visible:outline" data-secondary-nav-tier="1">Latest</a></li><li class="relative flex flex-col items-center h-full after:absolute after:w-full after:h-[3px] after:bottom-0 hover:underline after:hidden after:bg-white"><button type="button" aria-expanded="false" aria-haspopup="true" class="h-full outline-state-focus outline-4 focus-visible:outline" data-secondary-nav-tier="1"><span class="flex items-center">More topics<svg fill="none" viewBox="0 0 20 20" aria-hidden="true" icon="chevron" height="64" width="64" class="rotate-180 shrink-0 w-5 h-7 ml-2"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="m4 13 6-6 6 6"></path></svg></span></button><div id="id_More topics_5" class="absolute top-[80px] duration-500 left-0 rounded-lg transition-all box-content opacity-0 -translate-y-6 pointer-events-none w-[256px] bg-black text-white shadow-dark"><ul class="p-4 w-[224px] box-content"><li class="py-3 px-4 rounded-lg"><a href="/topics/security" class="hover:underline outline-state-focus outline-4 focus-visible:outline" data-secondary-nav-tier="2">Security</a></li><li class="py-3 px-4 rounded-lg"><a href="/topics/developer-tooling" class="hover:underline outline-state-focus outline-4 focus-visible:outline" data-secondary-nav-tier="2">Developer Tooling</a></li><li class="py-3 px-4 rounded-lg"><a href="/topics/data-science-engineering" class="hover:underline outline-state-focus outline-4 focus-visible:outline" data-secondary-nav-tier="2">Data Science Engineering</a></li></ul></div></li></ul></nav><div class="hidden lg:block ml-auto"><button type="button" class="hidden lg:flex flex-row items-center text-base cursor-pointer blog-navbar-navigation" aria-label="Search" aria-expanded="false">Search<span style="width:16px;height:16px;display:inline-block"></span></button><div class="mb-6 lg:mb-0 lg:absolute lg:bottom-0 lg:left-0 w-full z-50 lg:hidden bg-transparent lg:before:bg-engineering-dark-bg lg:before:bg-top lg:before:bg-no-repeat lg:before:h-full lg:before:absolute lg:before:top-0 lg:before:left-0 lg:before:w-[200vw] lg:before:-translate-x-1/2"><div class="lg:container lg:h-[71px] flex items-center"><div class="flex flex-row items-center text-base relative w-full border-b border-[#ccc]"><form method="get" action="/implementing-chatops-into-our-incident-management-procedure" class="flex lg:block w-full -mt-4 lg:mt-0" novalidate="" data-component-extra-search-value="" role="search" aria-label="Search" data-discover="true"><input class="outline-0 text-base relative z-20 bg-transparent w-full lg:placeholder:text-transparent py-2 text-white placeholder-white" type="text" name="header-search" autoComplete="off" placeholder="Search" aria-label="Search input" aria-describedby="search-instructions" value=""/><button type="submit" class="lg:hidden p-6 -mr-6" aria-label="Submit search"><span style="width:16px;height:16px;display:inline-block"></span></button></form><div class="hidden lg:flex absolute z-10 top-1/2 left-0 -translate-y-1/2 flex-row items-center text-base text-white" id="search-instructions" aria-hidden="true">Type something you&#x27;re looking for<span style="width:16px;height:16px;display:inline-block"></span></div><button type="button" class="hidden lg:block p-2 cursor-pointer ml-auto" aria-label="Close search"><span style="width:20px;height:20px;display:inline-block"></span></button></div></div></div></div><div class="pl-8 app-signup-links transform-opacity duration-200 relative before:h-[22px] before:bg-shade-30 before:w-[1px] before:absolute before:left-0 before:top-[1/2] before:translate-[-1/2] opacity-0 lg:hidden"><a href="/login?ui_locales=en" class="whitespace-nowrap">Log in</a><div data-component-name="button-group" data-mode="dark"><div class="flex gap-y-sm flex-wrap gap-x-2 justify-start"><a href="https://admin.shopify.com/signup?locale=en&amp;language=en&amp;signup_page=https%3A%2F%2Fshopify.engineering%2Fimplementing-chatops-into-our-incident-management-procedure&amp;signup_types%5B%5D=paid_trial_experience" class="inline-block self-center overflow-hidden max-w-full px-button-px py-button-py ring-inset rounded-button text-button-size font-button-font font-button-weight tracking-button-tracking transition-all duration-150 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-state-focus focus-visible:outline border-2 text-button-dark-primary-text bg-button-dark-primary-bg border-button-dark-primary-border ring-button-dark-primary-border hover:text-button-dark-primary-text-hover hover:bg-button-dark-primary-bg-hover hover:border-button-dark-primary-border-hover hover:ring-button-dark-primary-border-hover focus:text-button-dark-primary-text-focus focus:bg-button-dark-primary-bg-focus focus:border-button-dark-primary-border-focus focus:ring-button-dark-primary-border-focus active:text-button-dark-primary-text-active active:bg-button-dark-primary-bg-active active:border-button-dark-primary-border-active active:ring-button-dark-primary-border-active disabled:text-button-dark-primary-text-disabled disabled:bg-button-dark-primary-bg-disabled disabled:border-button-dark-primary-border-disabled disabled:ring-button-dark-primary-border-disabled" data-component-name="button" data-mode="dark" target="">Start for free</a></div></div></div></div></div></div></header><svg class="sr-only" aria-hidden="true"><defs><linearGradient id="start_svg__b" x1="4" y1="2.5" x2="37.5" y2="36" gradientUnits="userSpaceOnUse"><stop stop-color="#00E392"></stop><stop offset="1" stop-color="#00B4CD"></stop></linearGradient><linearGradient id="manage_svg__a" x1="1" y1="1" x2="39" y2="39" gradientUnits="userSpaceOnUse"><stop stop-color="#1CD9D9"></stop><stop offset="1" stop-color="#70D50E"></stop></linearGradient><linearGradient id="market_svg__a" x1="1" y1="1" x2="39" y2="39" gradientUnits="userSpaceOnUse"><stop stop-color="#EA4EF2"></stop><stop offset="1" stop-color="#29C9FF"></stop></linearGradient><linearGradient id="sell_svg__a" x1="1" y1="1" x2="39" y2="39" gradientUnits="userSpaceOnUse"><stop stop-color="#33EDE2"></stop><stop offset="1" stop-color="#6754FF"></stop></linearGradient><clipPath id="white_circle_svg__a"><path fill="#fff" d="M0 0h40v40H0z"></path></clipPath></defs></svg><main role="main" id="main" tabindex="-1"><div class="fixed top-0 left-0 h-[6px] z-50 bg-engineering-highlight" style="width:null%"></div><section class="grid grid-cols-full text-section-light-text featured-blogs gap-y-0 pb-0 pt-36 bg-transparent" data-section-name="" data-component-name="implementing-chatops-into-our-incident-management-" data-viewable-component="true" data-mode="light"><article id="article" itemscope="" itemType="https://schema.org/Article" class="featured-blogs__section"><meta itemProp="mainEntityOfPage" content="//implementing-chatops-into-our-incident-management-procedure"/><meta itemProp="dateModified" content="2018-02-13T18:00:00.000Z"/><meta itemProp="datePublished" content="2018-02-13T00:00:00.000Z"/><div class="relative"><div class="py-10 tablet:text-center desktop:pt-16 desktop:pb-16" data-mode="light"><div class="container desktop:w-9/12 desktop:mx-auto"><div class="uppercase font-sans text-[12px] leading-[14px] tracking-[0.01em] font-semibold tablet-xl:font-sans tablet-xl:text-[11px] tablet-xl:leading-[13px] tablet:tracking-[0.5px] tablet:font-bold pb-2 text-engineering-dark-text"><a href="/" class="no-underline topic-link hover:text-inherit">blog</a><span class="richtext px-2.5 text-xs">|</span><a href="/topics/infrastructure" class="no-underline topic-link hover:text-inherit">Infrastructure</a></div><h1 class="richtext font-medium tracking-[-0.02em] text-[28px] leading-9 tablet-xl:text-[40px] tablet-xl:leading-[48px] text-engineering-dark-text" itemProp="headline">Implementing ChatOps into our Incident Management Procedure</h1><p class="richtext font-normal tracking-[-0.02em] text-[18px] leading-[26px] tablet-xl:text-[20px] tablet-xl:leading-7 desktop:text-[22px] desktop:leading-8 mt-4 desktop:mt-4 text-engineering-dark-text">8 minute read Production engineers (PE) are expected to be incident management experts. Still, incident handling is difficult, often messy, and exhausting. We encounter new incidents, search high and low for possible explanations, sometimes tunnel on symptoms, and, under pressure, forget some best practices. At Shopify, we care not only about handling incidents quickly and efficiently, but also PE well-being. We have a special IMOC (incident manager on call) rotation and an incident chatbot to assist IMOCs. This post provides an overview of incident management at Shopify, the responsibility of different roles during an incident, and how our chatbot works to support our team.</p><div class="lg:hidden mt-4 tablet-xl:mt-12"><div class="gap-x-1 flex flex-wrap font-bold sm:justify-center !text-lg text-engineering-dark-text"></div><div class="text-body-sm font-normal text-engineering-dark-accent">Published on<!-- --> <time>Feb 13, 2018</time></div></div></div></div><div class="tablet:container desktop:w-9/12 desktop:mx-auto overflow-hidden flex justify-center"><img class="" src="https://cdn.shopify.com/s/files/1/0779/4361/articles/Screen_Shot_2018-02-13_at_11.11.53_AM.png?v=1518538342&amp;originalWidth=1848&amp;originalHeight=782" alt="" loading="eager" decoding="async" width="1848" height="782" srcSet="https://cdn.shopify.com/s/files/1/0779/4361/articles/Screen_Shot_2018-02-13_at_11.11.53_AM.png?v=1518538342&amp;originalWidth=1848&amp;originalHeight=782&amp;width=200 200w, https://cdn.shopify.com/s/files/1/0779/4361/articles/Screen_Shot_2018-02-13_at_11.11.53_AM.png?v=1518538342&amp;originalWidth=1848&amp;originalHeight=782&amp;width=400 400w, https://cdn.shopify.com/s/files/1/0779/4361/articles/Screen_Shot_2018-02-13_at_11.11.53_AM.png?v=1518538342&amp;originalWidth=1848&amp;originalHeight=782&amp;width=600 600w, https://cdn.shopify.com/s/files/1/0779/4361/articles/Screen_Shot_2018-02-13_at_11.11.53_AM.png?v=1518538342&amp;originalWidth=1848&amp;originalHeight=782&amp;width=800 800w, https://cdn.shopify.com/s/files/1/0779/4361/articles/Screen_Shot_2018-02-13_at_11.11.53_AM.png?v=1518538342&amp;originalWidth=1848&amp;originalHeight=782&amp;width=1000 1000w, https://cdn.shopify.com/s/files/1/0779/4361/articles/Screen_Shot_2018-02-13_at_11.11.53_AM.png?v=1518538342&amp;originalWidth=1848&amp;originalHeight=782&amp;width=1200 1200w, https://cdn.shopify.com/s/files/1/0779/4361/articles/Screen_Shot_2018-02-13_at_11.11.53_AM.png?v=1518538342&amp;originalWidth=1848&amp;originalHeight=782&amp;width=1400 1400w, https://cdn.shopify.com/s/files/1/0779/4361/articles/Screen_Shot_2018-02-13_at_11.11.53_AM.png?v=1518538342&amp;originalWidth=1848&amp;originalHeight=782&amp;width=1600 1600w, https://cdn.shopify.com/s/files/1/0779/4361/articles/Screen_Shot_2018-02-13_at_11.11.53_AM.png?v=1518538342&amp;originalWidth=1848&amp;originalHeight=782&amp;width=1800 1800w"/></div></div><div class="container grid-cols-4 sm:grid-cols-8 md:grid-cols-12 block tablet-xl:grid gap-y-0 gap-x-12"><div class="col-span-4 xs:col-span-12 md:col-span-4 lg:col-span-3 col-start-1 nav-drawer md:pb-20 pt-10 desktop:pt-16" data-component-name="blog-left-sidebar"><nav class="md:top-[calc(var(--header-height)*2)] md:max-h-[calc(100vh-var(--header-height))] md:overflow-auto md:sticky md:pb-6 pr-2 text-engineering-dark-text"><div class="hidden md:block bg-engineering-dark-accent text-engineering-light-text"><div class="p-6"><p class="richtext text-2xl font-sans leading-6 desktop:leading-7 color-black tracking-[-0.02em]">Engineering at Shopify</p><p class="richtext font-sans desktop:leading-7 color-black tracking-[-0.02em] text-2xl mb-9 font-bold">We’re hiring</p><a href="https://www.shopify.com/careers/disciplines/engineering-data" class="flex justify-between align-middle font-sans leading-6 tracking-[-0.0175rem] !no-underline border-b border-black group" target="_blank" rel="noopener noreferrer"><span>See open roles</span><span class="flex justify-center items-center w-6 h-6 ml-4 my-auto [&amp;_svg]:w-6 reduced-motion:group-hover:translate-x-0 transition-all duration-500 will-change-transform group-hover:translate-x-full group-hover:opacity-0"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M8.00025 15.9998C7.74425 15.9998 7.48825 15.9018 7.29325 15.7068C6.90225 15.3158 6.90225 14.6838 7.29325 14.2928L11.5862 9.99976L7.29325 5.70676C6.90225 5.31576 6.90225 4.68376 7.29325 4.29276C7.68425 3.90176 8.31625 3.90176 8.70725 4.29276L13.7073 9.29276C14.0982 9.68376 14.0982 10.3158 13.7073 10.7068L8.70725 15.7068C8.51225 15.9018 8.25625 15.9998 8.00025 15.9998Z" fill="black"></path></svg></span></a></div></div></nav></div><div class="col-span-4 xs:col-span-12 md:col-span-8 lg:col-span-6 col-start-1"><div id="article-content" class="text-body-base md:pt-10 desktop:pt-16 [&amp;_h2]:text-t4 [&amp;_h2]:mt-12 [&amp;_h2]:mb-6 [&amp;_h2]:font-medium [&amp;_.heading--2]:text-t5 [&amp;_.heading--2]:text-black [&amp;_.heading--2]:font-sans [&amp;_.heading--2]:mb-6 [&amp;_.heading--2]:font-medium [&amp;_h3]:text-t5 [&amp;_h3]:mt-12 [&amp;_h3]:mb-4 [&amp;_h4]:text-t6 [&amp;_h4]:mt-12 [&amp;_h4]:mb-4 [&amp;_h5]:text-t7 [&amp;_p]:mb-6 [&amp;_hr]:mb-6 [&amp;_a]:font-medium [&amp;_a]:underline [&amp;_a:hover]:no-underline [&amp;_sup_a]:no-underline [&amp;_sup_a:hover]:underline [&amp;_.marketing-button]:text-white [&amp;_.marketing-button]:no-underline [&amp;_a&gt;img]:mt-3 [&amp;_a&gt;img]:mb-8 [&amp;_a&gt;img]:h-[revert-layer] [&amp;_img]:my-12 [&amp;_a&gt;img]:inline-block [&amp;_figure&gt;img]:mb-0 [&amp;_figure]:mb-12 [&amp;_img]:inline-block [&amp;_ul]:list-disc [&amp;_ul]:space-y-3 [&amp;_ul]:pl-6 [&amp;_ul]:mb-6 [&amp;_ul_li]:pl-4 [&amp;_ol]:list-decimal [&amp;_ol]:space-y-3 [&amp;_ol]:pl-6 [&amp;_ol]:mb-6 [&amp;_ol_li]:pl-4 [&amp;_ol_li::marker]:font-bold [&amp;_iframe]:max-w-full [&amp;_figcaption]:mb-12 [&amp;_figcaption]:text-center [&amp;_figcaption]:text-xs [&amp;_figcaption]:sm:text-sm [&amp;_figcaption]:mt-1 [&amp;_strong]:font-medium [&amp;_.heading--4]:font-sans [&amp;_.heading--4]:text-2xl [&amp;_.heading--4]:font-medium [&amp;_.heading--4]:tracking-[-.02em] [&amp;_iframe]:mt-3 [&amp;_iframe]:mb-9 [&amp;_.container]:m-0 [&amp;_.container]:flex [&amp;_.container]:gap-5 [&amp;_.container]:flex-wrap [&amp;_.green]:text-[green] [&amp;_.red]:text-[red] [&amp;_.pros]:bg-[#eafaea] [&amp;_.pros]:rounded-[10px] [&amp;_.pros]:p-5 [&amp;_.pros_h3]:mt-2 [&amp;_.cons]:bg-[#ffebe6] [&amp;_.cons]:rounded-[10px] [&amp;_.cons]:p-5 [&amp;_.cons_h3]:mt-2 [&amp;_.pros]:tablet:flex-[1_0_calc(50%-10px)] [&amp;_.pros]:flex-[1_0_100%] [&amp;_.cons]:tablet:flex-[1_0_calc(50%-10px)] [&amp;_.cons]:flex-[1_0_100%] [&amp;_.pros_.grid-container]:grid [&amp;_.cons_.grid-container]:grid [&amp;_.grid-container]:gap-[5px] [&amp;_.grid-container]:grid-cols-[15px_auto] [&amp;_.pros_.grid-container]:p-[5px] [&amp;_.cons_.grid-container]:p-[5px] [&amp;_.aspect-video_iframe]:mt-0 article-content [&amp;_.truncated-text]:relative [&amp;_.truncated-text]:max-h-[300px] [&amp;_.truncated-text]:overflow-hidden [&amp;_.truncated-text]:mb-6 [&amp;_.truncated-text::before]:absolute [&amp;_.truncated-text::before]:content-[&quot;&quot;] [&amp;_.truncated-text::before]:bottom-0 [&amp;_.truncated-text::before]:w-full [&amp;_.truncated-text::before]:h-[150px] [&amp;_.truncated-text::before]:bg-gradient-to-t [&amp;_.truncated-text::before]:from-white [&amp;_.truncated-text::before]:from-50% [&amp;_.truncated-text::before]:to-transparent [&amp;_.truncated-text\_\_toggle]:absolute [&amp;_.truncated-text\_\_toggle]:bottom-0 [&amp;_.truncated-text\_\_toggle]:w-full [&amp;_.truncated-text\_\_toggle]:text-center [&amp;_.marketing-code]:bg-[#f0f1f2] [&amp;_.marketing-code]:font-bold [&amp;_.marketing-code]:p-1 [&amp;_.marketing-code.marketing-code--block]:p-4 [&amp;_.marketing-code--block]:block [&amp;_.marketing-code--block]:max-w-full [&amp;_.marketing-code--block]:overflow-x-scroll [&amp;_.marketing-code--block]:mb-5 [&amp;_.partners-signup]:mt-6 [&amp;_.partners-signup]:mb-12 [&amp;_.partners-signup]:bg-gray-200 [&amp;_.partners-signup]:p-3 [&amp;_.partners-signup]:md:p-6 [&amp;_.table]:block [&amp;_.table]:overflow-x-scroll [&amp;_.table]:max-w-full text-engineering-dark-text [&amp;_h2]:text-inherit [&amp;_h3]:text-inherit [&amp;_h4]:text-inherit [&amp;_.heading--4]:text-inherit [&amp;_a]:text-[#E7ECFB] [&amp;_strong]:text-engineering-dark-text" itemProp="articleBody"><div class="hidden leadpage-container leadpage__image leadpage__content marketing-button hide--mobile block--bordered"></div><div><p style="text-align: left;">Production engineers (PE) are expected to be incident management experts. Still, incident handling is difficult, often messy, and exhausting. We encounter new incidents, search high and low for possible explanations, sometimes tunnel on symptoms, and, under pressure, forget some best practices.</p>
<p><span style="font-weight: 400;">At Shopify, we care not only about handling incidents quickly and efficiently, but also PE well-being. We have a special IMOC (incident manager on call) rotation and an incident chatbot to assist IMOCs. This post provides an overview of incident management at Shopify, the responsibility of different roles during an incident, and how our chatbot works to support our team.</span><br><b></b></p>
<p><b>Incident Management at Shopify</b></p>
<p><span style="font-weight: 400;">The IMOC’s role is to lead the incident response. Their main focus is on communication, ensuring the response continues to move forward and escalate as required, and on follow through. Our incident response process springs from the </span><a href="https://en.wikipedia.org/wiki/Incident_Command_System" rel="nofollow noopener noreferrer" target="_blank"><span style="font-weight: 400;">Incident Command System (ICS)</span></a><span style="font-weight: 400;">, which provides us with a common hierarchy within which responders from multiple agencies can be effective.</span></p>
<p><span style="font-weight: 400;"><img src="//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-13_at_10.23.44_AM_large.png?v=1518535671" alt="Incident Command System" width="505" height="264" href="https://cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-13_at_10.23.44_AM_large.png?v=1518535671"></span></p>
<p><span style="font-weight: 400;">In Shopify’s ICS model case, the hierarchy is simplified to the Incident Commander (which we call the IMOC) who leads the incident response; the Public Information Officer who takes care of public communication, called a Support Response Manager (SRM) at Shopify; and, an operations section that directs all the actions needed to solve the incident, usually the component experts in our case.</span></p>
<p><span style="font-weight: 400;">It’s essential to note that the IMOC is on call for coordinating the incident response, not for fixing production issues (which is the component expert’s mission). They ensure that the incident goes through the following steps:</span></p>
<p><img src="//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-13_at_10.23.58_AM_103f24f5-724b-455a-bb2a-bdb99c4487cd_large.png?v=1518535999" alt="" width="381" height="350" href="https://cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-13_at_10.23.58_AM_103f24f5-724b-455a-bb2a-bdb99c4487cd_large.png?v=1518535999" loading="lazy"></p>
<p><span style="font-weight: 400;">At Shopify, this roughly translates into:</span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">When we detect that something’s broken, this usually results in a page.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">We evaluate and confirm the issue, and then the IMOC starts an incident. </span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">The IMOC will ensure communication with other teams (or the operation sections expert in the outage area) and merchants has occurred, and confirm that a proper fix is found and pushed. </span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">If the fix is working as expected, the IMOC will stop the incident, and then document the service disruption. </span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">An investigation happens, followed by a root cause analysis (RCA) meeting, which usually leads to action items.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Addressing all action items results in the final resolution of the incident.</span></li>
</ul>
<p><b>Spy incident</b></p>
<p><span style="font-weight: 400;">During an incident, incident response steps shouldn't be left to memory, especially when wanting to consistently offer an effective streamlined experience. Our chatbot, Spy, makes this easier by assisting the IMOC through the incident response. Spy features a set of incident commands that help reduce manual effort and context switching.</span></p>
<p><span style="font-weight: 400;">We integrated the bot with our conversation tool and several third-party tools (PagerDuty, StatusPage, GitHub) to send timely reminders. Here is an overview of our current ChatOps setup:</span></p>
<p><span style="font-weight: 400;"><img src="//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-13_at_10.24.08_AM_large.png?v=1518536048" alt="" width="537" height="246" href="https://cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-13_at_10.24.08_AM_large.png?v=1518536048" loading="lazy"></span></p>
<p><span style="font-weight: 400;">ChatOps is all about conversation-driven operations and uses group chat tools to go beyond basic conversation with context and actions taken from within the chat tool itself. It allows the infrastructure to be brought into the conversation. Communication between those third-party services and our chatbot is usually done via webhooks.</span></p>
<p><span style="font-weight: 400;">At Shopify, we use Slack as our chat app, and our main bot Spy stems from Lita. </span><a href="https://www.lita.io/" rel="nofollow noopener noreferrer" target="_blank"><span style="font-weight: 400;">Lita</span></a><span style="font-weight: 400;"> is open source and written in Ruby, and can be extended easily. Behaviors can be added by simply defining modules.</span></p>
<div class="script-sandbox"><script data-sandbox-src="https://gist.github.com/ShopifyEng/df56b3700296c8d5779848c2faf4bf34.js"></script></div>
<p><span style="font-weight: 400;">With the above overview of our ChatOps setup and the previous IMOC duties, we can now look into how Spy specifically helps with incident response.</span></p>
<p><span style="font-weight: 400;">Spy has three main sets of commands that help with IMOC duties:</span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">spy page</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">spy incident</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">spy status</span></li>
</ul>
<p><span style="font-weight: 400;">Together, they help the IMOC go through the incident response funnel steps.</span></p>
<p><b>Step 1: Failure detection</b></p>
<p><span style="font-weight: 400;">An alert will page the IMOC. Someone who notices the failure may also do so via the <em>`spy page`</em> command. Example: <em>`spy page </em>imoc<em> order notifications not going out`</em></span></p>
<p><span style="font-weight: 400;">The IMOC can also use a Spy command to acknowledge the page (e.g. <em>`spy pager </em>imoc<em> ack 125`</em>).</span></p>
<p><b>Step 2: Start incident</b></p>
<p><span style="font-weight: 400;">Once the issue is confirmed, the IMOC starts an incident with the <em>`spy start incident`</em> command. Spy will then bind the incident to a #war-room Slack channel where all the discussions will take place. This is to focus all incident response discussion in one place and allow all participants to have a shared understanding of what is going on. Without this focus, we can easily end up with independent parallel discussions and lots of confusion about who is doing what and why.</span></p>
<p><span style="font-weight: 400;"><img src="//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_9.57.33_AM_large.png?v=1518536096" alt="" href="https://cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_9.57.33_AM_large.png?v=1518536096" loading="lazy"></span></p>
<p><span style="font-weight: 400;">Spy also automatically notifies the SRM in case they get related merchant calls or chats.</span></p>
<p><span style="font-weight: 400;"><img src="//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_10.20.18_AM_large.png?v=1518536156" alt="" href="https://cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_10.20.18_AM_large.png?v=1518536156" loading="lazy"></span></p>
<p><span style="font-weight: 400;">If there was any prior ongoing issue, Spy will display that in the #war-room Slack channel.</span></p>
<p><b>Step 3: Communication</b></p>
<p><span style="font-weight: 400;">After the IMOC starts the incident, communication is crucial to ensure that every stakeholder is aware of the issue. Through the<em> `spy incident </em>tldr<em>`</em> command, anyone at the company can ask Spy at any given moment what incidents are going on and see who is involved, when it started, and consult a brief summary.</span></p>
<p><span style="font-weight: 400;"><img src="//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_4.41.58_PM_large.png?v=1518536199" alt="" href="https://cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_4.41.58_PM_large.png?v=1518536199" loading="lazy"></span></p>
<p><span style="font-weight: 400;">Communication with other teams can be done right from the war room. Here again no need to switch context: we can use <em>`spy incident tell`</em> or <em>`spy page`</em> command. As for actions, some can be performed right from #war-room for everyone to see, whether it’s a data center failover or a deploy lock. This also prevents confusion around what actions have been performed as they all occur in one space.</span></p>
<p><span style="font-weight: 400;">Occasionally we communicate with some third-party services that have a hosted status page and pager, to resolve incidents or update the page.</span></p>
<p><b>Step 4: Fix and mitigate</b></p>
<p><span style="font-weight: 400;">Spy can perform different mitigation actions can as it is closely embedded in our infrastructure. Some examples include rebalancing traffic, data center failover, blackholing jobs, locking deploy stacks.</span></p>
<p><span style="font-weight: 400;"><img src="//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_10.22.02_AM_large.png?v=1518536439" alt="" href="https://cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_10.22.02_AM_large.png?v=1518536439" loading="lazy"></span></p>
<p><b>Step 5: Stop incident</b></p>
<p><span style="font-weight: 400;">Once the fix has been shipped and verified in production, the IMOC can use <em>`spy incident stop` </em>command, which will generate a service disruption document to verify and post once ready.</span></p>
<p><span style="font-weight: 400;"><img src="//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-13_at_10.43.35_AM_large.png?v=1518536629" alt="" href="https://cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-13_at_10.43.35_AM_large.png?v=1518536629" loading="lazy"></span></p>
<p><span style="font-weight: 400;"><b>Step 6: Document the service disruption</b></span></p>
<p><span style="font-weight: 400;">Spy will add any #war-room notes tagged with a notepad emoji (📝) or prefixed with <em>`spy incident note`</em>&nbsp;command to the service disruption document and post the resulting document in a direct message to the IMOC.</span></p>
<p><span style="font-weight: 400;"><img src="//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_10.13.13_AM_large.png?v=1518536813" alt="" href="https://cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_10.13.13_AM_large.png?v=1518536813" loading="lazy"></span></p>
<p><b>Taking care of IMOCs</b></p>
<p><span style="font-weight: 400;">Spy also sends timely reminders. For instance, if an incident has been ongoing for a while and the status page hasn’t been updated, Spy will send the IMOC a reminder. It also has an on-call fatigue prevention mechanism built-in: if the IMOC has been handling an incident for pre-specified amount of time, Spy will reach out to the IMOC squad to help the current IMOC.</span></p>
<p><span style="font-weight: 400;"><img src="//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_4.30.53_PM_large.png?v=1518536958" alt="" href="https://cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_4.30.53_PM_large.png?v=1518536958" loading="lazy"></span></p>
<p><b>Conclusion</b></p>
<p><span style="font-weight: 400;">Our chatbot supports best practices and "streamlines" incident response. Spy binds the incident to a discussion channel where all communications happen, allows status page updates directly from the chat room, keeps notes and records event times, and generates an incident summary. Our bot helps PEs stay focused during the incident, reduces post-incident toil, and supports detailed post-mortems. Spy has become a very important member of our team: always available and ready to help, enabling us to really effectively lead an incident response.</span></p>
<p><span style="font-weight: 400;">To learn more, catch my 2017 talk at SREcon:&nbsp;</span></p>
<p><span style="font-weight: 400;"></span></p><div class="relative aspect-video mb-8"><div data-component="youtube-facade" data-src="https://www.youtube-nocookie.com/embed/gkmNrpZetGE" class="absolute inset-0 w-full h-full"></div></div><p></p></div></div><div class="border-t tablet-xl:border-[#d4d4d8] my-16 py-6 flex tablet-xl:flex-row justify-between flex-col"><div class="flex items-center tablet-xl:justify-start tablet-xl:flex-row justify-between flex-row-reverse"><div class="h-16 w-16 tablet-xl:mr-4 grow-0 shrink-0 bg-[#D9D9D9] rounded-full overflow-hidden flex justify-center items-center text-white text-xl font-extrabold"><div>DN</div></div><div class="self-center flex flex-col"><div class="gap-x-1 flex flex-wrap text-lg font-sans leading-[18px] font-bold mb-2 text-engineering-dark-text">by <span itemProp="author" itemscope="" itemType="https://schema.org/Person"><a href="/authors/daniella-niyonkuru" class="no-underline" itemProp="url"><span itemProp="name">Daniella Niyonkuru</span></a></span></div><div class="text-body-sm font-normal text-engineering-dark-accent">Published on<!-- --> <time>Feb 13, 2018</time></div></div></div><div class="xs:border-b tablet-xl:border-0 pb-4"><div class="font-bold text-xs font-sans uppercase mt-4 tablet-xl:mt-0 tablet-xl:text-right text-engineering-dark-accent">Share article</div><ul id=":Rlqkln5:" class="flex gap-4 mt-4" data-component-name="social"><li><a class="block h-9 w-9 hover:fill-shade-7 fill-[#E7ECFB]" aria-describedby="blog-social-icon-facebook-:Rlqkln5:" href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fshopify.engineering%2Fimplementing-chatops-into-our-incident-management-procedure" rel="me nofollow noopener noreferrer" target="_blank" data-component-name="social-facebook" aria-label="External source: Facebook (Opens in a new window)"><svg xmlns="http://www.w3.org/2000/svg" width="36" height="37" viewBox="0 0 36 37"><circle cx="18" cy="18.6143" r="18" fill="#E7ECFB"></circle><path fill-rule="evenodd" clip-rule="evenodd" d="M16.4664 25.3643V19.2063H14.2495V16.8064H16.4664V15.0366C16.4664 12.9826 17.8084 11.8643 19.7685 11.8643C20.7074 11.8643 21.5144 11.9296 21.7495 11.9588V14.1053L20.3901 14.1059C19.3241 14.1059 19.1177 14.5793 19.1177 15.2742V16.8064H21.66L21.329 19.2063H19.1177V25.3643H16.4664Z" fill="#120937"></path></svg><span id="blog-social-icon-facebook-:Rlqkln5:" class="sr-only">Facebook</span></a></li><li><a class="block h-9 w-9 hover:fill-shade-7 fill-[#E7ECFB]" aria-describedby="blog-social-icon-twitter-:Rlqkln5:" href="https://twitter.com/intent/tweet?text=Implementing+ChatOps+into+our+Incident+Management+Procedure&amp;url=https%3A%2F%2Fshopify.engineering%2Fimplementing-chatops-into-our-incident-management-procedure&amp;via=Shopify" rel="me nofollow noopener noreferrer" target="_blank" data-component-name="social-twitter" aria-label="External source: Twitter (Opens in a new window)"><svg xmlns="http://www.w3.org/2000/svg" width="36" height="37" viewBox="0 0 36 37" fill="none"><circle cx="18" cy="18.6143" r="18" fill="#E7ECFB"></circle><path fill-rule="evenodd" clip-rule="evenodd" d="M23.3786 17.0672C23.3786 17.9589 23.2031 18.8473 22.851 19.7304C22.5 20.6135 22.0027 21.4212 21.3615 22.1535C20.7202 22.8858 19.8844 23.4781 18.8561 23.9326C17.8279 24.387 16.7074 24.6143 15.4946 24.6143C13.9657 24.6143 12.5505 24.219 11.25 23.4275C11.4784 23.4447 11.6977 23.4533 11.9081 23.4533C13.2097 23.4533 14.3606 23.0743 15.363 22.3172C14.7656 22.3172 14.2335 22.1449 13.7677 21.8003C13.302 21.4546 12.9814 21.013 12.8047 20.4746C12.9814 20.509 13.1659 20.5252 13.3594 20.5252C13.6575 20.5252 13.9219 20.5004 14.1502 20.4498C13.5349 20.3152 13.0376 20.0083 12.6596 19.5279C12.2827 19.0487 12.0937 18.4898 12.0937 17.8501V17.7995C12.0937 17.9007 12.2119 17.9804 12.4492 18.0396C12.6866 18.0978 12.9375 18.1279 13.2007 18.1279C12.7969 17.8749 12.4627 17.555 12.1984 17.1684C11.9351 16.7818 11.8035 16.3693 11.8035 15.931C11.8035 15.4604 11.9261 15.0146 12.1725 14.5935C12.8756 15.4184 13.7239 16.0743 14.7172 16.5621C15.7095 17.051 16.7692 17.3203 17.8942 17.3698C17.8414 17.1684 17.8144 16.966 17.8144 16.7646C17.8144 16.0409 18.0877 15.4184 18.6322 14.8972C19.1767 14.3749 19.8281 14.1143 20.583 14.1143C21.3919 14.1143 22.0691 14.3921 22.6136 14.9467C23.229 14.8293 23.8174 14.6193 24.3799 14.3156C24.1695 14.9392 23.7566 15.427 23.1412 15.7803C23.7037 15.7124 24.2392 15.5703 24.75 15.3506C24.363 15.889 23.8972 16.3521 23.3516 16.7387C23.3696 16.8572 23.3786 16.966 23.3786 17.0672Z" fill="#120937"></path></svg><span id="blog-social-icon-twitter-:Rlqkln5:" class="sr-only">Twitter</span></a></li><li><a class="block h-9 w-9 hover:fill-shade-7 fill-[#E7ECFB]" aria-describedby="blog-social-icon-linkedin-:Rlqkln5:" href="https://www.linkedin.com/shareArticle?mini=true&amp;source=Shopify&amp;title=Implementing+ChatOps+into+our+Incident+Management+Procedure&amp;url=https%3A%2F%2Fshopify.engineering%2Fimplementing-chatops-into-our-incident-management-procedure" rel="me nofollow noopener noreferrer" target="_blank" data-component-name="social-linkedin" aria-label="External source: LinkedIn (Opens in a new window)"><svg xmlns="http://www.w3.org/2000/svg" width="36" height="37" viewBox="0 0 36 37" fill="none"><circle cx="18" cy="18.6143" r="18" fill="#E7ECFB"></circle><path fill-rule="evenodd" clip-rule="evenodd" d="M13.4102 12.6143C14.1884 12.6143 14.8191 13.2463 14.8191 14.0236C14.8191 14.8018 14.1884 15.4334 13.4102 15.4334C12.6293 15.4334 11.9995 14.8018 11.9995 14.0236C11.9995 13.2463 12.6293 12.6143 13.4102 12.6143ZM16.1521 16.5032H18.4826V17.572H18.5163C18.8405 16.9568 19.6337 16.3083 20.8163 16.3083C23.2766 16.3083 23.7315 17.9281 23.7315 20.035V24.3258H21.3026V20.5218C21.3026 19.6147 21.2849 18.4476 20.039 18.4476C18.7736 18.4476 18.5805 19.4353 18.5805 20.4562V24.3258H16.1521V16.5032ZM12.1929 24.326H14.6268V16.5034H12.1929V24.326Z" fill="#120937"></path></svg><span id="blog-social-icon-linkedin-:Rlqkln5:" class="sr-only">LinkedIn</span></a></li></ul></div></div></div><div class="col-span-4 xs:col-span-12 lg:col-span-3 col-start-1 hidden lg:block relative" data-component-name="blog-right-sidebar"><div class="tablet-xl:pt-10 desktop:pt-16 pb-6 absolute h-full max-h-full tot-0 left-0"><div class="h-full overflow-hidden" id="blog-side-banners-col"><div class="gap-x-1 flex flex-wrap font-bold text-lg !font-sans text-engineering-dark-text">by <span itemProp="author" itemscope="" itemType="https://schema.org/Person"><a href="/authors/daniella-niyonkuru" class="no-underline" itemProp="url"><span itemProp="name">Daniella Niyonkuru</span></a></span></div><div class="text-body-sm font-normal text-engineering-dark-accent">Published on<!-- --> <time>Feb 13, 2018</time></div><span class="text-body-sm font-normal text-engineering-dark-accent"> • <!-- -->6 minute read</span><div id="blog-side-banners"><div class="font-sans text-[#E7ECFB] mt-[640px]" data-priority="0"><p class="richtext text-base uppercase mb-6 font-medium"></p><span class="mb-4 pl-2 border-l border-[#CAD4D7] inline-block border-engineering-highlight"><span class="uppercase text-xs mb-2 block pt-2 font-bold [&amp;_a]:no-underline [&amp;_a]:hover:text-inherit"><a href="/topics/development" data-component-name="blog-popular-post-Development">Development</a></span><a href="/introducing-ruvy" data-component-name="blog-popular-post-introducing-ruvy"><span class="richtext text-base block hover:underline hover:underline-offset-4 font-normal text-engineering-dark-text">Introducing Ruvy</span></a></span><span class="mb-4 pl-2 border-l border-[#CAD4D7] inline-block border-engineering-highlight"><span class="uppercase text-xs mb-2 block pt-2 font-bold [&amp;_a]:no-underline [&amp;_a]:hover:text-inherit"><a href="/topics/developer-tooling" data-component-name="blog-popular-post-Developer Tooling">Developer Tooling</a></span><a href="/building-a-shopifyql-code-editor" data-component-name="blog-popular-post-building-a-shopifyql-code-editor"><span class="richtext text-base block hover:underline hover:underline-offset-4 font-normal text-engineering-dark-text">Building a ShopifyQL Code Editor</span></a></span></div><div class="font-sans text-[#E7ECFB] mt-[640px]" data-priority="0"><p class="richtext text-base uppercase mb-6 font-medium"></p><span class="mb-4 pl-2 border-l border-[#CAD4D7] inline-block border-engineering-highlight"><span class="uppercase text-xs mb-2 block pt-2 font-bold [&amp;_a]:no-underline [&amp;_a]:hover:text-inherit"><a href="/topics/apps" data-component-name="blog-popular-post-Apps">Apps</a></span><a href="/shopifys-platform-is-the-web-platform" data-component-name="blog-popular-post-shopifys-platform-is-the-web-platform"><span class="richtext text-base block hover:underline hover:underline-offset-4 font-normal text-engineering-dark-text">Shopify’s platform is the Web platform</span></a></span><span class="mb-4 pl-2 border-l border-[#CAD4D7] inline-block border-engineering-highlight"><span class="uppercase text-xs mb-2 block pt-2 font-bold [&amp;_a]:no-underline [&amp;_a]:hover:text-inherit"><a href="/topics/development" data-component-name="blog-popular-post-Development">Development</a></span><a href="/building-flex-comp" data-component-name="blog-popular-post-building-flex-comp"><span class="richtext text-base block hover:underline hover:underline-offset-4 font-normal text-engineering-dark-text">The Engineering Story Behind Flex Comp</span></a></span></div></div></div></div></div></div><div itemProp="publisher" itemscope="" itemType="https://schema.org/Organization"><meta itemProp="name" content="Shopify"/><div itemProp="logo" itemscope="" itemType="https://schema.org/ImageObject"><meta itemProp="url" content="https://cdn.shopify.com/assets/images/logos/shopify_logo_black.png"/><meta itemProp="width" content="210"/><meta itemProp="height" content="60"/></div></div></article><div class="py-10 tablet-xl:py-16 overflow-hidden lg:hidden tablet-xl:pt-0 pt-0 [&amp;_h5]:uppercase text-engineering-dark-text font-sans font-normal [&amp;_h4]:font-normal [&amp;_.blogPost&gt;div:first-child&gt;a:not(:hover)]:text-engineering-highlight"><div class="container"><div class="flex justify-between items-center mb-9"><h5 class="richtext tracking-[-.02em] blog-section-header text-[26px] leading-[30px] tablet:text-[24px] tablet:leading-[32px] font-bold tablet:font-medium"></h5></div></div><div class="container max-lg:!mr-0"><div class="flex justify-start flex-nowrap max-w-full overflow-x-auto snap-x snap-mandatory gap-x-gutter pr-[var(--margin)] lg:flex-wrap lg:justify-center lg:overflow-hidden lg:gap-y-gutter lg:mb-gutter lg:mx-auto lg:py-4 lg:pr-0"><div class="popular-posts support-card shrink-0 snap-center w-[296px] lg:basis-1/4-gutter"><article class="article--index"><div class="blogPost pt-4"><div class="uppercase font-sans font-medium pb-2 text-[12px] leading-[20px] tracking-[0.02em] text-shade-100 hover:text-link-light-hover"><a href="/topics/development" class="no-underline text-engineering-dark-text font-sans font-normal hover:text-eyebrow-dark-text">Development</a></div><div class="tracking-[-.02em] pb-4 hover:underline text-base desktop:text-xl text-engineering-dark-text font-sans font-normal [&amp;_h4]:font-normal"><a class="tracking-[-.02em] pb-4 hover:underline text-base desktop:text-xl text-engineering-dark-text font-sans font-normal [&amp;_h4]:font-normal" href="/introducing-ruvy" rel="" target="_self">Introducing Ruvy</a></div><p class="richtext text-body-sm font-normal text-engineering-dark-author-text font-sans">2023-10-18</p></div></article></div><div class="popular-posts support-card shrink-0 snap-center w-[296px] lg:basis-1/4-gutter"><article class="article--index"><div class="blogPost pt-4"><div class="uppercase font-sans font-medium pb-2 text-[12px] leading-[20px] tracking-[0.02em] text-shade-100 hover:text-link-light-hover"><a href="/topics/developer-tooling" class="no-underline text-engineering-dark-text font-sans font-normal hover:text-eyebrow-dark-text">Developer Tooling</a></div><div class="tracking-[-.02em] pb-4 hover:underline text-base desktop:text-xl text-engineering-dark-text font-sans font-normal [&amp;_h4]:font-normal"><a class="tracking-[-.02em] pb-4 hover:underline text-base desktop:text-xl text-engineering-dark-text font-sans font-normal [&amp;_h4]:font-normal" href="/building-a-shopifyql-code-editor" rel="" target="_self">Building a ShopifyQL Code Editor</a></div><p class="richtext text-body-sm font-normal text-engineering-dark-author-text font-sans">2023-09-11</p></div></article></div><div class="popular-posts support-card shrink-0 snap-center w-[296px] lg:basis-1/4-gutter"><article class="article--index"><div class="blogPost pt-4"><div class="uppercase font-sans font-medium pb-2 text-[12px] leading-[20px] tracking-[0.02em] text-shade-100 hover:text-link-light-hover"><a href="/topics/apps" class="no-underline text-engineering-dark-text font-sans font-normal hover:text-eyebrow-dark-text">Apps</a></div><div class="tracking-[-.02em] pb-4 hover:underline text-base desktop:text-xl text-engineering-dark-text font-sans font-normal [&amp;_h4]:font-normal"><a class="tracking-[-.02em] pb-4 hover:underline text-base desktop:text-xl text-engineering-dark-text font-sans font-normal [&amp;_h4]:font-normal" href="/shopifys-platform-is-the-web-platform" rel="" target="_self">Shopify’s platform is the Web platform</a></div><p class="richtext text-body-sm font-normal text-engineering-dark-author-text font-sans">2023-07-26</p></div></article></div><div class="popular-posts support-card shrink-0 snap-center w-[296px] lg:basis-1/4-gutter"><article class="article--index"><div class="blogPost pt-4"><div class="uppercase font-sans font-medium pb-2 text-[12px] leading-[20px] tracking-[0.02em] text-shade-100 hover:text-link-light-hover"><a href="/topics/development" class="no-underline text-engineering-dark-text font-sans font-normal hover:text-eyebrow-dark-text">Development</a></div><div class="tracking-[-.02em] pb-4 hover:underline text-base desktop:text-xl text-engineering-dark-text font-sans font-normal [&amp;_h4]:font-normal"><a class="tracking-[-.02em] pb-4 hover:underline text-base desktop:text-xl text-engineering-dark-text font-sans font-normal [&amp;_h4]:font-normal" href="/building-flex-comp" rel="" target="_self">The Engineering Story Behind Flex Comp</a></div><p class="richtext text-body-sm font-normal text-engineering-dark-author-text font-sans">2022-10-05</p></div></article></div></div><div class="mobile-indicators mt-6 flex justify-center gap-x-2 lg:hidden"><div class="rounded-full box-content w-2 h-2 bg-black w-2 h-2 !bg-[#E7ECFB]"></div><div class="rounded-full box-content w-2 h-2 bg-[#d9d9d9] w-2 h-2 !bg-[#9AA7C8]"></div><div class="rounded-full box-content w-2 h-2 bg-[#d9d9d9] w-2 h-2 !bg-[#9AA7C8]"></div><div class="rounded-full box-content w-2 h-2 bg-[#d9d9d9] w-2 h-2 !bg-[#9AA7C8]"></div></div></div></div></section><div class="relative overflow-hidden bg-engineering-banner-bg py-10 tablet-xl:py-20 bg-[#61d095]" data-component-name="cta-footer-banner"><div class="container relative flex flex-col items-center text-center py-10 tablet-xl:py-16"><span class="richtext uppercase font-medium font-sans mb-2 text-[28px] tablet-xl:text-[42px] desktop:text-[48px] max-w-[800px] tablet-xl:mb-6 leading-[36px] tablet-xl:leading-[46px] desktop:leading-[56px] text-black">Work from anywhere <br/> with Shopify</span><p class="richtext max-w-[680px] text-body-base tablet-xl:text-body-lg mb-2 tablet-xl:mb-9 text-black">See our open roles and learn more about our digital by design culture.</p><div data-component-name="button-group" class="text-base relative z-20 w-[273px] h-14" data-mode="light"><div class="flex gap-y-sm flex-wrap gap-x-sm justify-center"><a href="https://www.shopify.com/careers/disciplines/engineering-data" class="inline-block self-center overflow-hidden max-w-full px-button-px py-button-py ring-inset rounded-button font-button-font font-button-weight tracking-button-tracking transition-all duration-150 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-state-focus focus-visible:outline md:px-button-lg-px md:py-button-lg-py text-button-lg-size border-2 text-button-light-primary-text bg-button-light-primary-bg border-button-light-primary-border ring-button-light-primary-border hover:text-button-light-primary-text-hover hover:bg-button-light-primary-bg-hover hover:border-button-light-primary-border-hover hover:ring-button-light-primary-border-hover focus:text-button-light-primary-text-focus focus:bg-button-light-primary-bg-focus focus:border-button-light-primary-border-focus focus:ring-button-light-primary-border-focus active:text-button-light-primary-text-active active:bg-button-light-primary-bg-active active:border-button-light-primary-border-active active:ring disabled:text-button-light-primary-text-disabled disabled:bg-button-light-primary-bg-disabled disabled:border-button-light-primary-border-disabled disabled:ring-button-light-primary-border-disabled w-[273px] sm:w-full" data-component-name="button" data-mode="light" target="_blank" rel="noopener noreferrer" aria-label="External source: See open roles (Opens in a new window)">See open roles</a></div></div></div></div></main><footer class="relative flex flex-col font-sans bg-black text-white"><div id="NewWindowExternalSite" class="hidden">Opens an external site in a new window</div><section class="grid-cols-full container flex flex-col gap-16 py-16 my-0 sm:justify-start sm:pb-16 md:flex-row md:flex-nowrap md:justify-between md:py-20 md:gap-20 xl:w-full bg-black text-white" data-section-name="footer" data-component-name="footer" data-viewable-component="true" data-mode="light"><div class="min-w-[100px]"><img src="https://cdn.shopify.com/b/shopify-brochure2-assets/88ee7022e2749387148cb4098cc4f9fb.svg" alt="Shopify" class="h-11" data-component-name="shopify-logo"/></div><div class="md:block md:justify-end"><div class="flex flex-col flex-wrap gap-12 gap-x-4 md:gap-20 md:gap-x-16 sm:grid sm:max-h-fit sm:grid-cols-3 lg:grid-cols-4 max-h-368 sm:max-h-300"><div class="w-[calc(50%-1rem)] sm:w-fit" data-component-name="shopify"><h3 class="text-base font-bold text-white">Shopify</h3><ul class="mt-4 md:mt-6"><li><a class="mt-2 block py-3 text-base font-normal hover:underline md:py-0.5 text-[#E0E0E0] hover:text-white" href="https://www.shopify.com/about" data-component-name="about" aria-label="External source: About">About</a></li><li><a class="mt-2 block py-3 text-base font-normal hover:underline md:py-0.5 text-[#E0E0E0] hover:text-white" href="https://www.shopify.com/careers" data-component-name="careers" aria-label="External source: Careers">Careers</a></li><li><a class="mt-2 block py-3 text-base font-normal hover:underline md:py-0.5 text-[#E0E0E0] hover:text-white" href="https://www.shopify.com/investors" data-component-name="investors" aria-label="External source: Investors">Investors</a></li><li><a class="mt-2 block py-3 text-base font-normal hover:underline md:py-0.5 text-[#E0E0E0] hover:text-white" href="https://www.shopify.com/news" data-component-name="press-and-media" aria-label="External source: Press and Media">Press and Media</a></li><li><a class="mt-2 block py-3 text-base font-normal hover:underline md:py-0.5 text-[#E0E0E0] hover:text-white" href="https://www.shopify.com/partners" data-component-name="partners" aria-label="External source: Partners">Partners</a></li><li><a class="mt-2 block py-3 text-base font-normal hover:underline md:py-0.5 text-[#E0E0E0] hover:text-white" href="https://www.shopify.com/affiliates" data-component-name="affiliates" aria-label="External source: Affiliates">Affiliates</a></li><li><a class="mt-2 block py-3 text-base font-normal hover:underline md:py-0.5 text-[#E0E0E0] hover:text-white" href="https://www.shopify.com/legal" data-component-name="legal" aria-label="External source: Legal">Legal</a></li><li><a class="mt-2 block py-3 text-base font-normal hover:underline md:py-0.5 text-[#E0E0E0] hover:text-white" href="https://www.shopifystatus.com/" data-component-name="service-status" aria-label="External source: Service status">Service status</a></li></ul></div><div class="w-[calc(50%-1rem)] sm:w-fit" data-component-name="support"><h3 class="text-base font-bold text-white">Support</h3><ul class="mt-4 md:mt-6"><li><a class="mt-2 block py-3 text-base font-normal hover:underline md:py-0.5 text-[#E0E0E0] hover:text-white" href="https://help.shopify.com/en/questions" data-component-name="merchant-support" aria-label="External source: Merchant Support">Merchant Support</a></li><li><a class="mt-2 block py-3 text-base font-normal hover:underline md:py-0.5 text-[#E0E0E0] hover:text-white" href="https://help.shopify.com/en/" data-component-name="shopify-help-center" aria-label="External source: Shopify Help Center">Shopify Help Center</a></li><li><a class="mt-2 block py-3 text-base font-normal hover:underline md:py-0.5 text-[#E0E0E0] hover:text-white" href="https://www.shopify.com/partners/directory" data-component-name="hire-a-partner" aria-label="External source: Hire a Partner">Hire a Partner</a></li><li><a class="mt-2 block py-3 text-base font-normal hover:underline md:py-0.5 text-[#E0E0E0] hover:text-white" href="https://www.shopifyacademy.com/?itcat=brochure&amp;itterm=global-footer" data-component-name="shopify-academy" aria-label="External source: Shopify Academy">Shopify Academy</a></li><li><a class="mt-2 block py-3 text-base font-normal hover:underline md:py-0.5 text-[#E0E0E0] hover:text-white" href="https://community.shopify.com/?utm_campaign=footer&amp;utm_content=en&amp;utm_medium=web&amp;utm_source=shopify" data-component-name="shopify-community" aria-label="External source: Shopify Community">Shopify Community</a></li></ul></div><div class="w-[calc(50%-1rem)] sm:w-fit" data-component-name="developers"><h3 class="text-base font-bold text-white">Developers</h3><ul class="mt-4 md:mt-6"><li><a class="mt-2 block py-3 text-base font-normal hover:underline md:py-0.5 text-[#E0E0E0] hover:text-white" href="https://shopify.dev" data-component-name="shopify-dev" aria-label="External source: Shopify.dev">Shopify.dev</a></li><li><a class="mt-2 block py-3 text-base font-normal hover:underline md:py-0.5 text-[#E0E0E0] hover:text-white" href="https://shopify.dev/api" data-component-name="api-documentation" aria-label="External source: API Documentation">API Documentation</a></li><li><a class="mt-2 block py-3 text-base font-normal hover:underline md:py-0.5 text-[#E0E0E0] hover:text-white" href="https://devdegree.ca" data-component-name="dev-degree" aria-label="External source: Dev Degree">Dev Degree</a></li></ul></div><div class="w-[calc(50%-1rem)] sm:w-fit" data-component-name="products"><h3 class="text-base font-bold text-white">Products</h3><ul class="mt-4 md:mt-6"><li><a class="mt-2 block py-3 text-base font-normal hover:underline md:py-0.5 text-[#E0E0E0] hover:text-white" href="https://shop.app" data-component-name="shop" aria-label="External source: Shop">Shop</a></li><li><a class="mt-2 block py-3 text-base font-normal hover:underline md:py-0.5 text-[#E0E0E0] hover:text-white" href="https://www.shopify.com/shop-pay" data-component-name="shop-pay" aria-label="External source: Shop Pay">Shop Pay</a></li><li><a class="mt-2 block py-3 text-base font-normal hover:underline md:py-0.5 text-[#E0E0E0] hover:text-white" href="https://www.shopify.com/enterprise" data-component-name="shopify-for-enterprise" aria-label="External source: Shopify for Enterprise">Shopify for Enterprise</a></li></ul></div><div class="w-[calc(50%-1rem)] sm:w-fit" data-component-name="global-impact"><h3 class="text-base font-bold text-white">Global Impact</h3><ul class="mt-4 md:mt-6"><li><a class="mt-2 block py-3 text-base font-normal hover:underline md:py-0.5 text-[#E0E0E0] hover:text-white" href="https://www.shopify.com/climate" data-component-name="sustainability" aria-label="External source: Sustainability">Sustainability</a></li><li><a class="mt-2 block py-3 text-base font-normal hover:underline md:py-0.5 text-[#E0E0E0] hover:text-white" href="https://operationhope.org/initiatives/1-million-black-businesses/" data-component-name="build-black" aria-label="External source: Build Black">Build Black</a></li><li><a class="mt-2 block py-3 text-base font-normal hover:underline md:py-0.5 text-[#E0E0E0] hover:text-white" href="https://www.shopify.com/accessibility" data-component-name="accessibility" aria-label="External source: Accessibility">Accessibility</a></li><li><a class="mt-2 block py-3 text-base font-normal hover:underline md:py-0.5 text-[#E0E0E0] hover:text-white" href="https://www.shopify.com/plus/commerce-trends" data-component-name="research" aria-label="External source: Research">Research</a></li></ul></div><div class="w-[calc(50%-1rem)] sm:w-fit" data-component-name="solutions"><h3 class="text-base font-bold text-white">Solutions</h3><ul class="mt-4 md:mt-6"><li><a class="mt-2 block py-3 text-base font-normal hover:underline md:py-0.5 text-[#E0E0E0] hover:text-white" href="https://www.shopify.com/online" data-component-name="online-store-builder" aria-label="External source: Online Store Builder">Online Store Builder</a></li><li><a class="mt-2 block py-3 text-base font-normal hover:underline md:py-0.5 text-[#E0E0E0] hover:text-white" href="https://www.shopify.com/website/builder" data-component-name="website-builder" aria-label="External source: Website Builder">Website Builder</a></li><li><a class="mt-2 block py-3 text-base font-normal hover:underline md:py-0.5 text-[#E0E0E0] hover:text-white" href="https://www.shopify.com/tour/ecommerce-website" data-component-name="ecommerce-website" aria-label="External source: Ecommerce Website">Ecommerce Website</a></li></ul></div></div></div></section><section class="grid gap-y-2xl grid-cols-full text-section-light-text border-t my-0 py-0 container max-sm:mx-0 xl:w-full border-white/20 bg-inherit" data-section-name="footer" data-component-name="footer" data-viewable-component="true" data-mode="light"><div class="flex flex-col items-center justify-center gap-4 py-8 sm:items-start sm:gap-8 lg:flex-row lg:justify-between lg:gap-10 bg-black text-white"><div class="mt-1 flex w-full flex-col items-center justify-center sm:flex-row sm:items-start sm:justify-start sm:gap-8 lg:gap-14"><ul class="flex flex-col items-center flex-wrap sm:flex-row sm:items-start gap-x-8 md:gap-x-10" data-component-name="bottom-nav"><li class="mt-2 block py-3 sm:mt-0 text-[#E0E0E0] hover:text-white"><a class="hover:underline" href="https://www.shopify.com/legal/terms" data-component-name="terms-of-service" aria-label="External source: Terms of service">Terms of service</a></li><li class="mt-2 block py-3 sm:mt-0 text-[#E0E0E0] hover:text-white"><a class="hover:underline" href="https://www.shopify.com/legal/privacy" data-component-name="privacy-policy" aria-label="External source: Privacy policy">Privacy policy</a></li><li class="mt-2 block py-3 sm:mt-0 text-[#E0E0E0] hover:text-white"><a class="hover:underline" href="https://www.shopify.com/sitemap" data-component-name="sitemap" aria-label="External source: Sitemap">Sitemap</a></li><li class="mt-2 block py-3 sm:mt-0 text-[#E0E0E0] hover:text-white"><a class="hover:underline" href="https://privacy.shopify.com/en" data-component-name="your-privacy-choices" aria-label="External source: Your Privacy Choices"><span class="flex items-center gap-1.5">Your Privacy Choices<img src="https://cdn.shopify.com/b/shopify-brochure2-assets/8051dee1dd72e78a9528a16c062cff66.svg" alt="California Consumer Privacy Act (CCPA) Opt-Out Icon" class="h-3.5 w-7.5 shrink-0" width="30" height="14" loading="lazy"/></span></a></li></ul></div><ul class="flex gap-4 md:gap-6" data-component-name="social"><li><a class="block h-8 w-8 fill-white hover:fill-shade-30" href="" rel="me nofollow noopener noreferrer" target="_blank" data-component-name="social-facebook" aria-label="Facebook (Opens in a new window)"><svg viewBox="0 0 30 30"><path d="M15.6 30V19.4h5V15h-5v-3.1c0-1 .6-1.9 1.3-1.9h3.8V5.6h-3.8c-3.1 0-5.6 2.8-5.6 6.3V15H7.5v4.4h3.8v10.1C4.8 27.9 0 22 0 15 0 6.7 6.7 0 15 0s15 6.7 15 15c0 8.1-6.4 14.7-14.4 15z"></path></svg></a></li><li><a class="block h-8 w-8 fill-white hover:fill-shade-30" href="https://x.com/shopifyeng" rel="me nofollow noopener noreferrer" target="_blank" data-component-name="social-twitter" aria-label="External source: Twitter (Opens in a new window)"><svg viewBox="0 0 19 19"><path fill-rule="evenodd" clip-rule="evenodd" d="M19 9.5C19 14.7467 14.7467 19 9.5 19C4.25329 19 0 14.7467 0 9.5C0 4.25329 4.25329 0 9.5 0C14.7467 0 19 4.25329 19 9.5ZM8.18721 10.0675L3.64633 3.99603H7.14609L10.123 7.97639L13.8073 3.99603H14.8358L10.5825 8.59099L15.379 15.0039H11.8792L8.64689 10.6819L4.6462 15.0039H3.61771L8.18721 10.0675ZM6.76655 4.75353H5.15877L12.2586 14.2464H13.8663L6.76655 4.75353Z"></path></svg></a></li><li><a class="block h-8 w-8 fill-white hover:fill-shade-30" href="" rel="me nofollow noopener noreferrer" target="_blank" data-component-name="social-youtube" aria-label="YouTube (Opens in a new window)"><svg viewBox="0 0 30 30"><path d="M30 15c0 8.3-6.7 15-15 15S0 23.3 0 15 6.7 0 15 0s15 6.7 15 15zm-5.6 0c0-6.9 0-6.9-9.4-6.9s-9.4 0-9.4 6.9 0 6.9 9.4 6.9 9.4 0 9.4-6.9zm-11.9-3.7 6.3 3.8-6.3 3.8v-7.6z"></path></svg></a></li><li><a class="block h-8 w-8 fill-white hover:fill-shade-30" href="" rel="me nofollow noopener noreferrer" target="_blank" data-component-name="social-instagram" aria-label="Instagram (Opens in a new window)"><svg viewBox="0 0 18 18"><path clip-rule="evenodd" d="M9 0c5 0 9 4 9 9s-4 9-9 9-9-4-9-9 4-9 9-9zM6.7 3.5h4.7c1.8 0 3.2 1.4 3.2 3.1v4.7c0 1.7-1.4 3.1-3.2 3.1H6.7c-1.8 0-3.2-1.4-3.2-3.1V6.7c0-1.8 1.4-3.2 3.2-3.2zM9 6.2c1.6 0 2.9 1.3 2.9 2.9S10.6 12 9 12s-3-1.3-3-2.9 1.3-2.9 3-2.9zm0 1.2c.9 0 1.7.8 1.7 1.7 0 .9-.8 1.7-1.7 1.7-.9 0-1.7-.8-1.7-1.7 0-.9.7-1.7 1.7-1.7zm2.8-1.7c.3 0 .6.2.6.6 0 .3-.2.6-.6.6-.3 0-.6-.2-.6-.6 0-.4.3-.6.6-.6zm-4.6-1h3.7c1.4 0 2.5 1.1 2.5 2.5v3.7c0 1.4-1.1 2.5-2.5 2.5H7.2c-1.4 0-2.5-1.1-2.5-2.5V7.2c-.1-1.4 1.1-2.5 2.5-2.5z" fill-rule="evenodd"></path></svg></a></li><li><a class="block h-8 w-8 fill-white hover:fill-shade-30" href="" rel="me nofollow noopener noreferrer" target="_blank" data-component-name="social-tiktok" aria-label="TikTok (Opens in a new window)"><svg viewBox="0 0 30 30"><path fill-rule="evenodd" clip-rule="evenodd" d="M15 30C23.2843 30 30 23.2843 30 15C30 6.71573 23.2843 0 15 0C6.71573 0 0 6.71573 0 15C0 23.2843 6.71573 30 15 30ZM17.9679 11.937C19.1423 12.7643 20.551 13.2076 21.9952 13.2041V10.3838C21.2138 10.3841 20.4497 10.1579 19.7979 9.73365C19.3398 9.44298 18.9467 9.06336 18.6427 8.61802C18.3387 8.17268 18.1302 7.67098 18.0299 7.1436C17.9873 6.90737 17.9669 6.66779 17.9689 6.42789H15.0829V17.7069C15.0829 18.2146 14.92 18.7094 14.6173 19.1206C14.3146 19.5317 13.8877 19.8382 13.3975 19.9962C12.9073 20.1543 12.3789 20.1558 11.8878 20.0006C11.3966 19.8454 10.9679 19.5414 10.6627 19.1321C10.3576 18.7227 10.1916 18.2289 10.1886 17.7211C10.1856 17.2134 10.3456 16.7177 10.6458 16.3048C10.946 15.8919 11.3711 15.583 11.8604 15.4221C12.3496 15.2612 12.878 15.2566 13.37 15.409V12.5068C12.2944 12.3595 11.1987 12.539 10.2295 13.0213C9.26031 13.5037 8.46383 14.2658 7.94658 15.2058C7.42933 16.1458 7.21597 17.2188 7.33504 18.2814C7.4541 19.344 7.89992 20.3455 8.61286 21.1519C9.3258 21.9583 10.2719 22.5312 11.3246 22.794C12.3772 23.0568 13.4863 22.997 14.5035 22.6225C15.5207 22.2479 16.3975 21.5766 17.0166 20.6983C17.6357 19.82 17.9676 18.7766 17.9679 17.7075V11.937Z"></path></svg></a></li><li><a class="block h-8 w-8 fill-white hover:fill-shade-30" href="" rel="me nofollow noopener noreferrer" target="_blank" data-component-name="social-linkedin" aria-label="LinkedIn (Opens in a new window)"><svg viewBox="0 0 30 30"><path d="M30 15c0 8.3-6.7 15-15 15S0 23.3 0 15 6.7 0 15 0s15 6.7 15 15zM11.3 7.8c0-1.2-1-2.2-2.5-2.2s-2.5.9-2.5 2.2c0 1.2 1 2.2 2.5 2.2s2.5-1 2.5-2.2zm-.7 4.1H6.9v10.6h3.8V11.9zm13.8 5c0-3.4-1.7-5.6-4.4-5.6-1.5 0-2.6.9-3.1 2.3l-.1-1.6H13c0 .4.1 2.5.1 2.5v8.1h3.8V17c0-1.5.7-2.5 1.8-2.5s1.9.6 1.9 2.5v5.6h3.8v-5.7z"></path></svg></a></li><li><a class="block h-8 w-8 fill-white hover:fill-shade-30" href="" rel="me nofollow noopener noreferrer" target="_blank" data-component-name="social-pinterest" aria-label="Pinterest (Opens in a new window)"><svg viewBox="0 0 30 30"><path d="M15 30c-1.5 0-2.9-.2-4.3-.6.6-.9 1.2-2 1.5-3.2.2-.7 1-4.1 1-4.1.5 1 2 1.9 3.7 1.9 4.8 0 8.1-4.4 8.1-10.3 0-4.4-3.8-8.6-9.5-8.6-7.1-.1-10.6 5-10.6 9.3 0 2.6 1 4.9 3.1 5.7.3.1.7 0 .8-.4.1-.2.2-.9.3-1.2.1-.4 0-.5-.2-.8-.6-.7-1-1.6-1-3 0-3.8 2.8-7.2 7.4-7.2 4 0 6.2 2.5 6.2 5.8 0 4.3-1.9 8-4.8 8-1.6 0-2.7-1.3-2.4-2.9.5-1.9 1.3-4 1.3-5.3 0-1.2-.7-2.3-2-2.3-1.6 0-2.9 1.7-2.9 3.9 0 1.4.5 2.4.5 2.4S9.5 24 9.3 25.3c-.3 1.1-.4 2.4-.3 3.5-5.3-2.4-9-7.7-9-13.8C0 6.7 6.7 0 15 0s15 6.7 15 15-6.7 15-15 15z"></path></svg></a></li></ul></div></section></footer></div></div><link rel="modulepreload" href="https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/entry.client-B-TkAXhc.js"/><link rel="modulepreload" href="https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/chunk-62JRHF6Z-DVymXer8.js"/><link rel="modulepreload" href="https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/jsx-runtime-Be-5Ojx7.js"/><link rel="modulepreload" href="https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/react-dom-DSd4XqwN.js"/><link rel="modulepreload" fetchpriority="low" href="https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/documentInlineStylesheet-D3gcTLE2.js"/><link rel="modulepreload" fetchpriority="low" href="https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/enums-XZV-2aE9.js"/><link rel="modulepreload" href="https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/root-MJad2jLh.js"/><link rel="modulepreload" fetchpriority="low" href="https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/utils-DdUQb9sg.js"/><link rel="modulepreload" fetchpriority="low" href="https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/EngineeringBlogFooter-CkEQzGzb.js"/><link rel="modulepreload" fetchpriority="low" href="https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/dist-DLh16i5j.js"/><link rel="modulepreload" fetchpriority="low" href="https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/twMerge-BOuOnbqm.js"/><link rel="modulepreload" fetchpriority="low" href="https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/Provider-BXxLadFt.js"/><link rel="modulepreload" fetchpriority="low" href="https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/I18N-VL4jJYO6.js"/><link rel="modulepreload" fetchpriority="low" href="https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/getLogoSrc-CdTS7Pll.js"/><link rel="modulepreload" fetchpriority="low" href="https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/HeadingGroup-CJXK9h0i.js"/><link rel="modulepreload" fetchpriority="low" href="https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/useDevWindowOverride-BP8cJUax.js"/><link rel="modulepreload" fetchpriority="low" href="https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/Pause-5C6VhRTr.js"/><link rel="modulepreload" fetchpriority="low" href="https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/Play-CfWoesXk.js"/><link rel="modulepreload" fetchpriority="low" href="https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/layout-DvhGiT24.js"/><link rel="modulepreload" fetchpriority="low" href="https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/route-j8GZticw.js"/><link rel="modulepreload" fetchpriority="low" href="https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/EngineeringPageLayout-DdVCOARR.js"/><link rel="modulepreload" fetchpriority="low" href="https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/useIntlLocale-nLT9EtO1.js"/><link rel="modulepreload" fetchpriority="low" href="https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/Close-DBaLmXA5.js"/><link rel="modulepreload" fetchpriority="low" href="https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/AuthorImage-DTZFYttp.js"/><link rel="modulepreload" fetchpriority="low" href="https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/ArticleCarousel-CQx1RSUb.js"/><link rel="modulepreload" fetchpriority="low" href="https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/useBlogPageTitle-B5uH82fh.js"/><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"v8_passThroughRequests":false,"v8_trailingSlashAwareDataRequests":false,"unstable_previewServerPrerendering":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":true},"routeDiscovery":{"mode":"lazy","manifestPath":"/__manifest"},"ssr":true,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamController = controller;}}).pipeThrough(new TextEncoderStream());</script><script type="module" async="">;
import * as route0 from "https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/root-MJad2jLh.js";
import * as route1 from "https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/layout-DvhGiT24.js";
import * as route2 from "https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/route-j8GZticw.js";
window.__reactRouterManifest = {
"entry": {
"module": "https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/entry.client-B-TkAXhc.js",
"imports": [
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/chunk-62JRHF6Z-DVymXer8.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/jsx-runtime-Be-5Ojx7.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/react-dom-DSd4XqwN.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/documentInlineStylesheet-D3gcTLE2.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/enums-XZV-2aE9.js"
],
"css": []
},
"routes": {
"root": {
"id": "root",
"path": "",
"hasAction": false,
"hasLoader": true,
"hasClientAction": false,
"hasClientLoader": false,
"hasClientMiddleware": false,
"hasDefaultExport": true,
"hasErrorBoundary": true,
"module": "https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/root-MJad2jLh.js",
"imports": [
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/chunk-62JRHF6Z-DVymXer8.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/jsx-runtime-Be-5Ojx7.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/react-dom-DSd4XqwN.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/documentInlineStylesheet-D3gcTLE2.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/enums-XZV-2aE9.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/utils-DdUQb9sg.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/EngineeringBlogFooter-CkEQzGzb.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/dist-DLh16i5j.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/twMerge-BOuOnbqm.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/Provider-BXxLadFt.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/I18N-VL4jJYO6.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/getLogoSrc-CdTS7Pll.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/HeadingGroup-CJXK9h0i.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/useDevWindowOverride-BP8cJUax.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/Pause-5C6VhRTr.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/Play-CfWoesXk.js"
],
"css": []
},
"~~layout": {
"id": "~~layout",
"parentId": "root",
"path": "",
"caseSensitive": true,
"hasAction": false,
"hasLoader": false,
"hasClientAction": false,
"hasClientLoader": false,
"hasClientMiddleware": false,
"hasDefaultExport": true,
"hasErrorBoundary": false,
"module": "https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/layout-DvhGiT24.js",
"imports": [
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/chunk-62JRHF6Z-DVymXer8.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/jsx-runtime-Be-5Ojx7.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/Provider-BXxLadFt.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/enums-XZV-2aE9.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/I18N-VL4jJYO6.js"
],
"css": []
},
"$article": {
"id": "$article",
"parentId": "~~layout",
"path": ":article",
"caseSensitive": true,
"hasAction": false,
"hasLoader": true,
"hasClientAction": false,
"hasClientLoader": false,
"hasClientMiddleware": false,
"hasDefaultExport": true,
"hasErrorBoundary": false,
"module": "https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/route-j8GZticw.js",
"imports": [
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/chunk-62JRHF6Z-DVymXer8.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/jsx-runtime-Be-5Ojx7.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/EngineeringBlogFooter-CkEQzGzb.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/dist-DLh16i5j.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/twMerge-BOuOnbqm.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/EngineeringPageLayout-DdVCOARR.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/I18N-VL4jJYO6.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/useIntlLocale-nLT9EtO1.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/react-dom-DSd4XqwN.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/enums-XZV-2aE9.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/HeadingGroup-CJXK9h0i.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/Close-DBaLmXA5.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/AuthorImage-DTZFYttp.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/ArticleCarousel-CQx1RSUb.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/useBlogPageTitle-B5uH82fh.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/documentInlineStylesheet-D3gcTLE2.js"
],
"css": []
},
"_index": {
"id": "_index",
"parentId": "~~layout",
"index": true,
"caseSensitive": true,
"hasAction": false,
"hasLoader": true,
"hasClientAction": false,
"hasClientLoader": false,
"hasClientMiddleware": false,
"hasDefaultExport": true,
"hasErrorBoundary": false,
"module": "https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/route-GsR6yg4H.js",
"imports": [
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/chunk-62JRHF6Z-DVymXer8.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/jsx-runtime-Be-5Ojx7.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/EngineeringBlogFooter-CkEQzGzb.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/dist-DLh16i5j.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/twMerge-BOuOnbqm.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/EngineeringPageLayout-DdVCOARR.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/I18N-VL4jJYO6.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/enums-XZV-2aE9.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/HeadingGroup-CJXK9h0i.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/ArticleCarousel-CQx1RSUb.js",
"https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/documentInlineStylesheet-D3gcTLE2.js"
],
"css": []
}
},
"url": "https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/manifest-1ec3f30a.js",
"version": "1ec3f30a"
};
window.__reactRouterRouteModules = {"root":route0,"~~layout":route1,"$article":route2};
import("https://cdn.shopify.com/shopifycloud/world/brochure/production-engineering/assets/entry.client-B-TkAXhc.js");</script><svg class="absolute top-0 start-0 w-0 h-0 pointer-events-none"><defs><symbol id="icon-ai" viewBox="0 0 20 20"><path fill="currentColor" fill-rule="evenodd" d="M5.6542 4a.0737.0737 0 0 0-.0362.0089.0652.0652 0 0 0-.0252.0275l-.183.3346A2.6131 2.6131 0 0 1 4.371 5.4098l-.3346.183a.0652.0652 0 0 0-.0275.0252A.0738.0738 0 0 0 4 5.6543c0 .0146.0038.027.0089.036a.065.065 0 0 0 .0275.0254l.3346.183a2.613 2.613 0 0 1 1.0388 1.0387l.183.3346a.0675.0675 0 0 0 .022.0256.0677.0677 0 0 0 .029.0102.0696.0696 0 0 0 .0587-.0176.0797.0797 0 0 0 .013-.0182l.183-.3346a2.613 2.613 0 0 1 1.0388-1.0387l.3346-.183a.065.065 0 0 0 .0276-.0253.0737.0737 0 0 0 .0088-.0361.0737.0737 0 0 0-.0088-.0362.0651.0651 0 0 0-.0276-.0252l-.3346-.183A2.613 2.613 0 0 1 5.8986 4.371l-.183-.3346a.065.065 0 0 0-.0253-.0275A.0737.0737 0 0 0 5.6542 4Z" clip-rule="evenodd"></path><path fill="none" stroke="currentColor" d="M5.6542 4a.0737.0737 0 0 0-.0362.0089.0652.0652 0 0 0-.0252.0275l-.183.3346A2.6131 2.6131 0 0 1 4.371 5.4098l-.3346.183a.0652.0652 0 0 0-.0275.0252A.0738.0738 0 0 0 4 5.6543c0 .0146.0038.027.0089.036a.065.065 0 0 0 .0275.0254l.3346.183a2.613 2.613 0 0 1 1.0388 1.0387l.183.3346a.0675.0675 0 0 0 .022.0256.0677.0677 0 0 0 .029.0102.0696.0696 0 0 0 .0587-.0176.0797.0797 0 0 0 .013-.0182l.183-.3346a2.613 2.613 0 0 1 1.0388-1.0387l.3346-.183a.065.065 0 0 0 .0276-.0253.0737.0737 0 0 0 .0088-.0361.0737.0737 0 0 0-.0088-.0362.0651.0651 0 0 0-.0276-.0252l-.3346-.183A2.613 2.613 0 0 1 5.8986 4.371l-.183-.3346a.065.065 0 0 0-.0253-.0275A.0737.0737 0 0 0 5.6542 4Zm5.6135 3.05c-.0284.0213-.0673.0615-.0856.1611l-.0314.1706c-.3635 1.976-1.9394 3.5118-3.9364 3.8362-.098.016-.1386.0528-.1604.0801-.0288.036-.0528.0941-.0539.1667-.001.0726.0213.1314.049.1681.021.028.0606.066.158.0847l.1103.0212c1.9479.3741 3.471 1.8861 3.848 3.8196l.0336.1724c.0225.1155.0706.1711.1132.2032.0509.0384.1265.0661.2156.0661.0891 0 .1647-.0277.2157-.0661.0425-.0321.0907-.0877.1132-.2033l.0262-.1343c.3814-1.9565 1.9328-3.4804 3.9077-3.8383.1041-.0189.1426-.0583.1619-.0845.0267-.0362.0503-.0981.0474-.1787-.0029-.0806-.0313-.1494-.0688-.1948-.0305-.0369-.082-.0783-.1892-.0943-2.073-.3091-3.7271-1.9226-4.0485-3.9876-.0155-.1001-.0533-.1414-.0811-.1634-.0368-.0291-.0966-.0537-.1715-.0547-.075-.001-.1355.0219-.173.05Z" clip-rule="evenodd"></path></symbol><symbol id="icon-ai-chats" viewBox="0 0 20 20"><path fill="currentColor" d="M10 1.58c4.85 0 8.83 3.69 8.83 8.3 0 4.6-3.98 8.29-8.83 8.29a9 9 0 0 1-3.69-.76l-3.24.97a.9.9 0 0 1-.99-.38.9.9 0 0 1 0-1.04l.12-.2q.19-.29.28-.56c.14-.4.21-1.06.25-1.62a8 8 0 0 1-1.56-4.7c0-4.61 3.98-8.3 8.83-8.3m0 1c-4.36 0-7.83 3.3-7.83 7.3 0 1.58.54 3.05 1.46 4.25l.12.14-.01.19c-.03.57-.1 1.47-.32 2.08q-.16.43-.41.82l3.2-.96.17-.05.17.08q1.58.72 3.45.74c4.36 0 7.83-3.3 7.83-7.3S14.36 2.59 10 2.59M8.74 7.43q.16 0 .21.17c.13.44.22.88.38 1.3a3 3 0 0 0 2.06 1.86l1 .28q.18.07.18.21 0 .15-.18.2c-.42.13-.84.22-1.25.37a3 3 0 0 0-1.9 2.08l-.3 1q-.01.13-.14.17h-.12q-.12-.04-.14-.18l-.35-1.2a3 3 0 0 0-2.08-1.95l-1.01-.29q-.13-.02-.17-.14v-.12q.04-.13.18-.15.57-.14 1.13-.33A3 3 0 0 0 8.25 8.6l.29-1q.05-.16.2-.17M12.5 5q.09 0 .1.1l.22.7q.3.79 1.12 1.01l.55.16q.1.03.1.11 0 .1-.1.11l-.69.2q-.8.3-1.04 1.14l-.15.55q-.01.07-.08.09h-.07q-.06-.03-.08-.1-.08-.33-.19-.65-.29-.82-1.13-1.07l-.55-.16q-.06 0-.1-.08v-.06q.04-.07.1-.08l.62-.18q.85-.29 1.1-1.15l.15-.55q.03-.1.12-.09"></path></symbol><symbol id="icon-analytics" viewBox="0 0 20 20"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10 14.5v-9m-4.5 9v-3m9 3V9m-13-5.5v13h17v-13h-17Z"></path></symbol><symbol id="icon-arrow" viewBox="0 0 14 14"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M2.333 7h9.334m-3.5-3.5 3.5 3.5-3.5 3.5"></path></symbol><symbol id="icon-boost" viewBox="0 0 20 20"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M8.5 18.5 8 7.5H6.04a.5.5 0 0 1-.4-.81l3.97-5a.5.5 0 0 1 .78 0l3.97 5a.5.5 0 0 1-.4.81H12l-.5 11m2.5 0 1.5-7.5M6 18.5l-1.1-5.47"></path></symbol><symbol id="icon-chevron" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m18 9-6 6-6-6"></path></symbol><symbol id="icon-computer-tick" viewBox="0 0 20 20"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M17.5 14.5v-11a1 1 0 0 0-1-1h-13a1 1 0 0 0-1 1v11M2.5 17.5h15a1 1 0 0 0 1-1v-2h-6v.5a.5.5 0 0 1-.5.5H8a.5.5 0 0 1-.5-.5v-.5h-6v2a1 1 0 0 0 1 1Z"></path><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M7.5 9 9 10.5 12.5 7"></path></symbol><symbol id="icon-credit-card" viewBox="0 0 20 20"><path fill="currentColor" d="M1.5 7.5v-1h17v1h-17Z"></path><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M4.5 13.5h4m-7-9v11a1 1 0 0 0 1 1h15a1 1 0 0 0 1-1v-11a1 1 0 0 0-1-1h-15a1 1 0 0 0-1 1Zm0 2v1h17v-1h-17Z"></path></symbol><symbol id="icon-design" viewBox="0 0 20 20"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M14.5 11.5v7m-13-13h7m0 1 4.57-4.52 4.95 4.95L6.95 18M10.5 4.5l5 5m-2 2h5v7H5m0 0A3.5 3.5 0 0 0 8.5 15V1.5h-7V15A3.5 3.5 0 0 0 5 18.5Zm.5-3.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0Z"></path></symbol><symbol id="icon-discount" viewBox="0 0 20 20"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="m12.7 6.8-5.4 6.4m.95-5.95a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0Zm4.5 5.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0ZM5.997 3.417a2.254 2.254 0 0 0 2.179-.902 2.254 2.254 0 0 1 3.648 0 2.254 2.254 0 0 0 2.179.902 2.254 2.254 0 0 1 2.58 2.58c-.133.838.215 1.68.902 2.179 1.24.9 1.24 2.748 0 3.648a2.254 2.254 0 0 0-.902 2.179 2.254 2.254 0 0 1-2.58 2.58 2.254 2.254 0 0 0-2.179.902 2.254 2.254 0 0 1-3.648 0 2.254 2.254 0 0 0-2.179-.902 2.254 2.254 0 0 1-2.58-2.58 2.254 2.254 0 0 0-.902-2.179 2.254 2.254 0 0 1 0-3.648 2.254 2.254 0 0 0 .902-2.179 2.254 2.254 0 0 1 2.58-2.58Z"></path></symbol><symbol id="icon-domain" viewBox="0 0 20 20"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10 18.5A8.5 8.5 0 0 1 1.5 10m8.5 8.5a9.3 9.3 0 0 0 1.5-.13m-1.5.13c-1.66 0-3-3.8-3-8.5s1.34-8.5 3-8.5M1.5 10c0-4.7 3.8-8.5 8.5-8.5M1.5 10c0 1.66 3.8 3 8.5 3m-8.5-3c0-1.66 3.8-3 8.5-3s8.5 1.34 8.5 3M10 1.5c4.7 0 8.5 3.8 8.5 8.5M10 1.5c1.66 0 3 3.8 3 8.5m5.5 0a9.3 9.3 0 0 1-.13 1.5M12 12l2 6.5 1.5-3 3-1L12 12Z"></path></symbol><symbol id="icon-drag-and-drop" viewBox="0 0 20 20"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M4.5 3.5v0m2 0v0m11 4v-5a1 1 0 0 0-1-1h-13a1 1 0 0 0-1 1v13a1 1 0 0 0 1 1h2m-3-11h15m0 6V10a.5.5 0 0 0-.5-.5h-1.5m-5 0H9a.5.5 0 0 0-.5.5v1.5m4-2h1m-5 4v1m0 2.5v1a.5.5 0 0 0 .5.5h1m1.5-6.5 2 6.5 1.5-3 3-1-6.5-2.5Z"></path></symbol><symbol id="icon-facebook" viewBox="0 0 32 32"><path fill="inherit" d="M32 16.06C32 7.19 24.84 0 16 0S0 7.19 0 16.06c0 7.53 5.17 13.85 12.13 15.58V20.97h-3.3v-4.91h3.3v-2.12c0-5.46 2.47-8 7.82-8 1.01 0 2.76.2 3.47.4v4.45a20.5 20.5 0 0 0-1.84-.06c-2.63 0-3.64 1-3.64 3.6v1.73h5.23l-.9 4.9h-4.33V32A16.04 16.04 0 0 0 32 16.06Z"></path></symbol><symbol id="icon-global" viewBox="0 0 20 20"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M18.5 10a8.5 8.5 0 0 1-8.5 8.5m8.5-8.5A8.5 8.5 0 0 0 10 1.5m8.5 8.5c0 1.657-3.806 3-8.5 3s-8.5-1.343-8.5-3m17 0c0-1.657-3.806-3-8.5-3s-8.5 1.343-8.5 3m8.5 8.5A8.5 8.5 0 0 1 1.5 10m8.5 8.5c1.657 0 3-3.806 3-8.5s-1.343-8.5-3-8.5m0 17c-1.657 0-3-3.806-3-8.5s1.343-8.5 3-8.5M1.5 10A8.5 8.5 0 0 1 10 1.5"></path></symbol><symbol id="icon-global-currency" viewBox="0 0 20 20"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M3 15.5H2a.5.5 0 0 1-.5-.5V5a.5.5 0 0 1 .5-.5h12.5m0 0-2-2m2 2-2 2m4.5-2h1a.5.5 0 0 1 .5.5v10a.5.5 0 0 1-.5.5H5.5m0 0 2-2m-2 2 2 2m-4-11h1m11 7h1M12 10a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z"></path></symbol><symbol id="icon-global-markets" viewBox="0 0 40 41"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M29.83 8.64a15.9 15.9 0 0 0-12.4-5.95A15.88 15.88 0 1 0 21.9 33.8 M16.8 33.8v-5.07a3.2 3.2 0 0 0-3.18-3.18 3.2 3.2 0 0 1-3.17-3.17v-1.32a4.5 4.5 0 0 0-1.32-3.18l-5.67-5.67 M23.79 4.17a2.44 2.44 0 0 1-2.45 2.44H21a2.8 2.8 0 0 0-2.8 2.8v.1c0 .9-.42 1.76-1.13 2.3l-1.18.91a2.6 2.6 0 0 0-.99 2.02v0a2.55 2.55 0 0 0 2.54 2.55h4.66m12.5-.63h-5.1a3.8 3.8 0 0 0-3.8 3.81v0a3.8 3.8 0 0 0 3.8 3.81h1.27a3.8 3.8 0 0 1 3.81 3.81v0a3.8 3.8 0 0 1-3.8 3.81h-5.09m3.81.64v1.9m1.27-21.59v1.9"></path></symbol><symbol id="icon-instagram" viewBox="0 0 32 32"><path fill="inherit" d="M32 16a16 16 0 1 1-32 0 16 16 0 0 1 32 0Z"></path><path fill="currentColor" d="M12.07 6.57a6.6 6.6 0 0 0-2.3.44c-.63.25-1.16.57-1.69 1.1a4.66 4.66 0 0 0-1.1 1.68 7.3 7.3 0 0 0-.43 2.31 67.24 67.24 0 0 0-.05 3.92c0 2.58.02 2.9.07 3.92.04 1 .2 1.7.44 2.3a4.79 4.79 0 0 0 2.79 2.78c.6.23 1.3.39 2.3.43 1.02.04 1.34.05 3.92.05s2.9-.02 3.91-.07a6.98 6.98 0 0 0 2.3-.44 4.66 4.66 0 0 0 1.69-1.1c.53-.53.85-1.06 1.1-1.69.23-.6.39-1.29.43-2.3.04-1.01.05-1.34.05-3.92s-.02-2.9-.07-3.91a6.97 6.97 0 0 0-.44-2.3 4.66 4.66 0 0 0-1.1-1.69 4.65 4.65 0 0 0-1.69-1.1c-.6-.23-1.3-.39-2.3-.43a66.28 66.28 0 0 0-3.92-.05c-2.58 0-2.9.02-3.91.07Zm.1 17.17a5.27 5.27 0 0 1-1.76-.32 2.96 2.96 0 0 1-1.1-.71 2.95 2.95 0 0 1-.7-1.1 5.26 5.26 0 0 1-.33-1.76c-.05-1-.06-1.3-.07-3.84 0-2.53 0-2.83.05-3.83.04-.93.2-1.43.32-1.77a3 3 0 0 1 1.81-1.8c.33-.14.83-.3 1.76-.33 1-.05 1.3-.06 3.83-.07 2.54 0 2.84 0 3.84.05.93.04 1.43.2 1.77.32a3 3 0 0 1 1.8 1.81c.14.33.3.83.33 1.76.05 1 .06 1.3.07 3.84 0 2.53 0 2.83-.05 3.83-.04.93-.2 1.43-.32 1.77a3 3 0 0 1-1.81 1.8c-.33.14-.83.3-1.76.34-1 .04-1.3.05-3.84.06-2.53 0-2.83 0-3.83-.05Zm7.75-12.82a1.14 1.14 0 1 0 2.28 0 1.14 1.14 0 0 0-2.28 0Zm-8.8 5.09a4.88 4.88 0 1 0 9.76-.02 4.88 4.88 0 0 0-9.76.02Zm1.71 0a3.17 3.17 0 1 1 6.34-.02 3.17 3.17 0 0 1-6.34.02Z"></path></symbol><symbol id="icon-inventory-synced" viewBox="0 0 20 20"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M1.5 18V6L10 2l8.5 4v12m-4.02-7.56a4.74 4.74 0 0 0-9.19 1m.23 2.12a4.74 4.74 0 0 0 9.19-1M11.5 10.5h3v-3m-9 9v-3h3"></path></symbol><symbol id="icon-linkedin" viewBox="0 0 32 32"><path fill="inherit" d="M32 16a16 16 0 1 1-32 0 16 16 0 0 1 32 0Z"></path><path fill="currentColor" d="M25 17.4c0-.86-.08-1.7-.34-2.53a3.2 3.2 0 0 0-1.68-2.1A4.88 4.88 0 0 0 20 12.4a3.5 3.5 0 0 0-2.52 1.68c-.01.03-.04.05-.09.1v-1.57h-3.37v11.31h3.5v-.19l.01-5.36c0-.49.05-.98.15-1.46.14-.68.52-1.2 1.22-1.4.2-.05.42-.08.63-.1.95-.06 1.57.39 1.81 1.3.14.54.15 1.08.15 1.62v5.59h3.5V17.4ZM8.29 23.93h3.5v-11.3h-3.5v11.3Zm1.75-16.96a2.04 2.04 0 1 0 0 4.08 2.04 2.04 0 0 0 0-4.08Z"></path></symbol><symbol id="icon-marketing" viewBox="0 0 20 20"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.5 12.5v6H8.31a1 1 0 0 1-.98-.8c-.43-1.8-1.3-4.34-3.94-5.8M8.5 4.5v8m-3 0a4 4 0 0 1 0-8H12c4 0 5.5-1.5 6.5-3v14c-1-1.5-2.5-3-6.5-3H5.5Z"></path></symbol><symbol id="icon-mobile" viewBox="0 0 20 20"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="m8 10 1.5 1.5 3-3M9 3.5h2m-6.5-1v15a1 1 0 0 0 1 1h9a1 1 0 0 0 1-1v-15a1 1 0 0 0-1-1h-9a1 1 0 0 0-1 1"></path></symbol><symbol id="icon-money" viewBox="0 0 20 20"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M3.5 6.5h1m11 7h1M12 10a2 2 0 1 1-4 0 2 2 0 0 1 4 0ZM1.5 5v10a.5.5 0 0 0 .5.5h16a.5.5 0 0 0 .5-.5V5a.5.5 0 0 0-.5-.5H2a.5.5 0 0 0-.5.5Z"></path></symbol><symbol id="icon-online" viewBox="0 0 20 20"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M3.5 4.5v0m2 0v0m-4 2h17m-17-3v13a1 1 0 0 0 1 1h15a1 1 0 0 0 1-1v-13a1 1 0 0 0-1-1h-15a1 1 0 0 0-1 1Z"></path></symbol><symbol id="icon-pinterest" viewBox="0 0 32 32"><path fill="inherit" d="M10.06 30.86c-.2-1.82-.06-3.56.34-5.24l1.6-6.9a9.5 9.5 0 0 1-.46-2.76c0-2.24 1.08-3.84 2.78-3.84 1.18 0 2.04.82 2.04 2.4 0 .5-.1 1.06-.3 1.7l-.7 2.3c-.14.44-.2.86-.2 1.22 0 1.6 1.22 2.5 2.78 2.5 2.78 0 4.76-2.88 4.76-6.62 0-4.16-2.72-6.82-6.74-6.82-4.48 0-7.32 2.92-7.32 6.98 0 1.64.5 3.16 1.48 4.2-.32.54-.66.64-1.18.64-1.6 0-3.12-2.26-3.12-5.34 0-5.32 4.26-9.56 10.24-9.56 6.28 0 10.22 4.38 10.22 9.78 0 5.4-3.84 9.52-7.98 9.52a5.1 5.1 0 0 1-4.08-1.96l-.82 3.32a15.25 15.25 0 0 1-2.16 4.9 16 16 0 1 0-1.18-.42Z"></path></symbol><symbol id="icon-pos-tick" viewBox="0 0 20 20"><path fill="currentColor" d="M10.5 8.5v-7h1v7h-1Z"></path><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M1.5 18.5h17m-15 0V9a.5.5 0 0 1 .5-.5h12a.5.5 0 0 1 .5.5v9.5M8 14l1.5 1.5 3-3.5m-7-3.5v-6a1 1 0 0 1 1-1h7a1 1 0 0 1 1 1v6m-4-7v7h1v-7h-1Z"></path></symbol><symbol id="icon-sales-up" viewBox="0 0 20 20"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.5 4.5h-8a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1v-6m-4-8v1m4 4h1m-8 0h4v4m2-7 1-1M2 17c5.19-1.44 10-5.66 12-9"></path></symbol><symbol id="icon-save-time" viewBox="0 0 20 20"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.5 5.5 10 10l3 3M1.75 10a8.25 8.25 0 1 0 .85-3.65M2.5 2.5v4h4"></path></symbol><symbol id="icon-shipping" viewBox="0 0 20 20"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M7.5 14.5a2 2 0 1 1-4 0m4 0a2 2 0 1 0-4 0m4 0h5m-9 0H2a.5.5 0 0 1-.5-.5V4a.5.5 0 0 1 .5-.5h8a.5.5 0 0 1 .5.5v10.5m6 0a2 2 0 1 1-4 0m4 0a2 2 0 1 0-4 0m4 0h2v-5m-8-4h5l3 4m0 0h-8"></path></symbol><symbol id="icon-shop-app" viewBox="0 0 20 20"><path fill="currentColor" fill-rule="evenodd" d="M8.85 5a6 6 0 0 0-3.27.94L6.7 7.78a4 4 0 0 1 2.17-.61c1.95 0 3.38 1.33 3.38 3.09 0 1.5-1.15 2.61-2.6 2.61-1.19 0-2-.67-2-1.61 0-.57.26-1.04.97-1.35L7.55 8.19a3.1 3.1 0 0 0-2.22 3c0 2.18 1.8 3.81 4.3 3.81 2.93 0 5.04-1.96 5.04-4.78C14.67 7.2 12.22 5 8.85 5" clip-rule="evenodd"></path><rect fill="none" width="19" height="19" x=".5" y=".5" stroke="currentColor" rx="4.5"></rect></symbol><symbol id="logo-shopify-bag" viewBox="0 0 44 50"><path d="M30.0164 5.94322C30.0164 5.94322 29.4539 6.10386 28.5297 6.38498C28.369 5.86289 28.1279 5.26048 27.8064 4.61791C26.7616 2.60988 25.1945 1.52554 23.3461 1.52554C23.2256 1.52554 23.105 1.52554 22.9443 1.56571C22.9041 1.48538 22.8237 1.44522 22.7836 1.3649C21.9799 0.481368 20.9352 0.0797613 19.6895 0.119922C17.2785 0.200243 14.8676 1.92715 12.9388 5.01952C11.5726 7.1882 10.5279 9.91912 10.2466 12.0476C7.47397 12.891 5.54521 13.4934 5.50502 13.5336C4.09863 13.9753 4.05845 14.0155 3.89772 15.3408C3.65662 16.3448 0 44.6581 0 44.6581L30.3781 49.9191V5.86289C30.2174 5.90306 30.0968 5.90305 30.0164 5.94322ZM22.9845 8.11189C21.3772 8.59382 19.6091 9.15607 17.8813 9.67815C18.3635 7.79061 19.3279 5.90305 20.453 4.65807C20.895 4.21631 21.4977 3.69422 22.1808 3.37293C22.8639 4.81872 23.0247 6.78659 22.9845 8.11189ZM19.7297 1.72635C20.2922 1.72635 20.7744 1.84683 21.1763 2.08779C20.5333 2.40908 19.8904 2.93117 19.2877 3.53358C17.7607 5.18016 16.5954 7.75044 16.1132 10.2002C14.6667 10.642 13.2201 11.0838 11.8941 11.4854C12.7379 7.67012 15.9927 1.84683 19.7297 1.72635ZM15.0283 23.8147C15.189 26.385 21.9799 26.9472 22.3817 33.0115C22.663 37.7906 19.8502 41.0436 15.7918 41.2846C10.8895 41.6059 8.19726 38.7143 8.19726 38.7143L9.24201 34.2966C9.24201 34.2966 11.9342 36.3448 14.1041 36.1842C15.5105 36.1039 16.0329 34.9392 15.9927 34.136C15.7918 30.7625 10.2466 30.9633 9.88493 25.4211C9.56347 20.8027 12.6174 16.1039 19.368 15.6621C21.9799 15.5014 23.3059 16.144 23.3059 16.144L21.779 21.9272C21.779 21.9272 20.0511 21.1239 18.0018 21.2846C15.0283 21.4854 14.9881 23.3729 15.0283 23.8147ZM24.5918 7.62996C24.5918 6.42514 24.4311 4.69824 23.8685 3.25245C25.7169 3.6139 26.6009 5.66209 27.0027 6.90707C26.2795 7.10787 25.4758 7.34884 24.5918 7.62996Z" fill="currentColor"></path><path d="M31.3828 49.7589L44.0002 46.6263C44.0002 46.6263 38.5755 9.95967 38.5353 9.71871C38.4951 9.47775 38.2942 9.3171 38.0933 9.3171C37.8924 9.3171 34.3563 9.23678 34.3563 9.23678C34.3563 9.23678 32.1865 7.14843 31.3828 6.34521V49.7589Z" fill="currentColor"></path></symbol><symbol id="icon-social" viewBox="0 0 20 20"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="m5 16.5 5 2h4.77a1 1 0 0 0 .95-.7l2.45-7.7a2 2 0 0 0-1.9-2.6H11.5m-6.5 9H1.5v-9h5l2.5-6h1c.83 0 1.5.67 1.5 1.5v4.5m-6.5 9v-9m5 0h1.5"></path></symbol><symbol id="icon-taxes" viewBox="0 0 20 20"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M14.5 18.5a2 2 0 0 0 2-2v-15m-2 17a2 2 0 0 1-2-2h-11c0 1.1.9 2 2 2h11Zm2-17a2 2 0 0 1 2 2v1h-2m0-3h-10a2 2 0 0 0-1.63.84M4.5 12.5v4M9 10 4 5a1.41 1.41 0 0 0-2 2l5 5m2-2-2 2m2-2 1.5 3.5L7 12m.5-7.5h5m-2 3h3m-1 3h1"></path></symbol><symbol id="icon-tiktok" viewBox="0 0 32 32"><path fill="inherit" d="M32 16a16 16 0 1 1-32 0 16 16 0 0 1 32 0Z"></path><path fill="currentColor" d="M23.94 14.44c-1.57 0-3.1-.48-4.38-1.38v6.28a5.65 5.65 0 0 1-3.78 5.35 5.9 5.9 0 0 1-6.41-1.6 5.67 5.67 0 0 1 1.76-8.85 5.89 5.89 0 0 1 3.42-.56v3.16a2.7 2.7 0 0 0-2.97.97 2.6 2.6 0 0 0 1.35 4.03 2.7 2.7 0 0 0 2.98-.96c.33-.45.5-.99.5-1.54V7.06h3.15a4.2 4.2 0 0 0 1.99 3.6c.7.46 1.54.7 2.4.7v3.08Z"></path></symbol><symbol id="icon-twitter" viewBox="0 0 32 32"><path fill="inherit" d="M32 16a16 16 0 1 1-32 0 16 16 0 0 1 32 0Z"></path><path fill="currentColor" d="M17.71 14.79 24.41 7h-1.58L17 13.76 12.36 7H7l7.03 10.23L7 25.4h1.59l6.14-7.15 4.91 7.15H25l-7.29-10.61Zm-8.55-6.6h2.44l11.23 16.06h-2.44L9.16 8.2Z"></path></symbol><symbol id="icon-user-profile" viewBox="0 0 20 20"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M5 16.5a4 4 0 0 1 4-4h2a4 4 0 0 1 4 4m3.5-6.5a8.5 8.5 0 1 1-17 0 8.5 8.5 0 0 1 17 0ZM13 7.5a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"></path></symbol><symbol id="icon-users" viewBox="0 0 20 16"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M15.5 10.5c1.84 0 3.33 1.5 3.33 3.33v1.67h-1.66M13 7.06a3.33 3.33 0 0 0 0-6.45m-2.5 3.22a3.33 3.33 0 1 1-6.67 0 3.33 3.33 0 0 1 6.67 0M3.83 10.5h6.67c1.84 0 3.33 1.5 3.33 3.33v1.67H.5v-1.67C.5 12 2 10.5 3.83 10.5"></path></symbol><symbol id="icon-youtube" viewBox="0 0 32 32"><path fill="inherit" d="M32 16a16 16 0 1 1-32 0 16 16 0 0 1 32 0Z"></path><path fill="currentColor" d="M25.58 11.19a2.5 2.5 0 0 0-1.76-1.77C22.25 9 16 9 16 9s-6.25 0-7.81.42a2.5 2.5 0 0 0-1.77 1.77C6 12.75 6 16 6 16s0 3.26.42 4.81c.23.87.9 1.54 1.77 1.77C9.75 23 16 23 16 23s6.25 0 7.81-.42a2.5 2.5 0 0 0 1.77-1.77C26 19.26 26 16 26 16s0-3.25-.42-4.81Z"></path><path fill="inherit" d="M14 19v-6l5.2 3-5.2 3Z"></path></symbol></defs></svg></body></html><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{\"_5\":6,\"_7\":8},\"actionData\",\"errors\",\"root\",{\"_1991\":1992,\"_47\":48,\"_1993\":556},\"$article\",{\"_9\":10,\"_11\":12,\"_13\":14,\"_15\":16,\"_17\":18,\"_19\":20,\"_21\":22,\"_23\":24,\"_25\":26,\"_27\":28,\"_29\":30,\"_31\":32,\"_33\":34,\"_35\":34,\"_36\":37,\"_38\":39,\"_40\":41,\"_42\":43,\"_44\":45,\"_46\":45,\"_47\":48,\"_49\":50,\"_51\":-7,\"_52\":53,\"_54\":55,\"_56\":57,\"_58\":59,\"_60\":61,\"_62\":63,\"_64\":-7,\"_65\":66},\"article\",{\"_1946\":1947,\"_1948\":1949,\"_1950\":1951,\"_56\":1952,\"_477\":1953,\"_1954\":1955,\"_126\":1956,\"_1897\":1957,\"_13\":1958,\"_1959\":12,\"_1960\":1961,\"_189\":1962,\"_1963\":1964,\"_1900\":24,\"_1902\":-5,\"_1965\":45,\"_1966\":1967,\"_1968\":1969,\"_1903\":1967,\"_1970\":1955,\"_1971\":1972},\"metaDescription\",\"8 minute read Production engineers (PE) are expected to be incident management experts. Still, incident handling is difficult, often messy, and exhausting. We encounter new incidents, search high and low for possible explanations, sometimes tunnel on symptoms, and, under pressure, forget some best practices. At Shopify, we care not only about handling incidents quickly and efficiently, but also PE well-being. We have a special IMOC (incident manager on call) rotation and an incident chatbot to assist IMOCs. This post provides an overview of incident management at Shopify, the responsibility of different roles during an incident, and how our chatbot works to support our team.\",\"contentHtml\",\"\u003cp style=\\\"text-align: left;\\\"\u003eProduction engineers (PE) are expected to be incident management experts. Still, incident handling is difficult, often messy, and exhausting. We encounter new incidents, search high and low for possible explanations, sometimes tunnel on symptoms, and, under pressure, forget some best practices.\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eAt Shopify, we care not only about handling incidents quickly and efficiently, but also PE well-being. We have a special IMOC (incident manager on call) rotation and an incident chatbot to assist IMOCs. This post provides an overview of incident management at Shopify, the responsibility of different roles during an incident, and how our chatbot works to support our team.\u003c/span\u003e\u003cbr\u003e\u003cb\u003e\u003c/b\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cb\u003eIncident Management at Shopify\u003c/b\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eThe IMOC’s role is to lead the incident response. Their main focus is on communication, ensuring the response continues to move forward and escalate as required, and on follow through. Our incident response process springs from the \u003c/span\u003e\u003ca href=\\\"https://en.wikipedia.org/wiki/Incident_Command_System\\\" rel=\\\"nofollow noopener noreferrer\\\" target=\\\"_blank\\\"\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eIncident Command System (ICS)\u003c/span\u003e\u003c/a\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003e, which provides us with a common hierarchy within which responders from multiple agencies can be effective.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003e\u003cimg src=\\\"//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-13_at_10.23.44_AM_large.png?v=1518535671\\\" alt=\\\"Incident Command System\\\" width=\\\"505\\\" height=\\\"264\\\" href=\\\"https://cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-13_at_10.23.44_AM_large.png?v=1518535671\\\"\u003e\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eIn Shopify’s ICS model case, the hierarchy is simplified to the Incident Commander (which we call the IMOC) who leads the incident response; the Public Information Officer who takes care of public communication, called a Support Response Manager (SRM) at Shopify; and, an operations section that directs all the actions needed to solve the incident, usually the component experts in our case.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eIt’s essential to note that the IMOC is on call for coordinating the incident response, not for fixing production issues (which is the component expert’s mission). They ensure that the incident goes through the following steps:\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cimg src=\\\"//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-13_at_10.23.58_AM_103f24f5-724b-455a-bb2a-bdb99c4487cd_large.png?v=1518535999\\\" alt=\\\"\\\" width=\\\"381\\\" height=\\\"350\\\" href=\\\"https://cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-13_at_10.23.58_AM_103f24f5-724b-455a-bb2a-bdb99c4487cd_large.png?v=1518535999\\\" loading=\\\"lazy\\\"\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eAt Shopify, this roughly translates into:\u003c/span\u003e\u003c/p\u003e\\n\u003cul\u003e\\n\u003cli style=\\\"font-weight: 400;\\\"\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eWhen we detect that something’s broken, this usually results in a page.\u003c/span\u003e\u003c/li\u003e\\n\u003cli style=\\\"font-weight: 400;\\\"\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eWe evaluate and confirm the issue, and then the IMOC starts an incident. \u003c/span\u003e\u003c/li\u003e\\n\u003cli style=\\\"font-weight: 400;\\\"\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eThe IMOC will ensure communication with other teams (or the operation sections expert in the outage area) and merchants has occurred, and confirm that a proper fix is found and pushed. \u003c/span\u003e\u003c/li\u003e\\n\u003cli style=\\\"font-weight: 400;\\\"\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eIf the fix is working as expected, the IMOC will stop the incident, and then document the service disruption. \u003c/span\u003e\u003c/li\u003e\\n\u003cli style=\\\"font-weight: 400;\\\"\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eAn investigation happens, followed by a root cause analysis (RCA) meeting, which usually leads to action items.\u003c/span\u003e\u003c/li\u003e\\n\u003cli style=\\\"font-weight: 400;\\\"\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eAddressing all action items results in the final resolution of the incident.\u003c/span\u003e\u003c/li\u003e\\n\u003c/ul\u003e\\n\u003cp\u003e\u003cb\u003eSpy incident\u003c/b\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eDuring an incident, incident response steps shouldn't be left to memory, especially when wanting to consistently offer an effective streamlined experience. Our chatbot, Spy, makes this easier by assisting the IMOC through the incident response. Spy features a set of incident commands that help reduce manual effort and context switching.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eWe integrated the bot with our conversation tool and several third-party tools (PagerDuty, StatusPage, GitHub) to send timely reminders. Here is an overview of our current ChatOps setup:\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003e\u003cimg src=\\\"//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-13_at_10.24.08_AM_large.png?v=1518536048\\\" alt=\\\"\\\" width=\\\"537\\\" height=\\\"246\\\" href=\\\"https://cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-13_at_10.24.08_AM_large.png?v=1518536048\\\" loading=\\\"lazy\\\"\u003e\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eChatOps is all about conversation-driven operations and uses group chat tools to go beyond basic conversation with context and actions taken from within the chat tool itself. It allows the infrastructure to be brought into the conversation. Communication between those third-party services and our chatbot is usually done via webhooks.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eAt Shopify, we use Slack as our chat app, and our main bot Spy stems from Lita. \u003c/span\u003e\u003ca href=\\\"https://www.lita.io/\\\" rel=\\\"nofollow noopener noreferrer\\\" target=\\\"_blank\\\"\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eLita\u003c/span\u003e\u003c/a\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003e is open source and written in Ruby, and can be extended easily. Behaviors can be added by simply defining modules.\u003c/span\u003e\u003c/p\u003e\\n\u003cdiv class=\\\"script-sandbox\\\"\u003e\u003cscript data-sandbox-src=\\\"https://gist.github.com/ShopifyEng/df56b3700296c8d5779848c2faf4bf34.js\\\"\u003e\u003c/script\u003e\u003c/div\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eWith the above overview of our ChatOps setup and the previous IMOC duties, we can now look into how Spy specifically helps with incident response.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eSpy has three main sets of commands that help with IMOC duties:\u003c/span\u003e\u003c/p\u003e\\n\u003cul\u003e\\n\u003cli style=\\\"font-weight: 400;\\\"\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003espy page\u003c/span\u003e\u003c/li\u003e\\n\u003cli style=\\\"font-weight: 400;\\\"\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003espy incident\u003c/span\u003e\u003c/li\u003e\\n\u003cli style=\\\"font-weight: 400;\\\"\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003espy status\u003c/span\u003e\u003c/li\u003e\\n\u003c/ul\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eTogether, they help the IMOC go through the incident response funnel steps.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cb\u003eStep 1: Failure detection\u003c/b\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eAn alert will page the IMOC. Someone who notices the failure may also do so via the \u003cem\u003e`spy page`\u003c/em\u003e command. Example: \u003cem\u003e`spy page \u003c/em\u003eimoc\u003cem\u003e order notifications not going out`\u003c/em\u003e\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eThe IMOC can also use a Spy command to acknowledge the page (e.g. \u003cem\u003e`spy pager \u003c/em\u003eimoc\u003cem\u003e ack 125`\u003c/em\u003e).\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cb\u003eStep 2: Start incident\u003c/b\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eOnce the issue is confirmed, the IMOC starts an incident with the \u003cem\u003e`spy start incident`\u003c/em\u003e command. Spy will then bind the incident to a #war-room Slack channel where all the discussions will take place. This is to focus all incident response discussion in one place and allow all participants to have a shared understanding of what is going on. Without this focus, we can easily end up with independent parallel discussions and lots of confusion about who is doing what and why.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003e\u003cimg src=\\\"//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_9.57.33_AM_large.png?v=1518536096\\\" alt=\\\"\\\" href=\\\"https://cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_9.57.33_AM_large.png?v=1518536096\\\" loading=\\\"lazy\\\"\u003e\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eSpy also automatically notifies the SRM in case they get related merchant calls or chats.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003e\u003cimg src=\\\"//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_10.20.18_AM_large.png?v=1518536156\\\" alt=\\\"\\\" href=\\\"https://cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_10.20.18_AM_large.png?v=1518536156\\\" loading=\\\"lazy\\\"\u003e\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eIf there was any prior ongoing issue, Spy will display that in the #war-room Slack channel.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cb\u003eStep 3: Communication\u003c/b\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eAfter the IMOC starts the incident, communication is crucial to ensure that every stakeholder is aware of the issue. Through the\u003cem\u003e `spy incident \u003c/em\u003etldr\u003cem\u003e`\u003c/em\u003e command, anyone at the company can ask Spy at any given moment what incidents are going on and see who is involved, when it started, and consult a brief summary.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003e\u003cimg src=\\\"//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_4.41.58_PM_large.png?v=1518536199\\\" alt=\\\"\\\" href=\\\"https://cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_4.41.58_PM_large.png?v=1518536199\\\" loading=\\\"lazy\\\"\u003e\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eCommunication with other teams can be done right from the war room. Here again no need to switch context: we can use \u003cem\u003e`spy incident tell`\u003c/em\u003e or \u003cem\u003e`spy page`\u003c/em\u003e command. As for actions, some can be performed right from #war-room for everyone to see, whether it’s a data center failover or a deploy lock. This also prevents confusion around what actions have been performed as they all occur in one space.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eOccasionally we communicate with some third-party services that have a hosted status page and pager, to resolve incidents or update the page.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cb\u003eStep 4: Fix and mitigate\u003c/b\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eSpy can perform different mitigation actions can as it is closely embedded in our infrastructure. Some examples include rebalancing traffic, data center failover, blackholing jobs, locking deploy stacks.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003e\u003cimg src=\\\"//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_10.22.02_AM_large.png?v=1518536439\\\" alt=\\\"\\\" href=\\\"https://cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_10.22.02_AM_large.png?v=1518536439\\\" loading=\\\"lazy\\\"\u003e\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cb\u003eStep 5: Stop incident\u003c/b\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eOnce the fix has been shipped and verified in production, the IMOC can use \u003cem\u003e`spy incident stop` \u003c/em\u003ecommand, which will generate a service disruption document to verify and post once ready.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003e\u003cimg src=\\\"//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-13_at_10.43.35_AM_large.png?v=1518536629\\\" alt=\\\"\\\" href=\\\"https://cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-13_at_10.43.35_AM_large.png?v=1518536629\\\" loading=\\\"lazy\\\"\u003e\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003e\u003cb\u003eStep 6: Document the service disruption\u003c/b\u003e\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eSpy will add any #war-room notes tagged with a notepad emoji (📝) or prefixed with \u003cem\u003e`spy incident note`\u003c/em\u003e\u0026nbsp;command to the service disruption document and post the resulting document in a direct message to the IMOC.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003e\u003cimg src=\\\"//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_10.13.13_AM_large.png?v=1518536813\\\" alt=\\\"\\\" href=\\\"https://cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_10.13.13_AM_large.png?v=1518536813\\\" loading=\\\"lazy\\\"\u003e\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cb\u003eTaking care of IMOCs\u003c/b\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eSpy also sends timely reminders. For instance, if an incident has been ongoing for a while and the status page hasn’t been updated, Spy will send the IMOC a reminder. It also has an on-call fatigue prevention mechanism built-in: if the IMOC has been handling an incident for pre-specified amount of time, Spy will reach out to the IMOC squad to help the current IMOC.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003e\u003cimg src=\\\"//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_4.30.53_PM_large.png?v=1518536958\\\" alt=\\\"\\\" href=\\\"https://cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_4.30.53_PM_large.png?v=1518536958\\\" loading=\\\"lazy\\\"\u003e\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cb\u003eConclusion\u003c/b\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eOur chatbot supports best practices and \\\"streamlines\\\" incident response. Spy binds the incident to a discussion channel where all communications happen, allows status page updates directly from the chat room, keeps notes and records event times, and generates an incident summary. Our bot helps PEs stay focused during the incident, reduces post-incident toil, and supports detailed post-mortems. Spy has become a very important member of our team: always available and ready to help, enabling us to really effectively lead an incident response.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eTo learn more, catch my 2017 talk at SREcon:\u0026nbsp;\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003e\u003c/span\u003e\u003c/p\u003e\u003cdiv class=\\\"relative aspect-video mb-8\\\"\u003e\u003cdiv data-component=\\\"youtube-facade\\\" data-src=\\\"https://www.youtube-nocookie.com/embed/gkmNrpZetGE\\\" class=\\\"absolute inset-0 w-full h-full\\\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cp\u003e\u003c/p\u003e\",\"latestArticles\",[],\"contentNavigationLinks\",[],\"blogHandle\",\"engineering\",\"settings\",{\"_1925\":1926,\"_111\":1927,\"_119\":1928,\"_390\":1929},\"shareImage\",\"https://cdn.shopify.com/s/files/1/0779/4361/articles/Screen_Shot_2018-02-13_at_11.11.53_AM.png?v=1518538342\",\"availableRegions\",[1891,1890,1888,1886,1884,1882,1880,1878,1876,1874,1872,1870,1868,1866,1864,1862,1860,1858],\"popularArticles\",[1892,1893,1894,1895],\"hreflangs\",[1837,1838,1839,1840,1841,1842,1843,1844,1845,1846,1847,1848,1849,1850,1851,1852,1853,1854],\"posContactFormModalContent\",{},\"url\",\"https://shopify.engineering/implementing-chatops-into-our-incident-management-procedure\",\"canonicalUrl\",\"rootDomain\",\"shopify.engineering\",\"experimentVariationId\",\"f_2e2905455a798fa9df40308c0b8b53ee:true,f_77c8150780b85c85656903fc3fada251:true\",\"banditAssignments\",[],\"realCountryCode\",\"US\",\"geoCountryCode\",\"\",\"regionCode\",\"site\",{\"_1802\":43,\"_1807\":97,\"_1813\":97,\"_94\":76,\"_1814\":1815,\"_1816\":-7,\"_1806\":-7,\"_1808\":97,\"_1817\":-7,\"_1818\":-7,\"_1819\":1820,\"_1821\":-7,\"_1822\":1823},\"fileRoutePath\",\"/$article\",\"pricingSite\",\"regions\",[1800],\"enPath\",\"/implementing-chatops-into-our-incident-management-procedure\",\"handle\",\"engineering-article\",\"geoPricingIsEnabled\",false,\"translations\",{\"_97\":98},\"documentDir\",\"ltr\",\"duxEventHandlerEndpoint\",\"pricing\",{\"_67\":68,\"_69\":70,\"_71\":72,\"_73\":74,\"_75\":76,\"_77\":78,\"_79\":80,\"_81\":82,\"_83\":84,\"_85\":86,\"_87\":88,\"_89\":80,\"_90\":76},\"annualDiscountPercentage\",25,\"basicAnnualPrice\",\"\u003cspan\u003e$29.00 USD\u003c/span\u003e\",\"googleCountryOffer\",\"$500 USD\",\"minimumMonthlyPrice\",\"$5\",\"minimumMonthlyPriceCurrency\",\"USD\",\"paidTrialAmount\",\"$1\",\"paidTrialMonths\",3,\"posProPriceUsd\",\"$89\",\"posRetailLocations\",\"1,000\",\"promoAmount\",{\"_92\":93,\"_94\":76,\"_95\":96},\"signupTypes\",[91],\"trialLength\",\"usd\",\"paid_trial_experience\",\"amount\",1,\"currencyCode\",\"currencySymbol\",\"$\",\"en\",{\"_99\":100,\"_101\":102,\"_103\":104,\"_105\":106,\"_107\":108,\"_109\":110},\"shared/global/translations\",{\"_361\":533,\"_534\":535,\"_536\":537,\"_538\":539,\"_540\":541,\"_542\":543,\"_544\":545,\"_546\":547,\"_548\":549,\"_550\":508,\"_551\":552,\"_553\":554,\"_555\":556,\"_557\":558,\"_559\":560,\"_561\":562,\"_563\":564,\"_565\":566,\"_567\":568,\"_569\":570,\"_571\":572,\"_573\":574,\"_575\":576,\"_577\":578,\"_579\":580,\"_581\":582,\"_583\":584,\"_585\":586,\"_587\":588,\"_589\":590,\"_591\":592,\"_593\":594,\"_595\":596,\"_597\":598,\"_599\":600,\"_601\":213,\"_602\":603,\"_604\":605,\"_606\":607,\"_608\":609,\"_610\":611,\"_612\":613,\"_614\":615,\"_616\":617,\"_618\":619,\"_620\":621,\"_622\":623,\"_624\":625,\"_626\":627,\"_628\":629,\"_630\":631,\"_632\":633,\"_634\":635,\"_636\":637,\"_638\":639,\"_640\":641,\"_642\":643,\"_644\":645,\"_646\":647,\"_648\":649,\"_650\":651,\"_652\":653,\"_654\":655,\"_656\":657,\"_658\":659,\"_660\":661,\"_662\":663,\"_664\":665,\"_666\":667,\"_668\":669,\"_670\":671,\"_672\":673,\"_674\":675,\"_676\":677,\"_678\":679,\"_680\":681,\"_682\":683,\"_684\":685,\"_686\":687,\"_688\":689,\"_690\":691,\"_692\":693,\"_694\":695,\"_696\":697,\"_698\":699,\"_700\":701,\"_702\":703,\"_704\":705,\"_706\":707,\"_708\":709,\"_710\":711,\"_712\":713,\"_714\":715,\"_716\":717,\"_718\":719,\"_720\":721,\"_722\":723,\"_724\":725,\"_726\":727,\"_728\":665,\"_729\":730,\"_731\":732,\"_733\":734,\"_735\":736,\"_737\":738,\"_739\":740,\"_741\":742,\"_743\":744,\"_745\":746,\"_747\":748,\"_749\":750,\"_751\":752,\"_753\":754,\"_755\":756,\"_757\":758,\"_759\":760,\"_761\":762,\"_763\":764,\"_765\":766,\"_767\":768,\"_769\":770,\"_771\":772,\"_773\":774,\"_775\":776,\"_777\":778,\"_779\":780,\"_781\":782,\"_783\":784,\"_785\":786,\"_787\":788,\"_789\":790,\"_791\":792,\"_793\":794,\"_795\":796,\"_797\":798,\"_799\":800,\"_801\":802,\"_803\":804,\"_805\":806,\"_807\":800,\"_808\":809,\"_810\":811,\"_812\":813,\"_814\":815,\"_816\":817,\"_818\":819,\"_820\":489,\"_821\":822,\"_823\":824,\"_825\":826,\"_827\":828,\"_829\":830,\"_831\":832,\"_833\":437,\"_834\":835,\"_836\":837,\"_838\":470,\"_839\":613,\"_840\":841,\"_842\":613,\"_843\":844,\"_845\":846,\"_847\":848,\"_849\":850,\"_851\":852,\"_853\":854,\"_855\":856,\"_857\":858,\"_859\":860,\"_861\":862,\"_863\":824,\"_864\":436,\"_865\":866,\"_867\":868,\"_869\":870,\"_871\":872,\"_873\":874,\"_875\":876,\"_877\":846,\"_878\":879,\"_880\":437,\"_881\":835,\"_882\":883,\"_884\":844,\"_885\":886,\"_887\":888,\"_889\":890,\"_891\":892,\"_893\":894,\"_895\":896,\"_897\":898,\"_899\":900,\"_901\":902,\"_903\":904,\"_905\":906,\"_907\":908,\"_909\":910,\"_911\":912,\"_913\":914,\"_915\":916,\"_917\":918,\"_919\":920,\"_921\":922,\"_923\":924,\"_925\":926,\"_927\":928,\"_929\":930,\"_931\":932,\"_933\":890,\"_934\":935,\"_936\":937,\"_938\":939,\"_940\":941,\"_942\":943,\"_944\":945,\"_946\":947,\"_948\":949,\"_950\":951,\"_952\":953,\"_954\":955,\"_956\":957,\"_958\":959,\"_960\":961,\"_962\":963,\"_964\":965,\"_966\":967,\"_968\":969,\"_970\":971,\"_972\":973,\"_974\":975,\"_976\":977,\"_978\":979,\"_980\":981,\"_982\":983,\"_984\":985,\"_986\":987,\"_988\":989,\"_990\":991,\"_992\":993,\"_994\":995,\"_996\":997,\"_998\":999,\"_1000\":1001,\"_1002\":1003,\"_1004\":1005,\"_1006\":1007,\"_1008\":1009,\"_1010\":1011,\"_1012\":1013,\"_1014\":1015,\"_1016\":1017,\"_1018\":1019,\"_1020\":1021,\"_1022\":1023,\"_1024\":1025,\"_1026\":1027,\"_1028\":1029,\"_1030\":1031,\"_1032\":1033,\"_1034\":1035,\"_1036\":1037,\"_1038\":1039,\"_1040\":1041,\"_1042\":1043,\"_1044\":1045,\"_1046\":1047,\"_1048\":1049,\"_1050\":1051,\"_1052\":1053,\"_1054\":1055,\"_1056\":1057,\"_1058\":1059,\"_1060\":1061,\"_1062\":1063,\"_1064\":1065,\"_1066\":1067,\"_1068\":1069,\"_1070\":1071,\"_1072\":1073,\"_1074\":1075,\"_1076\":1077,\"_1078\":1079,\"_1080\":1081,\"_1082\":1083,\"_1084\":1085,\"_1086\":1087,\"_1088\":1089,\"_1090\":1091,\"_1092\":1093,\"_1094\":1095,\"_1096\":1097,\"_1098\":1099,\"_1100\":1101,\"_1102\":1103,\"_1104\":1105,\"_1106\":1107,\"_1108\":1109,\"_1110\":1111,\"_1112\":1113,\"_1114\":1115,\"_1116\":1117,\"_1118\":1119,\"_1120\":1121,\"_1122\":1123,\"_1124\":1125,\"_1126\":437,\"_1127\":844,\"_1128\":1129,\"_1130\":1129,\"_1131\":1132,\"_1133\":1134,\"_1135\":1136,\"_1137\":1138,\"_1139\":1140,\"_1141\":1142,\"_1143\":1144,\"_1145\":1146,\"_1147\":1148,\"_1149\":1150,\"_1151\":1152,\"_1153\":1154,\"_1155\":1156,\"_1157\":1158,\"_1159\":916,\"_1160\":1161,\"_1162\":1163,\"_1164\":1165,\"_1166\":1167,\"_1168\":1169,\"_1170\":1171,\"_1172\":1173,\"_1174\":1175,\"_1176\":1177,\"_1178\":1179,\"_1180\":1181,\"_1182\":1183,\"_1184\":1185,\"_1186\":1187,\"_1188\":1189,\"_1190\":1191,\"_1192\":1193,\"_1194\":1195,\"_1196\":1197,\"_1198\":1199,\"_1200\":1201,\"_1202\":1203,\"_1204\":1205,\"_1206\":1207,\"_1208\":1209,\"_1210\":1211,\"_1212\":1213,\"_1214\":1215,\"_1216\":1217,\"_1218\":1219,\"_1220\":1221,\"_1222\":1223,\"_1224\":1225,\"_1226\":1227,\"_1228\":1229,\"_1230\":1231,\"_1232\":1233,\"_1234\":1235,\"_1236\":1237,\"_1238\":1239,\"_1240\":1241,\"_1242\":1243,\"_1244\":1245,\"_1246\":1247,\"_1248\":1249,\"_1250\":1243,\"_1251\":1252,\"_1253\":489,\"_1254\":1255,\"_1256\":850,\"_1257\":1258,\"_1259\":1260,\"_1261\":1262,\"_1263\":1264,\"_1265\":1266,\"_1267\":1268,\"_1269\":1270,\"_1271\":1272,\"_1273\":1274,\"_1275\":1276,\"_1277\":1278,\"_1279\":1280,\"_1281\":1282,\"_1283\":1284,\"_1285\":1286,\"_1287\":1288,\"_1289\":1290,\"_1291\":1292,\"_1293\":1294,\"_1295\":1296,\"_1297\":1298,\"_1299\":1300,\"_1301\":1302,\"_1303\":1304,\"_1305\":1306,\"_1307\":1308,\"_1309\":1310,\"_1311\":1312,\"_1313\":1314,\"_1315\":1316,\"_1317\":1318,\"_1319\":1320,\"_1321\":1322,\"_1323\":1324,\"_1325\":1326,\"_1327\":1328,\"_1329\":1330,\"_1331\":1332,\"_1333\":1334,\"_1335\":1336,\"_1337\":1338,\"_1339\":1340,\"_1341\":1342,\"_1343\":1344,\"_1345\":1111,\"_1346\":1347,\"_1348\":1349,\"_1350\":1215,\"_1351\":1352,\"_1353\":1354,\"_1355\":1356,\"_1357\":1358,\"_1359\":1360,\"_1361\":1362,\"_1363\":1099,\"_1364\":854,\"_1365\":1366,\"_1367\":854,\"_1368\":852,\"_1369\":1370,\"_1371\":1372,\"_1373\":1374,\"_1375\":1376,\"_1377\":470,\"_1378\":1379,\"_1380\":1381,\"_1382\":1383,\"_1384\":1385,\"_1386\":1387,\"_1388\":1389,\"_1390\":1391,\"_1392\":1393,\"_1394\":1395,\"_1396\":1397,\"_1398\":1399,\"_1400\":1401,\"_1402\":1403,\"_1404\":1405,\"_1406\":1407,\"_1408\":1409,\"_1410\":858,\"_1411\":1412,\"_1413\":1414,\"_1415\":1416,\"_1417\":918,\"_1418\":1419,\"_1420\":1421,\"_1422\":1423,\"_1424\":1425,\"_1426\":1427,\"_1428\":1429,\"_1430\":1431,\"_1432\":1433,\"_1434\":914,\"_1435\":45,\"_1436\":1437,\"_1438\":1439,\"_1440\":1441,\"_1442\":1443,\"_1444\":1445,\"_1446\":1447,\"_1448\":1449,\"_1450\":1451,\"_1452\":1453,\"_1454\":1455,\"_1456\":1457,\"_1458\":1459,\"_1460\":854,\"_1461\":1462,\"_1463\":1464,\"_1465\":1466,\"_1467\":1468,\"_1469\":1470,\"_1471\":1472,\"_1473\":1474,\"_1475\":828,\"_1476\":1477,\"_1478\":1479,\"_1480\":1481,\"_1482\":1483,\"_1484\":1485,\"_1486\":1487,\"_1488\":1489,\"_1490\":1491,\"_1492\":1493,\"_1494\":1495,\"_1496\":1497,\"_1498\":1499,\"_1500\":1501,\"_1502\":1503,\"_1504\":1505,\"_1506\":1507,\"_1508\":1509,\"_1510\":1511,\"_1512\":437,\"_1513\":1514,\"_1515\":1516,\"_1517\":1518,\"_1519\":1520,\"_1521\":1522,\"_1523\":1524,\"_1525\":1526,\"_1527\":941,\"_1528\":1529,\"_1530\":1531,\"_1532\":1533,\"_1534\":1535,\"_1536\":1537,\"_1538\":1539,\"_1540\":1541,\"_1542\":1543,\"_1544\":1545,\"_1546\":1547,\"_1548\":1549,\"_1550\":1551,\"_1552\":1001,\"_1553\":1007,\"_1554\":1555,\"_1556\":1557,\"_1558\":1559,\"_1560\":1561,\"_1562\":1563,\"_1564\":1565,\"_1566\":1567,\"_1568\":1569,\"_1570\":1571,\"_1572\":1573,\"_1574\":1575,\"_1576\":1577,\"_1578\":1455,\"_1579\":1580,\"_1581\":1582,\"_1583\":1584,\"_1585\":1586,\"_1587\":1588,\"_1589\":924,\"_1590\":1081,\"_1591\":1592,\"_1593\":1520,\"_1594\":1095,\"_1595\":1107,\"_1596\":1121,\"_1597\":1598,\"_1599\":1600,\"_1601\":1136,\"_1602\":1603,\"_1604\":1605,\"_1606\":1607,\"_1608\":1609,\"_1610\":1611,\"_1612\":1613,\"_1614\":1615,\"_1616\":1617,\"_1618\":1619,\"_1620\":1621,\"_1622\":1489,\"_1623\":1624,\"_1625\":1626,\"_1627\":1491,\"_1628\":1095,\"_1629\":1284,\"_1630\":1631,\"_1632\":1633,\"_1634\":1635,\"_1636\":1495,\"_1637\":1298,\"_1638\":1639,\"_1640\":1491,\"_1641\":1642,\"_1643\":1644,\"_1645\":1646,\"_1647\":1123,\"_1648\":1501,\"_1649\":1336,\"_1650\":1338,\"_1651\":846,\"_1652\":943,\"_1653\":1654,\"_1655\":1592,\"_1656\":1657,\"_1658\":854,\"_1659\":1660,\"_1661\":1662,\"_1663\":1664,\"_1665\":1666,\"_1667\":1668,\"_1669\":1389,\"_1670\":1518,\"_1671\":1672,\"_1673\":1674,\"_1675\":1676,\"_1677\":1678,\"_1679\":1518,\"_1680\":1681,\"_1682\":1683,\"_1684\":1685,\"_1686\":1687,\"_1688\":1689,\"_1690\":45,\"_1691\":1692,\"_1693\":1694,\"_1695\":965,\"_1696\":1697,\"_1698\":1015,\"_1699\":1700,\"_1701\":1702,\"_1703\":1704,\"_1705\":1706,\"_1707\":1708,\"_1709\":1710,\"_1711\":1119,\"_1712\":1134,\"_1713\":1575,\"_1714\":1715,\"_1716\":1717,\"_1718\":1719,\"_1720\":1229,\"_1721\":1245,\"_1722\":1723,\"_1724\":1300,\"_1725\":1726,\"_1727\":1509,\"_1728\":1729,\"_1730\":1639,\"_1731\":1732,\"_1733\":1734,\"_1735\":1736,\"_1737\":1429,\"_1738\":1739,\"_1740\":1741,\"_1742\":1743,\"_1744\":1745,\"_1746\":1747,\"_1748\":1749,\"_1750\":1749,\"_1751\":1215,\"_1752\":1215,\"_1753\":1754,\"_1755\":1756,\"_1757\":1758,\"_1759\":1760,\"_1761\":1762,\"_1763\":1764,\"_1765\":1745,\"_1766\":1747,\"_1767\":1768,\"_1769\":1768,\"_1770\":1771,\"_1772\":1771,\"_1773\":1774,\"_1775\":1774,\"_1776\":1777,\"_1778\":1764,\"_1779\":1780,\"_1781\":1782,\"_1783\":1784,\"_1785\":1786,\"_1787\":1788,\"_1789\":1790,\"_1791\":1792,\"_1793\":1794,\"_1795\":574,\"_1796\":1797,\"_1798\":1799},\"pages/blogSubNav\",{\"_361\":362,\"_504\":505},\"pages/$article/content\",{\"_361\":362,\"_363\":364,\"_121\":365,\"_366\":367,\"_368\":369,\"_370\":371,\"_372\":373,\"_374\":375,\"_376\":377,\"_378\":379,\"_380\":381,\"_119\":382,\"_15\":383,\"_384\":385,\"_386\":387,\"_388\":389,\"_390\":391},\"pages/$article/guide_ctas\",{\"_129\":130},\"pages/$article/settings\",{\"_111\":112},\"pages/$article/translations\",{},\"images\",{\"_113\":114,\"_115\":116,\"_117\":118,\"_119\":120,\"_121\":122},\"guides-modal-default\",\"https://cdn.shopify.com/shopifycloud/brochure/assets/content-marketing/blog/guides/default-popup-small-507879111d55acdd759b202ab869ea0b8bd0f4af9f9aaa7c540efe59b8e046db.jpg\",\"guides-modal-photography\",\"https://cdn.shopify.com/b/shopify-brochure2-assets/1bd4b072dc187a774c9af650d0f16d0b.jpg\",\"guides-modal-seo\",\"https://cdn.shopify.com/b/shopify-brochure2-assets/63781344c2932de6e553a54b02291692.jpg\",\"subscription\",{\"_126\":127},\"articleNavigation\",{\"_123\":124},\"banner\",{\"_97\":125},\"https://cdn.shopify.com/b/shopify-brochure2-assets/e570727d45209fec56c410f802faa0fe.png\",\"image\",{\"_97\":128},\"https://cdn.shopify.com/b/shopify-brochure2-assets/c46f986d892538f4b0a15f25692330f7.png?originalWidth=1420\u0026originalHeight=1040\",\"guidesCta\",{\"_131\":132,\"_133\":134,\"_135\":136,\"_137\":138,\"_139\":140,\"_141\":142,\"_143\":144,\"_145\":146,\"_147\":148,\"_149\":150,\"_151\":152,\"_153\":154,\"_155\":156,\"_157\":158,\"_159\":160,\"_161\":162,\"_163\":164,\"_165\":166,\"_167\":168,\"_169\":170,\"_171\":172,\"_173\":174,\"_175\":176,\"_177\":178,\"_179\":180,\"_181\":182,\"_183\":184,\"_185\":186,\"_187\":188,\"_189\":190,\"_191\":192,\"_193\":194,\"_195\":196,\"_197\":198,\"_199\":200,\"_201\":202,\"_203\":204,\"_205\":206,\"_207\":208,\"_209\":210,\"_211\":212,\"_213\":214},\"modal\",{\"_357\":358,\"_359\":360},\"analytics\",{\"_215\":354,\"_217\":355,\"_219\":225,\"_221\":356},\"back_to_school\",{\"_215\":351,\"_217\":352,\"_219\":229,\"_221\":353,\"_231\":247},\"brand_storytelling\",{\"_215\":347,\"_217\":348,\"_219\":349,\"_221\":350},\"branding\",{\"_215\":344,\"_217\":345,\"_219\":220,\"_221\":346},\"businessplan\",{\"_215\":341,\"_217\":342,\"_219\":241,\"_221\":343},\"businessideas\",{\"_215\":337,\"_217\":338,\"_219\":339,\"_221\":340},\"case_studies\",{\"_215\":333,\"_217\":334,\"_219\":335,\"_221\":336},\"competitive\",{\"_215\":330,\"_217\":331,\"_219\":241,\"_221\":332},\"copywriting\",{\"_215\":327,\"_217\":328,\"_219\":220,\"_221\":329},\"customerservice\",{\"_215\":325,\"_217\":326,\"_219\":220,\"_221\":222},\"design\",{\"_215\":322,\"_217\":323,\"_219\":220,\"_221\":324},\"email\",{\"_215\":319,\"_217\":320,\"_219\":225,\"_221\":321},\"googleshopping\",{\"_215\":316,\"_217\":317,\"_219\":225,\"_221\":318},\"hiring_questions\",{\"_215\":313,\"_217\":314,\"_219\":311,\"_221\":315,\"_231\":247},\"holiday_selling_2021\",{\"_215\":309,\"_217\":310,\"_219\":311,\"_221\":312,\"_231\":247},\"inventory_templates\",{\"_215\":305,\"_217\":306,\"_219\":245,\"_221\":307,\"_231\":308},\"opening_closing_checklist\",{\"_215\":302,\"_217\":303,\"_219\":259,\"_221\":304,\"_231\":247},\"optimization\",{\"_215\":299,\"_217\":300,\"_219\":220,\"_221\":301},\"parentpreneur\",{\"_215\":295,\"_217\":296,\"_219\":297,\"_221\":298},\"phonecases\",{\"_215\":291,\"_217\":292,\"_219\":293,\"_221\":294},\"photography\",{\"_215\":288,\"_217\":289,\"_219\":230,\"_221\":290},\"popup_guide\",{\"_215\":285,\"_217\":286,\"_219\":230,\"_221\":287,\"_231\":247},\"pressrelease\",{\"_215\":282,\"_217\":283,\"_219\":241,\"_221\":284},\"productivity\",{\"_215\":279,\"_217\":280,\"_219\":220,\"_221\":281},\"products\",{\"_215\":275,\"_217\":276,\"_219\":277,\"_221\":278},\"retail_marketing\",{\"_215\":272,\"_217\":273,\"_219\":230,\"_221\":274,\"_231\":247},\"retention_audit\",{\"_215\":268,\"_217\":269,\"_219\":270,\"_221\":271,\"_231\":247},\"rotating_schedules\",{\"_215\":265,\"_217\":266,\"_219\":245,\"_221\":267,\"_231\":247},\"seo\",{\"_215\":262,\"_217\":263,\"_219\":259,\"_221\":264},\"sfn_interview\",{\"_215\":260,\"_217\":261,\"_219\":259,\"_221\":236},\"sfn_outsource\",{\"_215\":257,\"_217\":258,\"_219\":259,\"_221\":236},\"shipping\",{\"_215\":253,\"_217\":254,\"_219\":255,\"_221\":256,\"_231\":232},\"social\",{\"_215\":248,\"_217\":249,\"_219\":250,\"_221\":252,\"_231\":232},\"social_template\",{\"_215\":248,\"_217\":249,\"_219\":250,\"_221\":251,\"_231\":247},\"store_layouts\",{\"_215\":243,\"_217\":244,\"_219\":245,\"_221\":246,\"_231\":247},\"swot\",{\"_215\":239,\"_217\":240,\"_219\":241,\"_221\":242},\"tax_season\",{\"_215\":237,\"_217\":238,\"_219\":229,\"_221\":230,\"_231\":232},\"trust\",{\"_215\":233,\"_217\":234,\"_219\":235,\"_221\":236},\"ttp_guide\",{\"_215\":227,\"_217\":228,\"_219\":229,\"_221\":230,\"_231\":232},\"twitter\",{\"_215\":223,\"_217\":224,\"_219\":225,\"_221\":226},\"video\",{\"_215\":216,\"_217\":218,\"_219\":220,\"_221\":222},\"heading\",\"Free Reading List: Video Marketing Tips and Tricks\",\"content\",\"Video marketing is a powerful tool you can’t afford to ignore. Get a crash course with our free, curated list of high-impact articles.\",\"cta\",\"Get the free reading list\",\"modal_headline\",\"Get the reading list delivered right to your inbox.\",\"Free Ebook: Twitter Marketing for Small Businesses\",\"This guide will teach you everything from earning your first followers to getting the most out of Twitter’s advertising platform. Claim your free download to get instant access.\",\"Get the free ebook now\",\"Get Twitter Marketing for Small Businesses delivered right to your inbox.\",\"Free Download: The Online Sellers Guide to In-Person Sales\",\"In-person selling is more approachable than ever. This guide covers why selling in person can reduce customer acquisition costs, how to build a plan that will scale with your business, and tactics from ecommerce sellers that made the move successfully.\",\"Get your free guide now\",\"Get your free guide\",\"modal_success_heading\",\"Thanks for downloading. You'll receive your free copy soon. In the meantime, start building your store with a free trial of Shopify.\",\"Free: Shopify Store Trust Checklist\",\"Shopify’s research team conducted a series of in-depth interviews with North American shoppers to learn how customer trust is formed in online stores. This checklist is a summary of their findings, created to help business owners understand what essential aspects of their online store experience creates trust among customers, along with the trust-busting mistakes to avoid.\",\"Get the checklist now\",\"Get the checklist delivered right to your inbox.\",\"Free Download: 6 Steps to Get Your Business Ready for Tax Season\",\"Tax season is stressful for any business owner. This guide will go through the process of filing income taxes in America and provide you with checklists to keep you organized and prepared.\",\"Free: SWOT Analysis Template\",\"Get your free SWOT Analysis Template. Use this free PDF to future-proof your business by identifying your strengths, weaknesses, opportunities, and threats.\",\"Get the template now\",\"Get the SWOT analysis template delivered right to your inbox.\",\"Free Download: Store Layout Templates\",\"Trying to decide which layout is right for your store? Download these free templates to learn which types of layouts work best for different industries and draw inspiration for your own design.\",\"Get your free templates\",\"Get these free templates delivered right to your inbox.\",\"Thanks for downloading. You'll receive your free download soon. In the meantime, start building your store with a free trial of Shopify.\",\"Social media strategy and planning templates\",\"Ready to get started with your social media strategy? These free, customizable templates give you tools to plan and execute a strategy that connects you with your target audience while keeping your content calendar organized.\",\"Download now and start seeing results\",\"Get social media strategy and planning templates delivered right to your inbox.\",\"Get your social media strategy and planning templates delivered right to your inbox.\",\"The Shopify guide to shipping and fulfillment\",\"Boost customer satisfaction while driving sales growth for your ecommerce business with an effective shipping and fulfillment strategy. Use this guide to create a plan that covers all aspects of shipping and fulfillment, from how much to charge your customers to choosing the right fulfillment method.\",\"Download now and start optimizing your operations\",\"Get our shipping and fulfillment guide delivered right to your inbox.\",\"Free Checklist: Are You Ready to Outsource Your Fulfillment?\",\"Trusting a third party logistics (3PL) provider with your inventory and your customer experience is a significant investment. These questions will help determine if it's time to outsource your fulfillment and take the next step in growing your business.\",\"Get the free checklist\",\"Free Checklist: How to Interview a Third Party Logistics Provider\",\"Outsourcing fulfillment is a significant investment. Here’s a checklist of questions to ask in preparation of choosing the right fulfillment provider and transitioning your business.\",\"Free Download: SEO Checklist\",\"Want to rank higher in search results? Get access to our free, checklist on search engine optimization.\",\"Get our SEO Checklist delivered right to your inbox.\",\"Free Download: Rotating Schedules Templates\",\"Struggling to keep your stores fully staffed and running smoothly? Consider implementing a rotating shift program. Download these free templates to find the right schedule for you and your employees.\",\"Get these free Rotating Schedules Templates delivered right to your inbox.\",\"Free Download: Retention Audit Checklist\",\"Struggling with customer retention? This free checklist will help you build a retention mindset throughout your company by auditing retention strategies at every level of your business.\",\"Get your free checklist\",\"Get this free Retention Audit Checklist PDF delivered right to your inbox.\",\"Free Download: From Clicks to Customers: How to Measure Your Retail Store's Marketing Success\",\"Every marketing campaign is an investment of your time, energy, and money. Do you ever wonder if your efforts were worth it? Read this guide and build a framework to plan, track, and measure the success of retail marketing campaigns.\",\"Get your free Retail Marketing Success PDF delivered right to your inbox.\",\"Free Guide: How to Find a Profitable Product to Sell Online\",\"Excited about starting a business, but not sure where to start? This free, comprehensive guide will teach you how to find great, newly trending products with high sales potential.\",\"Get the free guide\",\"Get How To Find A Product To Sell Online: The Definitive Guide PDF delivered right to your inbox.\",\"Free Reading List: Ecommerce Motivation\",\"Having trouble focusing on growing your small business? Get access to our free, curated list of high-impact productivity articles.\",\"Get our Ecommerce Motivation reading list delivered right to your inbox.\",\"Free: Press Release Template\",\"To help you get started, we put together this template to help you structure your story using a common press release format. You can replace each component with your own information and adapt it according to your needs.\",\"Get the press release template delivered right to your inbox.\",\"Pop-Up Shop Quickstart Guide\",\"Thinking about hosting a Pop-Up Shop? This free guide includes 3 checklists that help frame what you're looking to accomplish through your Pop-Up Shop, different types of Pop-Up Shops, and design ideas to help get you started.\",\"Get your Pop-Up Shop Quickstart Guide delivered right to your inbox.\",\"Free Guide: DIY Product Photography\",\"Learn how to take beautiful product photos on a budget with our free, comprehensive video guide.\",\"Get our DIY Guide to Beautiful Product Photography delivered right to your inbox.\",\"Get a Free Phone Case Business in a Box\",\"Free high quality phone case stock photos and a list of some places you can look to find phone case suppliers to work with.\",\"Download startup bundle\",\"Get our startup bundle delivered right to your inbox.\",\"Playbook for the Aspiring Parentpreneur\",\"Unleash your creativity and turn your passion into a thriving business with our Parentprenuer brainstorming guide. Discover new ideas, set realistic goals, and map out a plan for success.\",\"Download now\",\"Check your inbox for your copy of the Parentpreneur Playbook.\",\"Free Reading List: Conversion Optimization for Beginners\",\"Turn more website visitors into customers by getting a crash course in conversion optimization. Access our free, curated list of high-impact articles below.\",\"Get our Conversion Optimization reading list delivered right to your inbox.\",\"Free Checklist for Opening and Closing Your Store\",\"Ensure all protocols and procedures are completed each time you open and close your store with this handy, easy-to-follow checklist.\",\"Get our Opening and Closing Checklist delivered right to your inbox.\",\"5 Free Templates to Better Understand Your Inventory\",\"Calculate your businesses cost of goods sold, sell through rate, inventory turnover, saftey stock, economic order quantity, or reorder point with ease using these custom templates. (No math required!)\",\"Get your Inventory Templates delivered right to your inbox.\",\"Thanks for downloading. You'll receive your free templates soon. In the meantime, start building your store with a free trial of Shopify.\",\"Free Holiday Selling Guide: Top 10 Holiday Selling Tips for Retail Stores\",\"A sale can happen anywhere, at any time. Use our top 10 strategies to unify your customer touch points and set yourself up for holiday success.\",\"Get the free guide now\",\"Get our Top 10 Holiday Selling Tips for Retail Stores delivered right to your inbox.\",\"Free Guide: Interview Questions for Hiring Retail Employees\",\"Hiring competent retail employees is becoming increasingly challenging. Use this guide to ask the right questions during the interview process to ensure you hire the right people for your store.\",\"Get our guide Interview Questions for Hiring Retail Employees delivered right to your inbox.\",\"Free Ebook: Google Shopping for Small Businesses\",\"Google Shopping ads are one of the leading traffic sources that can give you the ultimate edge. Discover this hidden gem often overlooked by your competition.\",\"Get Google Shopping for Small Businesses delivered right to your inbox.\",\"Free Ebook: How to Grow Your Ecommerce Business with Email Marketing\",\"Whether you're just getting started or dreaming up your next big campaign, this email marketing guide will provide you with insights and ideas to help your business grow.\",\"Get our Email Marketing guide delivered right to your inbox.\",\"Free Reading List: Online Store Design Tips\",\"Your online store's appearance can have a big impact sales. Unleash your inner designer with our free, curated list of high-impact articles.\",\"Get our Store Design reading list delivered right to your inbox.\",\"Free Reading List: Customer Service Strategies\",\"Focusing on customer service can turn negative interactions into positive reviews (and repeat customers). Learn how with our free, curated list of high-impact articles.\",\"Free Reading List: Copywriting Tactics for Entrepreneurs\",\"Is your website content costing you sales? Learn how to improve your website copy with our free, curated list of high-impact articles.\",\"Get our Copywriting Tactics reading list delivered right to your inbox.\",\"Free: Competitive Analysis Template\",\"By evaluating the strengths and weaknesses of your competition, you can begin to formulate how to give your company an advantage. Download our free competitive analysis template and gain an edge over the competition.\",\"Get the competitive analysis template delivered right to your inbox.\",\"Free Video Series: Ecommerce Inspiration\",\"Feeling uninspired? Watch some of the world's most successful entrepreneurs share their best advice for new business owners.\",\"Get the free video series\",\"Get our Ecommerce Inspiration video series delivered right to your inbox.\",\"Free: The Big List of Business Ideas\",\"To help you find the inspiration to start, we compiled a list of 100+ in-demand business ideas, broken down into categories like fitness, apparel, and gaming.\",\"Get the list now\",\"Get the big list of business ideas delivered right to your inbox.\",\"Free: Business Plan Template\",\"Business planning is often used to secure funding, but plenty of business owners find writing a plan valuable, even if they never work with an investor. That’s why we put together a free business plan template to help you get started.\",\"Get the business plan template delivered right to your inbox.\",\"Free Reading List: How to Brand Your Business\",\"A great brand can help your products stand out from the crowd. Get a crash course in small business branding with our free, curated list of high-impact articles.\",\"Get our Branding reading list delivered right to your inbox.\",\"Free Worksheet: Brand Storytelling\",\"Use this handy exercise as a guide to help you craft a compelling brand story and build a loyal audience through the power of storytelling.\",\"Get the worksheet\",\"Get our free Brand Storytelling Worksheet delivered right to your inbox.\",\"The Complete Guide to Back to School Marketing for Retail Stores\",\"Get an update on this year's back to school marketing trends, compare strategies, and build out your plan with this short guide.\",\"Get the Back to School Marketing Guide delivered right to your inbox.\",\"Free Ebook: Ecommerce Analytics for Beginners\",\"Find out which metrics are the key to establishing and growing your online business. This free guide is the perfect first step in learning about ecommerce analytics.\",\"Get Ecommerce Analytics for Beginners delivered right to your inbox.\",\"subhead\",\"Almost there: please enter your email below to gain instant access.\",\"disclaimer\",\"We'll also send you updates on new educational guides and success stories from the Shopify newsletter. We hate SPAM and promise to keep your email address safe.\",\"argoPlaceholder\",\"0\",\"articleMetaTitle\",\"{{title}} ({{year}})\",{\"_477\":499,\"_500\":501,\"_502\":503,\"_495\":404},\"subscribeBanner\",{\"_477\":409,\"_491\":492,\"_493\":494,\"_495\":414,\"_496\":497,\"_417\":498},\"popularPostsTitle\",\"Most Read\",\"subscribe\",{\"_4\":479,\"_129\":480},\"readMoreLinks\",{\"_477\":478},\"partnersSignup\",{\"_460\":461,\"_462\":463,\"_464\":465,\"_466\":467},\"authorSection\",{\"_398\":443,\"_444\":445,\"_446\":447,\"_448\":449,\"_450\":451,\"_452\":453,\"_454\":455,\"_456\":457,\"_458\":459},\"articleHeader\",{\"_440\":441},\"hero\",{\"_215\":421,\"_357\":422,\"_126\":423,\"_402\":424,\"_425\":426,\"_427\":428,\"_429\":430},{\"_215\":409,\"_357\":410,\"_359\":411,\"_412\":413},{\"_215\":405,\"_406\":407},\"workAnywhere\",{\"_398\":399,\"_400\":401,\"_402\":403},\"textCta\",{\"_394\":395,\"_396\":397},\"rightColSideBannerTitle\",\"The point of sale for every sale.\",\"citation\",{\"_392\":393},\"header\",\"Sources\",\"href\",\"{{deeplinkFreeTrial}}\",\"text\",\"Click here to start selling online now with Shopify\",\"headingHtml\",\"Work from anywhere \u003cbr/\u003e with Shopify\",\"subheadHtml\",\"See our open roles and learn more about our digital by design culture.\",\"button\",{\"_396\":404},\"See open roles\",\"Latest from Shopify\",\"link\",{\"_396\":408},\"See all\",\"Keep up with the latest from Shopify\",\"Subscribe to our blog and get free ecommerce tips, inspiration, and resources delivered directly to your inbox.\",\"Unsubscribe anytime. By entering your email, you agree to receive marketing emails from Shopify.\",\"conversionCta\",{\"_396\":414,\"_415\":416,\"_417\":418},\"Subscribe\",\"emailPlaceholder\",\"Email here\",\"successMessage\",{\"_215\":419,\"_13\":420},\"Thank you for subscription!\",\"Check your email for instructions.\",\"Start selling with Shopify today\",\"Start your free trial with Shopify today—then use these resources to guide you through every step of the process.\",{\"_438\":439},{\"_394\":395,\"_396\":437},\"lightButton\",{\"_394\":435,\"_396\":436},\"treatment\",{\"_215\":433,\"_357\":434},\"treatment_2\",{\"_215\":431,\"_357\":432},\"LET’S MAKE YOUR BUSINESS HAPPEN\",\"Shopify has everything you need to build, run, and grow a business. All you've got to do is start.\",\"The next big entrepreneur: you\",\"Try Shopify for free, and explore all the tools and services you need to start, run, and grow your business.\",\"/\",\"Learn more\",\"Start free trial\",\"alt\",\"My alt.\",\"blogLink\",{\"_396\":442},\"blog\",\"Share article\",\"updatedOn\",\"Updated on\",\"publishedOn\",\"Published on\",\"updatedOnByAuthor\",\"Updated by \u003cwrapper\u003e\u003cname\u003e{{authorName}}\u003c/name\u003e\u003c/wrapper\u003e on \u003cupdatedDate\u003e{{updatedOn}}\u003cupdatedDate/\u003e\",\"byAuthor\",\"by \u003cwrapper\u003e\u003cname\u003e{{authorName}}\u003c/name\u003e\u003c/wrapper\u003e\",\"byAuthor_withLink\",\"by \u003cwrapper\u003e\u003curl\u003e\u003cname\u003e{{authorName}}\u003c/name\u003e\u003c/url\u003e\u003c/wrapper\u003e\",\"reviewed\",\"Reviewed\",\"written\",\"Written\",\"timeToRead\",\"{{minutes}} minute read\",\"service_partner\",{\"_215\":468,\"_217\":476,\"_219\":470},\"app_developer\",{\"_215\":474,\"_217\":475,\"_219\":470},\"affiliate\",{\"_215\":471,\"_217\":472,\"_219\":473},\"general\",{\"_215\":468,\"_217\":469,\"_219\":470},\"Grow your business with the Shopify Partner Program\",\"Whether you offer web design and development services or want to build apps for the Shopify App Store, the Shopify Partner Program will set you up for success. Join for free and access revenue share opportunities, developer preview environments, and educational resources.\",\"Sign up\",\"Become a Shopify Affiliate\",\"Use your voice to inspire entrepreneurship around the world. Whether you’re an existing partner or new to the Shopify Partner Program, apply to become a Shopify Affiliate and earn commission by referring your audience to Shopify.\",\"Apply now\",\"Build apps for Shopify merchants\",\"Whether you want to build apps for the Shopify App Store, offer custom app development services, or are looking for ways to grow your user base, the Shopify Partner Program will set you up for success. Join for free and access educational resources, developer preview environments, and recurring revenue share opportunities.\",\"Whether you offer marketing, customization, or web design and development services, the Shopify Partner Program will set you up for success. Join for free and access revenue share opportunities, tools to grow your business, and a passionate commerce community.\",\"title\",\"Read more\",{\"_155\":490},{\"_481\":482,\"_483\":484,\"_485\":486},\"submit\",\"Get updates\",\"success\",{\"_215\":487,\"_357\":488,\"_219\":489},\"error\",\"Something went wrong, please try again later!\",\"Thanks for subscribing.\",\"You’ll start receiving free tips and resources soon. In the meantime, start building your store with a free trial of Shopify.\",\"Get started\",\"Please enter a valid email address.\",\"description\",\"Get free ecommerce tips, inspiration, and resources delivered directly to your inbox.\",\"placeholder\",\"Enter email\",\"buttonText\",\"hint\",\"By entering your email, you agree to receive marketing emails from Shopify.\",{\"_215\":419,\"_13\":420},\"On this page\",\"bannerTitle\",\"Engineering at Shopify\",\"bannerSubTitle\",\"We’re hiring\",\"subNav\",{\"_477\":506,\"_507\":508,\"_509\":510,\"_511\":512,\"_513\":514},\"Engineering Blog\",\"pageTitle\",\"Menu\",\"overviewText\",\"Homepage\",\"links\",{\"_521\":522,\"_523\":524,\"_525\":526,\"_527\":528,\"_529\":530,\"_531\":532},\"subLinks\",{\"_515\":516,\"_517\":518,\"_519\":520},\"security\",\"Security\",\"data-science-engineering\",\"Data Science Engineering\",\"culture\",\"Culture\",\"ai-machine-learning\",\"AI \u0026 Machine Learning\",\"infrastructure\",\"Infrastructure\",\"mobile\",\"Mobile\",\"developer-tooling\",\"Developer Tooling\",\"latest\",\"Latest\",\"moreTopics\",\"More topics\",\"3\",\"ariaLabels.close\",\"Close\",\"ariaLabels.carousel.name\",\"carousel\",\"ariaLabels.carousel.slide\",\"slide\",\"ariaLabels.carousel.xOfY\",\"{x} of {y}\",\"ariaLabels.footer.regionsNav\",\"Region Navigation\",\"ariaLabels.footer.regionsClose\",\"Close Region Navigation\",\"ariaLabels.footer.newWindow\",\"Opens an external site in a new window\",\"ariaLabels.footer.backToTop\",\"Back to the top\",\"ariaLabels.header.mobileNavMenu\",\"ariaLabels.header.mainNav\",\"Main\",\"ariaLabels.header.secondaryNav\",\"Related pages\",\"ariaLabels.header.skipToContent\",\"Skip to Content\",\"ariaLabels.headerLight.dismissIcon\",\"Dismiss banner\",\"ariaLabels.learnMore\",\"Learn more about {title}\",\"ariaLabels.link.external\",\"External source: \",\"ariaLabels.link.newWindow\",\" (Opens in a new window)\",\"ariaLabels.link.label\",\"{{external}}{{title}}{{newWindow}}\",\"ariaLabels.logoGroup\",\"Logos\",\"ariaLabels.modal.close\",\"Close modal\",\"ariaLabels.modal.pip\",\"Picture in picture\",\"ariaLabels.next\",\"Next\",\"ariaLabels.previous\",\"Previous\",\"ariaLabels.current\",\"Current\",\"ariaLabels.pagination.previous\",\"Previous page\",\"ariaLabels.pagination.next\",\"Next page\",\"ariaLabels.slideshow.xOfY\",\"Go to slide {{x}} of {{y}}\",\"ariaLabels.shopifyLogo\",\"Shopify logo\",\"ariaLabels.shopifyPartnersLogo\",\"Shopify partners logo\",\"ariaLabels.testimonial.controls\",\"Navigate testimonials\",\"ariaLabels.testimonial.plural\",\"Testimonials\",\"ariaLabels.testimonial.next\",\"Next Testimonial\",\"ariaLabels.testimonial.previous\",\"Previous Testimonial\",\"ariaLabels.testimonial.play\",\"Play Testimonial\",\"ariaLabels.testimonial.pause\",\"Pause Testimonial\",\"ariaLabels.videoModal\",\"ariaLabels.video.play\",\"Play video\",\"ariaLabels.video.pause\",\"Pause video\",\"ariaLabels.video.mute\",\"Mute video\",\"ariaLabels.video.unmute\",\"Unmute video\",\"ariaLabels.search.icon\",\"Search icon\",\"ariaLabels.search.label\",\"Search\",\"ariaLabels.search.close\",\"Close search\",\"ariaLabels.search.input\",\"Search input\",\"ariaLabels.search.submit\",\"Submit search\",\"incentivesPromoBanner.retail.subscriptionIncentive\",\"Special offer: get 6 months of POS Pro for {{incentivePrice}}/month\",\"incentivesPromoBanner.retail.spRateIncentive\",\"Get {{rate}}% card rates on up to {{gpvLimit}} USD of in-person sales during your first {{length}} months.\",\"incentivesPromoBanner.retail.spRateIncentiveTerms\",\"Terms apply\",\"cookiesNotice.acceptAllButtonText\",\"Accept all\",\"cookiesNotice.activeConsentContentHtml\",\"We use cookies (and other similar technologies) for many purposes, including to improve your experience on our site and for ads and analytics. Click \\\"Accept all\\\" to accept these uses. Read more in our \u003ca href=\\\"{{legalCookiesPath}}\\\"\u003eCookie Policy\u003c/a\u003e.\",\"cookiesNotice.buttonText\",\"OK\",\"cookiesNotice.contentHtml\",\"Shopify uses cookies to provide necessary site functionality and improve your experience. By using our website, you agree to our \u003ca href=\\\"{{legalPrivacyPath}}\\\"\u003ePrivacy Policy\u003c/a\u003e and our \u003ca href=\\\"{{legalCookiesPath}}\\\"\u003eCookie Policy\u003c/a\u003e.\",\"cookiesNotice.rejectAllButtonText\",\"Reject all\",\"countries.ar\",\"Argentina\",\"countries.at\",\"Austria\",\"countries.au\",\"Australia\",\"countries.be\",\"Belgium\",\"countries.bg\",\"Bulgaria\",\"countries.br\",\"Brazil\",\"countries.by\",\"Belarus\",\"countries.ca\",\"Canada\",\"countries.ch\",\"Switzerland\",\"countries.cl\",\"Chile\",\"countries.cn\",\"China\",\"countries.co\",\"Colombia\",\"countries.cz\",\"Czech Republic\",\"countries.dk\",\"Denmark\",\"countries.en\",\"USA\",\"countries.es\",\"Spain\",\"countries.de\",\"Germany\",\"countries.fi\",\"Finland\",\"countries.fr\",\"France\",\"countries.gb\",\"UK\",\"countries.gr\",\"Greece\",\"countries.hk\",\"Hong Kong SAR\",\"countries.hu\",\"Hungary\",\"countries.id\",\"Indonesia\",\"countries.ie\",\"Ireland\",\"countries.in\",\"India\",\"countries.it\",\"Italy\",\"countries.jp\",\"Japan\",\"countries.kr\",\"Korea\",\"countries.lt\",\"Lithuania\",\"countries.my\",\"Malaysia\",\"countries.mx\",\"Mexico\",\"countries.ng\",\"Nigeria\",\"countries.nl\",\"Netherlands\",\"countries.no\",\"Norway\",\"countries.nz\",\"New Zealand\",\"countries.pe\",\"Peru\",\"countries.ph\",\"Philippines\",\"countries.pl\",\"Poland\",\"countries.pt\",\"Portugal\",\"countries.ro\",\"Romania\",\"countries.se\",\"Sweden\",\"countries.sg\",\"Singapore\",\"countries.th\",\"Thailand\",\"countries.tr\",\"Türkiye\",\"countries.tw\",\"Taiwan\",\"countries.us\",\"countries.vn\",\"Vietnam\",\"countries.za\",\"South Africa\",\"languages.bg\",\"Bulgarian\",\"languages.cs\",\"Czech\",\"languages.da\",\"Danish\",\"languages.de\",\"German\",\"languages.el\",\"Greek\",\"languages.en\",\"English\",\"languages.es\",\"Spanish\",\"languages.fi\",\"Finnish\",\"languages.fr\",\"French\",\"languages.hi\",\"Hindi\",\"languages.hu\",\"Hungarian\",\"languages.id\",\"Indonesian\",\"languages.it\",\"Italian\",\"languages.ja\",\"Japanese\",\"languages.ko\",\"Korean\",\"languages.lt\",\"Lithuanian\",\"languages.nb\",\"Norwegian Bokmål\",\"languages.nl\",\"Dutch\",\"languages.pl\",\"Polish\",\"languages.pt\",\"Portuguese\",\"languages.pt-PT\",\"Portuguese Portugal\",\"languages.ro\",\"Romanian\",\"languages.ru\",\"Russian\",\"languages.sv\",\"Swedish\",\"languages.th\",\"Thai\",\"languages.tr\",\"Turkish\",\"languages.vi\",\"Vietnamese\",\"languages.zh-Hans\",\"Chinese Simplified\",\"languages.zh-Hant\",\"Chinese Traditional\",\"downloadApp.androidAlt\",\"Get the Shopify app on Google Play\",\"downloadApp.androidUrl\",\"{{site, url(path: '/install/android')}}\",\"downloadApp.iosAlt\",\"Download the Shopify app on the Apple App Store\",\"downloadApp.iosUrl\",\"{{site, url(path: '/install/mobile')}}\",\"downloadApp.qrCodeAlt\",\"QR code to download from\",\"downloadApp.qrTitle\",\"Scan to install\",\"downloadposApp.androidAlt\",\"Get the Shopify POS Mobile app on Google Play\",\"downloadposApp.iosAlt\",\"Download the Shopify POS Mobile app on the Apple App Store\",\"downloadposApp.qrCodeAlt\",\"downloadposApp.qrTitle\",\"Scan or click below to install\",\"forms.fields.country.label\",\"Country\",\"forms.fields.country.placeholder\",\"Select one\",\"forms.fields.country.error\",\"Please select a country\",\"globalNav.applyText\",\"Apply for early access\",\"globalNav.applyTextPlain\",\"Apply for access\",\"globalNav.getStarted\",\"globalNav.headerPdfCta\",\"Download document\",\"globalNav.homeUrl\",\"{{home}}\",\"globalNav.loginGetStartedText\",\"Log in to get started\",\"globalNav.loginText\",\"Log in\",\"globalNav.loginUrl\",\"/login\",\"globalNav.signinText\",\"Sign in\",\"globalNav.signupText\",\"globalNav.signupTextStartFree\",\"Start for free\",\"globalNav.signupTextFree\",\"Sign up free\",\"globalNav.signupTextPlain\",\"globalNav.searchText\",\"globalNav.searchPlaceholder\",\"Type something you're looking for\",\"globalNav.searchPlaceholderMobile\",\"globalNav.signUpButtonText\",\"Get in touch\",\"globalNav.sharedBottomBar.shopify\",\"Shopify\",\"globalNav.sharedBottomBar.shopifyDesc\",\"Platform for entrepreneurs \u0026 SMBs\",\"globalNav.sharedBottomBar.plus\",\"Plus\",\"globalNav.sharedBottomBar.plusDesc\",\"A commerce solution for growing digital brands\",\"globalNav.sharedBottomBar.enterprise\",\"Enterprise\",\"globalNav.sharedBottomBar.enterpriseDesc\",\"Solutions for the world’s largest brands\",\"globalNav.contactSalesText\",\"Talk to sales\",\"showLess\",\"Show less\",\"showMore\",\"Show more\",\"home\",\"learnMore\",\"plans.pricingFaqAnswerWithDiscount\",\"We offer a 25% discount for yearly subscriptions if you choose the Basic, Grow, or Advanced plans. If you choose a 3-year Shopify Plus plan, we offer a monthly discount and lower online variable platform fees.\",\"sell.header\",\"Explore your options\",\"sell.title\",\"Apps that help you sell {{vertical}}\",\"sell.subheading\",\"Some popular apps other merchants use\",\"sell.seeRecommendedApps\",\"See more recommended apps\",\"sell.by\",\"By {{partner}}\",\"shopify\",\"pagination.page\",\"Page\",\"signup.buttonText\",\"signup.buttonTextStartFree\",\"signup.buttonTextStartTrial\",\"Start trial\",\"signup.plusButtonText\",\"signup.buttonText_fr\",\"Launch your store\",\"signup.label\",\"Email address\",\"signup.placeholder\",\"Enter your email address\",\"signup.disclaimerHtml\",\"Try Shopify free for {{trialLength}} days, no credit card\u0026nbsp;required. By entering your email, you agree to receive marketing emails\u0026nbsp;from\u0026nbsp;Shopify.\",\"signup.disclaimerNoLengthHtml\",\"No credit card required. By entering your email, you agree to receive marketing emails\u0026nbsp;from\u0026nbsp;Shopify.\",\"signup.testimonialButtonText\",\"Try Shopify free for {{trialLength}} days\",\"signup.freeTrialCtaHtml\",\"Try Shopify for free, and explore all the tools and services you need to start, run, and grow your\u0026nbsp;business.\",\"signup.signupPaidTrialPromo.default_one\",\"Get {{trialLength}} days free then 1 month for {{paidTrialAmount}}.\",\"signup.signupPaidTrialPromo.default_other\",\"Start for free, then get your first {{count}} months for {{paidTrialAmount}}/mo.\",\"signup.signupPaidTrialPromo.disclaimer\",\"By entering your email, you agree to receive marketing emails\u0026nbsp;from\u0026nbsp;Shopify.\",\"signup.signupPaidTrialPromo.disclaimerNoEmail_one\",\"Don’t have a Shopify store? \u003ca href=\\\"{{deeplinkFreeTrial}}\\\" data-component-name=\\\"{{deeplinkFreeTrialName}}\\\"\u003eStart free, then get your first month for {{paidTrialAmount}}.\u003c/a\u003e\",\"signup.signupPaidTrialPromo.disclaimerNoEmail_other\",\"Don’t have a Shopify store? \u003ca href=\\\"{{deeplinkFreeTrial}}\\\" data-component-name=\\\"{{deeplinkFreeTrialName}}\\\"\u003eStart for free, then get your first {{count}} months for {{paidTrialAmount}}/mo.\u003c/a\u003e\",\"social.facebook.text\",\"Facebook\",\"social.twitter.text\",\"Twitter\",\"social.youtube.text\",\"YouTube\",\"social.instagram.text\",\"Instagram\",\"social.tiktok.text\",\"TikTok\",\"social.linkedin.text\",\"LinkedIn\",\"social.pinterest.text\",\"Pinterest\",\"social.email.text\",\"Email\",\"tableOfContents\",\"Table of Contents\",\"waitlistForm.errors.general\",\"Something went wrong, try again later\",\"waitlistForm.errors.emailFormat\",\"Email is formatted incorrectly\",\"waitlistForm.successMessage\",\"Done\",\"waitlistForm.placeholder\",\"waitlistForm.buttonText\",\"Signup\",\"editionsEyebrow.text\",\"Shopify’s Summer ’25 Edition is here\",\"sectionErrorBoundary.message\",\"This content is not loading due to a technical problem\",\"nav.about\",\"About Shopify\",\"nav.academy\",\"Shopify Academy\",\"nav.allFeatures\",\"All features\",\"nav.allProducts\",\"All Products\",\"nav.allProductsDescription\",\"Explore all Shopify products \u0026 features\",\"nav.appStore\",\"Find business apps\",\"nav.appStoreDescription\",\"Shopify app store\",\"nav.b2b\",\"Sell wholesale \u0026 direct\",\"nav.b2bDescription\",\"Business-to-business (B2B)\",\"nav.balance\",\"Balance\",\"nav.banking\",\"Banking\",\"nav.billPay\",\"Bill Pay\",\"nav.blog\",\"Blog\",\"nav.blogEnterprise\",\"Enterprise Blog\",\"nav.blogMerchants\",\"Merchant Blog\",\"nav.blogRetail\",\"Retail Blog\",\"nav.borrowing\",\"Borrowing\",\"nav.branding\",\"Branding\",\"nav.brandingDescriptionV2\",\"Build your brand from scratch\",\"nav.brandingFlyoutDescription\",\"Look professional and help customers connect with your business\",\"nav.build\",\"Build\",\"nav.burst\",\"Free stock photos\",\"nav.businessEncyclopedia\",\"Business encyclopedia\",\"nav.businessFunding\",\"Secure business funding\",\"nav.businessFundingDescription\",\"Shopify Capital\",\"nav.businessGrowth\",\"Business growth\",\"nav.businessGrowthDescription\",\"Scale your business\",\"nav.businessNameGenerator\",\"Business name generator \",\"nav.businessPlanTemplate\",\"Business plan template\",\"nav.businessTypes\",\"Business Types\",\"nav.buyButton\",\"Buy Button\",\"nav.buyButtonDescription\",\"Transform an existing website or blog into an online store\",\"nav.buyButtonSubnav\",\"Explore Buy Button\",\"nav.capital\",\"Capital\",\"nav.capitalLoansAndCashAdvances\",\"Large retailer funding\",\"nav.capitalSmallBusiness\",\"Small business funding\",\"nav.cdiscount\",\"Cdiscount\",\"nav.changelog\",\"Changelog\",\"nav.changelogDescription\",\"Your source for recent updates\",\"nav.checkoutDescription\",\"Provide fast, smooth checkout experiences\",\"nav.checkoutDescriptionV2\",\"World-class checkout\",\"nav.checkoutV2\",\"Check out customers\",\"nav.community\",\"Community\",\"nav.communityEvents\",\"Community Events\",\"nav.compareToPlus\",\"Compare to Plus\",\"nav.compass\",\"Business courses\",\"nav.compassDescription\",\"Learn from proven experts\",\"nav.calculator\",\"Cost calculator\",\"nav.credit\",\"Credit\",\"nav.ctaAlt\",\"Free Trial\",\"nav.docs\",\"Docs\",\"nav.customerInsights\",\"Know your audience\",\"nav.customerInsightsDescription\",\"Gain customer insights\",\"nav.customization\",\"Customization\",\"nav.domainsAndHosting\",\"Own your site domain\",\"nav.domainsAndHostingDescription\",\"Domains \u0026 hosting\",\"nav.dropshipping\",\"Dropshipping\",\"nav.ecommerce\",\"Online store\",\"nav.ecommerceDescription\",\"Online store editor\",\"nav.ecommerceSeo\",\"Ecommerce SEO\",\"nav.ecommerceSeoDescription\",\"Improve your search ranking\",\"nav.ecommerceV2\",\"Create your website\",\"nav.editionsAll\",\"All Editions\",\"nav.editionsAllDescription\",\"Archive of past Shopify Editions\",\"nav.editionsCurrent\",\"Summer ’25 Edition\",\"nav.editionsLast\",\"Winter ’25 Edition\",\"nav.editionsLastDescription\",\"The latest 150+ product updates\",\"nav.emailMarketing\",\"Email marketing\",\"nav.encyclopedia\",\"Encyclopedia\",\"nav.essentialTools\",\"Essential tools\",\"nav.examples\",\"Examples\",\"nav.exchange\",\"Websites for sale\",\"nav.experts\",\"Experts\",\"nav.facebook\",\"Facebook Shops\",\"nav.facebookAds\",\"Facebook Ads\",\"nav.facebookInstagram\",\"Facebook \u0026 Instagram\",\"nav.faq\",\"FAQ\",\"nav.features\",\"Features\",\"nav.financesManagement\",\"Manage your finances \u0026 access funding\",\"nav.financesManagementDescription\",\"Shopify Finance\",\"nav.flow\",\"Ecommerce automation\",\"nav.flowDescription\",\"Shopify Flow\",\"nav.flowV2\",\"Automate your business\",\"nav.forums\",\"Shopify Community\",\"nav.founderStories\",\"Founder stories\",\"nav.founderStoriesDescription\",\"Learn from successful merchants\",\"nav.fraudProtection\",\"Fraud Protection\",\"nav.freeBusinessTools\",\"Explore free business tools\",\"nav.freeBusinessToolsDescription\",\"Tools to run your business\",\"nav.freeTools\",\"Free tools\",\"nav.fulfillment\",\"Fulfillment\",\"nav.fulfillmentDescription\",\"Shopify Fulfillment Network\",\"nav.fulfillmentV2\",\"Outsource fulfillment \u0026 returns\",\"nav.getStarted\",\"nav.getInTouch\",\"nav.google\",\"Google\",\"nav.googleSmart\",\"nav.googleYoutube\",\"Google \u0026 Youtube\",\"nav.guides\",\"Guides\",\"nav.hardware\",\"Hardware\",\"nav.hardwareStore\",\"Hardware store\",\"nav.helpAndSupport\",\"Help and support\",\"nav.helpAndSupportDescription\",\"Get 24/7 support\",\"nav.helpCenter\",\"Help Center\",\"nav.howToGuides\",\"How-to guides\",\"nav.howToGuidesDescription\",\"Read in-depth business guides\",\"nav.impressumGenerator\",\"Impressum-Generator\",\"nav.inbox\",\"Business chat\",\"nav.inboxDescription\",\"Turn browsers into buyers\",\"nav.inboxDescriptionV2\",\"Shopify Inbox\",\"nav.inboxV2\",\"Chat with customers\",\"nav.instagram\",\"nav.installments\",\"Installments\",\"nav.internationalSales\",\"International sales\",\"nav.internationalSalesDescription\",\"Sell globally\",\"nav.inventoryOrderManagement\",\"Manage your stock \u0026 orders\",\"nav.inventoryOrderManagementDescription\",\"Inventory \u0026 order management\",\"nav.joinNow\",\"Join Now\",\"nav.learn\",\"Learn\",\"nav.lending\",\"Lending\",\"nav.logoMaker\",\"Logo maker\",\"nav.manage\",\"Manage\",\"nav.manageEverything\",\"Manage everything\",\"nav.manageYourBusiness\",\"Manage your business\",\"nav.manageYourBusinessDescription\",\"Track sales, orders \u0026 analytics\",\"nav.market\",\"Market\",\"nav.marketDescription\",\"Market your business\",\"nav.marketDescriptionV2\",\"Reach \u0026 retain customers\",\"nav.marketing\",\"Marketing\",\"nav.marketingAutomation\",\"Marketing automation\",\"nav.marketingDescription\",\"Build a marketing plan\",\"nav.marketingTools\",\"Marketing tools\",\"nav.marketingToolsDescription\",\"Ads, email campaigns, and more\",\"nav.marketplaces\",\"Online marketplaces\",\"nav.markets\",\"International commerce\",\"nav.marketsDescription\",\"Reach buyers in new markets with international selling tools\",\"nav.measureYourPerformance\",\"Measure your performance\",\"nav.measureYourPerformanceDescription\",\"Analytics and Reporting\",\"nav.midMarket\",\"Mid-market\",\"nav.migrateToShopify\",\"Migrate to Shopify\",\"nav.migrateToShopifyDescription\",\"Compare to other platforms\",\"nav.mobileApp\",\"Mobile app\",\"nav.mobileAppDescription\",\"Respond in real time\",\"nav.moneyManagement\",\"Get paid faster\",\"nav.moneyManagementDescription\",\"Shopify Balance\",\"nav.more\",\"More\",\"nav.newsroom\",\"Newsroom\",\"nav.newsroomDescription\",\"All company news and press releases\",\"nav.onlineFlyoutDescription\",\"Find a domain, explore stock images, and amplify your brand\",\"nav.onlinePresence\",\"Online presence\",\"nav.onlineStoreDescription\",\"Sell online with an ecommerce website\",\"nav.omnichannel\",\"Omnichannel selling\",\"nav.orderManagementAndFulfillment\",\"Order management and delivery\",\"nav.overview\",\"Overview\",\"nav.partners\",\"Partners\",\"nav.payments\",\"Payment processing\",\"nav.paymentsDescription\",\"Set up forms of payment\",\"nav.paymentsOverview\",\"nav.paymentsV2\",\"Accept online payments\",\"nav.pillarDropdownCta\",\"nav.ping\",\"Shopify Ping\",\"nav.plus\",\"nav.plusPricing\",\"Plus Pricing\",\"nav.podcasts\",\"Podcasts\",\"nav.pointOfSaleDescription\",\"Point of Sale (POS)\",\"nav.pointOfSaleV2\",\"Sell in person\",\"nav.popularTopics\",\"Popular topics\",\"nav.pos\",\"Shopify POS\",\"nav.posPricing\",\"POS Pricing\",\"nav.posSystemSmallBusiness\",\"Small business POS\",\"nav.posMultiStore\",\"Multi-store POS\",\"nav.posInventorySystem\",\"POS inventory system\",\"nav.posAndroid\",\"Android POS\",\"nav.posIpad\",\"iPad POS\",\"nav.posApp\",\"POS App\",\"nav.posSoftware\",\"POS Software\",\"nav.pricingOverview\",\"Pricing overview\",\"nav.productSourcing\",\"Product sourcing\",\"nav.productSourcingDescription\",\"Find products to sell\",\"nav.productsToSell\",\"Products to sell\",\"nav.qrCodeGenerator\",\"QR code generator\",\"nav.rakuten\",\"Rakuten\",\"nav.research\",\"Research\",\"nav.resources\",\"Resources\",\"nav.retail\",\"Retail POS\",\"nav.retailDescription\",\"Sell at retail locations, pop-ups, and beyond\",\"nav.salesChannels\",\"Sales channels\",\"nav.salesChannelsDescription\",\"Reach millions of shoppers and boost sales\",\"nav.salesChannelsDescriptionV2\",\"Channels for social \u0026 marketplaces\",\"nav.salesChannelsV2\",\"Sell across channels\",\"nav.segmentation\",\"Customer groups\",\"nav.sell\",\"Sell\",\"nav.sellEverywhere\",\"Sell everywhere\",\"nav.sellOnline\",\"Sell online\",\"nav.sellOnlineDescription\",\"Grow your business online\",\"nav.sellYourProducts\",\"Sell your products\",\"nav.sellYourProductsDescription\",\"Sell online or in person\",\"nav.shippingDescription\",\"Fulfill orders faster\",\"nav.shippingDescriptionV2\",\"Shopify Shipping\",\"nav.shippingV2\",\"Ship orders faster\",\"nav.inventoryDescription\",\"Inventory management\",\"nav.shop\",\"Shop\",\"nav.shopPay\",\"Shop Pay\",\"nav.shopifyBlog\",\"Shopify blog\",\"nav.shopifyBlogDescription\",\"Business strategy tips\",\"nav.shopifyCaseStudies\",\"Case Studies\",\"nav.shopifyCaseStudiesDescription\",\"nav.shopifyComparison\",\"Shopify comparison\",\"nav.shopifyComparisonDescription\",\"Comparison with other platforms\",\"nav.shopifyMigration\",\"nav.shopifyMigrationDescription\",\"Migration checklists, guides and tools\",\"nav.shopifyDevelopers\",\"Shopify Developers\",\"nav.shopifyDevelopersDescription\",\"Build with Shopify's powerful APIs\",\"nav.shopifyEditionsDescription\",\"New, innovative Shopify products\",\"nav.shopifyEmail\",\"Nurture customers\",\"nav.shopifyEmailDescription\",\"Shopify Messaging\",\"nav.shopifyFinance\",\"nav.shopifyGold\",\"nav.shopifyOnlineStore\",\"Shopify Online store\",\"nav.shopifyPlus\",\"nav.shopifyPlusDescription\",\"nav.shopifyPointOfSale\",\"Shopify Point of Sale\",\"nav.shopifyVsBigCommerce\",\"Shopify vs. BigCommerce\",\"nav.shopifyVsSalesforce\",\"Shopify vs. Salesforce\",\"nav.shopifyVsSquare\",\"Shopify vs. Square\",\"nav.signup\",\"nav.social\",\"Social media\",\"nav.socialDescription\",\"Social media integrations\",\"nav.socialMediaStrategy\",\"Social media strategy\",\"nav.socialMediaStrategyDescription\",\"Turn social into sales\",\"nav.socialV2\",\"Market across social\",\"nav.solutions\",\"Solutions\",\"nav.staffManagement\",\"Staff management\",\"nav.start\",\"Start\",\"nav.startYourBusiness\",\"Start your business\",\"nav.startYourBusinessDescription\",\"Build your brand\",\"nav.stockPhotography\",\"Stock photography\",\"nav.storeSetup\",\"Store set up\",\"nav.storeSetupDescription\",\"Use Shopify’s powerful features to start selling\",\"nav.storeThemes\",\"Store themes\",\"nav.storeThemesDescription\",\"Customize your store\",\"nav.successStories\",\"Success stories\",\"nav.talkToSales\",\"nav.tax\",\"Tax\",\"nav.termLoans\",\"Term Loans\",\"nav.themeStore\",\"Theme store\",\"nav.tiktok\",\"nav.upgradeToPlus\",\"Upgrade to Plus\",\"nav.videos\",\"Videos\",\"nav.walmart\",\"Walmart Marketplace\",\"nav.waysToSell\",\"Ways to sell\",\"nav.webAddress\",\"Domain name\",\"nav.whatIsShopify\",\"What is Shopify?\",\"nav.whatIsShopifyDescription\",\"How our commerce platform works\",\"nav.whatsNew\",\"What’s new\",\"nav.youtube\",\"nav.____newNavKeysBelowDoNotReorder____\",\"nav.advertisingCampaigns\",\"Advertising \u0026 Campaigns\",\"nav.ai\",\"AI\",\"nav.analytics\",\"Analytics\",\"nav.b2b2\",\"B2B\",\"nav.back\",\"Back\",\"nav.buildYourWebsite\",\"Build your website\",\"nav.checkout\",\"Checkout\",\"nav.customizeExtendShopify\",\"Customize \u0026 extend Shopify\",\"nav.discounts\",\"Discounts\",\"nav.domains\",\"Domains\",\"nav.editions\",\"Editions\",\"nav.emailCustomerChat\",\"Email \u0026 Customer Chat\",\"nav.enterprise\",\"nav.financesFunding\",\"Finances \u0026 Funding\",\"nav.getPaid\",\"Get paid\",\"nav.global\",\"Global\",\"nav.latestUpdates\",\"Latest updates\",\"nav.latestUpdates1\",\"New store design system\",\"nav.latestUpdates2\",\"Deep insights with Sidekick\",\"nav.latestUpdates3\",\"Next-gen dev platform\",\"nav.login\",\"nav.marketingAnalytics\",\"Marketing \u0026 analytics\",\"nav.nonStopInnovation\",\"Non-stop innovation\",\"nav.nonStopInnovationDesc\",\"Every six months, Shopify rolls out hundreds of features and upgrades.\",\"nav.nonStopInnovationDescSummer\",\"150+ updates to Shopify, twice a year.\",\"nav.online\",\"Online\",\"nav.ordersInventory\",\"Orders \u0026 Inventory\",\"nav.payments2\",\"Payments\",\"nav.pointOfSale\",\"Point of Sale\",\"nav.pricing\",\"Pricing\",\"nav.products\",\"Products\",\"nav.runYourBusiness\",\"Run your business\",\"nav.sellAnywhere\",\"Sell anywhere\",\"nav.shipping\",\"Shipping\",\"nav.shopifyAppStore\",\"Shopify App Store\",\"nav.shopifyAppStoreDesc\",\"Largest commerce ecosystem\",\"nav.shopifyDevDesc\",\"Dev docs, CLI, and more\",\"nav.shopifyEditions\",\"Shopify Editions\",\"nav.socialMarketplaces\",\"Social \u0026 Marketplaces\",\"nav.startFreeTrial\",\"nav.summerEdition\",\"Summer Edition\",\"nav.taxes\",\"Taxes\",\"nav.themes\",\"Themes\",\"nav.websiteBuilder\",\"Website Builder\",\"nav.winterEdition\",\"Winter Edition\",\"nav.workflowAutomation\",\"Workflow Automation\",\"footer.about\",\"About\",\"footer.aboutShopify\",\"footer.accessibility\",\"Accessibility\",\"footer.affiliateProgram\",\"Affiliate Program\",\"footer.apiDocs\",\"API Documentation\",\"footer.appDemo\",\"App Demo\",\"footer.appDeveloperProgram\",\"App Developers\",\"footer.ar\",\"Shopify AR\",\"footer.blogTopics\",\"Blog Topics\",\"footer.brand\",\"Brand\",\"footer.buildBlack\",\"Build Black\",\"footer.buildNative\",\"Build Native\",\"footer.businessNameGenerator\",\"Business Name Generator \",\"footer.burst\",\"Free Stock Photos\",\"footer.buyButton\",\"footer.capital\",\"footer.company\",\"Company\",\"footer.companyInfo\",\"Company Info\",\"footer.contact\",\"Contact\",\"footer.contactShopify\",\"Contact Shopify\",\"footer.countrySelect\",\"Change your country or region.\",\"footer.countrySelectHeading\",\"Country/region\",\"footer.regionLanguageSelectLong\",\"Choose a region \u0026 language\",\"footer.regionLanguageSelectShort\",\"Choose a region\",\"footer.devDegree\",\"Dev Degree\",\"footer.developers\",\"Developers\",\"footer.documentation\",\"Shopify Help Center\",\"footer.domainNames\",\"Domain Names\",\"footer.domains\",\"footer.dropshipping\",\"Dropshipping Business\",\"footer.ecommerce\",\"Online Store\",\"footer.ecommerceHosting\",\"Ecommerce Hosting\",\"footer.ecommerceSoftware\",\"Ecommerce Software\",\"footer.economicGrowth\",\"Economic Growth\",\"footer.email\",\"footer.examples\",\"footer.experts\",\"Shopify Partners\",\"footer.featureTour\",\"footer.features\",\"footer.forums\",\"footer.fulfillment\",\"footer.gaming\",\"Gaming\",\"footer.globalImpact\",\"Global Impact\",\"footer.hardware\",\"footer.heading\",\"More resources\",\"footer.hireAnExpert\",\"Hire a Partner\",\"footer.leadership\",\"Leadership\",\"footer.logoGenerator\",\"Logo Maker\",\"footer.managePrivacy\",\"Manage Cookies\",\"footer.merchantSupport\",\"Merchant Support\",\"footer.mobileCommerce\",\"Mobile Commerce\",\"footer.onlineStore\",\"Ecommerce Website\",\"footer.onlineStoreBuilder\",\"Online Store Builder\",\"footer.partnerProgram\",\"Partner Program\",\"footer.payments\",\"footer.phoneNumber\",\"1-888-329-0139\",\"footer.platform\",\"Platform\",\"footer.pointOfSale\",\"footer.posFeatures\",\"footer.posSoftware\",\"footer.pressAndMedia\",\"Press and Media\",\"footer.pressReleases\",\"Press Releases\",\"footer.privacyChoices\",\"Your Privacy Choices\",\"footer.products\",\"footer.research\",\"footer.resources\",\"Support\",\"footer.sellInStore\",\"footer.sellOnline\",\"Sell Online\",\"footer.sellOnlineTour\",\"Online Retail\",\"footer.setUp\",\"Setup\",\"footer.sfn\",\"footer.shipping\",\"footer.shop\",\"footer.shopPay\",\"footer.shopify\",\"footer.shopifyAcademy\",\"footer.shopifyEvents\",\"Shopify Events\",\"footer.shopifyExperts\",\"footer.shopifyForEnterprise\",\"Shopify for Enterprise\",\"footer.shopifyGold\",\"footer.shopifyLite\",\"Shopify Lite\",\"footer.shopifyPlus\",\"Shopify Plus\",\"footer.shoppingCart\",\"Shopping Cart\",\"footer.social\",\"Social\",\"footer.socialImpact\",\"Social Impact\",\"footer.solutions\",\"footer.storeDesign\",\"footer.storeThemes\",\"Store Themes\",\"footer.support\",\"24/7 support\",\"footer.supportLimited\",\"Customer Support\",\"footer.themeSupport\",\"Theme Support\",\"footer.themes\",\"footer.tools\",\"Free Tools\",\"footer.topics\",\"Topics\",\"footer.trustSealsAccessibilityText\",\"Use Shopify with confidence. Our platform has been assessed and certified by:\",\"footer.video\",\"Video\",\"footer.videoTutorials\",\"Video Tutorials\",\"footer.____newFooterKeysBelowDoNotReorder____\",\"footer.affiliates\",\"Affiliates\",\"footer.appStore\",\"App Store\",\"footer.blog\",\"footer.careers\",\"Careers\",\"footer.changelog\",\"footer.communityForum\",\"Community Forum\",\"footer.compareShopify\",\"Compare Shopify\",\"footer.cookieSettings\",\"Cookie settings\",\"footer.courses\",\"Courses\",\"footer.developerDocs\",\"Developer docs\",\"footer.ecosystem\",\"Ecosystem\",\"footer.freeTools\",\"footer.guides\",\"footer.helpCenter\",\"footer.hireAPartner\",\"Hire a partner\",\"footer.investors\",\"Investors\",\"footer.legal\",\"Legal\",\"footer.newsroom\",\"footer.partners\",\"footer.privacyPolicy\",\"Privacy policy\",\"footer.resources2\",\"footer.serviceStatus\",\"Service status\",\"footer.shopifyEditions\",\"footer.sitemap\",\"Sitemap\",\"footer.support2\",\"footer.sustainability\",\"Sustainability\",\"footer.termsOfService\",\"Terms of service\",\"footer.themeStore\",\"Theme Store\",\"footer.whatIsShopify\",\"brochureBot.header\",\"Shopify chat\",\"brochureBot.askAnything\",\"Ask anything\",\"brochureBot.resetChat\",\"Reset chat\",\"brochureBot.plusWelcomeQuestions.heading\",\"Welcome to Shopify.\",\"brochureBot.plusWelcomeQuestions.subhead\",\"How can I help?\",\"brochureBot.plusWelcomeQuestions.questions.0.question\",\"Get a demo\",\"brochureBot.plusWelcomeQuestions.questions.0.answer\",\"brochureBot.plusWelcomeQuestions.questions.1.question\",\"brochureBot.plusWelcomeQuestions.questions.1.answer\",\"brochureBot.plusWelcomeQuestions.questions.2.question\",\"Upgrade to Shopify Plus\",\"brochureBot.plusWelcomeQuestions.questions.2.answer\",\"How do I upgrade to Shopify Plus?\",\"brochureBot.plusWelcomeQuestions.questions.3.question\",\"Get pricing info\",\"brochureBot.plusWelcomeQuestions.questions.3.answer\",\"I'd like to get pricing info\",\"brochureBot.plusWelcomeQuestions.questions.4.question\",\"Contact Shopify support today\",\"brochureBot.plusWelcomeQuestions.questions.4.answer\",\"I need help with my Shopify store\",\"brochureBot.retailWelcomeQuestions.heading\",\"brochureBot.retailWelcomeQuestions.subhead\",\"brochureBot.retailWelcomeQuestions.questions.0.question\",\"Get Shopify POS for my business\",\"brochureBot.retailWelcomeQuestions.questions.0.answer\",\"brochureBot.retailWelcomeQuestions.questions.1.question\",\"Speak to a Retail Sales Expert\",\"brochureBot.retailWelcomeQuestions.questions.1.answer\",\"brochureBot.retailWelcomeQuestions.questions.2.question\",\"Learn about POS features\",\"brochureBot.retailWelcomeQuestions.questions.2.answer\",\"brochureBot.retailWelcomeQuestions.questions.3.question\",\"Contact Retail support\",\"brochureBot.retailWelcomeQuestions.questions.3.answer\",\"brochureBot.disclaimer\",\"AI-generated answers may contain errors. Always verify info.\",\"brochureBot.preChat\",\"Considering Shopify?\",\"brochureBot.openChat\",\"Ask our AI-powered chat\",\"brochureBot.chatWelcomeMessage\",\"Hey 👋🏻! Thanks for visiting Shopify. What brings you by today?\",\"brochureBot.bookACall.scheduleMeeting\",\"Schedule meeting\",\"brochureBot.bookACall.scheduleMeetingDescription\",\"Schedule a 15 minute meeting with {{firstName}} {{lastName}}\",\"brochureBot.bookACall.changeTime\",\"Change time\",\"brochureBot.bookACall.noneOfTheseWork\",\"None of these work\",\"brochureBot.bookACall.next\",\"brochureBot.bookACall.preChatButton.title\",\"Book a call\",\"brochureBot.bookACall.preChatButton.description\",\"Schedule a 15 minute meeting.\",{\"_1801\":665,\"_1802\":43,\"_1803\":1804},\"label\",\"countryCode\",\"languages\",[1805],{\"_1801\":744,\"_1806\":45,\"_1807\":97,\"_1808\":97,\"_1809\":1810,\"_394\":34,\"_1811\":59,\"_1812\":1810},\"pathPrefix\",\"hreflang\",\"languageCode\",\"published\",true,\"isVirtual\",\"isActive\",\"locale\",\"features\",[],\"supportsVirtualEnglish\",\"preferredLanguage\",\"inactive\",\"pathTranslations\",{},\"blogTranslations\",\"publishedPaths\",{\"_1824\":1810,\"_1825\":1810,\"_1826\":1810,\"_435\":1810,\"_1827\":1810,\"_1828\":1810,\"_1829\":1810,\"_1830\":1810,\"_1831\":1810,\"_1832\":1810,\"_1833\":1810,\"_1834\":1810,\"_1835\":1810,\"_1836\":1810},\"/topics\",\"/latest\",\"/search\",\"/robots.txt\",\"/:article\",\"/blog.atom\",\"/*\",\"/topics/sitemap.xml\",\"/topics/:topic\",\"/authors/sitemap.xml\",\"/authors/:author\",\"/sitemap.xml\",\"/404\",{\"_1855\":406,\"_1856\":1857,\"_1807\":1891,\"_394\":34},{\"_1855\":406,\"_1856\":1857,\"_1807\":1890,\"_394\":34},{\"_1855\":406,\"_1856\":1857,\"_1807\":1888,\"_394\":1889},{\"_1855\":406,\"_1856\":1857,\"_1807\":1886,\"_394\":1887},{\"_1855\":406,\"_1856\":1857,\"_1807\":1884,\"_394\":1885},{\"_1855\":406,\"_1856\":1857,\"_1807\":1882,\"_394\":1883},{\"_1855\":406,\"_1856\":1857,\"_1807\":1880,\"_394\":1881},{\"_1855\":406,\"_1856\":1857,\"_1807\":1878,\"_394\":1879},{\"_1855\":406,\"_1856\":1857,\"_1807\":1876,\"_394\":1877},{\"_1855\":406,\"_1856\":1857,\"_1807\":1874,\"_394\":1875},{\"_1855\":406,\"_1856\":1857,\"_1807\":1872,\"_394\":1873},{\"_1855\":406,\"_1856\":1857,\"_1807\":1870,\"_394\":1871},{\"_1855\":406,\"_1856\":1857,\"_1807\":1868,\"_394\":1869},{\"_1855\":406,\"_1856\":1857,\"_1807\":1866,\"_394\":1867},{\"_1855\":406,\"_1856\":1857,\"_1807\":1864,\"_394\":1865},{\"_1855\":406,\"_1856\":1857,\"_1807\":1862,\"_394\":1863},{\"_1855\":406,\"_1856\":1857,\"_1807\":1860,\"_394\":1861},{\"_1855\":406,\"_1856\":1857,\"_1807\":1858,\"_394\":1859},\"tagName\",\"rel\",\"alternate\",\"en-ZA\",\"https://shopify.engineering/za/implementing-chatops-into-our-incident-management-procedure\",\"en-GB\",\"https://shopify.engineering/uk/implementing-chatops-into-our-incident-management-procedure\",\"en-SG\",\"https://shopify.engineering/sg/implementing-chatops-into-our-incident-management-procedure\",\"en-PK\",\"https://shopify.engineering/pk/implementing-chatops-into-our-incident-management-procedure\",\"en-PH\",\"https://shopify.engineering/ph/implementing-chatops-into-our-incident-management-procedure\",\"en-NZ\",\"https://shopify.engineering/nz/implementing-chatops-into-our-incident-management-procedure\",\"en-NG\",\"https://shopify.engineering/ng/implementing-chatops-into-our-incident-management-procedure\",\"en-MY\",\"https://shopify.engineering/my/implementing-chatops-into-our-incident-management-procedure\",\"en-IN\",\"https://shopify.engineering/in/implementing-chatops-into-our-incident-management-procedure\",\"en-IL\",\"https://shopify.engineering/il/implementing-chatops-into-our-incident-management-procedure\",\"en-IE\",\"https://shopify.engineering/ie/implementing-chatops-into-our-incident-management-procedure\",\"en-ID\",\"https://shopify.engineering/id/implementing-chatops-into-our-incident-management-procedure\",\"en-HK\",\"https://shopify.engineering/hk-en/implementing-chatops-into-our-incident-management-procedure\",\"en-CA\",\"https://shopify.engineering/ca/implementing-chatops-into-our-incident-management-procedure\",\"en-AU\",\"https://shopify.engineering/au/implementing-chatops-into-our-incident-management-procedure\",\"en-AE\",\"https://shopify.engineering/ae/implementing-chatops-into-our-incident-management-procedure\",\"en-US\",\"x-default\",{\"_477\":1920,\"_1897\":1921,\"_56\":1922,\"_1900\":1923,\"_1902\":-5,\"_1903\":1924},{\"_477\":1914,\"_1897\":1915,\"_56\":1916,\"_1900\":1917,\"_1902\":-5,\"_1903\":1918},{\"_477\":1908,\"_1897\":1909,\"_56\":1910,\"_1900\":1911,\"_1902\":-5,\"_1903\":1912},{\"_477\":1896,\"_1897\":1898,\"_56\":1899,\"_1900\":1901,\"_1902\":-5,\"_1903\":1904},\"The Engineering Story Behind Flex Comp\",\"tags\",[1905,1906,1907],\"building-flex-comp\",\"imageUrl\",\"https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220927_72ppi_03_BuildingShopifysNewFlexCompSystem.jpg?v=1666044315\",\"imageAltText\",\"modifiedAt\",\"2022-10-05\",\"Development\",\"Hero\",\"Popular\",\"Shopify’s platform is the Web platform\",[1913,1907],\"shopifys-platform-is-the-web-platform\",\"https://cdn.shopify.com/s/files/1/0779/4361/articles/remix-app-bridge.png?v=1690230786\",\"2023-07-26\",\"Apps\",\"Building a ShopifyQL Code Editor\",[528,1907,1919],\"building-a-shopifyql-code-editor\",\"https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_210719_72ppi_05_FiveStepsforBuildingMachineLearning_106d101b-f6f5-4b55-a648-1b6b89f669a5.jpg?v=1770410321\",\"2023-09-11\",\"validated\",\"Introducing Ruvy\",[1905,1907],\"introducing-ruvy\",\"https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_211008_72ppi_01_YJIT-BuildingaNewJITCompilerforCRuby_0a00a8cf-3951-4556-9b2c-3f88e9de76ff.jpg?v=1697134143\",\"2023-10-18\",\"topSectionImages\",[1939,1940,1941],{\"_113\":114,\"_115\":116,\"_117\":118,\"_119\":1933,\"_1934\":1935,\"_121\":1936},{\"_21\":1930},{},{\"_1931\":1932},\"subscriptionId\",\"DE84EF61-2A02-4778-8807-F01B108DE974\",{\"_126\":1938},\"rightColSideBannerImg\",\"https://cdn.shopify.com/b/shopify-brochure2-assets/c8790c0f3c1fa91ccc845e45ce067bbe.png\",{\"_123\":1937},{\"_97\":125},{\"_97\":128},{\"_1942\":1945},{\"_1942\":1944},{\"_1942\":1943},\"src\",\"https://cdn.shopify.com/b/shopify-brochure2-assets/16db235a9390238e6f9b8fd2a5c29680.png?originalWidth=1005\u0026originalHeight=1288\",\"https://cdn.shopify.com/b/shopify-brochure2-assets/8262a99b5702f964162106b94a23ad2d.png?originalWidth=1005\u0026originalHeight=1288\",\"https://cdn.shopify.com/b/shopify-brochure2-assets/2ecdaa09da44408d3c2a2b9cba3a2c07.png?originalWidth=1005\u0026originalHeight=1288\",\"__typename\",\"Article\",\"authorV2\",{\"_1946\":1990,\"_1973\":1974,\"_155\":45},\"id\",\"gid://shopify/Article/809271311\",\"implementing-chatops-into-our-incident-management-procedure\",\"Implementing ChatOps into our Incident Management Procedure\",\"publishedAt\",\"2018-02-13T18:00:00Z\",{\"_1946\":1984,\"_33\":24,\"_1985\":-5,\"_1986\":1987,\"_1988\":1989},[524],\"\u003chtml\u003e\u003chead\u003e\u003c/head\u003e\u003cbody\u003e\u003cp style=\\\"text-align: left;\\\"\u003eProduction engineers (PE) are expected to be incident management experts. Still, incident handling is difficult, often messy, and exhausting. We encounter new incidents, search high and low for possible explanations, sometimes tunnel on symptoms, and, under pressure, forget some best practices.\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eAt Shopify, we care not only about handling incidents quickly and efficiently, but also PE well-being. We have a special IMOC (incident manager on call) rotation and an incident chatbot to assist IMOCs. This post provides an overview of incident management at Shopify, the responsibility of different roles during an incident, and how our chatbot works to support our team.\u003c/span\u003e\u003cbr\u003e\u003cb\u003e\u003c/b\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cb\u003eIncident Management at Shopify\u003c/b\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eThe IMOC’s role is to lead the incident response. Their main focus is on communication, ensuring the response continues to move forward and escalate as required, and on follow through. Our incident response process springs from the \u003c/span\u003e\u003ca href=\\\"https://en.wikipedia.org/wiki/Incident_Command_System\\\"\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eIncident Command System (ICS)\u003c/span\u003e\u003c/a\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003e, which provides us with a common hierarchy within which responders from multiple agencies can be effective.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003e\u003cimg src=\\\"//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-13_at_10.23.44_AM_large.png?v=1518535671\\\" alt=\\\"Incident Command System\\\" width=\\\"505\\\" height=\\\"264\\\"\u003e\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eIn Shopify’s ICS model case, the hierarchy is simplified to the Incident Commander (which we call the IMOC) who leads the incident response; the Public Information Officer who takes care of public communication, called a Support Response Manager (SRM) at Shopify; and, an operations section that directs all the actions needed to solve the incident, usually the component experts in our case.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eIt’s essential to note that the IMOC is on call for coordinating the incident response, not for fixing production issues (which is the component expert’s mission). They ensure that the incident goes through the following steps:\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cimg src=\\\"//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-13_at_10.23.58_AM_103f24f5-724b-455a-bb2a-bdb99c4487cd_large.png?v=1518535999\\\" alt=\\\"\\\" width=\\\"381\\\" height=\\\"350\\\"\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eAt Shopify, this roughly translates into:\u003c/span\u003e\u003c/p\u003e\\n\u003cul\u003e\\n\u003cli style=\\\"font-weight: 400;\\\"\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eWhen we detect that something’s broken, this usually results in a page.\u003c/span\u003e\u003c/li\u003e\\n\u003cli style=\\\"font-weight: 400;\\\"\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eWe evaluate and confirm the issue, and then the IMOC starts an incident. \u003c/span\u003e\u003c/li\u003e\\n\u003cli style=\\\"font-weight: 400;\\\"\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eThe IMOC will ensure communication with other teams (or the operation sections expert in the outage area) and merchants has occurred, and confirm that a proper fix is found and pushed. \u003c/span\u003e\u003c/li\u003e\\n\u003cli style=\\\"font-weight: 400;\\\"\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eIf the fix is working as expected, the IMOC will stop the incident, and then document the service disruption. \u003c/span\u003e\u003c/li\u003e\\n\u003cli style=\\\"font-weight: 400;\\\"\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eAn investigation happens, followed by a root cause analysis (RCA) meeting, which usually leads to action items.\u003c/span\u003e\u003c/li\u003e\\n\u003cli style=\\\"font-weight: 400;\\\"\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eAddressing all action items results in the final resolution of the incident.\u003c/span\u003e\u003c/li\u003e\\n\u003c/ul\u003e\\n\u003cp\u003e\u003cb\u003eSpy incident\u003c/b\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eDuring an incident, incident response steps shouldn't be left to memory, especially when wanting to consistently offer an effective streamlined experience. Our chatbot, Spy, makes this easier by assisting the IMOC through the incident response. Spy features a set of incident commands that help reduce manual effort and context switching.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eWe integrated the bot with our conversation tool and several third-party tools (PagerDuty, StatusPage, GitHub) to send timely reminders. Here is an overview of our current ChatOps setup:\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003e\u003cimg src=\\\"//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-13_at_10.24.08_AM_large.png?v=1518536048\\\" alt=\\\"\\\" width=\\\"537\\\" height=\\\"246\\\"\u003e\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eChatOps is all about conversation-driven operations and uses group chat tools to go beyond basic conversation with context and actions taken from within the chat tool itself. It allows the infrastructure to be brought into the conversation. Communication between those third-party services and our chatbot is usually done via webhooks.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eAt Shopify, we use Slack as our chat app, and our main bot Spy stems from Lita. \u003c/span\u003e\u003ca href=\\\"https://www.lita.io/\\\"\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eLita\u003c/span\u003e\u003c/a\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003e is open source and written in Ruby, and can be extended easily. Behaviors can be added by simply defining modules.\u003c/span\u003e\u003c/p\u003e\\n\u003cdiv class=\\\"script-sandbox\\\"\u003e\u003cscript data-sandbox-src=\\\"https://gist.github.com/ShopifyEng/df56b3700296c8d5779848c2faf4bf34.js\\\"\u003e\u003c/script\u003e\u003c/div\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eWith the above overview of our ChatOps setup and the previous IMOC duties, we can now look into how Spy specifically helps with incident response.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eSpy has three main sets of commands that help with IMOC duties:\u003c/span\u003e\u003c/p\u003e\\n\u003cul\u003e\\n\u003cli style=\\\"font-weight: 400;\\\"\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003espy page\u003c/span\u003e\u003c/li\u003e\\n\u003cli style=\\\"font-weight: 400;\\\"\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003espy incident\u003c/span\u003e\u003c/li\u003e\\n\u003cli style=\\\"font-weight: 400;\\\"\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003espy status\u003c/span\u003e\u003c/li\u003e\\n\u003c/ul\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eTogether, they help the IMOC go through the incident response funnel steps.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cb\u003eStep 1: Failure detection\u003c/b\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eAn alert will page the IMOC. Someone who notices the failure may also do so via the \u003cem\u003e`spy page`\u003c/em\u003e command. Example: \u003cem\u003e`spy page \u003c/em\u003eimoc\u003cem\u003e order notifications not going out`\u003c/em\u003e\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eThe IMOC can also use a Spy command to acknowledge the page (e.g. \u003cem\u003e`spy pager \u003c/em\u003eimoc\u003cem\u003e ack 125`\u003c/em\u003e).\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cb\u003eStep 2: Start incident\u003c/b\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eOnce the issue is confirmed, the IMOC starts an incident with the \u003cem\u003e`spy start incident`\u003c/em\u003e command. Spy will then bind the incident to a #war-room Slack channel where all the discussions will take place. This is to focus all incident response discussion in one place and allow all participants to have a shared understanding of what is going on. Without this focus, we can easily end up with independent parallel discussions and lots of confusion about who is doing what and why.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003e\u003cimg src=\\\"//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_9.57.33_AM_large.png?v=1518536096\\\" alt=\\\"\\\"\u003e\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eSpy also automatically notifies the SRM in case they get related merchant calls or chats.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003e\u003cimg src=\\\"//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_10.20.18_AM_large.png?v=1518536156\\\" alt=\\\"\\\"\u003e\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eIf there was any prior ongoing issue, Spy will display that in the #war-room Slack channel.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cb\u003eStep 3: Communication\u003c/b\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eAfter the IMOC starts the incident, communication is crucial to ensure that every stakeholder is aware of the issue. Through the\u003cem\u003e `spy incident \u003c/em\u003etldr\u003cem\u003e`\u003c/em\u003e command, anyone at the company can ask Spy at any given moment what incidents are going on and see who is involved, when it started, and consult a brief summary.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003e\u003cimg src=\\\"//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_4.41.58_PM_large.png?v=1518536199\\\" alt=\\\"\\\"\u003e\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eCommunication with other teams can be done right from the war room. Here again no need to switch context: we can use \u003cem\u003e`spy incident tell`\u003c/em\u003e or \u003cem\u003e`spy page`\u003c/em\u003e command. As for actions, some can be performed right from #war-room for everyone to see, whether it’s a data center failover or a deploy lock. This also prevents confusion around what actions have been performed as they all occur in one space.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eOccasionally we communicate with some third-party services that have a hosted status page and pager, to resolve incidents or update the page.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cb\u003eStep 4: Fix and mitigate\u003c/b\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eSpy can perform different mitigation actions can as it is closely embedded in our infrastructure. Some examples include rebalancing traffic, data center failover, blackholing jobs, locking deploy stacks.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003e\u003cimg src=\\\"//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_10.22.02_AM_large.png?v=1518536439\\\" alt=\\\"\\\"\u003e\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cb\u003eStep 5: Stop incident\u003c/b\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eOnce the fix has been shipped and verified in production, the IMOC can use \u003cem\u003e`spy incident stop` \u003c/em\u003ecommand, which will generate a service disruption document to verify and post once ready.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003e\u003cimg src=\\\"//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-13_at_10.43.35_AM_large.png?v=1518536629\\\" alt=\\\"\\\"\u003e\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003e\u003cb\u003eStep 6: Document the service disruption\u003c/b\u003e\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eSpy will add any #war-room notes tagged with a notepad emoji (📝) or prefixed with \u003cem\u003e`spy incident note`\u003c/em\u003e\u0026nbsp;command to the service disruption document and post the resulting document in a direct message to the IMOC.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003e\u003cimg src=\\\"//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_10.13.13_AM_large.png?v=1518536813\\\" alt=\\\"\\\"\u003e\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cb\u003eTaking care of IMOCs\u003c/b\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eSpy also sends timely reminders. For instance, if an incident has been ongoing for a while and the status page hasn’t been updated, Spy will send the IMOC a reminder. It also has an on-call fatigue prevention mechanism built-in: if the IMOC has been handling an incident for pre-specified amount of time, Spy will reach out to the IMOC squad to help the current IMOC.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003e\u003cimg src=\\\"//cdn.shopify.com/s/files/1/0779/4361/files/Screen_Shot_2018-02-12_at_4.30.53_PM_large.png?v=1518536958\\\" alt=\\\"\\\"\u003e\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cb\u003eConclusion\u003c/b\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eOur chatbot supports best practices and \\\"streamlines\\\" incident response. Spy binds the incident to a discussion channel where all communications happen, allows status page updates directly from the chat room, keeps notes and records event times, and generates an incident summary. Our bot helps PEs stay focused during the incident, reduces post-incident toil, and supports detailed post-mortems. Spy has become a very important member of our team: always available and ready to help, enabling us to really effectively lead an incident response.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eTo learn more, catch my 2017 talk at SREcon:\u0026nbsp;\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003e\u003cdiv class=\\\"consent-gate\\\"\u003e\u003ciframe width=\\\"560\\\" height=\\\"315\\\" frameborder=\\\"0\\\" allow=\\\"autoplay; encrypted-media\\\" allowfullscreen=\\\"\\\" data-src=\\\"https://www.youtube.com/embed/gkmNrpZetGE\\\" credentialless=\\\"true\\\" sandbox=\\\"allow-downloads allow-forms allow-modals allow-orientation-lock allow-pointer-lock allow-popups allow-popups-to-escape-sandbox allow-presentation allow-scripts allow-top-navigation allow-top-navigation-by-user-activation\\\"\u003e\u003c/iframe\u003e\u003c/div\u003e\u003c/span\u003e\u003c/p\u003e\u003c/body\u003e\u003c/html\u003e\",\"excerpt\",\"excerptHtml\",\"\u003chtml\u003e\u003chead\u003e\u003cmeta charset=\\\"utf-8\\\"\u003e\u003cmeta charset=\\\"utf-8\\\"\u003e\\n\u003c/head\u003e\u003cbody\u003e\u003cp style=\\\"text-align: right;\\\"\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003e\u003cstrong\u003e8 minute read\u003c/strong\u003e\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eProduction engineers (PE) are expected to be incident management experts. Still, incident handling is difficult, often messy, and exhausting. We encounter new incidents, search high and low for possible explanations, sometimes tunnel on symptoms, and, under pressure, forget some best practices.\u003c/span\u003e\u003c/p\u003e\\n\u003cp\u003e\u003cspan style=\\\"font-weight: 400;\\\"\u003eAt Shopify, we care not only about handling incidents quickly and\u003cspan\u003e\u0026nbsp;\u003c/span\u003eefficiently,\u003cspan\u003e\u0026nbsp;\u003c/span\u003ebut also PE well-being. We have a special IMOC (incident manager on call) rotation and an incident chatbot to assist\u003cspan\u003e\u0026nbsp;\u003c/span\u003eIMOCs. This post provides an overview of incident management at Shopify, the responsibility of different roles during an incident, and how our chatbot works to support our team.\u003c/span\u003e\u003c/p\u003e\u003c/body\u003e\u003c/html\u003e\",{\"_1946\":1983,\"_477\":-5,\"_491\":-5},\"metafields\",[-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5],\"imageClass\",\"createdAt\",\"Feb 13, 2018\",\"createdAtRaw\",\"2018-02-13\",\"modifiedAtRaw\",\"author\",{\"_1973\":1974,\"_155\":45,\"_1975\":45,\"_1976\":1977,\"_1978\":59,\"_1979\":45,\"_1980\":45,\"_1981\":1982},\"name\",\"Daniella Niyonkuru\",\"bio\",\"avatarUrl\",\"https://www.gravatar.com/avatar/d41d8cd98f00b204e9800998ecf8427e?s=200\u0026d=404\",\"isDisabledAuthor\",\"slug\",\"reviewedBy\",\"additionalAuthors\",[],\"SEO\",\"Image\",\"altText\",\"width\",1399,\"height\",608,\"ArticleAuthor\",\"globalContent\",{\"_536\":537,\"_538\":539,\"_540\":541,\"_534\":535,\"_559\":560,\"_567\":568,\"_573\":574,\"_581\":582,\"_579\":580,\"_575\":576,\"_614\":615,\"_616\":617,\"_612\":613,\"_618\":619,\"_583\":584,\"_589\":590,\"_593\":594,\"_599\":600,\"_597\":598,\"_591\":592,\"_595\":596,\"_606\":607,\"_604\":605,\"_602\":603,\"_608\":609,\"_1740\":1741,\"_1791\":1792,\"_1795\":574,\"_1793\":1794,\"_1796\":1797,\"_1787\":1788,\"_1789\":1790,\"_1994\":45,\"_1995\":45,\"_1996\":45,\"_1779\":1780,\"_1997\":45,\"_1998\":45,\"_1999\":45,\"_2000\":45,\"_2001\":45,\"_2002\":45,\"_2003\":45,\"_2004\":45,\"_1738\":1739,\"_2005\":45,\"_2006\":45,\"_2007\":45,\"_1744\":1745,\"_1750\":1749,\"_1748\":1749,\"_1752\":1215,\"_1751\":1215,\"_1755\":1756,\"_1753\":1754,\"_1759\":1760,\"_1757\":1758,\"_1763\":1764,\"_1761\":1762,\"_1746\":1747,\"_1742\":1743,\"_1765\":1745,\"_1769\":1768,\"_1767\":1768,\"_1772\":1771,\"_1770\":1771,\"_1775\":1774,\"_1773\":1774,\"_1778\":1764,\"_1776\":1777,\"_1766\":1747,\"_857\":858,\"_843\":844,\"_834\":835,\"_2008\":45,\"_2009\":45,\"_864\":436,\"_944\":945,\"_1444\":1445,\"_2010\":45,\"_1046\":1047,\"_1094\":1095,\"_1127\":844,\"_1135\":1136,\"_2011\":45,\"_1238\":1239,\"_1242\":1243,\"_1246\":1247,\"_1490\":1491,\"_1267\":1268,\"_1277\":1278,\"_1281\":1282,\"_2012\":45,\"_2013\":45,\"_2014\":45,\"_2015\":45,\"_2016\":45,\"_2017\":45,\"_1275\":1276,\"_1279\":1280,\"_1273\":1274,\"_1269\":1270,\"_2018\":45,\"_1283\":1284,\"_2019\":45,\"_1271\":1272,\"_2020\":45,\"_1301\":1302,\"_1390\":1391,\"_1410\":858,\"_878\":879,\"_2021\":45,\"_2022\":45,\"_2023\":45,\"_2024\":45,\"_2025\":45,\"_2026\":45,\"_2027\":45,\"_2028\":45,\"_2029\":45,\"_938\":939,\"_880\":437,\"_881\":835,\"_882\":883,\"_2030\":45,\"_891\":892,\"_889\":890,\"_884\":844,\"_2031\":45},\"skipToContentText\",\"brochureBot.bookingFailed\",\"brochureBot.chatErrorFallback.problemLoadingAssistant\",\"brochureBot.chatErrorFallback.reloadThisPage\",\"brochureBot.enterpriseWelcomeQuestions.heading\",\"brochureBot.enterpriseWelcomeQuestions.questions.0.answer\",\"brochureBot.enterpriseWelcomeQuestions.questions.0.question\",\"brochureBot.enterpriseWelcomeQuestions.questions.1.answer\",\"brochureBot.enterpriseWelcomeQuestions.questions.1.question\",\"brochureBot.enterpriseWelcomeQuestions.questions.2.answer\",\"brochureBot.enterpriseWelcomeQuestions.questions.2.question\",\"brochureBot.enterpriseWelcomeQuestions.subhead\",\"brochureBot.messageInput.placeholder\",\"brochureBot.messageInput.send\",\"brochureBot.messageInput.stopGenerating\",\"globalNav.signupTextTryPlus\",\"globalNav.signupTextTryShopify\",\"nav.businessSizes\",\"nav.industries\",\"nav.posBikes\",\"nav.posClothingShoesAccessories\",\"nav.posFurnitureHomeDecor\",\"nav.posGiftHobbyToy\",\"nav.posGolf\",\"nav.posHardwarePaintSupply\",\"nav.posSkiSnowboarding\",\"nav.posSportingGoods\",\"nav.posWineLiquorBeer\",\"rightClickSave.copied\",\"rightClickSave.copyIcon\",\"rightClickSave.copyIconAriaLabel\",\"rightClickSave.copyLogo\",\"rightClickSave.copyLogoAriaLabel\",\"rightClickSave.downloadIconAlt\",\"rightClickSave.getBrandAssets\",\"rightClickSave.getBrandAssetsAriaLabel\",\"rightClickSave.menuAriaLabel\",\"signup.buttonTextTryPlus\",\"signup.trialDisclaimerHtml\"]\n");</script><!--$--><script>window.__reactRouterContext.streamController.close();</script><!--/$--><!--/$-->