---
title: "Update a customer-created subscriber field."
method: PUT
path: "/fields/{fieldId}"
tags: ["Fields"]
---

# Update a customer-created subscriber field.

`PUT /fields/{fieldId}`

## Request

- Base URL: `https://api.maildroppa.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.maildroppa.com/fields/{fieldId}`
- Auth: API key in header `X-API-Key`

Updates label, required flag, internal visibility, position, and option metadata. Internal fields remain usable for email personalization. Setting internal to true is rejected with SUBSCRIBER_FIELD_USED_IN_FORMS and a form list while the field is used in subscriber forms. Personalization tag name and field type cannot be changed.

## Path parameters

- `fieldId` string, uuid, required

## Request body

- UpdateField: Editable subscriber field properties. Personalization tag name and field type are immutable.
  - `label` string: Updated human-readable field label.
  - `required` boolean: Whether subscribers must provide a value for this field in signup and subscriber edit workflows.
  - `internal` boolean: Whether this field is hidden from subscriber-facing forms and subscriber profile editing.
  - `position` integer: Updated ordering position in the field schema.
  - `options` FieldOption[]: Complete option list for choice fields. Existing options must be included with their IDs; new options use a null ID. Non-choice fields must submit an empty list.
    - `id` string, uuid
    - `label` string: Human-readable option label.
    - `position` integer: Ordering position within the field options.
    - `active` boolean: Whether the option can still be selected for new subscriber field values.
  - `removedOptionIds` string[]: Choice option IDs to remove atomically with this field update. Omit when no options are removed.

## Response `200`

Field updated.

- Field: Subscriber field definition.
  - `type` 'BUILT_IN' | 'CUSTOM'
  - `builtInField` 'EMAIL' | 'FIRST_NAME'
  - `fieldId` string, uuid
  - `personalizationTagName` string: Stable personalization tag name used in imports, forms, personalization, and subscriber field value updates.
  - `label` string: Human-readable field label shown in the app.
  - `fieldType` 'TEXT' | 'LONG_TEXT' | 'EMAIL' | 'NUMBER' | 'DATE' | 'BOOLEAN' | 'SINGLE_CHOICE' | 'MULTI_CHOICE'
  - `required` boolean: Whether subscribers must provide a value for this field in signup and subscriber edit workflows.
  - `internal` boolean: Whether this field is hidden from subscriber-facing forms and subscriber profile editing.
  - `active` boolean: False when a customer-created field has been archived.
  - `position` integer: Ordering position in the field schema.
  - `options` FieldOption[]: Selectable options for SINGLE_CHOICE and MULTI_CHOICE fields.
    - `id` string, uuid
    - `label` string: Human-readable option label.
    - `position` integer: Ordering position within the field options.
    - `active` boolean: Whether the option can still be selected for new subscriber field values.

## Other responses

- `400`: Invalid field update or option list.
- `401`: Not Authorized
- `403`: Not Allowed
- `404`: Field not found.
- `409`: Field is still used in subscriber forms.
- `428`: Accept the customer agreements in the app before using API keys.

---

[API](https://skmtc.dev/maildroppa/apis/maildroppa-api-beta.md) · [All operations](https://skmtc.dev/maildroppa/apis/maildroppa-api-beta/llms.txt) · [OpenAPI document](https://skmtc.dev/maildroppa/apis/maildroppa-api-beta/revisions/a9f5a3fd1fb0?raw)
