Unify Applications
Logo
Data Source Types

Data Source Types

Logo

6 mins READ

A data source runs one action of one app. When you add a data source, you pick the app and its action from the Select an app picker, under Most popular or All apps. The app and action decide what you configure on the Input tab and the shape of the result.

data_source_types.png
data_source_types.png

What a Data Source Can Call

App

Actions

Use it to

Storage by UnifyApps

Fetch records, Fetch record by ID, Create record, Update records by query, Update an existing record's fields, Delete records

Read and write records stored in the platform.

Analytics by UnifyApps

Analytics Query, Execute Analytics SQL Query

Query reports or run SQL on the analytics database.

Callable

Call automation

Run an automation and use its response.

Custom HTTP Endpoint

Execute REST request

Call your own backend or any third-party REST API.

Connectors

Any action the connector offers

Read or write data in an external app through a connection.

Configuration Tabs

Every data source opens with three tabs: App & Action, Input and Advanced. A Connection tab also appears for apps that need a connection, such as connectors.

Tab

What you set

App & Action

The app and action the data source runs.

Connection

The connection the action uses. Shown only for apps that need one.

Input

Run behavior (Automatic or Manual), the action's inputs, and optionally a response transform and event handlers.

Advanced

Timing, caching, retries, and disable conditions.

Output Schema — Knowing What a Run Returns

After running a data source, the platform may record an output schema: a JSON Schema describing the shape of the data the run produced. After a successful run, open the Schema tab in the strip at the bottom of the data source panel (next to Output and Input).

Before binding any block to a data source result, confirm the exact path in the output schema. A wrong path renders empty with no error.

Common Output Shapes

Data source

Result envelope

Binding path for the list

Storage by UnifyApps — Fetch records

Object with objects array inside

{{ orders_query.data.objects }}

Storage by UnifyApps — Fetch record by ID

Single object (no wrapping array)

{{ order_query.data }}

Analytics by UnifyApps — Analytics Query

Object with an objects array and a hasMore flag

{{ report_query.data.objects }}

Analytics by UnifyApps — Execute Analytics SQL Query

Object with an objects array (one item per row) and metadata.rowMetadata (each column's columnName and dataType)

{{ sql_query.data.objects }}

Custom HTTP Endpoint, Callable, or a connector

Whatever the endpoint, automation, or app returns

Depends on the response — inspect the Output tab

Warning: A source configured to return a single record returns an object, not an array. Binding that object where an array is expected (e.g. a Repeatable's data property) renders nothing, silently. Always confirm top-level type — object vs array — before binding.

Note: Most data sources have no output schema until they are run at least once. Before running, you cannot confirm any result path. Run the source in the builder, inspect the Output and Schema tabs, then bind.

When to Pick Which

You want to…

Pick

Read or write records the platform stores

Storage by UnifyApps

Show report data or run SQL on analytics data

Analytics by UnifyApps

Run multi-step server-side logic and use its result

Callable (Call automation)

Call your own backend or any third-party REST API

Custom HTTP Endpoint

Work with data in an external app you've connected

That app's connector

Shared Capabilities

Every data source shares the same capabilities for run timing, caching, and response shaping:

FAQs

My API endpoint returns a deeply nested object. How do I flatten it for my blocks?

Add a Response Transform to the data source. In the transform editor, reshape data — the raw response — into the flat structure your blocks expect, and return it. Blocks then bind to the clean transformed shape. See Response Transforms.

When should I use Storage by UnifyApps vs Custom HTTP Endpoint for the same data?

If the data lives inside the platform as stored records, use a Storage by UnifyApps action such as Fetch records — you don't need to write or host an API. Use Custom HTTP Endpoint when the data lives outside the platform and you need to call a REST API directly. If the external app has a connector, its actions are usually simpler than a raw HTTP request.