for developers & devops
Declare your status page in Terraform
Most monitoring vendors let you declare checks in Terraform and then make you click the status page together by hand. Uptimepage treats the page as a resource like any other: it lives in the repo, it changes in a pull request, and it comes up with the monitors that feed it.
what you get
- Provider uptimepage/uptimepage, we build it
- Page resources status pages, components, monitors
- Also in code alert channels, components
- Auth scoped, expiring API tokens
- Same API REST + MCP, no separate surface
- Price to start free, no card
Why this is harder than it sounds elsewhere
Check the registry before you commit to a vendor. Pingdom sells status pages and has no provider that manages them, plus no provider in a SolarWinds-owned namespace at all. StatusCake sells status pages and its own partner-tier provider has no status-page resource. Atlassian publishes no Statuspage provider; the community ones can manage components on a page you already created by hand, but not the page itself. So monitors as code with a status page clicked together in a browser is the normal state of this industry, not the exception.
The page is a resource, not an afterthought
In Uptimepage the status page, the components on it and the monitors behind it are all resources in the same provider, so one apply stands up the whole thing and one pull request changes it. Point a monitor at a new endpoint and the page it publishes to updates with it. Tear down a staging environment and its page goes with it, instead of lingering as an orphan somebody has to remember to delete.
Incidents stay automatic
Declaring the page in code does not mean writing incidents in code. Checks open incidents by themselves when they fail, the incident appears on the page, and confirmed email and webhook subscribers hear about it, with signed payloads they can verify. What you keep in Terraform is the shape of the system, not the events that happen to it.
Tokens that fit a CI pipeline
A Terraform run should not carry a credential that can do everything. Uptimepage tokens are scoped to a resource and an action, bound to one organization and given an enforced expiry, so the token in your pipeline can create monitors and pages without also being able to delete your org.
the page and the checks behind it, in one file
resource "uptimepage_target" "web" {
name = "marketing site"
interval = 60
check = {
type = "http"
http = {
url = "https://example.com"
expected_status = { kind = "exact", exact = 200 }
}
}
}
resource "uptimepage_status_page" "public" {
slug = "acme"
name = "Acme Status"
enabled = true
display_name = "Acme Status"
brand_color = "#0a7cff"
}
resource "uptimepage_status_page_component" "web" {
status_page_id = uptimepage_status_page.public.id
target_id = uptimepage_target.web.id
}