Skip to main content

Build a Marketplace Status Page with Terraform

See the result first, then download the Terraform project that creates its core page structure.

Northstar Marketplace page with the Buyer Journey expanded
Northstar Marketplace page with the Buyer Journey expandedOpen full-size image

The live page is deliberately broad and shallow. It has 18 monitored components: three customer-readable surfaces and 15 capabilities beneath them.

  • Buyer Journey
  • Seller Journey
  • Platform Operations

The example creates that hierarchy, a buyer-focused custom view, public page settings, and the site title and homepage layout. It leaves incidents, maintenance windows, subscribers, and monitoring events out because those are operational data rather than durable page configuration.

Project layout

Terraform reads all .tf files in a directory as one root module. Splitting the configuration by responsibility keeps the example easy to navigate without hiding the provider resources behind a child module.

northstar-marketplace/
├── versions.tf
├── providers.tf
├── variables.tf
├── hierarchy.tf
├── views.tf
├── settings.tf
├── terraform.tfvars.example
└── terraform.rc

The ZIP contains exactly this directory. You can also inspect and download each source file below.

Reading the hierarchy names

The Terraform names mirror StatiBeat's hierarchy editor rather than this demo's business terminology:

StatiBeat conceptTerraform nameNorthstar example
Level 1 namestatuspage_hierarchy_level.level_1Surface / Surfaces
Level 1 itemsstatuspage_hierarchy_item.level_1_itemsBuyer Journey, Seller Journey
Level 2 namestatuspage_hierarchy_level.level_2Capability / Capabilities
Level 2 itemsstatuspage_hierarchy_item.level_2_itemsCheckout, Discovery, Listings

This makes the structure reusable: replace the customer-facing names and item data while keeping the level-oriented Terraform pattern.

Terraform files

Download versions.tf
versions.tf
terraform {
required_version = ">= 1.5"

required_providers {
# This provider manages the page configuration exposed in StatiBeat's
# Terraform workspace.
statuspage = {
source = "terraform.statibeat.com/statibeat/statuspage"
version = "2026.7.15"
}
}
}

Local setup files

Download terraform.tfvars.example
terraform.tfvars.example
# Replace these placeholders with the values shown in Terraform > Setup for the
# StatiBeat page you want this project to manage.
statuspage_base_url = "https://status.example.com"
statuspage_public_slug = "status-example"

The token is intentionally absent from every file. The provider reads it from STATUSPAGE_TOKEN at runtime. The mirror contains provider packages and Terraform metadata only; it does not contain customer configuration or credentials.

Before you run it

You need:

  1. an existing StatiBeat page that you are comfortable configuring
  2. its HTTPS page URL and public slug
  3. a dedicated terraform-key from the page's Terraform → Setup workspace
  4. Terraform 1.5 or newer
Use a fresh page first

terraform apply changes the page supplied in statuspage_base_url. Start with a new or disposable page, review the plan, and do not point the example at a production page until you understand every proposed change.

1. Download and configure the project

Download and extract the project, then copy the example variable file:

unzip northstar-marketplace.zip
cd northstar-marketplace
cp terraform.tfvars.example terraform.tfvars

Edit terraform.tfvars and replace both placeholder values with the URL and public slug shown in your page's Terraform workspace.

Keep the token out of files and shell history by reading it silently:

read -rsp "StatiBeat Terraform token: " STATUSPAGE_TOKEN && export STATUSPAGE_TOKEN && echo

2. Preview and apply

StatiBeat distributes compiled provider packages through a public, read-only network mirror rather than the public Terraform Registry. terraform.rc routes only the StatiBeat-owned provider identity through that mirror.

export TF_CLI_CONFIG_FILE="$PWD/terraform.rc"
terraform init
terraform fmt -check
terraform validate
terraform plan
terraform apply

Read the plan before approving it. A second terraform plan should report no changes after the apply completes.

How the configuration fits together

  • versions.tf pins Terraform and the StatiBeat provider.
  • providers.tf connects to the page selected in its StatiBeat Terraform → Setup workspace while keeping the terraform-key in the environment.
  • variables.tf defines and validates the page URL and public slug shown in that workspace.
  • hierarchy.tf names Level 1 and Level 2, then creates the items visitors see at each level.
  • views.tf creates a StatiBeat Custom View from selected Level 2 item IDs.
  • settings.tf maps to StatiBeat Page Settings and Site Settings for visibility, identity, and homepage layout.

This remains a root module intentionally: users can see the actual provider resources and adapt them directly. A child module becomes useful when the same page pattern needs to be instantiated repeatedly with a stable input contract.

Once this pattern works for your page, add status definitions, preset messages, Beats, feeds, or more custom views as separate resources.