Naveen Jakad
05/12/2026, 4:29 PMkapa.ai
05/12/2026, 4:29 PMgroup field to be either NULL or STRING, but the actual data coming from your Cvent connector contains a JSON object ({id=50bafb55-a0e7-41b0-8d7c-7b0f4ca9446d}), which cannot be mapped to a STRING type.
Why This Happens When Airbyte writes Parquet to GCS, it first converts the JSON stream to an Avro schema, then converts each record to Avro, and finally outputs Parquet. [GCS Parquet docs] The Avro schema is derived from the connector's declared JSON schema. If the connector declares group as a string type but the source actually returns an object (e.g., {"id": "50bafb55-..."}) at runtime, the conversion fails. [JSON-Avro conversion]
This is a known pattern across multiple connectors (MongoDB, MSSQL, Postgres, Pinterest, etc.) where the declared schema type doesn't match the actual data type. [Forum: MSSQL CDC] [GitHub: source-mssql]
How to Fix It Since this is a custom connector, you have direct control over the schema definition. Here are your options:
1. Fix the JSON schema in your connector — Update the group field's type in your connector's catalog/schema from string to object (with the appropriate properties, e.g., id as a string). This is the root cause fix.
2. Use `oneOf`/`anyOf` in the schema — If group can be either a string or an object, declare it as a combined type:"group": {
"oneOf": [
{ "type": "string" },
{
"type": "object",
"properties": {
"id": { "type": "string" }
}
}
]
}Note: Combined restrictions are supported in Avro conversion, but some union edge cases can cause unexpected behavior. [Combined restrictions]
3. Serialize the object as a string — In your connector's record transformation logic, serialize the group object to a JSON string before emitting the record, so it matches the declared STRING type.
4. Use JSON or CSV output format temporarily — As a workaround, switching the GCS destination output format to JSON or CSV will bypass the Avro conversion entirely, as these formats don't require strict type mapping.
The cleanest long-term fix is option 1 or 3 — ensuring your connector's declared schema matches the actual data it emits. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Naveen Jakad
05/12/2026, 4:39 PMkapa.ai
05/12/2026, 4:40 PMstring, and their values are serialized to string. [Untyped field]
• Untyped objects (an object field with no properties) get their entire value serialized to a string representation automatically by the destination. [Untyped object]
• Additional properties of unknown types are silently dropped. [Additional properties]
Practical Implication for Your Case If your generic connector declares the group field as:
"group": {
"type": "object"
}
(i.e., an object without a properties specification), Airbyte will automatically serialize whatever object value arrives into its string representation — no hardcoding required on your end.
This means you only need to declare the field type as a generic object in your schema, and the destination handles the rest generically. This may be the least invasive change compatible with a generic connector design.
That said, I'd recommend checking the latest connector and destination-gcs versions, as some of these conversion issues have been addressed in newer releases. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Naveen Jakad
05/12/2026, 4:40 PMkapa.ai
05/12/2026, 4:40 PMCould not evaluate union, field group is expected to be one of these: NULL, STRING.
If this is a complex type, check if offending field (path: group) adheres to schema: {id=50bafb55-a0e7-41b0-8d7c-7b0f4ca9446d}
Yes — the group field is a JSON object in your actual data. The value {id=50bafb55-a0e7-41b0-8d7c-7b0f4ca9446d} is clearly an object with an id property.
The problem is that your connector's schema declares group as a STRING, but the Cvent API is returning it as an object — so the Avro conversion fails because it can't fit an object into a NULL | STRING union.
I'm not able to tell you more about the specific structure of the group field from the Cvent API, as the knowledge sources don't contain details about your custom Cvent connector's data model. You would need to inspect the raw API response from Cvent to understand the full structure of the group object (e.g., does it only have id, or other properties too?). 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Naveen Jakad
05/12/2026, 6:13 PMkapa.ai
05/12/2026, 6:13 PMNaveen Jakad
05/12/2026, 6:14 PMkapa.ai
05/12/2026, 6:14 PMAvroConversionException error can appear regardless of whether your destination is S3 or GCS, and regardless of whether your output format is Avro or Parquet. [S3 output schema] [JSON-Avro conversion] 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help., with interactive elementsNaveen Jakad
05/12/2026, 6:15 PMkapa.ai
05/12/2026, 6:15 PMgroup field may simply not be part of what's being synced to S3.
What I'd Suggest Checking • What output format is configured on your S3 destination? (CSV/JSONL vs Avro/Parquet)
• Are you syncing the same streams to both S3 and GCS?
• What versions are your S3 and GCS destination connectors?
I'm sorry I can't give a more definitive answer — the knowledge sources don't contain enough detail to explain the exact difference in behavior between your S3 and GCS setups. The answers to the questions above would help narrow it down significantly. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.