> ## Documentation Index
> Fetch the complete documentation index at: https://help.dsalta.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Better Stack

> Uptime monitoring & incidents — members, monitors & incidents

<Tabs>
  <Tab title="Overview">
    Connect Better Stack with a global API token to sync team members, monitors, heartbeats and incidents, and run access reviews. Read-only.

    <Info>
      **Read-only access.** DSALTA only reads data from this integration. It never creates, modifies, or deletes anything in your environment, and every remediation step is performed by your team directly in the third-party product.
    </Info>

    <Info>
      **What you'll see.** The Access page lists the **team members** across your Better Stack organization with their name, email, role and the date they were added; pending invitations are left out. Better Stack reports no account status or MFA state, so every member is shown as **Active** with MFA **Unknown**. Uptime **incidents** from the last 90 days appear on your **Incidents** page.
    </Info>

    <Note>
      **A Global token is required.** Better Stack also issues team-scoped Uptime API tokens; those cannot list the organization's team members, and DSALTA rejects them at connect time.
    </Note>

    <Note>
      DSALTA collects this integration's data when you connect it — you can refresh it at any time with **Sync from integrations** on the **Integrations** page. The compliance checks below re-run once a day at 02:00 America/New\_York.
    </Note>

    ## What DSALTA reads

    DSALTA reads the Better Stack team member roster — names, emails, roles and join dates — which appears on your **Access** page; your Uptime **monitors**, which appear on your **Inventory** page with their type, status, check frequency, team and whether they are paused, and your **heartbeats**, which carry their status, period and team; and Uptime **incidents** that started in the last 90 days, which appear on your **Incidents** page. Each incident carries its cause and its acknowledged and resolved timestamps; an incident Better Stack has resolved shows **Resolved**, one that has been acknowledged shows **Investigating**, and any other shows **Open**. Every incident is recorded with severity **Medium** and type **Availability**, because Better Stack exposes neither.

    It calls these Better Stack endpoints:

    * `betterstack.com/api/v2/team-members`
    * `uptime.betterstack.com/api/v2/monitors`
    * `uptime.betterstack.com/api/v2/heartbeats`
    * `uptime.betterstack.com/api/v3/incidents`

    Every request is a read. DSALTA has no code path that creates, modifies, or deletes anything in your Better Stack environment.

    ## Troubleshooting

    <AccordionGroup>
      <Accordion title="The connection is rejected">
        The token is not a **Global API token**, or it was deleted. A team-based Uptime token connects to nothing DSALTA needs. Create a Global token and connect again.
      </Accordion>

      <Accordion title="Incidents or Inventory are empty while Access works">
        Monitors, heartbeats and incidents are read best-effort after the team roster: a failure on one of those endpoints leaves that page empty without failing the sync. Click **Sync from integrations** on the **Integrations** page to retry. Incidents older than 90 days are never imported.
      </Accordion>
    </AccordionGroup>

    <AccordionGroup>
      <Accordion title="How do I check whether the connection is healthy?">
        Open **Integrations** in the DSALTA sidebar, stay on the **Connected** tab, and click **Manage** on the integration's card. Open the **Status** tab: it shows either **Connected and working properly** or **Connection issues detected**.

        Use the **Status** tab, not **Overview** — Overview always reports **Connected** regardless of the real state.
      </Accordion>

      <Accordion title="A check shows Failed and nothing changed on my side">
        On an integration-powered check, **Failed** normally means DSALTA was blocked rather than that you are non-compliant. Open the test, go to **Source Data**, and read the result code: **403** is a missing permission, **428** is a setting DSALTA still needs, **500** is a failure on DSALTA's side.

        A real compliance gap shows **207** and leaves the test looking **Completed**. See [Understanding Test Results](/guides/compliance/test-results).
      </Accordion>

      <Accordion title="Data looks out of date">
        Compliance checks re-run once a day at 02:00 America/New\_York. To refresh sooner, open **Integrations → Connected** and click **Sync from integrations** at the top right — it refreshes every connected integration at once.
      </Accordion>

      <Accordion title="How do I repair a broken connection?">
        There is no Reconnect, Repair or Refresh Token button. The only repair available is to disconnect and connect again.

        <Warning>
          **Disconnecting is destructive and cannot be undone.** DSALTA removes the access records, inventory, vulnerabilities, code changes, incidents and device records collected from this integration, and deletes the test results tied to the connection. Export anything you still need as audit evidence first — see [Integration errors](/troubleshooting/integration-errors).
        </Warning>
      </Accordion>

      <Accordion title="Configure scope will not let me change anything">
        That is expected. **Configure scope** is read-only — it shows what DSALTA is permitted to read, and has no Save action. To change what DSALTA can see, change the permissions on the credential in the third-party product, then disconnect and connect again.
      </Accordion>
    </AccordionGroup>
  </Tab>

  <Tab title="How to connect">
    A Better Stack global (organization-wide) API token. Syncs team members, monitors, and incidents. Read-only.

    **Before you begin**

    * A Better Stack organization, and access to its **API tokens** page.

    You will need:

    | Field                | Where to find it                                  | Example                              |
    | -------------------- | ------------------------------------------------- | ------------------------------------ |
    | **Global API Token** | Better Stack → **API tokens → Global API tokens** | Copy an existing token or create one |

    <Steps>
      <Step title="Start in DSALTA">
        Open **Integrations** in the DSALTA sidebar, find **Better Stack**, and click **Connect** to open the connect panel.
      </Step>

      <Step title="Create a global API token">
        In [Better Stack](https://betterstack.com), open **API tokens** and use the **Global API tokens** section to copy an existing token or create a new one.

        <Warning>
          Take the token from **Global API tokens**, not from **Team-based tokens → Uptime API tokens**. A team-scoped token is limited to one team's Uptime resources and cannot list team members, so DSALTA rejects it. A Global token works across every team in the organization — keep it in DSALTA only.
        </Warning>
      </Step>

      <Step title="Connect Better Stack">
        Return to the connect panel, paste the token, and click **Connect**.
      </Step>
    </Steps>

    <Check>
      DSALTA validates the token when you click **Connect**, by listing your team members. On success the integration moves to the **Connected** tab, and **Manage → Status** reads **Connected and working properly**. Checks begin reporting after the first sync.
    </Check>

    <Warning>
      **If the connection is rejected.** A team-scoped token instead of a Global one, or a deleted token.

      The on-screen message is generic — see [Connection error messages](/troubleshooting/connection-error-messages).
    </Warning>
  </Tab>

  <Tab title="Automated checks">
    Each check below re-runs once a day, at 02:00 America/New\_York, while this integration is connected. Click any check for step-by-step remediation guidance.

    | Check                                                                                                                       | Severity | What it verifies                                                                        |
    | --------------------------------------------------------------------------------------------------------------------------- | -------- | --------------------------------------------------------------------------------------- |
    | [User access to Critical System should be valid](/integrations/better-stack/user-access-to-critical-system-should-be-valid) | Info     | Checks that everyone with Better Stack access is an active employee on the People page. |
    | [Offboarded users should not have active access](/integrations/better-stack/offboarded-users-should-not-have-active-access) | High     | Checks that offboarded employees no longer have active Better Stack access.             |
  </Tab>

  <Tab title="Useful links">
    | Topic       | Link                                                                                                            |
    | ----------- | --------------------------------------------------------------------------------------------------------------- |
    | Setup       | [Getting started with the Uptime API](https://betterstack.com/docs/uptime/api/getting-started-with-uptime-api/) |
    | Remediation | [Inviting team members](https://betterstack.com/docs/uptime/inviting-team-members/)                             |
    | General     | [Better Stack](https://betterstack.com)                                                                         |
    | DSALTA      | [Connection error messages](/troubleshooting/connection-error-messages)                                         |
  </Tab>
</Tabs>
