---
title: "Databuddy"
description: "Use Blyp's Databuddy connector for automatic forwarding, manual helper APIs, and browser or Expo forwarding through Blyp ingestion."
canonical_url: "https://www.blyp.dev/docs/connectors/databuddy"
markdown_url: "https://www.blyp.dev/docs/connectors/databuddy.md"
last_updated: "2018-10-20"
x_farming_labs_generated_preamble: true
agent:
  task: "Forward server and client-ingested Blyp records to Databuddy."
  outcome: "A uniquely named log appears as a Databuddy event with normalized metadata."
  appliesTo:
    package:
      - "@blyp/core"
      - "@databuddy/sdk"
  prerequisites:
    - "A Databuddy API key and project are available."
  files:
    - "blyp.config.ts"
    - ".env"
  commands:
    - "pnpm add @blyp/core @databuddy/sdk"
  sideEffects:
    - "Logs and handled errors leave the application for Databuddy."
  verification:
    - "Emit and flush a test record"
    - "then locate its event in Databuddy."
  rollback:
    - "Set connectors.databuddy to false and remove the provider peer if unused."
  failureModes:
    - symptom: "Browser records arrive locally but not in Databuddy."
      resolution: "Verify browser logs use Blyp ingestion and the server connector is enabled on that ingestion handler."
---

# Databuddy
URL: /docs/connectors/databuddy
LLM index: /llms.txt
Description: Use Blyp's Databuddy connector for automatic forwarding, manual helper APIs, and browser or Expo forwarding through Blyp ingestion.
Related: /docs/connectors, /docs/configuration, /docs/integrations/client

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

Task: Forward server and client-ingested Blyp records to Databuddy.
Outcome: A uniquely named log appears as a Databuddy event with normalized metadata.

### Applies To

- Package: `@blyp/core`, `@databuddy/sdk`

### Prerequisites

- A Databuddy API key and project are available.

### Files

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

### Commands

- `pnpm add @blyp/core @databuddy/sdk`

### Side Effects

- Logs and handled errors leave the application for Databuddy.

### Verification

- Emit and flush a test record
- then locate its event in Databuddy.

### Rollback

- Set connectors.databuddy to false and remove the provider peer if unused.

### Failure Modes

- Browser records arrive locally but not in Databuddy. — Recovery: Verify browser logs use Blyp ingestion and the server connector is enabled on that ingestion handler.
<!-- farming-labs:agent-contract:end -->

# Databuddy

Configure Databuddy on the server, including the API key, and send browser/Expo records through Blyp
ingestion rather than directly to the provider. Verify with a unique event after flush. Missing
client events usually indicate the ingestion route and connector are not running in the same server
configuration.

Use `connectors.databuddy` when you want Blyp logs and handled server errors forwarded into Databuddy events.

## Install required peer packages

Install the optional peer dependency when this connector is enabled:

```bash
bun add @databuddy/sdk
```

## Config

```ts
export default {
  connectors: {
    databuddy: {
      enabled: true,
      mode: "auto",
      apiKey: process.env.DATABUDDY_API_KEY,
      websiteId: process.env.DATABUDDY_WEBSITE_ID,
      enableBatching: true,
    },
  },
};
```

## Config fields

- `enabled`: enables Databuddy delivery
- `mode`: `auto` or `manual`
- `apiKey`: Databuddy API key
- `websiteId`: Databuddy website identifier
- `enableBatching`: controls batched delivery and defaults to `true`

Both `apiKey` and `websiteId` are required. Until both values are present, Blyp keeps the connector status at `missing`.

## Automatic server forwarding

When `mode: "auto"` is enabled and the connector is ready, Blyp forwards normal server logs into Databuddy automatically.

Handled server errors are also captured as Databuddy `error` events when the connector is available.

## Manual APIs

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

```ts
import {
  captureDatabuddyException,
  createDatabuddyErrorTracker,
  createDatabuddyLogger,
  createStructuredDatabuddyLogger,
} from "@blyp/core/databuddy";

createDatabuddyLogger().info("manual databuddy log");

createDatabuddyErrorTracker().capture(
  new Error("manual databuddy exception")
);

captureDatabuddyException(new Error("wrapped databuddy exception"));

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

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

## Browser and Expo forwarding

Browser and Expo do not use `@databuddy/sdk` directly. They post to Blyp ingestion first, and Blyp forwards to Databuddy when the server connector is configured.

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

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

## Notes

- Blyp warns when browser or Expo apps request Databuddy forwarding but the server connector is missing
- client forwarding depends on the server-side Databuddy connector being ready
- `connectors.delivery` can make retryable Databuddy forwarding failures durable without Redis or another external queue
- Workers remain out of scope for this connector
- Convex maps `connectors.databuddy` to `{apiUrl}/track` from actions. See [Convex](/docs/integrations/convex).
- manual Databuddy helper APIs are server-side helpers, not browser APIs

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