Integrations
Integration

Monitor Convex with Sazabi

By Sazabi Team

Last verified on Nov 8, 2026.

A Convex backend is a set of TypeScript functions running next to a reactive database. A query that reruns on every write, a mutation that retries after a conflict and a cron job that fails at night all look fine from the client until a user notices. The record of what happened sits in the deployment, and the dashboard keeps only the most recent logs.

Sazabi is AI-native observability and security. It receives Convex's function logs through a webhook log stream, so you can ask about a function by name instead of scrolling a live tail.

What Sazabi reads from Convex

Convex streams events as JSON arrays in POST requests. Each event has a topic, a timestamp in epoch milliseconds and a convex object with deployment_name, deployment_type, project_name and project_slug. The topics are verification, console, function_execution, audit_log, concurrency_stats, scheduler_stats, current_storage_usage, storage_api_bandwidth and ai_gateway_usage (Convex: Log Streams).

Sazabi's docs describe the log source as function logs from queries, mutations, actions and scheduled functions, including console.log output, each tied to its function. Check the Intake page to see which topics arrive from your deployments.

The two Sazabi paths differ in who does the setup. With the connected account, Sazabi uses a team access token to create a deploy key and a webhook log stream on each deployment you choose. With the manual path, you create the webhook log stream in each deployment. Both need Convex Pro. Database snapshots and platform metrics are not part of this source.

The Convex CLI is a third, separate connection that lets the agent run convex commands against a deployment.

Questions it answers

  • Which function fails most often, and what is the error_message?
  • Which mutations are retrying because of write conflicts, and on which table?
  • Did a query rerun because of a dataChange or because the client's identity changed?
  • Which scheduled or cron function took the longest last night?
  • Which function read the most documents for a request?

A worked example: a mutation that keeps conflicting

Convex mutations run with optimistic concurrency. When two functions write the same document, one of them fails with an OCC conflict and retries. The function_execution event records it in an occ_info object with table_name, document_id, write_source and retry_count. The event also has status, execution_time_ms and, for mutations, mutation_retry_count.

An example event, with made-up values and only some fields shown:

{
  "topic": "function_execution",
  "timestamp": 1790000000000,
  "function": { "path": "inventory:reserve", "type": "mutation" },
  "status": "failure",
  "execution_time_ms": 412,
  "mutation_retry_count": 3,
  "occ_info": {
    "table_name": "stock",
    "document_id": "k17example0000000000000000000000",
    "write_source": "inventory:restock",
    "retry_count": 3
  },
  "run_reason": "webSocket"
}

inventory:reserve and inventory:restock both write to the stock document, and the reserve mutation has already retried three times. Ask Sazabi's agent:

sazabi logs ask "Which Convex mutations had an occ_info table_name in the last hour, grouped by function path and write_source?"

If one pair dominates, the fix is in the data model. Split the hot document so the two functions stop writing the same row, or move a counter into its own document. If conflicts spread across many pairs, look at traffic volume first.

Limits to plan around

Convex says log events are delivered on a best-effort basis. Streams are buffered in memory and sent in batches, so events can be dropped under high throughput and can be duplicated by network retries. Treat a count from the stream as close, not exact. The console event also has an is_truncated flag that tells you when a message was cut to fit Convex's logging limits.

How it fits with other integrations

Convex often powers an app hosted elsewhere. The front end on Vercel or Netlify shows the request side of the same user action. Backend services you run on Fly.io can share an investigation with Convex logs. All of them are listed under cloud platforms, and the full catalog is on the integrations page.

Log sources

  • Convex (native log source, databases): Connect your Convex team so Sazabi can automatically configure a log stream on each deployment you select.
  • Convex (manual log source, databases): Create a Convex webhook log stream with your Sazabi intake URL as the destination to forward deployment logs from your Convex functions to Sazabi.

Frequently Asked Questions

Do I need the Convex Pro plan to stream logs to Sazabi?

Yes. Convex log streams require the Pro plan, and the requirement applies to both the connected-account setup and the manual webhook log stream. Free and Starter teams cannot configure log streams.

What is the difference between connecting my team and creating a webhook log stream by hand?

With a Convex team access token, Sazabi creates a deploy key and a webhook log stream for each deployment you select. By hand, you create the webhook log stream in each deployment under Settings > Integrations yourself. Log streams are per deployment either way.

Which Convex data does Sazabi not receive?

The source forwards Convex function logs. Database snapshots and Convex platform metrics are not available through it.

Can the Sazabi agent run Convex commands?

Yes. Connect the Convex CLI as a sandbox CLI with a CONVEX_DEPLOY_KEY and the agent can run the convex command to inspect deployments, functions, data and logs in an investigation thread.

Sources

  1. Native connection uses a team access token to create a webhook log stream per selected deployment; Pro plan required; function logs include console.log with per-function attribution (accessed Nov 8, 2026)
  2. Manual webhook log stream per deployment pointed at the Sazabi intake URL; function logs only, no database snapshots or platform metrics (accessed Nov 8, 2026)
  3. Convex CLI in the agent sandbox with CONVEX_DEPLOY_KEY (accessed Nov 8, 2026)
  4. Log event topics, console and function_execution fields, occ_info object, run_reason values, best-effort delivery, webhook HMAC signature, Pro plan requirement (accessed Nov 8, 2026)