PRODUCT CHANGELOG
What’s new for you.
The features and fixes that change how you use HowlOps, in plain language, release by release. For the longer stories behind each release, see What’s New.
v1.65
SEP 07, 2026
ADDED
- Quiet hours can now be set to the minute. A window of 22:30 to 07:15 is exactly that, instead of being rounded to whole hours as before — the time picker always looked like it accepted minutes and they were quietly dropped on save. The start is included and the end is not, so a window ending at 07:15 is over at 07:15, and a window whose start and end are the same counts as no window rather than as a silent day. Windows you already have are unchanged: an hour window means the same thing expressed in minutes.
- You can now choose whether quiet hours apply to alerts that arrive from your own monitoring. Alerts from Alertmanager, Prometheus, Grafana or a webhook have always been held by the quiet window and there was no setting for it, even though for your own monitors you can decide per monitor. Most of those alerts arrive as warnings rather than critical, so one firing at 2am reached nothing but your in-app feed. The new switch is in Settings then Notifications then Quiet hours, and it starts switched on, which is exactly how the platform behaved before — nothing changes for you unless you turn it off. Critical alerts still always get through either way.
- A flapping alert from your own monitoring is now damped, the same way a flapping monitor already was. If one alert fires and clears five or more times within ten minutes, you get a single notice saying it is flapping instead of a message for every flip. It is matched on the alert's fingerprint, so one noisy alert never silences a different one, every occurrence is still recorded, and escalation still pages your on-call — a real outage that starts during a flap must not be missed. The notice also points at the fix that lasts: a for: clause on the rule that sends the alert will settle it at the source.
- You can now give your first name and last name separately. Until now HowlOps stored your name as one field, so it could not tell which part was which and could not address you properly in an e-mail, an on-call roster or a mention on an incident. Both fields are optional — a surname helps but is never required, and a single name stays exactly as you write it. Existing names have been split automatically, and because that split is a guess rather than something you typed, the platform records it as one: correct it in your profile and it stops being a guess. Nothing changed in the app or on the API for anyone still sending a single name.
FIXED
- A Prometheus or Alertmanager integration now shows that your alerts are arriving. If you connected Alertmanager with its native receiver, the Integration hub kept saying "Awaiting first alert" no matter how many alerts you sent, because that way in did not record a receipt. The alerts themselves were always delivered and always opened incidents; only the hub's own "Last received" and count stayed empty. They now update on every alert that arrives this way, including repeats of an alert that is still firing, so an integration that is working stops looking like one that was never set up.
- The monitor list and its region filter now show countries instead of our individual probe sites. A monitor checked from both of our German sites showed the German flag twice on its row, and the filter offered seven entries where there are four countries, so picking one of a country's two sites quietly left part of your monitors out of the results. Hovering a flag still tells you which sites that country is measured from.
- An info alert is no longer green, and alert colours now match the three severities HowlOps actually has. Info was drawn in the same green the rest of the app uses for "up", so the least urgent alert in a list wore the colour that means nothing is wrong; on some screens the row's stripe and its badge even disagreed with each other. Info is now blue everywhere, which is what the badge already said. At the same time the five priority labels a sender can use (P1 to P5) are drawn in the three colours they map to — red for critical, amber for warning, blue for info — instead of five shades that suggested distinctions the platform does not make. The labels themselves are unchanged.
- An alert's trigger payload is now readable. When your integration sends structured data such as a JSON payload from Alertmanager, the alert detail shows it in a code block with its indentation and a button to copy it, instead of running it together into one long line. Alerts that carry a plain sentence still read as a sentence.
- A team's page now shows only that team's on-call schedules. It asked for the team's schedules but the server ignored the request and answered with every schedule in the workspace, so the team detail listed rotations that belong to other teams. Nothing was ever shared between workspaces; the page simply showed you more of your own than it said it would. The "Who's on-call" page is unchanged and still covers the whole workspace.
- Our answer about uptime SLAs now says the same thing everywhere. The FAQ said a formal 99.9% SLA is included on the paid uptime plans, while our Terms of Service say we do not offer a contractual uptime SLA with service credits, and the homepage carried a 99.9% "uptime target" that nothing measured. We would rather say less and mean it: there is no contractual SLA on any plan, and instead we publish our own measured availability at howlops.com/status, where a day we did not measure is shown as "no data" rather than painted green. If you need contractual terms, ask us and we will tell you what we can actually commit to.
- An alert from your own monitoring now brings its runbook link with it. Prometheus and Alertmanager have a convention for this — a runbook_url annotation on the rule — and HowlOps has been storing those annotations all along without ever reading that one, so the link you had written on the rule never reached the page that woke you. If your rules already carry it, it will start appearing with no setup on your side.
- An alert escalated to a chat channel now says what it is about. Escalations sent to a person already fell back to the alert's own title when there was no monitor behind it; escalations sent to a channel did not, so the same page arrived in Telegram or Slack with an empty name. Both paths now read the name the same way.
- The "Draft postmortem" button on an alert now opens that alert's postmortem instead of an empty editor that failed to save. It was sending the wrong identifier, and because the editor hides load errors, the result looked like a blank postmortem rather than a broken link.
- A status page component is now marked as recently affected when the incident came from one of your integrations. The public incident history already listed such alerts against the component; the badge beside it did not count them, so the two disagreed about the same incident.
- Searching alerts by source now finds the tool that sent them. Every webhook integration was recorded internally under one shared name, so source:zabbix found nothing while source:webhook returned all of them at once. You can now search by the provider — zabbix, sentry, datadog and the rest — and the older searches keep working exactly as before.
- A data export now includes what your alerts actually said. Alerts that arrived from your own monitoring were exported as rows with no name and nothing identifying them, because the export only asked for a field those alerts never have. The export now carries the alert's name, summary, description, severity, resolve time, source, fingerprint, labels and annotations. Deletion always covered these alerts; it was the half that hands your data back that was incomplete.
- The on-call report now counts the alerts your team acknowledged that came from your own monitoring. It only ever counted alerts raised by HowlOps' own checks, so the report understated how much your on-call actually handled — while the dashboard's incident count included those same alerts, which meant two numbers about the same period disagreed and nothing said why. They are counted separately rather than blended into one average, so under each responder you now see how many of their acknowledgements came from integrations.
- An unacknowledged alert from your own monitoring is now reminded about, instead of going silent after the first message. Alerts raised by HowlOps' own checks and missed heartbeats have always been re-sent while nobody acknowledged them; alerts from Alertmanager, Prometheus or a webhook were not, so if you missed the one message at 2am you never heard about it again. The reminder tells you two things separately: how long the alert has been firing, and — when it has been more than four hours — how long its own source has been silent. Those are different facts, and only you can tell whether the problem ended and the resolve was lost or the sender itself went down, which is also why HowlOps still never closes such an alert for you.
- If you forward alerts to Opsgenie, alerts that came from your own monitoring now arrive as separate alerts instead of merging into one. They were all being sent under the same deduplication key, so two unrelated alerts became a single Opsgenie alert and resolving one closed the other. Alerts from HowlOps monitors and heartbeats are unaffected and keep the keys they already have, so nothing you have open right now is split in two. After this you may see two Opsgenie alerts where you previously saw one — that is the correct number.
- Acknowledging an alert from a tool that speaks the Opsgenie or Alertmanager protocol now actually acknowledges it. The endpoint accepted your acknowledgement, replied that it had been accepted, and did nothing with it — so escalation carried on and you kept being paged by something you had already picked up. It now stops the escalation and the reminders, exactly as acknowledging in HowlOps does. If the alias does not match an open alert you get a clear not-found instead of a false success.
- The alert counts on the dashboard now describe all of your open alerts, not just the first page of them. The panel read one page of a hundred alerts and counted that page, so with more than a hundred open alerts it could say a thousand were active and, on the same line, that thirty-four of them were critical — three numbers that added up to the page rather than to the total. During an incident, when how many are critical is the whole question, that was the number you could not trust. The counts are now worked out over the full set on the server and follow whatever filter you have applied. If the count is ever unavailable, the panel says so and shows the page total instead of quietly showing a smaller number as if it were the whole picture.
- How many alerts HowlOps accepts from your own monitoring is now a published number, and it is counted per workspace. Until now the only limit on the inbound webhooks was five requests a second from one network address, which was written down nowhere and was not really a limit on alerts at all: a single Alertmanager delivery carries a whole group, so the same ceiling meant something different depending on how your sender batched. Worse, two workspaces sending from the same office or cloud network shared that budget without either being able to find out. You can now send at least a thousand alerts a minute per workspace, the count is yours alone, and if you go over it the reply says which limit you hit and how long to wait rather than just refusing. It is documented under Plan limits, and it is a setting we can raise for you without a release.
- On-call shift reminders now tell you the time in your own timezone instead of in UTC. A reminder that your shift starts at 08:00 UTC arrives while you are asleep or just waking, which is the worst possible moment to be doing arithmetic in your head — and the platform already knew your workspace's timezone and your personal one, it simply did not use either. The reminder now shows the date, the time and the zone, such as 2026-09-08 08:00 CEST, so it cannot be read as the wrong day after a conversion crosses midnight. It follows your personal timezone from Settings then Profile when you have set one, and your workspace's otherwise. Both people in a hand-off get their own local time, and the push message and the e-mail now always agree.
v1.64
SEP 06, 2026
ADDED
- During a mass outage you can now get one message instead of hundreds. When many of your services fail together, HowlOps already groups them into a single outage; it can now deliver that group as one summary — how many services are affected, which ones, and a link to the full list — and hold the individual alerts for the rest. The first alert of the outage still pages your on-call as usual, so somebody is always woken, and every incident stays in your list and history exactly as before. It is off by default and you turn it on per workspace in alert settings, where you also choose how many simultaneous incidents count as a mass outage.
- The mass-outage summary now covers alerts from your integrations, not just HowlOps' own checks. When one alert rule fires against many services at once — the usual shape of a mass outage from Alertmanager or Grafana — you get one message instead of hundreds. Two different rules stay two separate outages on purpose, because merging unrelated failures would hide the second one, and alerts a provider sends without a rule name are never grouped at all for the same reason.
FIXED
- The on-call overviews now show who is standing in for whom. If somebody is on call through an override, both the schedules list and Who's on-call say so and name the person whose rotation they are covering, instead of showing only the stand-in's name as though it were their shift. The "Coverage today" bar on both screens is now drawn from the day's real shifts, so a four-hour override is four hours wide and an hour nobody covers shows as a gap; it was previously three fixed slices that could show a single name across the whole day. A person now also keeps the same colour on both screens.
- A slow or erroring API no longer signs you out. Until now any failed check of your session — a server error, a timeout, a dropped connection — was treated the same as being signed out, so the app could drop you on the login screen in the middle of an incident. It now tells the two apart: you stay where you are and get a retry, and only a genuine sign-out sends you to the login page.
v1.63
SEP 04, 2026
ADDED
- A new workspace now starts with on-call already working: a weekly schedule with you on it, an escalation policy that pages that schedule, and alerts routed to your personal notification chain. You are covered from the first minute, and you can rename, restaff or replace any of it whenever you like. Learn more →
- Schedules can now be deleted straight from the On-call → Schedules list, with a trash icon on each row, no need to open the schedule first. If someone is on call right now, the confirmation names them before you delete.
CHANGED
- A new workspace no longer gets an unused "Email" channel added to Integrations automatically. Your on-call setup already delivers alerts to you, so add an email channel yourself if you also want a shared workspace inbox.
- Choosing regions by country instead of individual probing locations now covers every screen that touches them: creating a monitor, editing one, bulk editing many, and the monitor detail page's Regions box and map. It already worked this way on the edit form; now it is consistent everywhere. Learn more →
v1.62
SEP 03, 2026
CHANGED
- You now choose the countries a monitor is checked from, rather than picking individual probing locations. Czechia was two entries and Germany was two more, so asking for both meant ticking four boxes and looking like four times the traffic. It never was: each country sends one request per interval however many machines we run there. The picker now says so, and the response-time threshold is set per country to match.
- A site that blocks our checks silently — dropping the packets rather than refusing them — is now checked less often, the same way one that answers with a rate limit already was. A monitor against a site that is genuinely down is unaffected and still alerts on the usual schedule.
ADDED
- Run test on the monitor form now tells you when a site is refusing automated checks rather than being down, and names the gatekeeper — Cloudflare, Akamai and the rest — when the response identifies one. A monitor pointed at a site that blocks us reports it as down and wakes you for an outage that is not happening, and until now the first you heard of it was that alert. It does not stop you saving the monitor; you may be watching such a site on purpose.
- The addresses we check from are now also published in the standard bot IP list format at howlops.com/bot/ips.json, so a firewall or a bot directory can read them without anyone copying addresses out of a page.
v1.61
SEP 02, 2026
FIXED
- Czech report emails no longer carry English dates and English failure reasons. Dates, weekday labels and incident causes now follow the language of whoever is reading, rather than the language Go's date formatter happens to speak.
- "Include incidents that fired during quiet hours" now does something. The setting saved, and every digest counted every incident regardless. If you had it switched off, your daily brief has been counting incidents you asked it to leave out.
- The weekly report no longer counts Demo Mode incidents, and its "Monitors" figure is now your real monitor count rather than the length of the list shown in the email.
- The workspace report's "Escalations" figure counts actual escalation pages. It used to be derived from the on-call roster and read zero on rotations where everyone is primary, however many times your policy escalated.
- A monthly report could go missing roughly once a year. Two sends falling in the same calendar month collided and the second one was silently dropped.
- Incident causes in the daily brief are written in plain language instead of the checker's internal codes, matching what the incident page and your chat alerts already showed.
- The daily brief and weekly report now carry the unsubscribe link in the message itself, which the documentation had been promising.
- Turning on the workspace report on a plan that does not include it no longer saves quietly and then sends nothing — the setting says what it needs.
CHANGED
- "Monthly" reports now mean a calendar day you choose, not every 30 days. A 30-day cadence drifted to a different date each period and produced thirteen sends in some years.
- The weekly report was rebuilt around what changed. It opens with whether your monitors held your uptime target, marks paused monitors, and adds a "what got worse" section comparing against the previous week. The per-monitor check count is gone; it described our checking, not your service.
- The uptime report leads with the period's longest outage and its cause instead of burying it under the monitor table, sorts monitors worst first, and now states whether you met the SLA target you configured.
- The workspace report shows how quickly each responder acknowledged their pages, and says out loud that SMS and voice fair-use is counted per calendar month rather than over the report's period.
- API tokens are available on every plan. Previously the feature was switched off for free workspaces even though the plan already allowed one token — the switch and the plan disagreed, and the switch won. The limit is unchanged: one token on Free, twenty on any paid plan.
- Single sign-on is available to every workspace with a paid plan, whichever one you bought. It used to require a specific legacy tier that is no longer sold.
ADDED
- Scheduled reports can now go to an address without a HowlOps account — a shared mailbox, an alias, a ticketing address — under Settings → Notifications. Adding one sends nothing: the address gets a confirmation email and decides for itself, and stays marked as pending until it does.
- Unsubscribing from a report email now stops that one report for that one address. It used to stop every non-critical email to the address, in every workspace, with no way back. Settings → Notifications now lists what your address unsubscribed from and lets you resume it.
- You can choose when the weekly, uptime and workspace reports arrive: a weekday and time for weekly cadences, a day of the month for monthly ones, in your workspace timezone. The weekly report used to be fixed at Monday 08:00 and the other two simply fired 7 or 30 days after the previous send.
- On-call shift reminders now also arrive by email. Until now they existed only as a mobile push, so anyone without the app on a registered device was told nothing before a shift started or ended.
- Removing an account from the platform now notifies the person it belonged to. Removal from a single workspace has always been announced; removal of the whole account was silent.
- Every HTTP monitor now shows how much traffic HowlOps sends its target: requests per day, and the regions and interval that produce them. A monitor checked from four regions sends the site four requests per interval, not one, and until now nothing said so. If several of your monitors watch the same hostname, the total for that host is shown too.
v1.60
AUG 31, 2026
FIXED
- Custom request headers and a request body set while creating a monitor were silently discarded. They are saved now. If you created a monitor with headers that never seemed to apply, re-check it.
- Runbook links set on a monitor or heartbeat now actually appear in Slack, Discord, Telegram and webhook alerts. Until now the field was saved and never used.
- Signing in from the HowlOps mobile app no longer hides owner-only screens and actions from owners and admins. The app was told your role was a token rather than your real one, so it showed you a member's view.
- An incident's detail view shows who it is assigned to, matching the incidents list.
- A heartbeat that belongs to a team no longer shows as org-wide on its detail page.
- Heartbeat runbook links can now be set and edited through the API. There was previously no way to save one at all. There is still no field for this in the app yet.
- The monitor response chart spans the period you asked for instead of shrinking to whatever data exists, so a quiet 30-day window is no longer drawn as a short one.
- The packet-loss figure under the monitor chart now follows the range you zoom into, instead of describing a different period from the graph above it.
CHANGED
- Bulk monitor import accepts custom request headers and a request body, matching the single-monitor form.
- When the full time series for a window cannot be loaded, the monitor page now says it is showing a smaller, capped sample instead of presenting it as complete.
- Bulk monitor import now stops and lists the problem if a CSV file has a stray or unmatched double quote, instead of silently importing only the rows before it. If your file has a plain quote mark inside a value (for example 15" wide), wrap that value in quotes so it survives the import.
- API tokens created for scripts, CI, or MCP integrations (not the mobile app) are now capped at the same default permissions as a regular team member, even when the token was created by the workspace owner or an admin. If such a token now gets a 403 on team management, workspace settings, billing changes, or deleting a notification channel, that access was never meant to be there by scope alone; invite a dedicated account under Settings > Team with a custom role granting exactly what the integration needs (Settings > Roles), and create its API token from that account instead.
v1.59
AUG 30, 2026
ADDED
- The HowlOps iOS app is on the App Store. The download link is live on the home page, so you can install it on your iPhone instead of waiting for an invite.
- Trial programme codes. A code unlocks a set of paid plans for your workspace for a fixed period — enter it while signing up, or any time afterwards under Settings > Plan. When the period ends you return to the plan you had before it, and nothing is deleted.
- You can now ask for on-call paging over SMS and voice, and send us feedback, straight from Settings > Plan. Both open a support ticket, so you can follow the thread instead of wondering whether the message arrived.
v1.58
AUG 28, 2026
CHANGED
- Workspace-wide quiet hours are now a settings permission. Anyone who could sign in used to be able to mute alerting for the entire workspace; that now needs the same permission as other workspace settings. Your own personal quiet hours are unchanged.
- Taking and deleting monitor screenshots now needs edit access to monitors, so a read-only member can no longer trigger a capture or remove screenshot evidence from an incident.
FIXED
- Signing in on two devices at once no longer locks you out. If you use the same authenticator code twice — for example on your phone and then on your laptop — we now tell you the code was already used and to wait for the next one, instead of treating it as a wrong code.
- When too many incorrect codes do lock your sign-in, we now say so and tell you how long to wait. The first wait is a minute, and it only grows if incorrect codes keep coming.
LAST UPDATED SEP 07, 2026