> For the complete documentation index, see [llms.txt](https://help.blings.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.blings.io/apps/blings-studio/data.md).

# Data in Studio

Data is the set of values that Studio connectors use to personalize and control an MP5 experience. Define the data model before connecting layers so previews, Platform simulation, integrations, and published delivery all use the same field names and value types.

Use this article to decide where a value should be defined, which data type it should use, and how to validate it before publishing.

<figure><img src="/files/xBPLFZ10zRJUd7y2N8Vl" alt="Studio Data drawer showing dynamic data and control values"><figcaption></figcaption></figure>

## Where Data Is Defined

| Place                                  | What it controls                                                                                   | Use it for                                                                            |
| -------------------------------------- | -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
| **Studio Data drawer**                 | The current Dynamic Data and Control values available to the open project preview.                 | Checking which values are feeding connectors while you build or review a scene.       |
| **Platform > Settings > Dynamic Data** | Project fields, defaults, groups, internal fields, and catalog item fields.                        | Defining the data schema that integrations, simulations, and connectors must match.   |
| **Platform > Settings > Live Control** | Shared project-level values that can change without changing each viewer record.                   | Brand colors, logos, offer labels, campaign settings, and other operational controls. |
| **Catalog**                            | Reusable grouped records connected to the Dynamic Data schema.                                     | Products, offers, plans, collections, recommendations, or other repeatable records.   |
| **Integration source**                 | The runtime values delivered by CRM, SDK, URL parameter, spreadsheet, API, or another integration. | Viewer-specific values that replace defaults when the MP5 is generated or played.     |
| **Form Data**                          | Values submitted by viewers through an MP5 form.                                                   | Leads, registrations, answers, preferences, and other viewer-entered information.     |

{% hint style="info" %}
The schema is the source of truth for field names and types. Integration payloads should match the schema exactly so connectors can resolve values consistently.
{% endhint %}

## Data Sources

| Source                | Scope                                               | Typical connector use                                                                                 |
| --------------------- | --------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| **Dynamic Data**      | Per viewer or per record.                           | Names, account details, product values, prices, dates, links, images, and other personalized fields.  |
| **Live Control**      | Shared across the project.                          | Brand colors, logos, campaign text, offer settings, or other values an operator may update centrally. |
| **Catalog Data**      | Reusable row selected or referenced by the project. | Product cards, plan details, recommended items, store locations, or grouped offer data.               |
| **Edit Values**       | Stored directly in the connector.                   | Fixed replacement text, fixed media, a static color, or a one-off setting.                            |
| **Expression Values** | Calculated in custom JavaScript.                    | Conditional output, custom formatting, interaction logic, or values assembled from multiple fields.   |
| **Form Submissions**  | Captured from viewer input.                         | Lead fields, survey answers, quiz responses, requests, and other submitted values.                    |

## Data Types

Choose the narrowest type that matches how the value will be used.

| Type               | Use it for                                                                   | Format checks                                                                            |
| ------------------ | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| **Text**           | Names, greetings, labels, captions, descriptions, and copy variants.         | Test long values, empty values, casing, line breaks, and fallback copy.                  |
| **Number**         | Scores, prices, quantities, counters, percentages, and calculated values.    | Confirm decimal format, currency display, rounding, and minimum or maximum expectations. |
| **Boolean**        | True or false logic for visibility, routing, consent, eligibility, or state. | Confirm which value means active, hidden, shown, or selected.                            |
| **Color**          | Brand colors, theme colors, status colors, and dynamic design values.        | Use valid color values such as HEX and check contrast in the actual scene.               |
| **Link**           | URLs for buttons, landing pages, tracking links, and external actions.       | Confirm the URL is complete, reachable, and safe for the intended channel.               |
| **Image**          | Profile pictures, logos, product images, thumbnails, and backgrounds.        | Confirm the asset URL or reference loads and has a fallback.                             |
| **Video**          | Dynamic video segments, clips, or background video assets.                   | Confirm supported format, duration behavior, and fallback media.                         |
| **Audio**          | Voiceover, music, sound effects, or audio replacements.                      | Confirm supported format, duration behavior, volume, and fallback audio.                 |
| **Date or time**   | Countdowns, deadlines, events, renewals, and date-based conditions.          | Confirm time zone behavior, missing dates, and past dates.                               |
| **Group**          | Related fields that should be managed together.                              | Confirm each nested field has the correct type and default.                              |
| **Catalog item**   | A reusable record with its own nested fields.                                | Confirm the catalog exists and preview data points to the expected row.                  |
| **Internal field** | Values used for project logic but not meant for business editing.            | Confirm the field is not exposed to operators unless they need to change it.             |

## Define Data for a Connector

{% stepper %}
{% step %}

### Name the Runtime Value

Choose a field name that matches the integration contract. Use stable names such as `first_name`, `logo_url`, `offer_price`, or `launch_date`.
{% endstep %}

{% step %}

### Choose the Type

Select the type that matches the connector behavior. Use text for copy, image or video for media assets, color for visual colors, boolean for show or hide logic, and date or time for countdowns.
{% endstep %}

{% step %}

### Add a Default Value

Set a default that keeps the scene readable and complete when preview data or runtime data is missing.
{% endstep %}

{% step %}

### Connect the Field in Studio

Open the connector detail panel and select the data field, live-control value, edit value, or expression that should drive the layer.
{% endstep %}

{% step %}

### Validate With Representative Data

Preview at least one normal value and one edge case. For example, test a long name, an empty media URL, a false boolean, a past date, or a catalog row with missing nested fields.
{% endstep %}
{% endstepper %}

## Naming and Maintenance

Use field names that are stable, descriptive, and integration-friendly:

* Prefer lowercase names with underscores, such as `first_name` or `product_image_url`.
* Keep one meaning per field. Do not reuse `status` for unrelated states in the same project.
* Avoid changing field names after integrations are connected unless the integration payload is updated at the same time.
* Add defaults for fields that affect visible text, media, colors, or routing.
* Use Live Control for shared operational values instead of duplicating the same value across many viewer records.
* Use Catalog when the same grouped record appears across many viewers or scenes.

## Validation Checklist

Before publishing data-dependent changes, confirm:

* Every connector field exists in Dynamic Data, Live Control, Catalog, or the integration payload.
* Field names match exactly between Studio, Platform, and the delivery source.
* Default values render acceptably in Studio preview.
* Simulation profiles include representative values for required fields.
* Media, links, colors, dates, and booleans use the expected format.
* Missing or invalid values produce a controlled fallback instead of a broken scene.
* Form submissions, when used, are tested before relying on collected data.

{% content-ref url="/pages/aW68QWx8104Pv6Dytu64" %}
[Connectors](/apps/blings-studio/connectors.md)
{% endcontent-ref %}

{% content-ref url="/pages/tcTMJOKSy05H4hRxVQ8F" %}
[Data, Catalog, and Forms](/apps/blings-platform/data-catalog-and-forms.md)
{% endcontent-ref %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.blings.io/apps/blings-studio/data.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
