Celigo sync determines the data type for each destination field using source application metadata, destination application requirements, and, when needed, the actual values returned during sync configuration. This article explains that process and the reference table of Celigo data types.
How data types are selected
Celigo sync determines a field's data type in the following priority order:
- Source-provided metadata - If the source application exposes field metadata for an object, Celigo sync uses it directly — for example, a field identified as a date, number, Boolean, object, or array maps to the corresponding Celigo data type.
- Configured export or object details - If you selected a source object, saved search, or Celigo export, the sync uses whatever field definitions are available from that selection to represent the field in the destination schema.
- Values returned from the source - For HTTP-based exports, universal applications, and other sources without strict field metadata, Celigo sync infers the type from sample values. At design time, it evaluates values returned in a preview request; during the sync run, it adjusts the schema based on live data.
- Default handling for ambiguous fields - If Celigo sync can't confidently infer a more specific type, it treats the field as a general string-compatible value so the data can still load.
Caution
A field's inferred data type depends on the source metadata and values available at the time. If a later sync run returns values that no longer fit the original type, Celigo sync treats the change as schema drift and applies the schema drift policy configured for the sync, object, export, or field.
Empty and null values
Empty values, blank strings, and null values don't always provide enough information to identify a specific data type. If a field contains only empty or null values when Celigo sync evaluates the source schema, it may assign a default type so the field can be added to the destination schema. When later sync runs return populated values, Celigo sync detects the difference and applies the schema drift policy (see Configure a schema drift policy).
Mixed data types
Some source applications allow the same field to contain different kinds of values across records — for example, a number in one record and text in another. When Celigo sync detects mixed values, it selects a destination-compatible type that preserves the data without causing load errors. A string-compatible type is often the safest choice, since it can store numeric, Boolean, and text values without requiring the field to change type again.
Celigo data types
| Data type | Description | Example |
|---|---|---|
| ARRAY | An ordered collection of values stored as a single field. Elements are typically of the same or compatible types. | ["red", "green", "blue"] |
| BINARY | Raw byte data used for non-text content such as files, images, or encoded values. | 0x4A6F686E |
| BOOLEAN | A logical value with two possible states: true or false. | TRUE |
| DATE | A calendar date without time-of-day information. | 2026-06-22 |
| DATETIMELTZ | Date and time interpreted using the session's local time zone, stored in a normalized format. | 2026-06-22 14:30:00 |
| DATETIMENTZ | Date and time stored without any associated time zone information. | 2026-06-22 14:30:00 |
| DATETIMETZ | Date and time that includes an explicit time zone or UTC offset. | 2026-06-22 14:30:00 -05:00 |
| DECIMAL | Fixed-precision numeric type for exact arithmetic, often used for financial values. | 12345.67 |
| DEFAULT | A generic or inferred type used when a more specific type isn't explicitly assigned. | "Sample Value" |
| DOUBLE | Double-precision floating-point number, suitable for scientific or statistical calculations. | 3.141592653589793 |
| NUMBER | General-purpose numeric type representing whole or fractional values. | 98765.4321 |
| INTEGER | Whole numbers without decimal places. | 42 |
| LONG | Integer type optimized for larger whole-number values than a standard integer. | 9223372036854775807 |
| OBJECT | Structured data containing named attributes or key-value pairs. | {"name":"Alice","age":30} |
| OBJECT ARRAY | An ordered collection of structured data types. | [{"name":"Alice","age":30},{"name":"Alen","age":35}] |
| SHORT | Integer type for smaller whole-number ranges, typically using less storage than a standard integer. | 32767 |
| STRING | A sequence of characters used to store text values. | "Hello, World!" |
| TIME | Time of day without an associated date or time zone. | 14:30:00 |
| VARIANT | A flexible type capable of holding values of different underlying types, including semi-structured data. | {"orderId":123,"items":["A","B"]} |
Note
The DATETIMExTZ type names follow a consistent pattern — DATETIMELTZ (Local), DATETIMENTZ (No time zone), and DATETIMETZ (explicit Time zone) — that maps directly to the equivalent Snowflake types. See Set up a sync to Snowflake for the full data type mapping table.