---
url: https://simpledatalogs.com/docs/integrations.md
description: >-
  Switch from OpenTelemetry, Segment, Sentry, Datadog logs, Loki, Splunk HEC,
  Vector or Fluent Bit by changing an endpoint and a key, drain Vercel, Heroku,
  Fly.io and Cloudflare logs, turn webhooks into events, or count OpenRouter's
  LLM calls.
---

# Integrations

If your code already sends data somewhere, you probably don't need to change it. Ingest speaks the wire protocols of the common tools, so you switch by changing **an endpoint and a key** in configuration.

| You use | Change | Guide |
|---|---|---|
| OpenTelemetry SDK or Collector (logs) | The OTLP logs endpoint and an `authorization` header | [OpenTelemetry](/integrations/opentelemetry) |
| Vector, Fluent Bit or another log shipper | An HTTP sink to `/v1/ingest` | [Vector and Fluent Bit](/integrations/log-shippers) |
| Segment SDKs | The API host, and the ingest key as the write key | [Segment](/integrations/segment) |
| Sentry SDKs | Only the DSN | [Sentry](/integrations/sentry) |
| Datadog Agent, Vector or Fluent Bit to Datadog logs | The logs intake URL and the API key | [Datadog logs](/integrations/datadog) |
| Promtail, Grafana Alloy, Vector or Fluent Bit to Loki | The Loki URL and the token or password | [Loki](/integrations/loki) |
| Splunk HEC senders | The HEC URL and the token | [Splunk HEC](/integrations/splunk) |
| PostHog, Mixpanel or Amplitude payloads | Post their event shapes to `/v1/ingest` | [Payload shapes](/integrations/payload-shapes) |
| Vercel | Add a Log Drain, signed with the ingest key | [Vercel](/integrations/vercel) |
| Heroku | Add an HTTPS log drain with the key in its URL | [Heroku](/integrations/heroku) |
| Fly.io | Add a sink file to fly-log-shipper | [Fly.io](/integrations/fly) |
| Cloudflare | Point a Logpush job at `/v1/ingest` | [Cloudflare](/integrations/cloudflare) |
| OpenRouter | Add a Webhook destination under Broadcast | [OpenRouter](/integrations/openrouter) |
| Stripe, Buy Me a Coffee, Lemon Squeezy, Paddle, Gumroad, Ko-fi, Patreon, GitHub, Typeform, Tally or any JSON webhook | Paste a webhook URL from the Webhooks tab | [Inbound webhooks](/integrations/webhooks) |

On WordPress or Shopify, there's nothing to change in code: install the [WordPress plugin](/integrations/wordpress) or the [Shopify app](/integrations/shopify) and paste a public key.

Every recipe works with a public (`sdl_pub_…`) or secret (`sdl_sec_…`) key. Use a secret key for servers and shippers, and give each source its own deployment and key so its numbers get their own tab.

## Limits that shape every recipe

* **512 KB per request as sent.** Gzip counts compressed bytes. Aim for 256 KB or less.
* **Hosting logs count too.** Every request log a drain sends is an event, so pick its sources and sample it (each page says how).
* **Exact counts need `event_id` and `ts`.** OpenTelemetry, Segment, Sentry, Datadog, Loki, Splunk, Vercel and Heroku get ids automatically, from the content or the message id. NDJSON senders must set both before the first send attempt.
* **Retry everything that isn't a success**, with backoff. Each path answers success only once the data is stored.
* **Gzip is the only compression**, except that Loki's snappy protobuf is accepted. `br`, `zstd` and `deflate` are refused with `415`.

## What isn't stored

The drop-ins carry events and log lines. Other parts of each protocol are answered clearly, never silently dropped:

* OpenTelemetry `/v1/traces` and `/v1/metrics` answer `404` with a message naming the setting to turn off. OpenRouter's traces are the exception: each LLM call becomes an event.
* Sentry transactions, spans, sessions, replays, attachments and profiles are skipped, and every answer tells the SDK to stop sending them.
* Datadog metrics, APM and events, Loki queries and Splunk acknowledgments answer `404`.

Errors from Sentry, and OpenTelemetry records with an `exception.type`, group into [Issues](/guide/observability#issues). Requests, jobs and traces come from [telemetry objects](/api/telemetry) on `/v1/ingest`, which the [Laravel SDK](/sdks/laravel#telemetry) sends for you.

## Next steps

Pick your tool in the table above, or [use an SDK](/sdks/javascript) for new code.
