Starting August 3, 2026, the way you remove customer properties through the API is changing. Sending a property with an empty or null value will no longer unassign it. To remove properties and tags, you will use two new fields, unset_properties and unset_tags, that are available today.
This applies to both endpoints that manage contacts:
Create or update customers (
POST /api/v2/customers)Send transactional surveys (
POST /api/v2/survey)
Adding and updating properties is not changing. Only how you remove them is.
The payloads below are examples. Check the API documentation for the full request format of each endpoint.
What is changing on August 3, 2026
Today, you can remove a property from a contact in two ways:
The legacy way: send the property with an empty string (
"") ornullvalue.The new way: list the property in the
unset_propertiesfield.
Both work right now. On August 3, 2026, the legacy way stops. After that date, an empty or null value no longer removes a property, and unset_properties becomes the only way to remove one through the API.
If your integration currently clears properties by sending empty or null values, switch it to unset_properties before August 3, 2026. After that date, those empty values are ignored and the property keeps its existing value.
How property removal works today
Until August 3, sending a property with an empty or null value unassigns it from the contact.
{
"subscribers": [
{
"email": "johnsmith@example.com",
"properties": [
{
"label": "Subscription name",
"value": ""
}
]
}
]
}
This removes the "Subscription name" value from johnsmith@example.com. The property still exists in your account and stays assigned to your other contacts. Only this one contact is affected.
This behavior keeps working until August 3, 2026, then stops.
The new way: unset_properties
unset_properties is an array of property names to remove from the contact. Retently clears exactly those and leaves every other property untouched.
You can add, update, and remove properties in the same request. Anything you do not mention stays as is.
{
"subscribers": [
{
"email": "johnsmith@example.com",
"properties": [
{
"label": "Plan",
"value": "Professional"
}
],
"unset_properties": ["subscription_name", "Renewal date"]
}
]
}
In this request:
"Plan" is added or updated to "Professional".
"subscription_name" and "Renewal date" are removed from the contact.
Every other property on the contact is left untouched.
You can reference a property either by its underscore name (subscription_name) or by its label with spaces and capitals ("Renewal date"). Both formats work.
unset_properties works today, so you can adopt it now and remove the legacy empty or null approach before the August 3 cutover.
Removing tags: unset_tags
unset_tags is an array of tags to remove from a contact without resending the rest. It is available now as an early alternative, so you can adapt before a future update changes how tags behave.
How you use it depends on whether you currently pass the tags field.
If you do not pass the tags field via the API
Use unset_tags to remove specific tags. This fits the case where tags are managed outside the API (through integrations, webhooks, manual edits, or CSV imports) and you need to drop one without touching the rest.
{
"subscribers": [
{
"email": "johnsmith@example.com",
"unset_tags": ["blue"]
}
]
}
This removes the "blue" tag from the contact and leaves every other tag untouched.
If you currently pass the tags field via the API
Keep using it for now. The tags array overwrites a contact's entire tag list, so it already handles removal: any tag you leave out of the array is dropped. The tags field does the job today, and there is nothing you need to change yet.
Use either the tags field or unset_tags, not both. Sending both in the same request is redundant and may not behave as expected. unset_tags is added ahead of time so you can plan your switch before a future update changes how the tags array works. We will notify you before that update launches.
Using these fields on the survey endpoint
Everything above applies to the survey endpoint (POST /api/v2/survey) as well, which manages the same contact data and additionally schedules a survey. Pass unset_properties and unset_tags inside each subscriber, alongside the required campaign id.
{
"campaign": "YOUR_CAMPAIGN_ID",
"subscribers": [
{
"email": "johnsmith@example.com",
"unset_properties": ["subscription_name"],
"unset_tags": ["blue"]
}
]
}
What you need to do before August 3, 2026
Find anywhere your integration removes a property by sending an empty or
nullvalue.Replace that with the
unset_propertiesfield, listing the property names to remove.If you manage tags outside the
tagsfield and need to remove specific ones, you can start usingunset_tags. If you already remove tags through thetagsfield, keep doing that for now (see the tags section above).
Adding and updating properties does not change, so the rest of your payloads stay the same.
After August 3, 2026, empty or null property values are ignored for removal. If you have not switched to unset_properties by then, properties you intended to clear will keep their old values.
Quick reference
Add or update a property: include it in the
propertiesarray (unchanged).Remove a property, until August 3, 2026: send it with an empty or
nullvalue.Remove a property, now and after August 3, 2026: list it in
unset_properties.Remove specific tags, if you do not pass the
tagsfield: list them inunset_tags.Remove tags, if you already pass the
tagsfield: keep usingtagsfor now (do not combine it withunset_tags).Leave a property or tag untouched: do not mention it in the request.
Related
