Use retries to guard against flaky failures and alert fatigue, choosing between scheduled retry strategies for checks, check groups, and test sessions.
Sometimes the internet is flaky, or your app is just having a hiccup not worth pinging your on-call team about. Retries are your first line of defense against these types of false positives, leading to alert fatigue.Whether you need to retry a check or a test session, there are different retries available.
Use Retries instead of the deprecated “double check” option.
All check types and check groups, except for Heartbeat monitors, have a Retries & Alerting section available, where you can define the number of retries and which retry strategy your check or check group uses.Click Edit check or Edit group on the 3-dot menu on your Checkly Home page and select the Retries & Alerting tab:
There are three distinct retry strategies based on the time between retry attempts, and each one comes with different retry/backoff characteristics.
Single — retry once after a fixed interval, e.g. 5s.
Fixed — a fixed time between retries, e.g. 5s, 5s, 5s etc.
Linear — a linearly increasing time between retries, e.g. 5s, 10s, 15s etc.
Exponential — an exponentially increasing time between retries, e.g. 5s, 25s, 125s (2m and 5s) etc.
On top of the time between attempts, you can also set:
maximum number of retries - the maximum number of retries for this check or check group.
maximum total retry duration - the maximum time a check can be in a retrying state.
This is a timeout to ensure the check finishes on a timely manner.
Make sure to include the time your check needs to run when setting the maximum total retry duration. For example, if you set a maximum to 2 minutes, and your check takes 1.5 minutes, you have 30 seconds left for retries.
For checks that run on lower frequencies, e.g. once per hour, it makes sense to pick a strategy that retries more often, over longer stretches of time. Let’s look at an example:
A check with a 1-hour frequency breaks at 13:00 CET.
An exponential retry strategy with 3 retries and a 5-second interval is configured.
This generates retries spaced apart by 5 seconds, 25 seconds, 125 seconds.
Your check is now retried at about 13:00:05, 13:00:30 and 13:02:35.
If in that ~3-minute period your app / system recovers, and this was just a fluke, you will not be alerted. If the issue persists, Checkly will alert you as per your alert settings.For checks that run on higher frequencies, e.g. once per minute, it makes sense to pick a strategy that retries less often, and spaced apart by shorter intervals.Of course, picking the right strategy depends on your use case, tolerance for intermittent failures, SLO levels and other factors.
For API checks & URL monitors, you can enable network retries to automatically retry a check run only if it fails due to a network error—such as a timeout, DNS resolution issue, or connection reset.When network retries are enabled:
The check will retry on: ECONNRESET, ENOTFOUND, ETIMEDOUT, EAI_AGAIN, ECONNREFUSED, and similar network errors.
The check will not retry on: Any HTTP response that includes a status code (4xx or 5xx), failed assertions, or any other type of check failure.
Sporadically failing tests may be caused by a variety of reasons such as issues with the underlying infrastructure, and sometimes, simply re-running the test is enough to make it succeed again.Use retries to reduce noise in your test session results while providing information about the retry attempts.Specify the number of retries between 0 and 3 that you’d like Checkly to attempt when running npx checkly test or npx checkly trigger.The default number of retries is 0.You can configure the number of test session retries as a global setting in your Checkly configuration file:
# Checkly configuration filecli: { retries: 2,}
Using the CLI and the --retries= flag takes precedence over your Checkly configuration file.
# retry npx checkly test twicenpx checkly test --retries=2# retry npx checkly trigger 3 timesnpx checkly trigger --retries=3
All retry attempts are be visible on the web interface at Checkly and in your command line as they’re happening:
Use the --reporter=ci flag to run test session retries from your CI/CD pipeline. The ci reporter will print out all retry attempts in the prompt output, instead of live-updating the prompt.For example:
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"Checkly Docs","colors":{"primary":"#0075FF","light":"#2B8AFF","dark":"#031834"},"logo":{"light":"https://mintcdn.com/checkly-422f444a/KiRymP194lYB6fu_/logo/light.svg?fit=max\u0026auto=format\u0026n=KiRymP194lYB6fu_\u0026q=85\u0026s=c4c50c3b55e375fe5d06b52fad5c8032","dark":"https://mintcdn.com/checkly-422f444a/KiRymP194lYB6fu_/logo/dark.svg?fit=max\u0026auto=format\u0026n=KiRymP194lYB6fu_\u0026q=85\u0026s=4bb854d62eeba1ed323838710a533a2f"},"favicon":"https://mintcdn.com/checkly-422f444a/9iwkS8Mlm4KfOHnA/racoon_favicon.png?fit=max\u0026auto=format\u0026n=9iwkS8Mlm4KfOHnA\u0026q=85\u0026s=005761353168b62a923dddddc298da2c","navbar":{"links":[{"href":"https://www.checklyhq.com","label":"Home"},{"href":"https://www.checklyhq.com/docs/changelog/changelog/","label":"Changelog"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.checklyhq.com"}},"footer":{"socials":{"x":"https://x.com/checklyhq","github":"https://github.com/checkly","linkedin":"https://linkedin.com/company/checkly"}},"seo":{"metatags":{"canonical":"https://www.checklyhq.com/docs"}},"icons":{"library":"tabler"},"integrations":{"segment":{"key":"Bjlk6vx065LS2B25zVBzcfsjTaGrrpAM"},"telemetry":{"enabled":true}},"errors":{"404":{"redirect":false,"title":"Looks like this page has moved!","description":"Please try searching for the new page you're looking for in the search bar or sidebar."}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"checkly-422f444a","hasAudioNarration":false,"actualSubdomain":"checkly-422f444a","customDomains":["www.checklyhq.com"],"gitSource":{"type":"github","owner":"checkly","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aeaa0174e7ab0e193060863","collectionId":"985a9620-a794-43e1-a90a-64e80aa77c2a","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aeaa0174e7ab0e193060863"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aee3f9128e8c4ec9b15350a","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"API Reference","count":467},{"language":"default","tag":"Docs","count":218},{"language":"default","tag":"Learn","count":101},{"language":"default","tag":"Detect","count":68},{"language":"default","tag":"Getting Started","count":66},{"language":"default","tag":"Integrations","count":56},{"language":"default","tag":"Playwright","count":49},{"language":"default","tag":"Constructs","count":41},{"language":"default","tag":"Synthetic Monitoring","count":36},{"language":"default","tag":"Checks and Monitors","count":34}]},"assistantConfig":{"enableAskAiButton":false,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"support@checklyhq.com","showHelpButton":true}},"basePath":"/docs","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.sidebar-group-header{text-transform:uppercase;letter-spacing:0.04em}.eyebrow{text-transform:uppercase}li .group{margin-bottom:0rem!important;padding-bottom:.25rem!important}th{text-align:left}tr{border-bottom:1px solid var(--border-color, rgba(128, 128, 128, 0.15))}.field .font-semibold.text-primary[data-component-part=\"field-name\"]{line-height:normal;font-weight:700;font-size:1.15rem}.dark kbd{background-color:rgba(255, 255, 255, 0.08);border-color:rgba(255, 255, 255, 0.2);color:#e6e6e6}.sign-up-cta{position:relative;border-radius:0.5rem;padding:1.5rem;margin:1rem 0;background:linear-gradient(to bottom, #0c449a, #062047);color:#fff}.sign-up-cta-title{font-size:1.25rem;line-height:1.75rem;font-weight:700;text-wrap:balance;margin-bottom:0.25rem}.sign-up-cta-title img{display:inline-block;width:2rem;height:2rem;vertical-align:middle;margin-top:-0.25rem}.sign-up-cta-body{color:#e2e8f0}.sign-up-cta a{color:inherit}.sign-up-cta a::before{content:\"\";position:absolute;inset:0}header button[aria-label=\"Open search\"],header button[aria-label=\"Toggle assistant panel\"],header button[aria-label=\"Toggle dark mode\"],header button[aria-label=\"More actions\"]{position:relative}header button[aria-label=\"Open search\"]::after,header button[aria-label=\"Toggle assistant panel\"]::after,header button[aria-label=\"Toggle dark mode\"]::after,header button[aria-label=\"More actions\"]::after{content:\"\";position:absolute;top:50%;left:50%;width:44px;height:44px;transform:translate(-50%, -50%)}.home{--home-blue: #0075ff;--home-line: rgba(128, 128, 128, 0.2);--home-muted: #52525b;--home-text: #18181b;--home-surface: #fff;--home-surface-muted: #fafafa;width:100%;max-width:64rem;margin:0 auto;padding:2.5rem 1.5rem 5rem;color:var(--home-text);font-size:1rem;line-height:1.75rem}.dark .home{--home-blue: #2b8aff;--home-line: rgba(255, 255, 255, 0.12);--home-muted: #a1a1aa;--home-text: #f4f4f5;--home-surface: #0b0f17;--home-surface-muted: #10151f}.home a{text-decoration:none}.home code{font-size:0.85em}.home-hero{padding:1.5rem 0 2.5rem}.home-title{font-size:2.25rem;line-height:2.5rem;font-weight:600;letter-spacing:-0.025em;margin:0 0 0.75rem;color:var(--home-text)}.home-subtitle{max-width:36rem;font-size:1.125rem;line-height:1.75rem;color:var(--home-muted);margin:0}.home-hero-actions{display:flex;flex-wrap:wrap;align-items:center;gap:0.75rem;margin-top:1.5rem}.home-hero-hint{flex-basis:100%;font-size:0.875rem;color:var(--home-muted);line-height:1.25rem}.home-button,.home-tab-cta{display:inline-flex;align-items:center;justify-content:center;gap:0.5rem;padding:0.5rem 1.25rem;border:1px solid #041734;border-radius:0.5rem;font-size:1rem;font-weight:500;line-height:1.5rem;background:#041734;color:#fff!important;cursor:pointer;transition:background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease, transform 160ms cubic-bezier(0.23, 1, 0.32, 1)}.home-button-secondary,.home-tab-cta{background:transparent;color:#041734!important}.dark .home-button,.dark .home-tab-cta{border-color:#fff;background:#fff;color:#041734!important}.dark .home-button-secondary,.dark .home-tab-cta{background:transparent;color:#fff!important}.home-button:hover,.home-tab-links .home-tab-cta:hover{background:#002652;color:#fff!important}.home-button:active,.home-tab-links .home-tab-cta:active{background:#001b3d;transform:scale(0.97);transition-duration:0.1s}.home-button:focus-visible,.home-tab-cta:focus-visible{outline:2px solid var(--home-blue);outline-offset:3px}.home-section{padding:2.5rem 0}.home-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1.5rem;margin-bottom:1.5rem}.home-heading{font-size:1.5rem;line-height:2rem;font-weight:600;letter-spacing:-0.025em;margin:0 0 0.375rem;color:var(--home-text)}.home-lead{max-width:44rem;font-size:1rem;line-height:1.75rem;color:var(--home-muted);margin:0}.home-section-link{flex-shrink:0;display:inline-flex;align-items:center;gap:0.375rem;font-size:0.875rem;font-weight:500;color:var(--home-blue)!important;white-space:nowrap;line-height:1.25rem}.home-eyebrow{margin:1.75rem 0 0.75rem;font-size:0.75rem;font-weight:600;letter-spacing:0.04em;text-transform:uppercase;color:var(--home-muted);line-height:1rem}.home-eyebrow:first-of-type{margin-top:0}.home-tab{padding:1.25rem 1.25rem 1.5rem;border:1px solid var(--home-line);border-radius:0.5rem;background:var(--home-surface-muted)}.home-tab-title{display:flex;align-items:center;gap:0.5rem;font-size:1rem;font-weight:600;color:var(--home-text);line-height:1.5rem}.home-tab-title svg{color:var(--home-blue)}.home-tab-text{max-width:44rem;margin:0.5rem 0 1rem;font-size:1rem;line-height:1.75rem;color:var(--home-muted)}.home-tab-links{display:flex;flex-wrap:wrap;align-items:center;gap:0.5rem 1rem;margin-top:1rem;font-size:0.875rem;line-height:1.25rem}.home-tab-links a{color:var(--home-muted)}.home-tab-links a:hover{color:var(--home-text)}.home-grid,.home-news{display:grid;gap:1px;padding:1px;border-radius:0.5rem;background:var(--home-line);overflow:hidden}.home-grid{grid-template-columns:1fr}.home-news{grid-template-columns:1fr}.home-feature,.home-news-card,.home-connect-card{display:flex;flex-direction:column;gap:0.5rem;padding:1.25rem;background:var(--home-surface);color:var(--home-text)!important;transition:background-color 0.15s ease}.home-feature:hover,.home-news-card:hover{background:var(--home-surface-muted)}.home-news-featured{position:relative;isolation:isolate;overflow:hidden;grid-row:span 2}.home-news-featured .home-news-text{padding-bottom:10rem}.home-news-waves{position:absolute;z-index:-1;bottom:2.5rem;left:50%;width:auto;max-width:none;height:10rem;margin:0;transform:translateX(-50%);opacity:0.85;pointer-events:none}.home-tag{font-size:0.75rem;font-weight:600;letter-spacing:0.04em;text-transform:uppercase;color:var(--home-blue);line-height:1rem}.home-news-title,.home-feature-title{font-size:1rem;line-height:1.5rem;font-weight:600;color:var(--home-text)}.home-news-text,.home-feature-text{flex:1;font-size:1rem;line-height:1.5rem;color:var(--home-muted)}.home-card-link{display:inline-flex;align-items:center;gap:0.375rem;margin-top:0.5rem;font-size:0.875rem;font-weight:500;color:var(--home-text);line-height:1.25rem}.home-card-link svg{color:var(--home-blue)}.home-monitoring-group{padding:1.25rem;background:var(--home-surface)}.home-monitoring-group h3{margin:0 0 0.75rem}.home-monitoring-group ul{display:flex;flex-direction:column;gap:0.75rem;list-style:none;margin:0;padding:0;font-size:0.875rem;line-height:1.25rem}.home-monitoring-group a{color:var(--home-text)}.home-monitoring-group a:hover{color:var(--home-blue)}.home-connect-links{display:flex;flex-wrap:wrap;gap:1rem;margin-top:0.5rem;font-size:0.875rem;font-weight:500;line-height:1.25rem}.home-connect-links a{color:var(--home-text)}.home-connect-links a:hover{color:var(--home-blue)}@media (min-width: 640px){.home-grid{grid-template-columns:repeat(3, minmax(0, 1fr))}.home-news{grid-template-columns:repeat(3, minmax(0, 1fr))}}@media (max-width: 639px){.home-title{font-size:1.875rem;line-height:2.25rem}.home-section-head{flex-direction:column;align-items:flex-start;gap:0.5rem}.home-news-featured{grid-row:auto;padding-bottom:7.5rem}.home-news-featured .home-news-text{padding-bottom:0}.home-news-waves{bottom:-1rem;height:8rem}}.role-matrix table td{min-width:0}"}],"page":{"pagePath":"communicate/alerts/retries","slug":"/communicate/alerts/retries","pageMetadata":{"title":"Alert Retries","description":"Use retries to guard against flaky failures and alert fatigue, choosing between scheduled retry strategies for checks, check groups, and test sessions.","sidebarTitle":"Retries","canonical":"https://www.checklyhq.com/docs/communicate/alerts/retries/","href":"/communicate/alerts/retries"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Use retries to guard against flaky failures and alert fatigue, choosing between scheduled retry strategies for checks, check groups, and test sessions.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,blockquote:`blockquote`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,OptimizedImage,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Tip,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Monitoring as Code`}),`: Learn more about `,_jsx(_components.a,{href:`/constructs/retry-strategy`,children:`the retry strategies construct`}),`.`]})}),`\n`,_jsx(_components.p,{children:`Sometimes the internet is flaky, or your app is just having a hiccup not worth pinging your on-call team about. Retries are your first line of defense against these types of false positives, leading to alert fatigue.`}),`\n`,_jsx(_components.p,{children:`Whether you need to retry a check or a test session, there are different retries available.`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Use `,_jsx(_components.strong,{children:`Retries`}),` instead of the deprecated “double check” option.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`check-retry-strategies`,children:`Check retry strategies`}),`\n`,_jsxs(_components.p,{children:[`All check types and check groups, except for Heartbeat monitors, have a `,_jsx(_components.strong,{children:`Retries \u0026 Alerting`}),` section available, where you can define the number of retries and which retry strategy your check or check group uses.`]}),`\n`,_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Edit check`}),` or `,_jsx(_components.strong,{children:`Edit group`}),` on the 3-dot menu on your `,_jsx(_components.a,{href:`https://app.checklyhq.com/`,children:`Checkly Home page`}),` and select the `,_jsx(_components.strong,{children:`Retries \u0026 Alerting`}),` tab:`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/checkly-422f444a/1WeISIrYNKcz9b9p/images/docs/images/alerting/retries.png?fit=max\u0026auto=format\u0026n=1WeISIrYNKcz9b9p\u0026q=85\u0026s=9e4883f96efc2cf53b7ff83a8be17ee9`,alt:`configure retry strategy`,\"data-og-width\":`3096`,width:`3096`,\"data-og-height\":`1490`,height:`1490`,\"data-path\":`images/docs/images/alerting/retries.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/checkly-422f444a/1WeISIrYNKcz9b9p/images/docs/images/alerting/retries.png?w=280\u0026fit=max\u0026auto=format\u0026n=1WeISIrYNKcz9b9p\u0026q=85\u0026s=360397d3d30c44680232bcba03754c9e 280w, https://mintcdn.com/checkly-422f444a/1WeISIrYNKcz9b9p/images/docs/images/alerting/retries.png?w=560\u0026fit=max\u0026auto=format\u0026n=1WeISIrYNKcz9b9p\u0026q=85\u0026s=754aa6968d523be724abcc1618d5a0b0 560w, https://mintcdn.com/checkly-422f444a/1WeISIrYNKcz9b9p/images/docs/images/alerting/retries.png?w=840\u0026fit=max\u0026auto=format\u0026n=1WeISIrYNKcz9b9p\u0026q=85\u0026s=522e98c643b29dfa584244c6788934b0 840w, https://mintcdn.com/checkly-422f444a/1WeISIrYNKcz9b9p/images/docs/images/alerting/retries.png?w=1100\u0026fit=max\u0026auto=format\u0026n=1WeISIrYNKcz9b9p\u0026q=85\u0026s=6e91b678bb14146f2b0a2b8b8a28ad78 1100w, https://mintcdn.com/checkly-422f444a/1WeISIrYNKcz9b9p/images/docs/images/alerting/retries.png?w=1650\u0026fit=max\u0026auto=format\u0026n=1WeISIrYNKcz9b9p\u0026q=85\u0026s=6ba524718fea30e30c02fc6f9378b224 1650w, https://mintcdn.com/checkly-422f444a/1WeISIrYNKcz9b9p/images/docs/images/alerting/retries.png?w=2500\u0026fit=max\u0026auto=format\u0026n=1WeISIrYNKcz9b9p\u0026q=85\u0026s=7ff28d308d396cc83607e6284d32905c 2500w`}),`\n`,_jsx(Heading,{level:`3`,id:`scheduled-check-retries`,children:`Scheduled check retries`}),`\n`,_jsx(_components.p,{children:`There are three distinct retry strategies based on the time between retry attempts, and each one comes with different retry/backoff characteristics.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Single`}),` — retry once after a fixed interval, e.g. 5s.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Fixed`}),` — a fixed time between retries, e.g. 5s, 5s, 5s etc.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Linear`}),` — a linearly increasing time between retries, e.g. 5s, 10s, 15s etc.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Exponential`}),` — an exponentially increasing time between retries, e.g. 5s, 25s, 125s (2m and 5s) etc.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`On top of the time between attempts, you can also set:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`maximum number of retries`}),` - the maximum number of retries for this check or check group.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`maximum total retry duration`}),` - the maximum time a check can be in a retrying state.\nThis is a timeout to ensure the check finishes on a timely manner.`]}),`\n`]}),`\n`,_jsxs(_components.blockquote,{children:[`\n`,_jsxs(_components.p,{children:[`Make sure to include the time your check needs to run when setting the `,_jsx(_components.strong,{children:`maximum total retry duration`}),`. For example, if you set a maximum to 2 minutes, and your check takes 1.5 minutes, you have 30 seconds left for retries.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`4`,id:`how-often-should-i-retry`,children:`How often should I retry?`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`For checks that run on lower frequencies`}),`, e.g. once per hour, it makes sense to pick a strategy that retries more often, over longer stretches of time. Let’s look at an example:`]}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`A check with a 1-hour frequency breaks at 13:00 CET.`}),`\n`,_jsx(_components.li,{children:`An exponential retry strategy with 3 retries and a 5-second interval is configured.`}),`\n`,_jsx(_components.li,{children:`This generates retries spaced apart by 5 seconds, 25 seconds, 125 seconds.`}),`\n`,_jsx(_components.li,{children:`Your check is now retried at about 13:00:05, 13:00:30 and 13:02:35.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`If in that ~3-minute period your app / system recovers, and this was just a fluke, you will not be alerted. If the issue persists, Checkly will alert you as per your alert settings.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`For checks that run on higher frequencies`}),`, e.g. once per minute, it makes sense to pick a strategy that retries less often, and spaced apart by shorter intervals.`]}),`\n`,_jsx(_components.p,{children:`Of course, picking the right strategy depends on your use case, tolerance for intermittent failures, SLO levels and other factors.`}),`\n`,_jsx(Heading,{level:`3`,id:`location-based-check-retries`,children:`Location-based check retries`}),`\n`,_jsxs(_components.p,{children:[`You can decide if a check should be retried from the same location or not with the checkbox:\n`,_jsx(_components.strong,{children:`Always retry from the same location the check failed in`})]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`If enabled, a check that fails will be retried in the same location.`}),`\n`,_jsx(_components.li,{children:`If disabled, a check that fails will be retried in a different location, from the locations your check runs at.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`There are some tradeoffs to consider:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Retrying from the same location makes sense if you care strongly about the uptime of your app in one specific location, compared to other locations.`}),`\n`,_jsx(_components.li,{children:`Retrying from a different location makes sense, if you want to make sure your app is up in at least one location.`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`network-retries`,children:`Network retries`}),`\n`,_jsx(_components.p,{children:`For API checks \u0026 URL monitors, you can enable network retries to automatically retry a check run only if it fails due to a network error—such as a timeout, DNS resolution issue, or connection reset.`}),`\n`,_jsx(_components.p,{children:`When network retries are enabled:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`The check will retry on: ECONNRESET, ENOTFOUND, ETIMEDOUT, EAI_AGAIN, ECONNREFUSED, and similar network errors.`}),`\n`,_jsx(_components.li,{children:`The check will not retry on: Any HTTP response that includes a status code (4xx or 5xx), failed assertions, or any other type of check failure.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`test-sessions-retries`,children:`Test sessions retries`}),`\n`,_jsx(_components.p,{children:`Sporadically failing tests may be caused by a variety of reasons such as issues with the underlying infrastructure, and sometimes, simply re-running the test is enough to make it succeed again.`}),`\n`,_jsxs(_components.p,{children:[`Use retries to reduce noise in your `,_jsx(_components.a,{href:`/detect/testing/overview`,children:`test session results`}),` while providing information about the retry attempts.`]}),`\n`,_jsxs(_components.p,{children:[`Specify the number of retries between 0 and 3 that you’d like Checkly to attempt when running `,_jsx(_components.code,{children:`npx checkly test`}),` or `,_jsx(_components.code,{children:`npx checkly trigger`}),`.`]}),`\n`,_jsx(_components.p,{children:`The default number of retries is 0.`}),`\n`,_jsx(_components.p,{children:`You can configure the number of test session retries as a global setting in your Checkly configuration file:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Checkly configuration file`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`cli:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` retries:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 2,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Using the CLI and the `,_jsx(_components.code,{children:`--retries=`}),` flag takes precedence over your Checkly configuration file.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# retry npx checkly test twice`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`npx`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` checkly`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` test`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --retries=2`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# retry npx checkly trigger 3 times`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`npx`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` checkly`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` trigger`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --retries=3`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`All retry attempts are be visible on the web interface at Checkly and in your command line as they’re happening:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`1`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` retrying,`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 5`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` passed,`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 6`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` total`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`test-session-retries-in-your-ci/cd-pipeline`,children:`Test session retries in your CI/CD pipeline`}),`\n`,_jsxs(_components.p,{children:[`Use the `,_jsx(_components.code,{children:`--reporter=ci`}),` flag to run test session retries from your CI/CD pipeline. The `,_jsx(_components.code,{children:`ci`}),` reporter will print out all retry attempts in the prompt output, instead of live-updating the prompt.`]}),`\n`,_jsx(_components.p,{children:`For example:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`npx`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` checkly`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` test`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --retries=2`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --reporter=ci`})]}),`\n`]})})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Alert Retries","description":"Use retries to guard against flaky failures and alert fatigue, choosing between scheduled retry strategies for checks, check groups, and test sessions.","sidebarTitle":"Retries","canonical":"https://www.checklyhq.com/docs/communicate/alerts/retries/","href":"/communicate/alerts/retries"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Check retry strategies","slug":"check-retry-strategies","depth":2,"children":[{"title":"Scheduled check retries","slug":"scheduled-check-retries","depth":3,"children":[]},{"title":"How often should I retry?","slug":"how-often-should-i-retry","depth":4,"children":[]},{"title":"Location-based check retries","slug":"location-based-check-retries","depth":3,"children":[]},{"title":"Network retries","slug":"network-retries","depth":3,"children":[]}]},{"title":"Test sessions retries","slug":"test-sessions-retries","depth":2,"children":[{"title":"Test session retries in your CI/CD pipeline","slug":"test-session-retries-in-your-ci/cd-pipeline","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/checkly-422f444a/aad71fb35d0772c0/block-headless.js","/docs/_mintlify/custom/checkly-422f444a/3f79a661eed0dd6f/unify-tracking.js","/docs/_mintlify/custom/checkly-422f444a/b003b8f3946ae09a/vercel-analytics.js"],"subdomain":"checkly-422f444a","siteName":"Checkly Docs","title":"Alert Retries - Checkly Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-07-10T16:16:57.318Z","originalFileLocation":"communicate/alerts/retries.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Use retries to guard against flaky failures and alert fatigue, choosing between scheduled retry strategies for checks, check groups, and test sessions.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Checkly Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Alert Retries - Checkly Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Use retries to guard against flaky failures and alert fatigue, choosing between scheduled retry strategies for checks, check groups, and test sessions.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Checkly Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://www.checklyhq.com/docs/communicate/alerts/retries/\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://checkly-422f444a.mintlify.site/docs/_mintlify/api/og/v2?division=Alerts\u0026amp;title=Alert+Retries\u0026amp;description=Use+retries+to+guard+against+flaky+failures+and+alert+fatigue%2C+choosing+between+scheduled+retry+strategies+for+checks%2C+check+groups%2C+and+test+sessions.\u0026amp;theme=177ebac03dbdb024a546ac51\u0026amp;signature=9ec4f5d0e34f79a6306824fb8860f0ff4413ca68a4834d37b60e7ef1fa18abc6\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Alert Retries - Checkly Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Use retries to guard against flaky failures and alert fatigue, choosing between scheduled retry strategies for checks, check groups, and test sessions.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://checkly-422f444a.mintlify.site/docs/_mintlify/api/og/v2?division=Alerts\u0026amp;title=Alert+Retries\u0026amp;description=Use+retries+to+guard+against+flaky+failures+and+alert+fatigue%2C+choosing+between+scheduled+retry+strategies+for+checks%2C+check+groups%2C+and+test+sessions.\u0026amp;theme=177ebac03dbdb024a546ac51\u0026amp;signature=9ec4f5d0e34f79a6306824fb8860f0ff4413ca68a4834d37b60e7ef1fa18abc6\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/checkly-422f444a/2kkgPuwuI9OgTLg8/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Checkly Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0075FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://www.checklyhq.com/docs/communicate/alerts/retries/\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/communicate/alerts/retries.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.checklyhq.com/#organization\",\"name\":\"Checkly Docs\",\"url\":\"https://www.checklyhq.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/checkly-422f444a/KiRymP194lYB6fu_/logo/light.svg?fit=max\u0026auto=format\u0026n=KiRymP194lYB6fu_\u0026q=85\u0026s=c4c50c3b55e375fe5d06b52fad5c8032\"}},{\"@type\":\"WebSite\",\"@id\":\"https://www.checklyhq.com/docs#website\",\"name\":\"Checkly Docs\",\"url\":\"https://www.checklyhq.com/docs\",\"publisher\":{\"@id\":\"https://www.checklyhq.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://www.checklyhq.com/docs/communicate/alerts/retries/#webpage\",\"url\":\"https://www.checklyhq.com/docs/communicate/alerts/retries/\",\"name\":\"Alert Retries\",\"description\":\"Use retries to guard against flaky failures and alert fatigue, choosing between scheduled retry strategies for checks, check groups, and test sessions.\",\"dateModified\":\"2026-07-10T16:16:57.318Z\",\"isPartOf\":{\"@id\":\"https://www.checklyhq.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://www.checklyhq.com/docs/communicate/alerts/retries/#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://www.checklyhq.com/docs/communicate/alerts/retries/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Communicate\",\"item\":\"https://www.checklyhq.com/docs/communicate/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Alerts\",\"item\":\"https://www.checklyhq.com/docs/communicate/alerts/overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Alert Retries\",\"item\":\"https://www.checklyhq.com/docs/communicate/alerts/retries/\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://www.checklyhq.com/docs/communicate/alerts/retries/#article\",\"headline\":\"Alert Retries\",\"name\":\"Alert Retries\",\"description\":\"Use retries to guard against flaky failures and alert fatigue, choosing between scheduled retry strategies for checks, check groups, and test sessions.\",\"url\":\"https://www.checklyhq.com/docs/communicate/alerts/retries/\",\"mainEntityOfPage\":{\"@id\":\"https://www.checklyhq.com/docs/communicate/alerts/retries/#webpage\"},\"dateModified\":\"2026-07-10T16:16:57.318Z\",\"publisher\":{\"@id\":\"https://www.checklyhq.com/#organization\"},\"isPartOf\":{\"@id\":\"https://www.checklyhq.com/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Checkly Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Checkly Docs","nav":{"global":null,"tabs":[{"tab":"Docs","groups":[{"group":"Getting Started","pages":[{"title":"What is Checkly?","sidebarTitle":"What is Checkly?","mode":"wide","href":"/what-is-checkly"},{"title":"Checkly Quickstart","sidebarTitle":"Quickstart","href":"/quickstart"},{"group":"Concepts","pages":[{"title":"What are Checks?","sidebarTitle":"Checks","href":"/concepts/checks"},{"title":"Monitoring as Code","href":"/concepts/monitoring-as-code"},{"title":"Monitor multiple environments","sidebarTitle":"Environments","href":"/concepts/environments"},{"title":"Locations","sidebarTitle":"Locations","href":"/concepts/locations"},{"title":"Scheduling","sidebarTitle":"Scheduling","href":"/concepts/scheduling"},{"title":"Results","sidebarTitle":"Results","href":"/concepts/results"},{"title":"Cancellation","sidebarTitle":"Cancellation","href":"/concepts/cancellation"},{"title":"Metrics","sidebarTitle":"Metrics","href":"/concepts/metrics"}]},{"group":"Platform","pages":[{"title":"Groups","sidebarTitle":"Groups","href":"/platform/groups"},{"title":"Filters","sidebarTitle":"Filters","href":"/platform/filters"},{"title":"Views","sidebarTitle":"Views","href":"/platform/views"},{"group":"Private Locations","pages":[{"title":"Getting started with private locations","sidebarTitle":"Overview","href":"/platform/private-locations/overview"},{"title":"Agent Configuration","href":"/platform/private-locations/agent-configuration"},{"title":"Agent Metrics","sidebarTitle":"Agent Metrics","href":"/platform/private-locations/agent-metrics"},{"title":"Agent Images","sidebarTitle":"Agent Images","href":"/platform/private-locations/agent-images"},{"title":"Kubernetes Deployment","href":"/platform/private-locations/kubernetes-deployment"},{"title":"Proxy Setup","href":"/platform/private-locations/proxy-setup"},{"title":"Scaling and Redundancy","href":"/platform/private-locations/scaling-redundancy"},{"title":"Autoscaling","href":"/platform/private-locations/autoscaling"},{"title":"Checkly Agent Changelog","sidebarTitle":"Agent Changelog","href":"/platform/private-locations/change-log"}]},{"group":"Reporting","pages":[{"title":"Reporting Results with Checkly","sidebarTitle":"Overview","href":"/platform/reporting/overview"},{"title":"Analytics API","sidebarTitle":"Analytics API","href":"/platform/reporting/analytics-api"}]},{"group":"Runtimes","pages":[{"title":"Checkly Runtimes","sidebarTitle":"Overview","href":"/platform/runtimes/overview"},{"title":"Runtime Specification","sidebarTitle":"Runtime Specification","href":"/platform/runtimes/runtime-specification"}]},{"title":"Storing Secrets","sidebarTitle":"Storing Secrets","href":"/platform/secrets"},{"title":"Manage secrets at scale","sidebarTitle":"Secrets at scale","href":"/platform/manage-secrets-at-scale"},{"title":"Dynamic Secret Scrubbing","sidebarTitle":"Secret Scrubbing","href":"/platform/dynamic-secret-scrubbing"},{"title":"How we store data","sidebarTitle":"Data Storage","mode":"wide","href":"/platform/data-storage"},{"title":"Environment variables and secrets","sidebarTitle":"Environment variables","href":"/platform/variables"},{"title":"Allowlisting Traffic","sidebarTitle":"Allowlisting Traffic","href":"/platform/allowlisting-traffic"},{"title":"IP Information \u0026 Versions","sidebarTitle":"IP Information","href":"/platform/ip-information"},{"title":"Network Diagnostic Tools","sidebarTitle":"Network Diagnostic Tools","href":"/platform/network-diagnostic-tools"},{"title":"Managing False Positives","sidebarTitle":"Managing False Positives","href":"/platform/managing-false-positives"}]},{"group":"Admin","pages":[{"title":"Creating an API key in Checkly","sidebarTitle":"Creating an API Key","href":"/admin/creating-api-key"},{"group":"Team Management","pages":[{"title":"Admin Overview","sidebarTitle":"Overview","href":"/admin/team-management/overview"},{"title":"Permissions reference","sidebarTitle":"Permissions","href":"/admin/team-management/permissions"},{"title":"Adding team members to your Checkly account","sidebarTitle":"Adding Team Members","href":"/admin/team-management/adding-team-members"},{"title":"Managing team members","sidebarTitle":"Managing Team Members","href":"/admin/team-management/managing-team-members"},{"title":"Custom roles","sidebarTitle":"Custom Roles","tag":"Beta","href":"/admin/team-management/custom-roles"},{"title":"Multi-Factor Authentication in Checkly","sidebarTitle":"Multi-Factor Auth","href":"/admin/team-management/multi-factor-authentication"},{"title":"Single Sign-on in Checkly","sidebarTitle":"Single Sign-On","href":"/admin/team-management/single-sign-on"}]},{"title":"Changing your email or password in Checkly","sidebarTitle":"Changing Email or Password","href":"/admin/changing-your-email-password"},{"title":"Deleting your Checkly account","sidebarTitle":"Deleting Your Account","href":"/admin/deleting-your-account"}]}]},{"group":"Detect","pages":[{"title":"Checkly Detect","sidebarTitle":"Overview","href":"/detect/overview"},{"group":"Uptime Monitoring","pages":[{"title":"Uptime Monitoring","sidebarTitle":"Overview","href":"/detect/uptime-monitoring/overview"},{"group":"URL Monitors","pages":[{"title":"URL monitors overview","sidebarTitle":"Overview","href":"/detect/uptime-monitoring/url-monitors/overview"},{"title":"Creating a URL monitor","sidebarTitle":"Quickstart","href":"/detect/uptime-monitoring/url-monitors/quickstart"},{"title":"URL monitor configuration","sidebarTitle":"Configuration","href":"/detect/uptime-monitoring/url-monitors/configuration"}]},{"group":"TCP Monitors","pages":[{"title":"TCP monitors overview","sidebarTitle":"Overview","href":"/detect/uptime-monitoring/tcp-monitors/overview"},{"title":"Creating a TCP monitor","sidebarTitle":"Quickstart","href":"/detect/uptime-monitoring/tcp-monitors/quickstart"},{"title":"TCP monitor configuration","sidebarTitle":"Configuration","href":"/detect/uptime-monitoring/tcp-monitors/configuration"}]},{"group":"DNS Monitors","pages":[{"title":"DNS monitors overview","sidebarTitle":"Overview","href":"/detect/uptime-monitoring/dns-monitors/overview"},{"title":"DNS monitor configuration","sidebarTitle":"Configuration","href":"/detect/uptime-monitoring/dns-monitors/configuration"}]},{"group":"ICMP Monitors","pages":[{"title":"ICMP monitors overview","sidebarTitle":"Overview","href":"/detect/uptime-monitoring/icmp-monitors/overview"},{"title":"ICMP monitor configuration","sidebarTitle":"Configuration","href":"/detect/uptime-monitoring/icmp-monitors/configuration"}]},{"group":"Traceroute Monitors","pages":[{"title":"Traceroute monitors overview","sidebarTitle":"Overview","href":"/detect/uptime-monitoring/traceroute-monitors/overview"},{"title":"Traceroute monitor configuration","sidebarTitle":"Configuration","href":"/detect/uptime-monitoring/traceroute-monitors/configuration"}]},{"group":"gRPC Monitors","pages":[{"title":"gRPC monitors overview","sidebarTitle":"Overview","href":"/detect/uptime-monitoring/grpc-monitors/overview"},{"title":"gRPC monitor configuration","sidebarTitle":"Configuration","href":"/detect/uptime-monitoring/grpc-monitors/configuration"}]},{"group":"SSL Monitors","pages":[{"title":"SSL monitor overview","sidebarTitle":"Overview","href":"/detect/uptime-monitoring/ssl-monitors/overview"},{"title":"SSL monitor configuration","sidebarTitle":"Configuration","href":"/detect/uptime-monitoring/ssl-monitors/configuration"}]},{"group":"Heartbeat Monitors","pages":[{"title":"Heartbeat monitors","sidebarTitle":"Overview","href":"/detect/uptime-monitoring/heartbeat-monitors/overview"},{"title":"Creating a Heartbeat monitor","sidebarTitle":"Quickstart","href":"/detect/uptime-monitoring/heartbeat-monitors/quickstart"},{"title":"Heartbeat Examples","sidebarTitle":"Examples","href":"/detect/uptime-monitoring/heartbeat-monitors/examples"}]}]},{"group":"Synthetic Monitoring","pages":[{"title":"Synthetic Monitoring Overview","sidebarTitle":"Overview","href":"/detect/synthetic-monitoring/overview"},{"group":"API Checks","pages":[{"title":"API checks overview","sidebarTitle":"Overview","href":"/detect/synthetic-monitoring/api-checks/overview"},{"title":"Creating an API check","sidebarTitle":"Quickstart","href":"/detect/synthetic-monitoring/api-checks/quickstart"},{"title":"Configuration","sidebarTitle":"Configuration","href":"/detect/synthetic-monitoring/api-checks/configuration"},{"title":"Setup and Teardown Scripts","sidebarTitle":"Setup and Teardown","href":"/detect/synthetic-monitoring/api-checks/setup-and-teardown"},{"title":"API check structure","sidebarTitle":"MaC Structure","href":"/detect/synthetic-monitoring/api-checks/api-structure"},{"title":"Client certificates","sidebarTitle":"Client Certificates","href":"/detect/synthetic-monitoring/api-checks/client-certificates"},{"title":"Creating Checks from an OpenAPI Spec","sidebarTitle":"Importing OpenAPI Spec","href":"/detect/synthetic-monitoring/api-checks/openapi-spec"},{"title":"API check troubleshooting","sidebarTitle":"Troubleshooting","href":"/detect/synthetic-monitoring/api-checks/troubleshooting"}]},{"title":"Playwright Monitoring Options","sidebarTitle":"Playwright Monitoring Options","href":"/detect/synthetic-monitoring/playwright-monitoring-comparison"},{"group":"Multistep Checks","pages":[{"title":"Multistep checks overview","sidebarTitle":"Overview","href":"/detect/synthetic-monitoring/multistep-checks/overview"},{"title":"Creating a Multistep check","sidebarTitle":"Quickstart","href":"/detect/synthetic-monitoring/multistep-checks/quickstart"},{"title":"Multistep check structure","sidebarTitle":"MaC Structure","href":"/detect/synthetic-monitoring/multistep-checks/multistep-structure"},{"title":"Degraded states in Multistep checks","sidebarTitle":"Degraded States","href":"/detect/synthetic-monitoring/multistep-checks/degraded-states"},{"title":"Uploading \u0026 Downloading Files To The File System","sidebarTitle":"File System","href":"/detect/synthetic-monitoring/multistep-checks/file-system"},{"title":"WebSockets on Multistep checks","sidebarTitle":"WebSockets","href":"/detect/synthetic-monitoring/multistep-checks/websockets"},{"title":"Multistep check examples","sidebarTitle":"Examples","href":"/detect/synthetic-monitoring/multistep-checks/examples"}]},{"group":"Browser Checks","pages":[{"title":"Browser checks overview","sidebarTitle":"Overview","href":"/detect/synthetic-monitoring/browser-checks/overview"},{"title":"Creating a Browser check","sidebarTitle":"Quickstart","href":"/detect/synthetic-monitoring/browser-checks/quickstart"},{"title":"Browser check structure","sidebarTitle":"MaC Structure","href":"/detect/synthetic-monitoring/browser-checks/mac-structure"},{"title":"Performance \u0026 Web Vitals","sidebarTitle":"Performance Metrics","href":"/detect/synthetic-monitoring/browser-checks/performance-metrics"},{"title":"Visual Monitoring with Checkly","sidebarTitle":"Visual Monitoring","href":"/detect/synthetic-monitoring/browser-checks/visual-regressions"},{"title":"Playwright Support in Checkly","sidebarTitle":"Playwright Support","href":"/detect/synthetic-monitoring/browser-checks/playwright-support"},{"title":"Browser check timeouts","sidebarTitle":"Timeouts","href":"/detect/synthetic-monitoring/browser-checks/timeouts"},{"title":"Degraded state","sidebarTitle":"Degraded State","href":"/detect/synthetic-monitoring/browser-checks/degraded"},{"title":"Trouble Shotting and Debugging","sidebarTitle":"Troubleshooting","href":"/detect/synthetic-monitoring/browser-checks/troubleshooting"}]},{"group":"Playwright Check Suites","pages":[{"title":"Playwright Check Suites","sidebarTitle":"Overview","href":"/detect/synthetic-monitoring/playwright-checks/overview"},{"title":"Creating a Playwright Check Suite","sidebarTitle":"Quickstart","href":"/detect/synthetic-monitoring/playwright-checks/quickstart"},{"title":"Playwright Check Suites Configuration","sidebarTitle":"Configuration","href":"/detect/synthetic-monitoring/playwright-checks/configuration"},{"title":"Organize your tests and monitors","sidebarTitle":"Test organization","href":"/detect/synthetic-monitoring/playwright-checks/test-organization"},{"title":"Performance \u0026 Web Vitals","sidebarTitle":"Web Vitals","href":"/detect/synthetic-monitoring/playwright-checks/performance-metrics"},{"title":"Adding Playwright Check Suites to Groups","sidebarTitle":"Add to Group","href":"/detect/synthetic-monitoring/playwright-checks/add-to-group"},{"title":"Dependencies in Playwright Check Suites","sidebarTitle":"Dependencies","href":"/detect/synthetic-monitoring/playwright-checks/dependencies"},{"title":"Packages from Internal Registries in Playwright Check Suites","sidebarTitle":"Internal Registries","href":"/detect/synthetic-monitoring/playwright-checks/internal-registries"},{"title":"Playwright Check Suite environment variables","sidebarTitle":"Environment variables","href":"/detect/synthetic-monitoring/playwright-checks/environment-variables"},{"title":"Playwright Check Suite Timeouts","sidebarTitle":"Timeouts","href":"/detect/synthetic-monitoring/playwright-checks/timeouts"}]}]},{"group":"Testing","pages":[{"title":"Testing","sidebarTitle":"Overview","href":"/detect/testing/overview"},{"title":"Creating Your First Test","sidebarTitle":"Creating Your First Test","href":"/detect/testing/creating-your-first-test"},{"title":"Using environment variables","sidebarTitle":"Environment variables","href":"/detect/testing/using-env-variables"},{"title":"Playwright Reporter","sidebarTitle":"Using the Playwright Reporter","href":"/detect/testing/playwright-reporter"},{"title":"Playwright Reporter Changelog","sidebarTitle":"Reporter Changelog","href":"/detect/testing/playwright-reporter-changelog"}]},{"title":"Defining Assertions","sidebarTitle":"Assertions","href":"/detect/assertions"}]},{"group":"Communicate","pages":[{"title":"Checkly Communicate","sidebarTitle":"Overview","href":"/communicate/overview"},{"group":"Alerts","pages":[{"title":"Alerting With Checkly","sidebarTitle":"Overview","mode":"wide","href":"/communicate/alerts/overview"},{"title":"Alert Configuration","sidebarTitle":"Configuration","href":"/communicate/alerts/configuration"},{"title":"Alert channels","description":"Configure notification channels to receive alerts when checks fail, degrade, or recover. Choose from email, Slack, webhooks, PagerDuty, SMS, and custom integrations.","sidebarTitle":"Channels","href":"/communicate/alerts/channels"},{"title":"Alert Retries","sidebarTitle":"Retries","href":"/communicate/alerts/retries"},{"title":"SSL Certificate Expiration Alerts","description":"Get alerted up to 30 days before an SSL certificate expires. Checkly checks your certificate hourly and can notify any alert channel at your chosen threshold.","sidebarTitle":"SSL Alerts","href":"/communicate/alerts/ssl-expiration"},{"title":"Alert Notification Log","sidebarTitle":"Notification Log","href":"/communicate/alerts/notification-log"}]},{"group":"Status Pages","pages":[{"title":"Status pages overview","sidebarTitle":"Overview","href":"/communicate/status-pages/overview"},{"title":"Creating a status page","sidebarTitle":"Creating a status page","href":"/communicate/status-pages/creating-a-status-page"},{"title":"Custom domain","sidebarTitle":"Custom Domain","href":"/communicate/status-pages/custom-domain"},{"title":"Status page customization","sidebarTitle":"Customization","href":"/communicate/status-pages/customization"},{"title":"Password Protection","sidebarTitle":"Password Protection","href":"/communicate/status-pages/password-protection"},{"title":"Incident Management","sidebarTitle":"Incidents","href":"/communicate/status-pages/incidents"},{"title":"Status page maintenance","sidebarTitle":"Maintenance","href":"/communicate/status-pages/maintenance-windows"},{"title":"Subscriber Notifications","sidebarTitle":"Subscriber Notifications","href":"/communicate/status-pages/subscriber-notifications"},{"title":"Status pages v2 (deprecated)","sidebarTitle":"v2 (deprecated)","href":"/communicate/status-pages/v2-deprecated"}]},{"group":"Dashboards","pages":[{"title":"Dashboards overview","sidebarTitle":"Overview","href":"/communicate/dashboards/overview"},{"title":"Dashboard configuration","sidebarTitle":"Configuration","href":"/communicate/dashboards/configuration"},{"title":"Customizing your dashboard with CSS","sidebarTitle":"Custom CSS","href":"/communicate/dashboards/custom-css"},{"title":"Incident \u0026 Maintenance messages","sidebarTitle":"Incidents","href":"/communicate/dashboards/incidents"}]},{"title":"Maintenance windows","sidebarTitle":"Maintenance windows","href":"/communicate/maintenance-windows/overview"}]},{"group":"Resolve","pages":[{"title":"Checkly Resolve","sidebarTitle":"Overview","href":"/resolve/overview"},{"title":"Rocky AI Root Cause Analysis","sidebarTitle":"AI Root Cause Analysis","href":"/resolve/ai-root-cause-analysis/overview"},{"title":"Automatic check repair","sidebarTitle":"Automatic Repair","href":"/resolve/automatic-check-repair"},{"group":"Traces","pages":[{"title":"Traces","sidebarTitle":"Overview","href":"/resolve/traces/overview"},{"title":"How It Works","href":"/resolve/traces/how-it-works"},{"group":"Importing","pages":[{"title":"Importing Traces To Checkly","sidebarTitle":"Importing Traces","href":"/resolve/traces/import/overview"},{"title":"Setting Up The OpenTelemetry Collector","sidebarTitle":"From OpenTelemetry","href":"/resolve/traces/import/open-telemetry"},{"title":"Missing Spans","sidebarTitle":"Missing Spans","href":"/resolve/traces/import/missing-spans"},{"title":"HTTPS vs GRPC Traces","sidebarTitle":"HTTPS vs GRPC","href":"/resolve/traces/import/https-grpc"}]},{"group":"Exporting","pages":[{"title":"Export traces to your observability backend","sidebarTitle":"Exporting","href":"/resolve/traces/export/overview"}]},{"group":"Instrumentation","pages":[{"title":"Next.js","sidebarTitle":"Next.js","href":"/resolve/traces/instrumentation/nextjs"},{"title":"Node.js","sidebarTitle":"Node.js","href":"/resolve/traces/instrumentation/nodejs"},{"title":"Express","sidebarTitle":"Express","href":"/resolve/traces/instrumentation/express"},{"title":"Django","sidebarTitle":"Django","href":"/resolve/traces/instrumentation/django"},{"title":"Flask","sidebarTitle":"Flask","href":"/resolve/traces/instrumentation/flask"},{"title":"Laravel","sidebarTitle":"Laravel","href":"/resolve/traces/instrumentation/laravel"},{"title":"Ruby on Rails","sidebarTitle":"Ruby on Rails","href":"/resolve/traces/instrumentation/ruby-on-rails"},{"title":"Go / Golang","sidebarTitle":"Go / Golang","href":"/resolve/traces/instrumentation/golang"},{"title":"Java","sidebarTitle":"Java","href":"/resolve/traces/instrumentation/java"},{"title":".NET","sidebarTitle":".NET","href":"/resolve/traces/instrumentation/dotnet"}]}]}]},{"group":"AI","pages":[{"title":"Rocky AI","sidebarTitle":"Rocky AI","href":"/ai/rocky-ai"},{"title":"Create checks with the AI Assistant","sidebarTitle":"AI Assistant","href":"/ai/ai-assistant"},{"group":"Agent Resources","pages":[{"title":"AI Agents \u0026 Coding Assistants","sidebarTitle":"Overview","href":"/ai/overview"},{"group":"MCP Server","pages":[{"title":"Checkly MCP Server","sidebarTitle":"Overview","href":"/ai/mcp-server"},{"title":"Set up the Checkly MCP Server","sidebarTitle":"Setup","href":"/ai/mcp-server/setup"},{"title":"Interactive MCP views","sidebarTitle":"Interactive views","href":"/ai/mcp-server/interactive-views"},{"title":"Checkly MCP tools","sidebarTitle":"Tools","href":"/ai/mcp-server/tools"},{"title":"MCP security and permissions","sidebarTitle":"Security \u0026 permissions","href":"/ai/mcp-server/security-and-permissions"},{"title":"Troubleshoot the Checkly MCP Server","sidebarTitle":"Troubleshooting","href":"/ai/mcp-server/troubleshooting"}]},{"title":"Checkly Plugin for AI Coding Agents","sidebarTitle":"Plugin","href":"/ai/plugin"},{"title":"Checkly Skills","sidebarTitle":"Skills","href":"/ai/skills"},{"title":"Markdown Access","sidebarTitle":"Markdown Access","href":"/ai/markdown-access"},{"title":"llms.txt","sidebarTitle":"llms.txt","href":"/ai/llms-txt"}]}]},{"group":"Integrations","pages":[{"group":"Alerts \u0026 Notifications","pages":[{"title":"Send Alerts to Discord","sidebarTitle":"Discord","href":"/integrations/alerts/discord"},{"title":"Email Notifications","sidebarTitle":"Email","href":"/integrations/alerts/email"},{"title":"Integrating GitLab Alerts","sidebarTitle":"GitLab Alerts","href":"/integrations/alerts/gitlab_alerts"},{"title":"Send Alerts to Microsoft Teams","sidebarTitle":"Microsoft Teams","href":"/integrations/alerts/msteams"},{"title":"Phone Calls","sidebarTitle":"Phone Calls","href":"/integrations/alerts/phone-calls"},{"title":"Slack","sidebarTitle":"Slack","href":"/integrations/alerts/slack"},{"title":"SMS Alerts","sidebarTitle":"SMS","href":"/integrations/alerts/sms"},{"title":"Send Alerts via Telegram","sidebarTitle":"Telegram","href":"/integrations/alerts/telegram"},{"title":"Webhook Integrations","sidebarTitle":"Webhooks","href":"/integrations/alerts/webhooks"}]},{"group":"Incident Management","pages":[{"title":"Send Alerts to FireHydrant","sidebarTitle":"FireHydrant","href":"/integrations/incident-management/firehydrant"},{"title":"Send Alerts to PagerDuty","sidebarTitle":"PagerDuty","href":"/integrations/incident-management/pagerduty"},{"title":"Send Alerts to Opsgenie","sidebarTitle":"Opsgenie","href":"/integrations/incident-management/opsgenie"},{"title":"Send Alerts via Rootly","sidebarTitle":"Rootly","href":"/integrations/incident-management/rootly"},{"title":"Send Alerts to ilert","sidebarTitle":"ilert","href":"/integrations/incident-management/ilert"},{"title":"Send Alerts to Incident.io","sidebarTitle":"Incident.io","href":"/integrations/incident-management/incidentio"},{"title":"Integrating StatusPage","sidebarTitle":"StatusPage","href":"/integrations/incident-management/statuspage"},{"title":"Send Alerts via Spike","sidebarTitle":"Spike","href":"/integrations/incident-management/spike"},{"title":"Send Alerts via Splunk On-Call","sidebarTitle":"Splunk On-Call","href":"/integrations/incident-management/splunk-on-call"}]},{"group":"CI/CD","pages":[{"title":"CI/CD","sidebarTitle":"Overview","href":"/integrations/ci-cd/overview"},{"group":"GitHub","pages":[{"title":"Run Checkly from GitHub Actions","sidebarTitle":"GitHub Actions","href":"/integrations/ci-cd/github/actions"},{"title":"GitHub deployment hooks","sidebarTitle":"Deployment hooks","href":"/integrations/ci-cd/github/deployments"},{"group":"External secrets","pages":[{"title":"Deploy Checkly secrets from AWS Secrets Manager","sidebarTitle":"AWS Secrets Manager","href":"/integrations/ci-cd/github/secrets/aws-secrets-manager"},{"title":"Deploy Checkly secrets from Google Secret Manager","sidebarTitle":"Google Secret Manager","href":"/integrations/ci-cd/github/secrets/google-secret-manager"},{"title":"Deploy Checkly secrets from Azure Key Vault","sidebarTitle":"Azure Key Vault","href":"/integrations/ci-cd/github/secrets/azure-key-vault"},{"title":"Deploy Checkly secrets from HashiCorp Vault","sidebarTitle":"HashiCorp Vault","href":"/integrations/ci-cd/github/secrets/hashicorp-vault"}]}]},{"title":"Integrating Checkly in GitLab CI/CD","sidebarTitle":"GitLab","href":"/integrations/ci-cd/gitlab/overview"},{"group":"Vercel","pages":[{"title":"Integrating Checkly in Vercel","sidebarTitle":"Overview","href":"/integrations/ci-cd/vercel/overview"},{"title":"Vercel Deployment Protection","sidebarTitle":"Deployment Protection","href":"/integrations/ci-cd/vercel/deployment-protection"},{"title":"Managing Users and Plans with Vercel","sidebarTitle":"Managing Users and Plans","href":"/integrations/ci-cd/vercel/managing-plan"}]},{"title":"Integrating Checkly in Jenkins","sidebarTitle":"Jenkins","href":"/integrations/ci-cd/jenkins/overview"}]},{"group":"Observability","pages":[{"title":"Observability integrations","sidebarTitle":"Overview","href":"/integrations/observability/overview"},{"group":"Metrics","pages":[{"title":"Export metrics to Prometheus","sidebarTitle":"Prometheus","href":"/integrations/observability/prometheus"}]},{"group":"Traces","pages":[{"title":"Export traces to any OpenTelemetry backend","sidebarTitle":"OTLP (any backend)","href":"/integrations/observability/traces/otlp"},{"title":"Send traces, RUM and alerts to Coralogix","sidebarTitle":"Coralogix","href":"/integrations/observability/coralogix"},{"title":"Export traces to Chronosphere","sidebarTitle":"Chronosphere","href":"/integrations/observability/traces/chronosphere"},{"title":"Export traces to ClickStack","sidebarTitle":"ClickStack","href":"/integrations/observability/traces/clickstack"},{"title":"Export traces to Cribl Stream","sidebarTitle":"Cribl Stream","href":"/integrations/observability/traces/cribl"},{"title":"Export traces to Dash0","sidebarTitle":"Dash0","href":"/integrations/observability/traces/dash0"},{"title":"Export traces to Datadog","sidebarTitle":"Datadog","href":"/integrations/observability/traces/datadog"},{"title":"Export traces to Grafana Tempo","sidebarTitle":"Grafana Tempo","href":"/integrations/observability/traces/grafana-tempo"},{"title":"Export traces to Honeycomb","sidebarTitle":"Honeycomb","href":"/integrations/observability/traces/honeycomb"},{"title":"Export traces to New Relic","sidebarTitle":"New Relic","href":"/integrations/observability/traces/new-relic"}]}]},{"group":"Infrastructure as Code","pages":[{"group":"Terraform","pages":[{"title":"Getting started with the Terraform provider for Checkly","sidebarTitle":"Overview","href":"/integrations/iac/terraform/overview"},{"title":"Alert channels and settings for Terraform","sidebarTitle":"Alert channels","href":"/integrations/iac/terraform/alerting"},{"title":"Service maintenance windows in Terraform","sidebarTitle":"Service maintenance windows","href":"/integrations/iac/terraform/maintenance-windows"},{"title":"Dashboards in Terraform","sidebarTitle":"Dashboards","href":"/integrations/iac/terraform/dashboards"},{"title":"CI/CD pipelines for Terraform","sidebarTitle":"CI/CD Pipelines","href":"/integrations/iac/terraform/ci-cd"},{"title":"Command line triggers for Terraform","sidebarTitle":"Command line Triggers","href":"/integrations/iac/terraform/command-line-triggers"},{"title":"Testing Terraform scripts locally","sidebarTitle":"Testing Scripts Locally","href":"/integrations/iac/terraform/testing-scripts-locally"},{"title":"Environment variables in Terraform","sidebarTitle":"Environment variables","href":"/integrations/iac/terraform/environment-variables"},{"title":"Common issues with the Terraform provider","sidebarTitle":"Troubleshooting","href":"/integrations/iac/terraform/troubleshooting"}]},{"group":"Pulumi","pages":[{"title":"The Checkly Pulumi Provider","sidebarTitle":"Pulumi Provider","href":"/integrations/iac/pulumi/overview"},{"title":"Pulumi Best Practices","sidebarTitle":"Best Practices","href":"/integrations/iac/pulumi/best-practices"},{"title":"Pulumi Setup Guide","sidebarTitle":"Setup Guide","href":"/integrations/iac/pulumi/setup"},{"title":"Pulumi Examples","sidebarTitle":"Examples","href":"/integrations/iac/pulumi/examples"},{"title":"CI/CD Integration","sidebarTitle":"CI/CD Integration","href":"/integrations/iac/pulumi/ci-cd"}]}]}]}]},{"tab":"Constructs","pages":[{"title":"Constructs","href":"/constructs/overview"}]},{"tab":"CLI Reference","pages":[{"title":"CLI Reference","href":"/cli/overview"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/overview"}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/guides/overview"}]},{"tab":"Learn","dropdowns":[{"dropdown":"Playwright","icon":"masks-theater","pages":[{"title":"Learn How to Test, Monitor, and Automate with Playwright","sidebarTitle":"Overview","href":"/learn/playwright/overview"},{"group":"Getting Started","pages":[{"title":"Beginner’s Guide to Playwright Automation","sidebarTitle":"What is Playwright?","href":"/learn/playwright/what-is-playwright"},{"title":"How to Set Up Playwright Locally","sidebarTitle":"Setting up Playwright","href":"/learn/playwright/how-to-set-up-locally"},{"title":"The Layers of the Testing Pyramid","href":"/learn/playwright/testing-pyramid"}]},{"group":"Interaction","pages":[{"title":"Playwright Assertions - Types \u0026 Best Practices","sidebarTitle":"Assertions","href":"/learn/playwright/assertions"},{"title":"How to Click, Type, and Hover with Playwright","sidebarTitle":"Clicking and typing","href":"/learn/playwright/clicking-typing-hovering"},{"title":"How to Handle iFrames in Playwright","sidebarTitle":"Interacting with iframes","href":"/learn/playwright/iframe-interaction"},{"title":"How to Use Playwright to Navigate and Interact with Web Pages","sidebarTitle":"Navigation","href":"/learn/playwright/navigation"},{"title":"How to Work with Selectors in Playwright","sidebarTitle":"UI selectors","href":"/learn/playwright/selectors"},{"title":"Dealing with waits and timeouts in Playwright","sidebarTitle":"Waits and timeouts","href":"/learn/playwright/waits-and-timeouts"}]},{"group":"Basics","pages":[{"title":"How to Manage Authentication in Playwright","sidebarTitle":"Authentication","href":"/learn/playwright/authentication"},{"title":"Record Automation Scripts Using Playwright Codegen","sidebarTitle":"Codegen","href":"/learn/playwright/codegen"},{"title":"How to emulate mobile devices with Playwright","sidebarTitle":"Emulating mobile devices","href":"/learn/playwright/emulating-mobile-devices"},{"title":"How to Generate PDFs with Playwright","sidebarTitle":"Generating PDFs","href":"/learn/playwright/generating-pdfs"},{"title":"How to detect broken links using Playwright","sidebarTitle":"Detecting broken links","href":"/learn/playwright/how-to-detect-broken-links"},{"title":"How to Intercept Requests in Playwright","sidebarTitle":"Intercepting requests","href":"/learn/playwright/intercept-requests"},{"title":"Test Dynamic Content by Mocking API Responses","sidebarTitle":"Mocking API Responses","href":"/learn/playwright/mock-api"},{"title":"Handling Multiple Tabs with Playwright","sidebarTitle":"Multiple tabs","href":"/learn/playwright/multitab-flows"},{"title":"Playwright Screenshots - How to Take and Automate Screenshots","sidebarTitle":"Taking screenshots","href":"/learn/playwright/taking-screenshots"},{"title":"How to run Playwright tests in parallel","sidebarTitle":"Parallel testing","href":"/learn/playwright/testing-in-parallel"}]},{"group":"Best Practices","pages":[{"title":"How to Handle Challenging Automation Flows in Playwright","sidebarTitle":"Complex workflows","href":"/learn/playwright/challenging-flows"},{"title":"How to Handle Test Data with Playwright","sidebarTitle":"Test data","href":"/learn/playwright/handling-test-data"},{"title":"Parameterizing your Playwright projects","sidebarTitle":"Parameterizing Projects","href":"/learn/playwright/how-to-parameterize-playwright-projects"},{"title":"Measuring Page Performance Using Playwright - Best Practices","sidebarTitle":"Performance","href":"/learn/playwright/performance"},{"title":"How to Scrape Data Behind a Login with Playwright","sidebarTitle":"Scraping behind a login","href":"/learn/playwright/scraping-behind-login"},{"title":"Using Script Recorders with Playwright","sidebarTitle":"Script recorders","href":"/learn/playwright/script-recorders"},{"title":"Self-documenting tests - add automatic Playwright steps with TypeScript Decorators","sidebarTitle":"Automatic Steps","href":"/learn/playwright/steps-decorators"},{"title":"Reuse code with custom test fixtures in Playwright","sidebarTitle":"Test Fixtures","href":"/learn/playwright/test-fixtures"},{"title":"Testing APIs with Playwright","sidebarTitle":"Testing APIs","href":"/learn/playwright/testing-apis"},{"title":"Playwright Web Scraping - How to Extract Data from Websites","sidebarTitle":"Scraping","href":"/learn/playwright/web-scraping"},{"title":"Best Practices for Writing Tests in Playwright","sidebarTitle":"Testing","href":"/learn/playwright/writing-tests"}]},{"group":"E2E Examples","pages":[{"title":"How to Bypass Time-Based 2FA Login Flows With Playwright","sidebarTitle":"TOTP Authentication","href":"/learn/playwright/bypass-totp"},{"title":"Mastering E2E Checkout Testing Using Playwright","sidebarTitle":"Checkout","href":"/learn/playwright/checkout-testing-guide"},{"title":"How to Download Files with Playwright","sidebarTitle":"Downloading files","href":"/learn/playwright/file-download"},{"title":"How to Automate Google Login with Playwright","sidebarTitle":"Google Auth","href":"/learn/playwright/google-login-automation"},{"title":"How to search with Playwright","sidebarTitle":"Search","href":"/learn/playwright/how-to-search"},{"title":"How to Automate Login with Playwright","sidebarTitle":"Standard authentication","href":"/learn/playwright/login-automation"},{"title":"How to Automate Microsoft Live Login with Playwright","sidebarTitle":"Microsoft Live Auth","href":"/learn/playwright/microsoft-login-automation"},{"title":"How to Test Coupons and Discounts with Playwright","sidebarTitle":"Discounts \u0026 coupons","href":"/learn/playwright/testing-coupons"},{"title":"How to Test File Uploads with Playwright","sidebarTitle":"File uploads","href":"/learn/playwright/testing-file-uploads"},{"title":"Automating User Signup with Playwright","sidebarTitle":"User signup","href":"/learn/playwright/user-signup-automation"}]},{"group":"Debugging","pages":[{"title":"Playwright Debugging Errors - Common Issues and Solutions","sidebarTitle":"Common issues","href":"/learn/playwright/debugging-errors"},{"title":"Playwright Debugging - Techniques for Script Troubleshooting","sidebarTitle":"Debugging scripts","href":"/learn/playwright/debugging"},{"title":"How to Fix the \"Click Not Executed\" Error in Playwright","sidebarTitle":"Click not executed","href":"/learn/playwright/error-click-not-executed"},{"title":"How to Fix 'Element Not Found' Errors in Playwright","sidebarTitle":"Element not found","href":"/learn/playwright/error-element-not-found"},{"title":"How to Fix \"Element Not Visible\" Error in Playwright","sidebarTitle":"Element not visible","href":"/learn/playwright/error-element-not-visible"},{"title":"How to Fix \"Target Closed\" Error in Playwright","sidebarTitle":"Target closed","href":"/learn/playwright/error-target-closed"},{"title":"How to Fix \"Wait Not Respected\" Error in Playwright","sidebarTitle":"Wait not respected","href":"/learn/playwright/error-wait-not-respected"}]},{"group":"AI \u0026 Coding Agents","pages":[{"title":"Debugging Playwright Tests with AI Agents","sidebarTitle":"Debugging with AI agents","href":"/learn/playwright/debugging-with-ai-agents"}]}]},{"dropdown":"Incidents","icon":"alert-triangle","pages":[{"title":"Incident Response - Improve Recovery \u0026 Avoid Downtime","sidebarTitle":"Overview","href":"/learn/incidents/overview"},{"group":"Detection","pages":[{"title":"Best Practices for Detecting Downtime | Incident Response","sidebarTitle":"Detecting Downtime","href":"/learn/incidents/detection-best-practices"},{"title":"Incident Management Challenges | Checkly Guide","sidebarTitle":"Incident Management Challenges","href":"/learn/incidents/incident-management-challenges"},{"title":"Reduce Mean Time to Detection MTTD - Best Practices Guide","sidebarTitle":"MTTD Best Practices","href":"/learn/incidents/reduce-mttd"},{"title":"SLA vs SLO vs SLI - What’s the Difference? Comparison with examples","sidebarTitle":"SLA vs SLO vs SLI","href":"/learn/incidents/slo-sla-sli"},{"title":"What is Incident Response? Fundamentals and best practices","sidebarTitle":"What is Incident Response?","href":"/learn/incidents/what-is-incident-response"}]},{"group":"Classification","pages":[{"title":"Incident Response Automation - From Alerts to Action","sidebarTitle":"Playbooks \u0026 Automation","href":"/learn/incidents/automation-incident-response"},{"title":"Incident Assessment \u0026 Severity | Checkly Guide","sidebarTitle":"Incident Assessment \u0026 Severity Guide","href":"/learn/incidents/incident-assessment-severity"},{"title":"How to Set an On‑Call Schedule | Checkly Incident Response","sidebarTitle":"On-Call Schedules - How to","href":"/learn/incidents/on-call-schedule"},{"title":"Incident Response Playbooks - Culture \u0026 Compliance | Checkly","sidebarTitle":"Incident Response Playbooks","href":"/learn/incidents/playbooks"}]},{"group":"Investigation","pages":[{"title":"Modern Root Cause Analysis | Checkly Guide","sidebarTitle":"Modern Root Cause Analysis","href":"/learn/incidents/modern-root-cause-analysis"},{"title":"Root Cause with Traces - Faster RCA | Checkly","sidebarTitle":"Tracing for Root Cause Analysis","href":"/learn/incidents/root-cause-with-traces"}]},{"group":"Repair","pages":[{"title":"Defining MTTR - what mean time to repair means for your team","sidebarTitle":"What is MTTR?","href":"/learn/incidents/defining-mttr"},{"title":"How to Use DORA Metrics the Right Way | Checkly","sidebarTitle":"DORA Metrics for Performance Evaluation","href":"/learn/incidents/dora-metrics"},{"title":"MTTR Challenges \u0026 Solutions | Checkly","sidebarTitle":"Reducing Time to Repair","href":"/learn/incidents/mttr-challenges"}]},{"group":"Communication","pages":[{"title":"Anatomy of a status page | Checkly Guide","sidebarTitle":"Anatomy of a status page","href":"/learn/incidents/anatomy-of-a-status-page"},{"title":"Best Practices for Communicating During Outages and Incidents","sidebarTitle":"Incident Communication","href":"/learn/incidents/incident-communication"},{"title":"Postmortems That Drive Real Improvements (+ Template) | Checkly Guide","sidebarTitle":"Postmortems That Drive Real Improvement (+ Template)","href":"/learn/incidents/postmortems"}]}]},{"dropdown":"Kubernetes","icon":"steering-wheel","pages":[{"title":"Learn How to Observe and Monitor your Kubernetes","sidebarTitle":"Overview","href":"/learn/kubernetes/overview"},{"title":"Centralized logging in Kubernetes with OpenTelemetry - guide with examples","sidebarTitle":"Centralized Logging","href":"/learn/kubernetes/centralized-logging"},{"title":"Kubernetes Events - A Native Resource for State Insight","sidebarTitle":"Events","href":"/learn/kubernetes/events"},{"title":"Introducing klog - The Kubernetes Logging Library","sidebarTitle":"klog","href":"/learn/kubernetes/klog"},{"title":"Logging in Kubernetes - Best Practices","sidebarTitle":"Best Practices","href":"/learn/kubernetes/logging-best-practices"},{"title":"Learn How to Observe and Monitor your Kubernetes Environment with Open Source Tools","sidebarTitle":"Monitoring Kubernetes","href":"/learn/kubernetes/monitoring-challenges"},{"title":"Introduction to Node Problem Detector for Kubernetes","sidebarTitle":"Node Problem Detector","href":"/learn/kubernetes/node-problem-detector"},{"title":"Introduction to Kubernetes Operators - scraping metrics with Prometheus","sidebarTitle":"Operators","href":"/learn/kubernetes/operators-metrics"},{"title":"Structured Logging in Kubernetes - Why it matters and how to get started","sidebarTitle":"Structured Logging","href":"/learn/kubernetes/structured-logging"}]},{"dropdown":"Monitoring","icon":"chart-line","pages":[{"title":"Monitoring Resources - Tools, Metrics \u0026 Best Practices","sidebarTitle":"Monitoring","href":"/learn/monitoring/overview"},{"group":"SDLC Basics","pages":[{"title":"Understanding the Software Development Life Cycle (SDLC) for Engineers","sidebarTitle":"Understanding the SDLC","href":"/learn/monitoring/intro-to-sdlc"},{"title":"Observability Basics - Metrics that every team needs","sidebarTitle":"Metrics Every Team Needs","href":"/learn/monitoring/metrics-every-team-needs"}]},{"group":"Monitoring Concepts","pages":[{"title":"What is API Monitoring? - Tools, techniques, and examples","sidebarTitle":"API Monitoring","href":"/learn/monitoring/api-monitoring"},{"title":"What is End to End Monitoring? An Overview with Examples","sidebarTitle":"What is End-to-End Monitoring?","href":"/learn/monitoring/end-to-end-monitoring"},{"title":"Frontend Monitoring - Benefits, Challenges, and Top Tools","sidebarTitle":"Frontend Monitoring","href":"/learn/monitoring/frontend-monitoring"},{"title":"Monitoring as Code - A Practical Guide from Checkly","sidebarTitle":"Monitoring as Code","href":"/learn/monitoring/monitoring-as-code"},{"title":"Real User Monitoring (RUM) - Benefits, Challenges, and Alternatives","sidebarTitle":"Real User Monitoring","href":"/learn/monitoring/real-user-monitoring"},{"title":"Synthetic Monitoring - Concepts, Benefits \u0026 Challenges","sidebarTitle":"Synthetic Monitoring","href":"/learn/monitoring/synthetic-monitoring"},{"title":"Transaction Monitoring - Components, Benefits \u0026 Challenges","sidebarTitle":"Transaction Monitoring","href":"/learn/monitoring/transaction-monitoring"},{"title":"Web Application Monitoring - Types, Benefits \u0026 Top 10 Tools","sidebarTitle":"Web Application Monitoring","href":"/learn/monitoring/web-application-monitoring"}]},{"group":"Protocols","pages":[{"title":"HTTPS Fundamentals - Beginner's Guide for App Developers","sidebarTitle":"Intro to HTTPS","href":"/learn/monitoring/https-for-app-developers"},{"title":"TCP and SSL - What an application developer needs to know","sidebarTitle":"TCP and SSL","href":"/learn/monitoring/tcp-and-ssl"},{"title":"What is TCP? - how it works and why it matters to application developers","sidebarTitle":"What is TCP?","href":"/learn/monitoring/what-is-tcp"}]}]},{"dropdown":"OpenTelemetry","icon":"satellite","pages":[{"title":"Learn How to Observe and Monitor your Software with OpenTelemetry","sidebarTitle":"Overview","href":"/learn/opentelemetry/overview"},{"group":"OpenTelemetry Basics","pages":[{"title":"Getting Started with Observability","sidebarTitle":"What is Observability?","href":"/learn/opentelemetry/getting-started-with-observability"},{"title":"How to instrument your application with OpenTelemetry","sidebarTitle":"Instrumentation","href":"/learn/opentelemetry/how-to-instrument"},{"title":"Introduction to the OpenTelemetry Collector","sidebarTitle":"The OTel Collector","href":"/learn/opentelemetry/what-is-the-otel-collector"}]},{"group":"Key Signals","pages":[{"title":"Logging in OpenTelemetry, an Engineer’s Guide","sidebarTitle":"Logging","href":"/learn/opentelemetry/logs"},{"title":"What are OpenTelemetry Metrics?","sidebarTitle":"Metrics","href":"/learn/opentelemetry/metrics"},{"title":"What are OpenTelemetry Traces? - key concepts and examples","sidebarTitle":"Traces","href":"/learn/opentelemetry/traces"}]},{"group":"Best Practices","pages":[{"title":"Fundamentals of Context Propagation in OpenTelemetry","sidebarTitle":"Context Propagation","href":"/learn/opentelemetry/context-propagation"},{"title":"OpenTelemetry Agent Management Protocol","sidebarTitle":"OpAMP","href":"/learn/opentelemetry/otel-agent-management-protocol"},{"title":"Advanced Data Filtering with the OpenTelemetry Collector","sidebarTitle":"Filtering","href":"/learn/opentelemetry/otel-filtering"},{"title":"A guide to the OpenTelemetry Trace API","sidebarTitle":"Trace API","href":"/learn/opentelemetry/trace-api"}]}]}]},{"tab":"Comparisons","pages":[{"title":"Comparisons","href":"/comparisons/frameworks/playwright-vs-cypress"}]}]},"basePath":"","title":"Alert Retries - Checkly Docs","buildId":"dpl_ATnXPMW25DMPUr9VBw6kL6MfBt6T","deploymentId":"dpl_ATnXPMW25DMPUr9VBw6kL6MfBt6T","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-CypZe82l.js","lightbox-handle-r17bVUz3.js"]}