# Shopify Field types

### Shopify Metafield definitions

Via your Shopify admin Settings » Custom data, you can optionally create a Metafield definition for a certain namespace + key combination. With a definition in place, the field can be referenced from within Shopify's Theme Customizer as a Dynamic data source and also be "pinned", making it easier to edit the Metafield values in context from your Shopify admin detail page.&#x20;

{% hint style="success" %}
**Do** make sure that any Shopify Metafield definitions and the corresponding ACF field definitions use the same data type. If they do not match, Shopify will **block** ACF from doing updates to the underlying Metafields.

\
Also, Shopify Metafield definitions need to be in place for any *Shopify » Metaobject reference* or *Shopify » Mixed reference* fields you define. These definitions are responsible for selecting the type of Metaobject(s) that ACF will show the entries for when working in the editor
{% endhint %}

{% hint style="danger" %}
**Do not** create Shopify Metafield definitions for any fields in ACF that are not defined as Shopify » ... types (Text, HTML, etc). This will cause Shopify to **block** ACF from doing updates to the underlying Metafields
{% endhint %}

ACF will automatically check if a field's data type matches the Shopify Metafield definition (for the namespace + key combination) and show either a green checkmark or a warning icon in the list of defined fields for a scope.

If you have defined a field where no Shopify Metafield definition exists, ACF will just show a grey checkmark to indicate that the field type is valid.

### Metafields without definitions

Via your Shopify admin detail page, you can edit metafields regardless of whether a definition is in place or not (section Metafields » View all). For Metafields without a definition, Shopify will make an educated guess of each Metafield's content type.

{% hint style="warning" %}
Please be careful when editing non-Shopify types this way, since ACF's data validation rules are not in effect here
{% endhint %}

### Using Shopify Metafields from Liquid

Metafield values created using a "Shopify » ..." type do not return the value using the normal syntax in Liquid. Rather, these types return a [Metafield object](https://shopify.dev/api/liquid/objects/metafield) with two properties: *type* and *value*.\
\
The *value* property returns the actual value, like this:

```
<h3>{{ product.metafields.accentuate.subtitle.value }}</h3>
```

### Repeatability

{% hint style="warning" %}
While Shopify » ... (List) types are repeatable by definition, they cannot be part of a repeatable section. This is a restriction in ACF, which will be addressed in an upcoming version.
{% endhint %}

### Transferability

{% hint style="warning" %}
Shopify **reference field** values cannot successfully be transferred to other stores due to the use of internal Shopify ids, which will vary across stores. **File reference** fields are an exception here if the same file names exist in the target store.
{% endhint %}
