{"id":545,"date":"2026-06-06T00:57:53","date_gmt":"2026-06-06T00:57:53","guid":{"rendered":"https:\/\/text.email\/blog\/?p=545"},"modified":"2026-06-06T00:57:53","modified_gmt":"2026-06-06T00:57:53","slug":"cloudflare-text-alerts","status":"publish","type":"post","link":"https:\/\/text.email\/blog\/cloudflare-text-alerts\/","title":{"rendered":"How to Get Cloudflare Health Check Alerts as Text Messages"},"content":{"rendered":"\n<p><strong>Cloudflare doesn&#8217;t send SMS<\/strong>. Not on Free, not on Pro, not on Business, not on Enterprise.<\/p>\n\n\n\n<p>Welll&#8230; not natively, at least.<\/p>\n\n\n\n<p>So if you want your Health Checks to start texting you when something goes wrong \u2014 as opposed to emailing you, <strong>since email notifications get buried too easily<\/strong> \u2014 you need a fix.<\/p>\n\n\n\n<p>We&#8217;ve got one.<\/p>\n\n\n\n<p>In this article, I&#8217;ll <strong>walk you through the easiest and quickest way to set up Cloudflare SMS alerts today<\/strong>. And by &#8220;today&#8221; I mean&#8230; in roughly the next five minutes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"table-of-contents\">Cloudflare Text Alerts: Table of Contents<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"#setting-up-cloudflare-text-alerts-no-webhooks-no-code\">Setting Up Cloudflare Text Alerts (No Webhooks, No Code)<\/a><\/li>\n\n\n\n<li><a href=\"#is-this-really-the-best-way-to-get-cloudflare-text-alerts\">Is This Really the Best Way to Get Cloudflare Text Alerts?<\/a><\/li>\n\n\n\n<li><a href=\"#get-your-cloudflare-text-alerts-running-in-the-next-five-minutes\">Get Your Cloudflare Text Alerts Running in the Next Five Minutes<\/a><\/li>\n\n\n\n<li><a href=\"#which-cloudflare-alerts-deserve-a-text\">Which Cloudflare Alerts Deserve a Text?<\/a><\/li>\n\n\n\n<li><a href=\"#time-to-get-started-with-cloudflare-text-alerts\">Time to Get Started with Cloudflare Text Alerts<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"setting-up-cloudflare-text-alerts-no-webhooks-no-code\">Setting Up Cloudflare Text Alerts (No Webhooks, No Code)<\/h2>\n\n\n\n<p>We&#8217;re going to use email-to-text to pull this off.<\/p>\n\n\n\n<p>Importantly, <strong>nothing about your Health Checks changes here.<\/strong> Everything stays the same: the regions you&#8217;re probing, the intervals, the expected response codes.<\/p>\n\n\n\n<p>The only thing you&#8217;re touching is where one alert lands. Right now it lands in your email inbox. We&#8217;re going to get it into your texts.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Get an email-to-text address<\/h3>\n\n\n\n<p>The tool that bridges the &#8220;email to SMS&#8221; gap is <strong><a href=\"https:\/\/text.email\">text.email<\/a><\/strong>. You <strong>send a message to your unique address, it comes to you as a text<\/strong>.<\/p>\n\n\n\n<p>When you sign up you&#8217;ll get your address, which will be <code>your-number@your-subdomain.text.email<\/code>. (The private subdomain is what keeps random people from being able to send you email-to-text messages.)<\/p>\n\n\n\n<p>Copy your address and then we can move on.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Open the Health Checks notification<\/h3>\n\n\n\n<p>Cloudflare&#8217;s notifications are at the <strong>account level<\/strong>, not inside any single zone. And I know, Health Checks themselves are configured per zone, so this is weird. But we&#8217;ll work with it.<\/p>\n\n\n\n<p>Go into your <strong>Account<\/strong>, then into the <strong>Notifications<\/strong> section.<\/p>\n\n\n\n<p>You&#8217;re looking for the <strong>Health Checks Status Notification<\/strong> (that&#8217;s what fires when there&#8217;s a state change).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Add your email-to-text address<\/h3>\n\n\n\n<p>Open the notification and find the <strong>Notification email<\/strong> field.<\/p>\n\n\n\n<p>You can just drop in your text.email address. You don&#8217;t have to configure an SMTP server or make any other changes. <\/p>\n\n\n\n<p>You get <strong>up to 20 recipients<\/strong> on a single notification, so you don&#8217;t have to choose between your phone and your inbox. Keep the email copy for the record and add the text address alongside it.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4: If you run Load Balancing and want alerts from it, set that up too<\/h3>\n\n\n\n<p>Cloudflare&#8217;s standalone Health Checks and Load Balancing health monitoring are two different types of notifications.<\/p>\n\n\n\n<p>The <strong>Load Balancing Health Alerts<\/strong> lives at the same account level as the Health Checks Status Notifications.<\/p>\n\n\n\n<p>And it&#8217;s the same deal: Same recipient field, same approach, you just edit a different policy.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 5: Use SMS formatting to make sure the important info is delivered<\/h3>\n\n\n\n<p>Cloudflare&#8217;s notifications give you a lot of information. Which is fine for email, but isn&#8217;t great for text.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"732\" height=\"586\" src=\"https:\/\/text.email\/blog\/wp-content\/uploads\/2026\/06\/cloudflare-healthchecks-tinified.png\" alt=\"\" class=\"wp-image-547\" srcset=\"https:\/\/text.email\/blog\/wp-content\/uploads\/2026\/06\/cloudflare-healthchecks-tinified.png 732w, https:\/\/text.email\/blog\/wp-content\/uploads\/2026\/06\/cloudflare-healthchecks-tinified-300x240.png 300w\" sizes=\"auto, (max-width: 732px) 100vw, 732px\" \/><\/figure>\n\n\n\n<p>You can use text.email&#8217;s <a href=\"https:\/\/text.email\/blog\/sms-formatting\/\" data-type=\"post\" data-id=\"213\">SMS formatting<\/a> to pull out the relevant information (for instance, status and failure reasons).<\/p>\n\n\n\n<p>If you don&#8217;t, the text will still <em>likely<\/em> be fine, but you&#8217;ll get a cleaner at-a-glance view if you use formatting.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"is-this-really-the-best-way-to-get-cloudflare-text-alerts\">Is This Really the Best Way to Get Cloudflare Text Alerts?<\/h2>\n\n\n\n<p><strong>Email-to-text is the path of least resistance<\/strong>, but it isn&#8217;t the only path.<\/p>\n\n\n\n<p>Here are the alternatives (along with why the email-to-text route is a better way to get the alerts you&#8217;re after).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Cloudflare&#8217;s webhooks<\/h3>\n\n\n\n<p>Cloudflare can fire a webhook on a Health Check change.<\/p>\n\n\n\n<p>But, of course, <strong>a webhook doesn&#8217;t text anyone<\/strong>. So get a webhook to text your phone you&#8217;d be wiring up something like Zapier or Make in the middle, then <a href=\"https:\/\/text.email\/blog\/twilio-alternatives\/\" data-type=\"post\" data-id=\"30\">Twilio<\/a> on the far end to actually send the SMS.<\/p>\n\n\n\n<p>So now you own a chain&#8230; where the failures are the quiet kind (nothing like missing that one critical alert because a connector silently expired a few days earlier).<\/p>\n\n\n\n<p>There&#8217;s another wrinkle too, and you likely have no idea about this one. Sending automated texts requires something called <strong>A2P 10DLC<\/strong>. That&#8217;s a <strong>relatively new carrier registration process<\/strong> for application-to-person messaging. <\/p>\n\n\n\n<p>It&#8217;s a lot of paperwork and overhead. But without it, your texts will (again) silently fail.<\/p>\n\n\n\n<p>All in all&#8230; it&#8217;s a lot of moving parts just for &#8220;text me when the origin&#8217;s down.&#8221;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Cloudflare&#8217;s PagerDuty integration<\/h3>\n\n\n\n<p><a href=\"https:\/\/text.email\/blog\/pagerduty-alternatives\/\" data-type=\"post\" data-id=\"32\">PagerDuty<\/a> is a native Cloudflare integration. If you already run PagerDuty, by all means route Health Checks into it; you&#8217;ve got the on-call schedules and escalation policies and it&#8217;ll do exactly what you&#8217;d expect.<\/p>\n\n\n\n<p>But <strong>if you just want texts, signing up with a full-featured paging platform is an expensive and complicated route to get them<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Doesn&#8217;t my cell phone plan come with email to text?<\/h3>\n\n\n\n<p>Somewhere in the recesses of your brain do you vaguely remember that you could send email-to-text through your cell phone carrier?<\/p>\n\n\n\n<p>Yes. You <em>used<\/em> to be able to do that.<\/p>\n\n\n\n<p>Every carrier offered the service with addresses like <code>yournumber@txt.att.net<\/code> or <code>yournumber@vtext.com<\/code> that turned an email into a text. It was part of your paid phone plan, whether you used it or not.<\/p>\n\n\n\n<p>Well&#8230; <strong>that technique is pretty much dead<\/strong>.<\/p>\n\n\n\n<p><strong><a href=\"https:\/\/text.email\/blog\/att-email-to-text\/\" data-type=\"post\" data-id=\"22\">AT&amp;T<\/a><\/strong> shut its gateway down in June 2025. <strong><a href=\"https:\/\/text.email\/blog\/tmobile-email-to-text\/\" data-type=\"post\" data-id=\"24\">T-Mobile<\/a><\/strong>&#8216;s stopped resolving back in late 2024, no announcement, it just quietly stopped working. <strong><a href=\"https:\/\/text.email\/blog\/verizon-email-to-text\/\" data-type=\"post\" data-id=\"20\">Verizon<\/a><\/strong>&#8216;s is still limping along but on its way out; they&#8217;re winding it down toward early 2027, and it&#8217;s already unreliable enough that a meaningful share of messages fail silently before then.<\/p>\n\n\n\n<p>Why are they dead? It&#8217;s connected to that whole A2P 10DLC thing I covered earlier.<\/p>\n\n\n\n<p>Those old gateways didn&#8217;t have any sender authentication so <strong>they were eventually overrun with spam and phishing<\/strong>. Plus, there&#8217;s no way to make them compliant with the regulations that are now in force.<\/p>\n\n\n\n<p>So the address you&#8217;d have used five years ago either bounces or, worse, swallows the message without telling you.<\/p>\n\n\n\n<p>That&#8217;s <em>why<\/em> text.email exists. It&#8217;s the same &#8220;put an address in the field&#8221; simplicity the carrier gateways had, except <strong>it routes your texts through properly registered channels, so the message actually arrives<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"get-your-cloudflare-text-alerts-running-in-the-next-five-minutes\">Get Your Cloudflare Text Alerts Running in the Next Five Minutes<\/h2>\n\n\n\n<p>You&#8217;re really <strong>three moves away from getting your Cloudflare health check text alerts<\/strong>:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Grab your text.email address<\/strong>.<\/li>\n\n\n\n<li><strong>Open the Health Checks Status Notification<\/strong> and\/or the Load Balancing Health Alerts in your Cloudflare account.<\/li>\n\n\n\n<li><strong>Add your email to SMS address<\/strong> to the Notification email field (it&#8217;s a plain recipient field, nothing else to configure).<\/li>\n<\/ol>\n\n\n\n<p>Want to test this out first? You can. <strong><a href=\"https:\/\/text.email\" data-type=\"link\" data-id=\"https:\/\/text.email\">text.email<\/a> offers a no-signup-required trial<\/strong>. So on the list above, skip step one. Just go to your Cloudflare notifications and enter <code>your-number@text.email<\/code>. Run a test, and you&#8217;ll see the message delivered right to your phone.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"which-cloudflare-alerts-deserve-a-text\">Which Cloudflare Alerts Deserve a Text?<\/h2>\n\n\n\n<p>You can let emails pile up; it&#8217;s inherent to that medium. Texts? We still check those.<\/p>\n\n\n\n<p>That&#8217;s a double-edged sword, though. Yes, it makes text alerts more effective than email ones. But&#8230; if you route everything to SMS, you&#8217;ll start ignoring SMS, and then the whole effect is lost.<\/p>\n\n\n\n<p><strong>So&#8230; we need to be choosy about what earns the interruption.<\/strong><\/p>\n\n\n\n<p>Here&#8217;s a rough jumping off point for you, though, of course, your needs will vary.<\/p>\n\n\n\n<p><strong>Worth a text:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>An origin or endpoint going Unhealthy.<\/strong> Obviously.<\/li>\n\n\n\n<li><strong>A Load Balancing pool or origin dropping out.<\/strong><\/li>\n\n\n\n<li><strong>A big platform event<\/strong> like an HTTP DDoS alert, if you&#8217;ve configured those. These are the very rare but very real crises.<\/li>\n<\/ul>\n\n\n\n<p><strong>Fine to leave on email:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>The &#8220;back to Healthy&#8221; recovery notice.<\/strong><\/li>\n\n\n\n<li><strong>Usage and billing alerts.<\/strong><\/li>\n\n\n\n<li><strong>Maintenance notices and incident FYIs.<\/strong><\/li>\n<\/ul>\n\n\n\n<p>One setting does most of this work for you: when you pick the notification trigger, set it to <strong>Unhealthy<\/strong> rather than <strong>Either<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"time-to-get-started-with-cloudflare-text-alerts\">Time to Get Started with Cloudflare Text Alerts<\/h2>\n\n\n\n<p><strong>Cloudflare is already doing the hard part<\/strong>: The probing, the regional logic, the deciding when an origin has actually gone unhealthy versus just hiccuped. All that&#8217;s running, and it&#8217;s the part that&#8217;s genuinely difficult to get right.<\/p>\n\n\n\n<p>You just <strong>need something to do a better job grabbing your attention<\/strong>.<\/p>\n\n\n\n<p>So close that gap: grab a <a href=\"https:\/\/text.email\">text.email<\/a> address with your private subdomain, open the Health Checks Status Notification, and drop the address into the recipient field.<\/p>\n\n\n\n<p>The next time an origin goes down, you&#8217;ll know from your pocket.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cloudflare doesn&#8217;t have built-in SMS alerting. Here&#8217;s the easiest way to get them.<\/p>\n","protected":false},"author":2,"featured_media":548,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,5],"tags":[],"class_list":["post-545","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-email-to-sms","category-sysadmins"],"_links":{"self":[{"href":"https:\/\/text.email\/blog\/wp-json\/wp\/v2\/posts\/545","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/text.email\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/text.email\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/text.email\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/text.email\/blog\/wp-json\/wp\/v2\/comments?post=545"}],"version-history":[{"count":3,"href":"https:\/\/text.email\/blog\/wp-json\/wp\/v2\/posts\/545\/revisions"}],"predecessor-version":[{"id":550,"href":"https:\/\/text.email\/blog\/wp-json\/wp\/v2\/posts\/545\/revisions\/550"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/text.email\/blog\/wp-json\/wp\/v2\/media\/548"}],"wp:attachment":[{"href":"https:\/\/text.email\/blog\/wp-json\/wp\/v2\/media?parent=545"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/text.email\/blog\/wp-json\/wp\/v2\/categories?post=545"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/text.email\/blog\/wp-json\/wp\/v2\/tags?post=545"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}