Automation
Automate the work. Prove it works first.
A rule is one sentence: when this happens, if that is true, do these things. Replay it against your own history and test every step before you switch it on. Three automatic fixes go further: they only record what they would have done until you let them act.
Free plan · No credit card · Start from one of 52 recipes
- Three automatic fixes that show you first
- Dry-run it and replay it against real history
- 94 events, 95 actions, your own tools included
- Suggestions that say why, with your own numbers
When this happens
A domain is approaching its expiry date.
Domain expiring
A domain is approaching its expiry date.
Runs at 09:00 · Europe/Amsterdam · it’s 16:16 there now
Next runs:Tue 3 Nov, 09:00Wed 4 Nov, 09:00Thu 5 Nov, 09:00
This automation only runs when you click “Run now”.
Only if — optional filters
MatchAllAnyNoneof these conditions
Tip: a value can reference another field or the time using a placeholder.
Do this — actions run in order, stop at the first failure
In plain English
When Domain expiring if Days left less or equal 15, then Require approval, Set auto-renew and Send notification.
Choose a trigger and an action to see a live summary.
Test it
Conditions pass — this would run
1 of 1 matchedConditions fail — this would not run
0 of 1 matchedRuns each step in dry-run against a real example from your account — nothing is changed.
1. Require approval
Would pause for approval
2. Set auto-renew
domain has no registrar connection
3. Send notification
Would notify 1 destination(s)
dry run
Choose a trigger and at least one action first.
Works with the tools you already run
Three automatic fixes that show you what they would do first
Some failures have one right answer, and nobody should get up at night to give it. Each fix starts by only watching. It changes nothing and records what it would have done and why. Once you have seen it be right, you click Let it act. Watching is on every plan. Acting is Pro and up, and if your plan changes, the fix goes back to watching.
- Down everywhere: leaves the load balancer, returns on recovery
- Frozen server: rebooted at most once a day
- Filling volume: grows 25%, up to your limits
Each time it fires, it notes what it would have done and why. Read them, and when they are right, let it act.
Server down everywhere → take it out of the load balancer, put it back when healthy
ActiveWatchingMarketing site was down
Would have taken web-02 out of web-lb
would have done
What your team is told when it acts
Marketing site has been down from every location for 2 minutes, so web-02 was taken out of web-lb. It goes back in when the monitor recovers.
Server frozen → reboot it, at most once a day
ActiveWatchingapi-01 stopped answering: no monitor got a reply (API health) and its agent was silent for 10 minutes
Would have rebooted api-01 through its provider
would have done
What your team is told when it acts
api-01 stopped answering: none of its monitors (API health) responds and its agent has been silent for 10 minutes, so it was rebooted through Hetzner. It is not rebooted automatically again for a day.
Volume forecast to fill within 7 days → grow it by 25%, up to a limit
ActiveWatchinguploads on web-01 was forecast to be full on 8 Nov 2026
Would have grown uploads from 250 GB to 313 GB, costing about 15.02 EUR a month
would have done
An automatic fix that grows a volume needs a monthly cost limit before it may act: set "Never costing more than (a month)" on the volume step.
What your team is told when it acts
uploads on web-01 was forecast to be full on 8 Nov 2026, so it was grown from 250 GB to 313 GB. At the new size it costs about 15.02 EUR a month. The disk is bigger, but the filesystem on it is not yet: run sudo resize2fs (or sudo xfs_growfs) on web-01.
From then on it does what it records. You can switch it back to recording at any time.
Letting a fix act is on Pro and up. Watching is on every plan. Example records on a demo account. Nothing here touches a real server.
Know what an automation rule will do before you trust it
A rule takes a minute to write and is hard to check. You find out when it fires, usually at three in the morning. InfraNest shows you first, in four ways. The builder writes the rule back as a sentence. A dry run tries every step on a real object and changes nothing. A saved rule can be tested on demand. A backtest replays your own history and shows how often the rule would have fired, and on what.
- Backtests cover your last 30 days
- Dry runs show skipped steps too
- Unknown placeholders and missing destinations flagged as you type
Would have run
5×in the last 30 days
- northwyndr.shop4d
- northwyndr-labs.com6d
- nwyndr.app8d
▸ Test with a custom payload
Conditions pass — this would run
1 of 1 matchedRuns each step in dry-run against a real example from your account — nothing is changed.
1. Require approval
Would pause for approval
2. Set auto-renew
domain has no registrar connection
3. Send notification
Would notify 1 destination(s)
dry run
Actions are a tree, and one branch can be a person
Almost everything worth automating is conditional. Route by tag. Notify, wait fifteen minutes, and escalate only if it is still down. Stop and ask somebody before anything you cannot undo. So branches and for-each loops nest. A wait resumes at the exact step it left. An approval holds the run until a named person says yes.
- Rejecting an approval ends the run
- Restrict approvers, so forwarding an email gets nowhere
- Placeholders add live detail. Secrets never resolve
Monitor alert · Status equals down
Do this — actions run in order, stop at the first failure
Then
Otherwise
Add action
Search actions…
Flow
If / branch
Run steps only when conditions match — otherwise the Else steps.
For each
Repeat steps for each item in a list.
Wait
Pause the flow, then continue — e.g. notify, wait, then re-check.
Set a value
Define a named value that later actions in this automation can reuse.
Require approval
Pause for a human to approve before the steps below run.
Every event you run on, and many you do not
Ninety-four events across the product: a domain registered, a zone that has drifted, a server created, a monitor down, a watched domain about to drop. Ninety-five actions, on any of them. GitHub, Jira, Linear and PagerDuty start rules directly. So can a schedule in your timezone, or an inbound webhook from any tool.
- 56 actions built in, 39 through connected accounts
- GitHub, Jira, Linear, PagerDuty both ways: Pro and up
- Twelve comparisons in conditions, not an expression language
When this happens
Search events…
Domains6
Domain added
A domain was added or imported into InfraNest.
Domain expiring
A domain is approaching its expiry date.
Domain status changed
A domain's nameservers or status changed.
DNSSEC broke
A domain's DNSSEC stopped validating — resolvers that check it may refuse to answer for the domain.
Domain renewed
A domain's registrar pushed its expiry date out (renewed).
Domain deleted
A domain was removed from InfraNest.
DNS4
Certificates7
Servers14
Monitoring14
95 events across 10 categories
All events in a category
All domain events
6 event types
Everything that happens
95 event types
Suggestions that say why, and recipes for the rest
A first automation is easier to pick than to invent. The Suggested tab lists what fits your connected tools, and your last 30 days make the case. One that only informs turns on in a click. One that changes something opens for review first. Behind them sit fifty-two recipes, such as escalating a monitor after fifteen minutes. Save your own as templates too.
- Each shows When, Then, and whether it changes anything
- One automation monitors everything you add, within your plan
- Recipes pre-fill the builder. Nothing runs until you save
Start from a ready-made recipe — filter by category or trigger, or search. One click pre-fills the builder; tailor it before saving.
Monitor down → nobody acknowledges → escalate
v2Monitor alert → Wait → Send notification → Wait → Send notification → Wait → Send notification
Expiring domain → approve, then auto-renew
v2Domain expiring → Require approval → Set auto-renew → Send notification
Incident opened → announce on status page, unless it is a blip
v2Incident opened → Wait → Post status-page announcement → Send notification
Monitor down → reboot the server
v2Monitor alert → Wait → Reboot server → Send notification
Ask another system, then act on the answer
v2Domain expiring → Call webhook → If / branch → Send notification → Send notification
Renewal not live within 24 hours → alert
v2Renewal has not reached an address → Wait → If / branch → Send notification
Deployment succeeded → check it is up → set commit status
v2GitHub deployment status → Check a monitor now → If / branch → Set commit status → Set commit status
Server frozen → reboot it, at most once a day
v2Server frozen → Reboot server → If / branch → Send notification → Send notification
Volume forecast to fill within 7 days → grow it by 25%, up to a limit
v2Volume forecast to fill → Resize volume → If / branch → Send notification → Send notification
Weekly reminder to tidy up leftover DNS records
v2Scheduled → Find leftover DNS records → If / branch → Send notification
Certificate expiring → run a GitHub workflow
v2Certificate expiring → Run GitHub workflow
Server down everywhere → take it out of the load balancer, put it back when healthy
v2Monitor alert → If / branch → Wait → Remove LB target → Send notification → If / branch → Add LB target → Send notification
Monitor down → route by tag
v2Monitor alert → If / branch → Send notification → Send notification
New domain onboarding
Domain added → Create DNS zone → Apply DNS template → Start monitoring
Auto-renew expiring domains
Domain expiring → Set auto-renew → Send notification
GitHub workflow failed → open an issue & alert
GitHub workflow run → Create GitHub issue → Send notification
New server → enable backups & protection
Server added → Enable backups → Enable delete protection
Weak certificate → webhook
Weak certificate → Call webhook → Send notification
Certificate expiring → open a GitHub issue
Certificate expiring → Create GitHub issue
Certificate about to expire → open a PagerDuty incident
Certificate expiring → Trigger PagerDuty incident
Certificate expiring → remind its owner
Certificate expiring → Send notification
Certificate expiry heads-up
Certificate expiring → Send notification
DNS record deleted → stop tracking its address
DNS record deleted → Stop tracking address
Critical incident resolved → write a postmortem in Notion
Incident resolved → write_incident_report
Deployment succeeded → purge Cloudflare cache
GitHub deployment status → Purge Cloudflare cache
DNS record changed → alert
DNS record changed (in-app) → Send notification
Domain expiring → open a GitHub issue
Domain expiring → Create GitHub issue
Domain about to expire → open a PagerDuty incident
Domain expiring → Trigger PagerDuty incident
Send domain events to my system
Domain added → Call webhook
Send everything to my system
Domain added → Call webhook
Deployment succeeded → announce on status page
GitHub deployment status → Post status-page announcement
Release published → announce on status page
GitHub release → Post status-page announcement
GitHub workflow failed on main → page on-call
GitHub workflow run → Trigger PagerDuty incident
GitHub workflow failed → re-run failed jobs once
GitHub workflow run → Re-run failed jobs
Incident acknowledged → say who is on it, on its ticket
Incident acknowledged → comment_linked_ticket
Outage acknowledged → tell the team who is on it
Incident acknowledged → Send notification
Incident opened → Cloudflare Under Attack
Incident opened → Set Cloudflare security level
Incident opened → open a GitHub issue
Incident opened → Create GitHub issue
Incident resolved → close its GitHub issue
Incident resolved → Close GitHub issue
Incident resolved → note how long it lasted, on its ticket
Incident resolved → comment_linked_ticket
Incident opened → log to a webhook / Sheet
Incident opened → Call webhook
Let another tool trigger an automation
Incoming webhook → Send notification
Maintenance started → status announcement
Maintenance started → Post status-page announcement
Tell my own system when a monitor fails
Monitor alert → Call webhook
New domain, server or status page component → monitor it
Domain added → Monitor what was added
New server → monitor it
Server added → Monitor the new server
New domain → monitor its website
Domain added → Monitor the new website
Monthly uptime report to a client
Scheduled → Email a monthly uptime report
High-urgency PagerDuty incident → announce on status page
PagerDuty incident triggered → Post status-page announcement
PagerDuty incident resolved → tell the team
PagerDuty incident resolved → Send notification
Production monitor down → page on-call
Monitor alert → Send notification
Server restarts on a schedule → propose a weekly maintenance window
Server restarts on a schedule → Send notification
Ticket finished and the monitor is back → resolve the incident
incident.ticket_closed → resolve_incident
Ask before renewing a domain nothing uses
Domain expiring → Send notification
Watched domain available → notify
Watched domain available → Send notification
Weekly expiry review reminder
Scheduled → Send notification
Showing 56 of 56 recipes
Everything else it handles
The parts that are only interesting when you need them.
Guardrails you never think about
A run stops at 100 actions and 500 steps, a loop at 100 iterations.
Automations that trigger automations
Chains stop at five deep, and a rule cannot re-trigger itself within one.
Replay a past run
Once the fault is fixed, re-run any run with its original payload.
Carry a value between steps
Use what an early step returned, even a webhook’s reply, in a later condition, message or request.
One rule, several events
Listen to a whole category or to everything, and forward the lot to your own system.
Alerts wherever you already read them
Slack, Teams, Discord, Telegram, email or a webhook, chosen per action.
Build your first rule in about two minutes
Start from a recipe, replay it against your own history, then switch it on. Nothing runs until you save.
Scripts and reminders vs InfraNest
The difference between something that fired and knowing what it did.
Scripts and reminders
- You learn whether the rule was right when it fires
- A stopped cron job looks like a working one
- “It failed”, with no way to tell why
- The irreversible step runs at 3am with nobody awake
- Steps that live in someone’s head
With InfraNest
- Replay it and dry-run every step first
- Five failures in a row switch the rule off and record why
- The refusal names the missing permission
- Require approval waits for a named person
- One rule, one audit trail, the same every time
One login, ten modules
Nine modules are on every plan, Free included, and firewalls start on Pro. What changes is how much of each you get, plus a few advanced features from Pro.
Build on it
The cost of doing it separately
Buy each piece from a different tool and it adds up fast:
- Uptime monitoring
- ~€26
- SSL tracking
- ~€15
- Status page
- ~€26
- Across 3 separate tools
- ~€67/mo
Also in Pro, not counted above: 100 domains with DNS, 10 servers across your cloud providers, 25 automations, Dynamic IP and Drop Catch.
Each line is that tool’s cheapest paid plan. Pro covers all of it: 50 monitors, 100 certificates and 3 status pages on your own domain.
Prices checked October 2026 · dollar prices at the ECB rate
Built for how you work
Frequently asked
Do I need to write any code?
No. Pick a trigger, add filters from dropdowns and choose actions, usually starting from one of fifty-two recipes. Conditions are deliberately not a formula language, so you can see what a rule will do without running it.
How do I know a rule will do what I meant?
The builder writes it back as a plain-English sentence, and a dry run changes nothing. A backtest shows how often it would have fired in the last thirty days, and on what.
What does an automatic fix do on its own?
Nothing, until you let it. There are three. Take a down server out of its load balancer and put it back. Reboot a frozen server at most once a day. Grow a filling volume up to your limit. Each first records what it would have done, and your list shows how often in the last 30 days. You can go back to watching at any time. A database server is only rebooted if you allow it on its page. A maintenance window makes the frozen-server fix wait. If a server freezes again within a day, your team is told and a person takes over. A volume fix needs a cost limit first, and does not grow a volume whose price is unknown. Afterwards, the message gives you the command to use the new space. Every change is in the audit log.
Can a rule act on GitHub, Jira or PagerDuty?
In both directions. Their events start rules: a failed workflow, a merged pull request, an escalated incident. Rules act back: open or label an issue, merge a pull request, re-run a workflow, transition a ticket. Connecting GitHub, Jira, Linear, Notion or PagerDuty is Pro and up.
What happens if an action fails?
A transient failure is retried after 30 seconds, then two, five, ten and fifteen minutes. If it never works, the run gives up and records why. A missing permission stops the rule at once, names it the way your provider spells it, and notifies you. You can also tell a step to carry on.
Could an automation do something destructive by accident?
Nothing runs until you save and enable a rule. Anything irreversible can sit behind Require approval. A rule acts with the permissions of your organisation’s owner or its creator, never an unbounded service account. A run uses a frozen copy of the rule, so an edit cannot change it mid-flight. A deleted rule can be restored for fourteen days.
How many automations do I get?
Three rules on the free plan, twenty-five on Pro and unlimited on Business. Most built-in actions work on the free plan. The eleven that change a server’s power, backups or protection, or Cloudflare’s settings, need Pro and up. So does letting an automatic fix act. Watching, run history, dry runs and the backtest are on every plan.
Write the rule once, and stop remembering it
Start from a recipe, prove it against your own history, then let it run.
Free plan · No credit card required · Set up in minutes