---
title: "Better Stack"
description: "Use Blyp's Better Stack connector for automatic log forwarding, manual helper APIs, and Better Stack error tracking."
canonical_url: "https://www.blyp.dev/docs/connectors/betterstack"
markdown_url: "https://www.blyp.dev/docs/connectors/betterstack.md"
last_updated: "2018-10-20"
x_farming_labs_generated_preamble: true
agent:
  task: "Forward Blyp logs and exceptions to Better Stack with the optional provider SDKs."
  outcome: "A test log reaches Better Stack Logs and configured exceptions reach error tracking."
  appliesTo:
    package:
      - "@blyp/core"
      - "@logtail/node"
      - "@sentry/node"
  prerequisites:
    - "A Better Stack source token and ingestion endpoint are available."
  files:
    - "blyp.config.ts"
    - ".env"
  commands:
    - "pnpm add @blyp/core @logtail/node @sentry/node"
  sideEffects:
    - "Logs and selected exceptions leave the application for Better Stack."
  verification:
    - "Emit a uniquely named test record"
    - "flush Blyp"
    - "and find it in the configured source."
  rollback:
    - "Set connectors.betterstack to false and remove unused peer packages."
  failureModes:
    - symptom: "Local logs appear but Better Stack remains empty."
      resolution: "Verify the source token and endpoint, then await logger flush before shutdown."
---

# Better Stack
URL: /docs/connectors/betterstack
LLM index: /llms.txt
Description: Use Blyp's Better Stack connector for automatic log forwarding, manual helper APIs, and Better Stack error tracking.
Related: /docs/connectors, /docs/configuration, /docs/working-with-blyp/production

<!-- farming-labs:agent-contract:start -->
## Agent Contract

Task: Forward Blyp logs and exceptions to Better Stack with the optional provider SDKs.
Outcome: A test log reaches Better Stack Logs and configured exceptions reach error tracking.

### Applies To

- Package: `@blyp/core`, `@logtail/node`, `@sentry/node`

### Prerequisites

- A Better Stack source token and ingestion endpoint are available.

### Files

- `blyp.config.ts`
- `.env`

### Commands

- `pnpm add @blyp/core @logtail/node @sentry/node`

### Side Effects

- Logs and selected exceptions leave the application for Better Stack.

### Verification

- Emit a uniquely named test record
- flush Blyp
- and find it in the configured source.

### Rollback

- Set connectors.betterstack to false and remove unused peer packages.

### Failure Modes

- Local logs appear but Better Stack remains empty. — Recovery: Verify the source token and endpoint, then await logger flush before shutdown.
<!-- farming-labs:agent-contract:end -->

# Better Stack

Install the optional Logtail and Sentry peers, configure the Better Stack source token/endpoint,
emit a uniquely named record, and await flush. Local output without remote delivery points to
credentials, endpoint selection, or an early process exit. Disable `connectors.betterstack` to roll
back without changing other sinks.

Blyp's Better Stack connector covers two related server-side flows:

- log forwarding into Better Stack Logs through `@logtail/node`
- exception capture into Better Stack error tracking through the Sentry SDK

## Install required peer packages

Install the optional peer dependencies when this connector is enabled:

```bash
bun add @logtail/node @sentry/node
```

## Config

Configure Better Stack under `connectors.betterstack`:

```ts
export default {
  connectors: {
    betterstack: {
      enabled: true,
      mode: "auto",
      sourceToken: process.env.SOURCE_TOKEN,
      ingestingHost: process.env.INGESTING_HOST,
      serviceName: "api",
      errorTracking: {
        enabled: true,
        dsn: process.env.BETTERSTACK_ERROR_TRACKING_DSN,
        tracesSampleRate: 1.0,
        environment: process.env.NODE_ENV,
        release: "2026.03.11",
      },
    },
  },
};
```

## Config fields

- `enabled`: enables Better Stack delivery
- `mode`: `auto` or `manual` for server log forwarding
- `sourceToken`: Better Stack source token for log delivery
- `ingestingHost`: absolute `http://` or `https://` Better Stack ingest URL
- `serviceName`: defaults to `blyp-app`
- `errorTracking.enabled`: enables Better Stack error tracking and defaults to the connector `enabled` value
- `errorTracking.dsn`: Better Stack error tracking DSN
- `errorTracking.tracesSampleRate`: defaults to `1.0`
- `errorTracking.environment`: optional Sentry environment value used for Better Stack error tracking
- `errorTracking.release`: optional release string

## Automatic server forwarding

When `mode: "auto"` is enabled and the connector is ready, Blyp server logs forward into Better Stack automatically.

If `errorTracking.dsn` is configured, Blyp also captures handled server errors into Better Stack error tracking automatically.

> Blyp forwards logs to Better Stack as structured JSON events. Each Blyp log line becomes one Better Stack log entry with the original message, level, and structured fields preserved.

## Manual APIs

Use `@blyp/core/betterstack` when you want explicit control:

```ts
import {
  captureBetterStackException,
  createBetterStackErrorTracker,
  createBetterStackLogger,
  createStructuredBetterStackLogger,
} from "@blyp/core/betterstack";

createBetterStackLogger().info("manual better stack log");

createBetterStackErrorTracker().capture(
  new Error("manual better stack exception")
);

captureBetterStackException(new Error("wrapped better stack exception"), {
  context: {
    feature: "checkout",
  },
});

const structured = createStructuredBetterStackLogger("checkout", {
  orderId: "ord_123",
});

structured.info("manual start");
structured.emit({ status: 200 });
```

## Browser and Expo forwarding

Browser and Expo do not use Better Stack SDKs directly. They request forwarding through Blyp ingestion:

```ts
const logger = createClientLogger({
  endpoint: "/inngest",
  connector: "betterstack",
});
```

```ts
const logger = createExpoLogger({
  endpoint: "https://api.example.com/inngest",
  connector: "betterstack",
});
```

Client `error` and `critical` logs requested through the Better Stack connector are promoted into Better Stack exceptions when server-side Better Stack error tracking is configured.

## Notes

- `ingestingHost` must be a full absolute `http://` or `https://` URL
- Blyp does not auto-read `SOURCE_TOKEN` or `INGESTING_HOST`; wire them through `blyp.config.*` explicitly
- `connectors.delivery` can make retryable Better Stack forwarding failures durable without Redis or another external queue
- if `@sentry/node` is already initialized, Blyp reuses the existing Sentry client for Better Stack error tracking
- if that existing Sentry client uses different DSN, environment, or release options, Blyp warns and keeps the existing client
- browser and Expo still post to Blyp first
- browser and Expo do not use `@logtail/browser` directly
- Workers remain out of scope for this connector
- Convex maps `connectors.betterstack` to OTLP logs at `{ingestingHost}/v1/logs` from actions. Error tracking is ignored. See [Convex](/docs/integrations/convex).

## Sitemap

See the full [sitemap](/sitemap.md) for all pages.
Docs-scoped sitemap: [/docs/sitemap.md](/docs/sitemap.md).
Well-known sitemap: [/.well-known/sitemap.md](/.well-known/sitemap.md).
