Skip to main content
Broadcast Logs sends what happens in a project to the observability tool you already use, as standard OpenTelemetry logs and traces over OTLP/HTTP (JSON). You can alert on failed deliveries in Datadog, chart AI latency in Grafana, or search every event of one webhook in Sentry, next to the rest of your stack. A project broadcasts to one tool: Datadog, Grafana Cloud, an OpenTelemetry Collector, PostHog or Sentry.

Set it up

1

Open the wizard

In the console, open Project → Observability and choose Broadcast Logs. You need to be an owner or admin of the workspace; everyone else sees the integration’s status but cannot change it.
2

Pick a tool

Choose one of the five tools. If the project already broadcasts somewhere, the new tool replaces it. The wizard asks you to confirm before it does, because the old tool’s settings, credentials and counts are deleted.
3

Fill in the tool's settings

Each tool asks for exactly what its own OTLP documentation asks for. See the sections below, and follow the docs link in the wizard. Secrets such as API keys and tokens are stored encrypted (AES-256-GCM). Hookie never shows them again, so to change one you type a new value. To keep a secret when you edit other settings, leave its field blank.
4

Send a test event, then save

Send test event posts one log record, and one span where the tool takes traces, with the settings you entered. The wizard shows what each endpoint answered. Save when the test is accepted. If it fails, you can still save, and the failure keeps showing on the Observability tab until the tool accepts the data.

What is sent

Every one of these produces a span (for /v1/traces) and a log record (for /v1/logs) carrying the same trace and span ids, so you can jump from a log line to its trace: All spans for one event share its trace id: the submission id without dashes. The ingest, routing, delivery and AI-trigger spans for an event therefore show up as one trace. The resource carries service.name = hookie, your workspace as service.namespace, and hookie.project.id, hookie.project.slug and hookie.project.name.
Payloads are not sent. Hookie forwards what happened to an event, never the event’s body. AI calls report the model, token counts, latency and outcome. They never include the prompt, the input or the output, which stay in Observability → AI calls.
Severity follows the outcome: INFO for success, WARN for a failure that will be retried (or an event that matched no rule), and ERROR for a final failure.

Delivery, retries and status

Forwarding never slows ingest. Spans are queued after the event is stored, and a queue consumer sends them in batches: one request per signal for all the spans of a project in a batch. Usually they arrive within seconds.
  • Retries. A 5xx, a 404, 408, 409, 425 or 429, or a network error is retried with backoff at 30 seconds, 2 minutes, 10 minutes, 30 minutes and 2 hours. Only the signal that failed is resent, so logs that were already accepted are not duplicated when traces fail.
  • Dropped. Data the tool refuses outright (for example 401 or 403) or that fails after the last retry is dropped and counted.
  • Redirects are not followed. A 3xx answer is reported as an error. Point the integration at the final URL.
  • Status. The Observability tab shows the last success, the last error, how many log records and spans were exported, failed requests, dropped items and the last test.
Disable pauses forwarding at once, including anything already queued, and keeps the settings. Remove deletes the integration. Every create, replace, edit, disable and removal is recorded in the audit log.

Datadog

Datadog’s OTLP intake endpoint takes logs and traces directly, with no Agent or Collector. Hookie posts to https://otlp.<site>/v1/logs and https://otlp.<site>/v1/traces with the dd-api-key header. It also sends compute_stats: true on traces so that Datadog computes trace metrics, which this intake does not do by default. A 403 usually means the site does not match your organization.

Grafana Cloud

Grafana Cloud’s OTLP endpoint routes logs to Loki and traces to Tempo. Hookie authenticates with Authorization: Basic base64(<instance ID>:<token>), which is the header the OpenTelemetry tile generates.

OpenTelemetry Collector

Use this for your own Collector, Grafana Alloy, or any other backend with an OTLP/HTTP receiver. The receiver must accept JSON-encoded OTLP (Content-Type: application/json), which the standard otlp receiver’s HTTP protocol does.

PostHog

PostHog Logs accepts OTLP logs. Hookie posts to https://<region>.i.posthog.com/i/v1/logs with Authorization: Bearer <project token>.
PostHog does not ingest OTLP traces, so a PostHog integration receives log records only. Each log record still carries its trace and span ids, so related events stay grouped.

Sentry

Sentry ingests OpenTelemetry logs and traces over OTLP directly. The feature is in open beta at Sentry. Hookie sends traces to the traces endpoint and logs to the matching …/v1/logs, with x-sentry-auth: sentry sentry_key=<public key>.

API

The integration is managed under /admin/api/projects/{pid}/telemetry. See the API reference under Broadcast Logs. A connected agent with the hookie:manage scope reaches the same routes with its OAuth access token:
Endpoints must be public https URLs: localhost, private and link-local addresses (the cloud metadata address included) and URLs with credentials in them are refused.