# Update Custom Field

Updates an account-owned custom field’s metadata, copy target or cardinality. Type and global fields cannot be changed. Setting multiValue false permanently deletes extra per-subscription values; ask the user before making that change. copyToFieldId needs a field of compatible type; fields sharing a requestName resolve to the first. Omitted fields stay.

## Input schema:

```json
{
  "type": "object",
  "properties": {
    "customFieldId": {
      "type": "string",
      "description": "ID of the field to change",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[A-Za-z0-9_]+$"
    },
    "name": {
      "type": [
        "null",
        "string"
      ],
      "description": "New name of the field, which has to stay unique within the account; omit to keep the current one",
      "default": null,
      "maxLength": 250
    },
    "description": {
      "type": [
        "null",
        "string"
      ],
      "description": "New description of what the field holds; omit to keep the current one",
      "default": null,
      "maxLength": 2000
    },
    "category": {
      "type": [
        "null",
        "string"
      ],
      "description": "Group in the app; empty string sorts into none; omit to keep",
      "default": null,
      "maxLength": 250
    },
    "metaLabels": {
      "type": [
        "array",
        "null"
      ],
      "description": "New set of labels of the field, which replaces the current one; omit to keep the current labels",
      "default": null,
      "items": {
        "type": "string",
        "maxLength": 250
      },
      "maxItems": 50
    },
    "multiValue": {
      "type": [
        "null",
        "boolean"
      ],
      "description": "False collapses the field to one value per contact and DELETES the others; true is refused on a field that is already false; omit to keep",
      "default": null
    },
    "requestName": {
      "type": [
        "null",
        "string"
      ],
      "description": "Key this field is addressed by in a subscription email body; empty string removes it; omit to keep",
      "default": null,
      "maxLength": 250
    },
    "notes": {
      "type": [
        "null",
        "string"
      ],
      "description": "Internal note on the field, which nobody outside the account sees; empty string removes it; omit to keep",
      "default": null,
      "maxLength": 1000
    },
    "copyToFieldId": {
      "type": [
        "null",
        "string"
      ],
      "description": "ID of the field every value written here is also copied into; empty string stops the copying; omit to keep",
      "default": null,
      "maxLength": 100,
      "pattern": "^[A-Za-z0-9_]*$"
    },
    "accountId": {
      "type": [
        "null",
        "integer"
      ],
      "description": "User ID of the account; omit for the account the access token works in",
      "default": null,
      "minimum": 1
    }
  },
  "required": [
    "customFieldId"
  ],
  "additionalProperties": false
}
```

## Output schema:

```json
{
  "type": "object",
  "required": [
    "accountId",
    "id",
    "name",
    "type",
    "multiValue",
    "placeholder",
    "apiFieldId",
    "category",
    "description",
    "metaLabels",
    "editUrl",
    "usedBy"
  ],
  "properties": {
    "accountId": {
      "type": "integer"
    },
    "id": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "type": {
      "type": "string"
    },
    "multiValue": {
      "type": "boolean"
    },
    "placeholder": {
      "type": "string"
    },
    "apiFieldId": {
      "type": "string"
    },
    "category": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "metaLabels": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "editUrl": {
      "type": "string"
    },
    "usedBy": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  }
}
```

