> ## Documentation Index
> Fetch the complete documentation index at: https://test-8ad8522e-feat-ai-sre.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Get started with Flashduty Status Page

> Learn how to create a Flashduty status page from scratch or migrate from Atlassian Statuspage

When adopting Flashduty Status Page for the first time, you can create a new status page from scratch or migrate from Atlassian Statuspage to Flashduty Status Page. This guide covers the required steps for both paths.

After the status page is created or migrated, components, sections, event templates, subscriptions, and event publishing are follow-up configuration tasks. Use the links at the end of this guide to continue.

If you are not familiar with the core concepts, start with [What is a status page](/en/on-call/statuspage/statuspage).

***

## Choose an onboarding path

| Current situation                        | Recommended path                                      | Section                                                                 |
| ---------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------------------------- |
| You do not have a formal status page yet | Create a Flashduty status page from scratch           | [Create a status page from scratch](#create-a-status-page-from-scratch) |
| You already use Atlassian Statuspage     | Migrate structure, historical events, and subscribers | [Migrate from Atlassian Statuspage](#migrate-from-atlassian-statuspage) |

If you are evaluating a replacement for Atlassian Statuspage, read [Status Page comparison](/en/on-call/statuspage/comparison).

***

## Create a status page from scratch

Creating from scratch only establishes the status page entity and confirms its name, URL slug, and type. Configure branding, domain, components, subscriptions, and event publishing in the follow-up docs.

<Steps>
  <Step title="Confirm the status page type">
    Choose whether to create a **public status page** or an **internal status page**. Public status pages are for customers, partners, and external visitors. Internal status pages are for organization members and require Flashduty sign-in.
  </Step>

  <Step title="Navigate to status page management">
    Sign in to the [Flashduty console](https://console.flashcat.cloud), open **Status Pages** from the left navigation, and click **Create Status Page**.
  </Step>

  <Step title="Fill in creation details">
    Fill in the following fields:

    | Field        | Description                                                                                                                |
    | ------------ | -------------------------------------------------------------------------------------------------------------------------- |
    | **Name**     | Display name for the status page, usually your company, product, or service name                                           |
    | **URL slug** | Unique identifier used to build the status page URL; only lowercase letters, numbers, hyphens, and underscores are allowed |
    | **Type**     | Choose **Public** or **Internal**                                                                                          |
  </Step>

  <Step title="Complete creation">
    Click **Confirm** to finish. After creation, configure basic settings, components, subscriptions, templates, and event publishing as needed.
  </Step>
</Steps>

***

## Migrate from Atlassian Statuspage

If you already use Atlassian Statuspage, you can use Flashduty CLI to migrate **components, sections, historical events, and email subscribers** to Flashduty Status Page.

<Tip>
  **Plan requirement**: migration (structure & history migration and email subscriber migration) requires the Flashduty **Pro** plan.
</Tip>

Migration is split into two independent steps:

1. **Migrate structure and history**: import components, sections, historical events, maintenance records, and notification templates.
2. **Migrate email subscribers**: import the subscriber list and subscription preferences.

The two-step design is intentional: structure migration does **not** notify subscribers. You can verify the imported content before importing subscribers. Imported subscribers become active immediately and do not need to verify their email again.

<Tip>
  If you use an AI coding agent such as Codex, Claude Code, or Cursor, you can first install the Agent Skills by following the [flashduty-cli README](https://github.com/flashcatcloud/flashduty-cli#agent-skills). After installation, the `flashduty-statuspage` skill teaches the agent the Atlassian Statuspage migration commands and precautions, so it can help run the migration from your local terminal.
</Tip>

### Prerequisites

#### Install Flashduty CLI

<Tabs>
  <Tab title="macOS / Linux">
    ```bash theme={null}
    curl -sSL https://static.flashcat.cloud/flashduty-cli/install.sh | sh
    ```
  </Tab>

  <Tab title="Windows (PowerShell)">
    ```powershell theme={null}
    irm https://static.flashcat.cloud/flashduty-cli/install.ps1 | iex
    ```
  </Tab>

  <Tab title="Manual download">
    Read the latest version from the [CDN latest version pointer](https://static.flashcat.cloud/flashduty-cli/releases/latest), then download the matching asset from `https://static.flashcat.cloud/flashduty-cli/releases/download/<version>/<asset>`, extract it, and place the binary in your `PATH`.
  </Tab>
</Tabs>

For more installation options, see the [CLI documentation](/en/developer/cli).

#### Log in to Flashduty

```bash theme={null}
flashduty login
```

When prompted, paste your APP Key. To obtain one, sign in to the [Flashduty console](https://console.flashcat.cloud) and copy your APP Key from **Profile > Personal Info**.

#### Get your Atlassian Statuspage API Key

1. Log in to the [Atlassian Statuspage management panel](https://manage.statuspage.io/)
2. Go to **User icon > API info** and copy the API Key
3. Set the environment variable:

```bash theme={null}
export ATLASSIAN_STATUSPAGE_API_KEY="your_api_key_here"
```

#### Get your Atlassian Statuspage Page ID

In the Atlassian Statuspage management panel, the **Page ID** is displayed in the page URL or page settings. It looks like `0db0rq26tg1l`.

### Migration steps

Migrate structure and history first, then migrate subscribers, and switch the domain last. This lets you verify imported content before subscribers start receiving Flashduty status page notifications.

<Steps>
  <Step title="Migrate structure and history">
    Run the following command to import Atlassian Statuspage components, sections, historical events, maintenance records, and notification templates. This step creates or reuses the target Flashduty status page but does not notify subscribers.

    ```bash theme={null}
    flashduty status-page migrate-structure <your_atlassian_page_id> \
      --api-key "$ATLASSIAN_STATUSPAGE_API_KEY"
    ```

    | Flag               | Required | Description                                                                                                     |
    | ------------------ | -------- | --------------------------------------------------------------------------------------------------------------- |
    | `<source-page-id>` | Yes      | Atlassian Statuspage Page ID (positional argument; can also be passed via `--source-page-id`)                   |
    | `--api-key`        | Yes      | Atlassian Statuspage API Key                                                                                    |
    | `--url-name`       | No       | URL name for the newly created Flashduty public status page; when omitted, the source page's URL name is reused |

    <Warning>
      `--url-name` is honored **only when this run creates a new target status page.** If the same `--source-page-id` is already mapped to an existing Flashduty status page from a previous migration:

      * Omit `--url-name`, or pass a value that exactly matches the existing target's URL name, and the migration reuses that target.
      * Pass a value that differs from the existing target's URL name, and the migration fails during preflight. To change the URL name, edit the target status page directly in the Flashduty console.
    </Warning>

    Format and uniqueness requirements for `--url-name`:

    * Normalized by `MakeSlug`: lowercased, hyphen-separated, and capped at 255 characters. Pure-symbol input or anything that normalizes to an empty string is rejected with `url_name must not be empty after normalization`.
    * Globally unique across the account's public status pages. Collisions are rejected with `url_name must be unique`.
  </Step>

  <Step title="Check migration progress">
    Migration jobs run asynchronously, and the command returns immediately with a **Job ID**. Check progress with:

    ```bash theme={null}
    flashduty status-page migration-status <job_id>
    ```

    The structure and history migration completes 5 steps in order: create (or reuse) the target status page → import sections → import components → import historical incidents (including maintenances) → import event templates. When the job completes, the output's `target_page_id` is the Flashduty status page ID, which you need for subscriber migration.

    To cancel a running migration job, run:

    ```bash theme={null}
    flashduty status-page migration-cancel <job_id>
    ```
  </Step>

  <Step title="Verify imported content">
    Before proceeding, verify the imported data:

    ```bash theme={null}
    # List status pages
    flashduty status-page list

    # View the target status page details (including component and section IDs)
    flashduty status-page info <target_page_id>

    # View imported incidents (both --type and --status are required)
    flashduty status-page change-list <target_page_id> --type incident --status resolved
    ```

    You can also log in to the [Flashduty console](https://console.flashcat.cloud) to visually inspect components, sections, and incident history.
  </Step>

  <Step title="Migrate email subscribers">
    After confirming the structure and history are correctly imported, run the subscriber migration:

    ```bash theme={null}
    flashduty status-page migrate-email-subscribers \
      --source-page-id <your_atlassian_page_id> \
      --target-page-id <flashduty_page_id> \
      --api-key "$ATLASSIAN_STATUSPAGE_API_KEY"
    ```

    | Flag               | Required | Description                                                                                 |
    | ------------------ | -------- | ------------------------------------------------------------------------------------------- |
    | `--source-page-id` | Yes      | Atlassian Statuspage Page ID                                                                |
    | `--target-page-id` | Yes      | Flashduty status page ID returned by the structure and history migration (`target_page_id`) |
    | `--api-key`        | Yes      | Atlassian Statuspage API Key                                                                |

    Imported subscribers become active immediately without email verification. Email addresses marked as quarantined on the Atlassian side are automatically skipped. Subscriber migration can safely be run multiple times, and existing subscribers will not be duplicated.
  </Step>

  <Step title="Switch domain and RSS/Atom">
    If your original Atlassian Statuspage used a custom domain, point the CNAME record to the Flashduty-provided status page address. Flashduty is compatible with `history.rss` and `history.atom`, so existing RSS/Atom subscriptions can keep working.

    See [Configure status page basics](/en/on-call/statuspage/create-manage-page) for custom domain configuration. See [Subscription management](/en/on-call/statuspage/subscriptions) for RSS/Atom feed behavior.
  </Step>
</Steps>

### Complete migration example

```bash theme={null}
# Set Atlassian API Key
export ATLASSIAN_STATUSPAGE_API_KEY="your_api_key_here"

# 1. Migrate structure and history
flashduty status-page migrate-structure 0db0rq26tg1l \
  --api-key "$ATLASSIAN_STATUSPAGE_API_KEY"
# Returns a job_id (ULID format), e.g. 01KP0311872NVYFRRQ82FW0001

# 2. Poll until completed
flashduty status-page migration-status 01KP0311872NVYFRRQ82FW0001
# Repeat until status is completed
# Record the target_page_id from the output

# 3. Verify imported content
flashduty status-page info <target_page_id>

# 4. Migrate email subscribers
flashduty status-page migrate-email-subscribers \
  --source-page-id 0db0rq26tg1l \
  --target-page-id <target_page_id> \
  --api-key "$ATLASSIAN_STATUSPAGE_API_KEY"
# Returns the job_id of the subscriber migration job, e.g. 01KP04M3W5EZY0QHAJ2VB00002

# 5. Poll until completed
flashduty status-page migration-status 01KP04M3W5EZY0QHAJ2VB00002
```

***

## Continue configuration

After creation or migration, continue with the doc that matches your next goal. This guide does not repeat each feature's configuration steps.

| Goal                                                                   | Doc                                                                       |
| ---------------------------------------------------------------------- | ------------------------------------------------------------------------- |
| Configure branding, domain, and display settings                       | [Configure status page basics](/en/on-call/statuspage/create-manage-page) |
| Design service components, section structure, and visibility rules     | [Components and sections](/en/on-call/statuspage/components-sections)     |
| Publish incidents or maintenance and update the timeline               | [Publish and manage events](/en/on-call/statuspage/publish-events)        |
| Prepare incident, maintenance, and recovery messages                   | [Event templates](/en/on-call/statuspage/templates)                       |
| Manage email, RSS/Atom, IM subscriptions, and subscriber import/export | [Subscription management](/en/on-call/statuspage/subscriptions)           |
| Compare Flashduty Status Page with Atlassian Statuspage                | [Status Page comparison](/en/on-call/statuspage/comparison)               |
