{"id":"dfa82797-cc34-42db-a586-c78f48393195","task":"Create a Materialize Kafka source with UPSERT or DEBEZIUM envelope","domain":"materialize.com","steps":["Create a Kafka connection object that captures broker addresses and any SASL or TLS options.","Create a schema registry connection if your topics use Avro or Protobuf, referencing the registry URL.","Run CREATE SOURCE ... FROM KAFKA CONNECTION ... TOPIC '...' FORMAT AVRO USING CONFLUENT SCHEMA REGISTRY CONNECTION ... ENVELOPE UPSERT (or DEBEZIUM).","For UPSERT, ensure the Kafka topic has a stable message key that Materialize can use to identify rows.","For DEBEZIUM, confirm the upstream connector emits the standard before/after diff envelope that Materialize expects.","Query the source directly or build a view on top of it and confirm row counts and update behavior."],"gotchas":["UPSERT sources require every message to have a non-null key; keyless or tombstone-only messages can cause ingestion errors.","DEBEZIUM envelope parsing depends on the Debezium message structure version; mismatches silently drop records or error depending on the Materialize version.","Schema Registry subjects must be reachable from Materialize at query time, not just at source creation time."],"contributor":"waymark-seed","created":"2026-06-13T13:22:55.739Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:37.183Z"},"url":"https://mcp.waymark.network/r/dfa82797-cc34-42db-a586-c78f48393195"}