---
title: "Meta (Facebook) feed field internal_label format"
url: https://docs.woolytech.com/en/articles/201-meta-facebook-feed-field-internal_label-format
collection: "Facebook"
updated: 2026-09-06
language: en
---

# Meta (Facebook) feed field internal_label format

Among the data feed fields, Meta has recommended an [internal\_label](https://www.facebook.com/business/help/120325381656392?id=725943027795860) field which could be used to filter items in set.

Its value could be tricky to get right, as the requested value is different between CSV/TSV and XML feed formats.

### CSV/TSV format

The value is taking a JSON representation of a list of texts. The [documentation](https://www.facebook.com/business/help/120325381656392?id=725943027795860) is very limited and does not specify the JSON format in details, e.g. how to "escape" the texts when they contain special character like the quotes or commas.

> Enclose each label in single quotes (') and separate multiple labels with commas (,). Don’t include white space at the beginning or end of a label. Character limit: 5,000 labels per product and 110 characters per label.
> 
> Example: \['summer','trending'\]

In Multifeeds, we could attempt to build the value is an expression with [map](https://docs.woolytech.com/article/102-expressions#map) and join functions

> "\[" + join(map(**Collection handle list** ,"\\"'\\"+self+\\"'\\""),",") + "\]"

How it looks in the app:

![](https://staticfiles.gleap.io/helpcenter/65cecc47f9fbfb7f6ae1288e/20260325041347_1713.jpg)

This works, but only because _Collection handle list_ never contains special characters that need to be "escaped". The expression is also not difficult to read and maintain.

Multifeeds has a special function, [stringify](https://docs.woolytech.com/article/102-expressions#stringify), which could be used for the field. The function takes an object and returns its JSON5 representation. If a list is provided, the result is properly formatted for the internal\_label which can be read by Meta. Because special characters (quotes, etc.) are "escaped", it is safe to use other list tokens.

The expression is also much more readable:

> stringify(**Collection title list** )

![](https://staticfiles.gleap.io/helpcenter/65cecc47f9fbfb7f6ae1288e/20260325041347_4627.jpg)

Of course, another sensible value for internal\_label would be _Tag list_

> stringify(**Tag list**)

![](https://staticfiles.gleap.io/helpcenter/65cecc47f9fbfb7f6ae1288e/20260325041347_6950.jpg)

Now you can **skip** the _stringify_ function in the _internal\_label_ expression.

**Updated**: Thanks to this [simplification](#Simplification--kuRXu), you can skip entering _stringify_ function in CSV feed. Please note that it only applies to "internal\_label" field. A different field name would yield different value

![](https://staticfiles.gleap.io/helpcenter/65cecc47f9fbfb7f6ae1288e/20260325041347_1466.jpg)

Different value of the seemingly same expressions:

![](https://staticfiles.gleap.io/helpcenter/65cecc47f9fbfb7f6ae1288e/20260325041347_5465.jpg)

### XML format

Although not documented in Meta documentation, we have learnt that XML feed internal\_label needs to be submitted in repeated <internal\_label> tags:

```javascript
<item>
...
<internal_label>
egnition-sample-data
</internal_label>
<internal_label>
men
</internal_label>
<internal_label>
summer
</internal_label>
<internal_label>
vans
</internal_label>
...
</item>

```

For this to be possible, simply remove the use of stringify function, as the app automagically creates repeated XML tags for list value:

![](https://staticfiles.gleap.io/helpcenter/65cecc47f9fbfb7f6ae1288e/20260325041347_8169.png)![](https://staticfiles.gleap.io/helpcenter/65cecc47f9fbfb7f6ae1288e/20260325041347_7065.jpg)

XML feed output

### Simplification

In Multifeeds, we strive to simplify things, so you can use the same list-returning expression for internal\_label.

You now can use a list-returning expression for _internal\_label_ in both CSV and XML feeds.

What really happens is that if the field name is "internal\_label", the app silently applies the _stringify_ function in the background if necessary. Using the same expression for all feed types also means that you could switch between the formats more easily.
