# Connect a private Confluent consumer to SQL

Use an external consumer when records come from a private Confluent deployment. Coordinator DB does not configure the broker's private connectivity or offer a managed connector for it. The consumer must independently reach the broker and the Coordinator DB SQL endpoint.

## Choose an interchange contract

Decode the record with the consumer's schema tooling. Convert each value to a documented destination type and choose an input format. Do not assume a broker's serialized envelope is already a valid row upload. The `avro_confluent` format has its own schema-registry contract; it is not a Kafka subscription.

Create a small destination table and test a record containing missing fields, explicit nulls, Unicode and boundary numbers. Record a stable source event identifier if duplicate delivery must be detected.

## Keep delivery state outside the request

Send bounded batches, check the SQL response and only then advance the external consumer's progress according to your recovery policy. When a response is lost, reconcile by event identifier before resending. There is no transaction that atomically commits both broker offsets and database writes.

Use private routing or external TLS protection for the database connection. Store the two services' secrets separately and exclude them from diagnostic output.

See [Avro Confluent](https://coordinatordb.com/docs/reference/formats/avro/avro-confluent), [formats](https://coordinatordb.com/docs/reference/formats) and [batch inserts](https://coordinatordb.com/docs/concepts/features/operations/insert/bulkinserts).
