> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flashduty.com/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, and hyphens 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. 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 statuspage migrate structure \
      --from atlassian \
      --source-page-id <your_atlassian_page_id> \
      --api-key "$ATLASSIAN_STATUSPAGE_API_KEY"
    ```

    | Flag               | Required | Description                                                 |
    | ------------------ | -------- | ----------------------------------------------------------- |
    | `--from`           | Yes      | Migration source, currently only `atlassian`                |
    | `--source-page-id` | Yes      | Atlassian Statuspage Page ID                                |
    | `--api-key`        | Yes      | Atlassian Statuspage API Key                                |
    | `--url-name`       | No       | URL name for the newly created Flashduty public status page |

    <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 statuspage migrate status --job-id <job_id>
    ```

    The migration imports `components`, `sections`, `history`, and `templates` in order. When the job completes, the output includes the Flashduty status page ID (`target-page-id`), which you need for subscriber migration.

    To cancel a running migration job, run:

    ```bash theme={null}
    flashduty statuspage migrate cancel --job-id <job_id>
    ```
  </Step>

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

    ```bash theme={null}
    # View the new status page
    flashduty statuspage list --id <target_page_id>

    # View imported incidents
    flashduty statuspage changes --page-id <target_page_id> --type incident
    ```

    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 statuspage migrate email-subscribers \
      --from atlassian \
      --source-page-id <your_atlassian_page_id> \
      --target-page-id <flashduty_page_id> \
      --api-key "$ATLASSIAN_STATUSPAGE_API_KEY"
    ```

    | Flag               | Required | Description                                                              |
    | ------------------ | -------- | ------------------------------------------------------------------------ |
    | `--from`           | Yes      | Migration source, `atlassian`                                            |
    | `--source-page-id` | Yes      | Atlassian Statuspage Page ID                                             |
    | `--target-page-id` | Yes      | Flashduty status page ID returned by the structure and history migration |
    | `--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 statuspage migrate structure \
  --from atlassian \
  --source-page-id 0db0rq26tg1l \
  --api-key "$ATLASSIAN_STATUSPAGE_API_KEY"
# Output: Job ID: str_abc

# 2. Poll until completed
flashduty statuspage migrate status --job-id str_abc
# Repeat until Status: completed
# Record the target-page-id from output

# 3. Verify imported content
flashduty statuspage list --id <target_page_id>

# 4. Migrate email subscribers
flashduty statuspage migrate email-subscribers \
  --from atlassian \
  --source-page-id 0db0rq26tg1l \
  --target-page-id <target_page_id> \
  --api-key "$ATLASSIAN_STATUSPAGE_API_KEY"
# Output: Job ID: sub_xyz

# 5. Poll until completed
flashduty statuspage migrate status --job-id sub_xyz
```

***

## 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)               |
