Overview
The Convert type option on a custom field lets you change an existing field’s type — for example, from Choices to String — without changing the field’s key. This is available for custom fields on Accounts, Cases, and Transactions.
Converting a field type is a permanent change to not only the field, but every stored value on that field, and it can’t be undone. Before you convert a field, you should:
- Export your data as a backup.
- Check the conversion’s data loss risk so you know what to expect.
- Time your conversion for low-traffic windows or remove reference during conversion since the field is unreadable and unwritable during conversions.
This article focuses on how to convert fields safely. For the full list of supported conversions, see your Field Editor — the dropdown of available target types only shows conversions that are supported for that field. Not every conversion possible is supported.
Before you convert: export your data
Because a conversion rewrites every value on the field and can’t be reversed, export your records before you start — even for conversions you expect to be safe. If a conversion doesn’t go the way you expect, you can use your exported file in importers to restore records to previous state.
- Navigate to the relevant index page (Accounts, Cases, or Transactions).
- Optionally filter to just the records with the field you’re converting.
- Export the view. See Exporting data from the Dashboard for the full export flow.
Exports from the Dashboard can contain PII. Handle and store the export according to your organization’s data policies.
Recognizing when data loss will occur
Not every conversion loses data, and not every lossy conversion loses data the same way. For instance, these conversions don’t drop any data — every value converts cleanly:
| Source type | Target type |
|---|---|
| Array | String |
| Boolean | String |
| Choices | String |
| Date | String |
| Datetime | String |
| Email address | String |
| Integer | String |
| Multi-choices | String |
| Number | String |
| Multi-choices | Array of string |
| Hash | Array of hash |
| Date | Datetime |
| Choices | Multi-choices |
| Integer | Number |
However, a small number of conversions will predictably drop part of every value, even when every value is valid, for instance:
| Source type | Target type | What’s lost |
|---|---|---|
| Datetime | Date | The time portion is dropped from every value. |
| Number | Integer | The decimal portion is truncated from every value. |
These conversions always lose the same piece of information, on every record, whether or not any individual value looks unusual. Exporting records is particularly important for these conversions.
In addition to the data loss inherent in each conversion, making sure individual values match an expected format is the best way to minimize data loss. Values that match convert successfully; values that don’t match are permanently cleared — not skipped and not left in their old type, but set to empty.
| Source type | Target type | Convertible values |
|---|---|---|
| String | Boolean | true, 1, on, yes, T, Y / false, 0, off, no, F, N (not case sensitive) |
| String | Date | ISO 8601 format (YYYY-MM-DD) |
| String | Datetime | ISO 8601 format with time (YYYY-MM-DDTHH:MM:SSZ) |
| String | Integer | A valid integer (digits, optional leading +/-) |
| String | Number | A valid number (supports commas, decimals, scientific notation) |
| String | Choices | Must exactly match an existing choice option |
| String | Multi-choices | Must exactly match an existing multi-choice option |
| String | Email address | A valid email format |
| String | Array of string | Splits on commas when present |
| Array | Multi-choices | Every array element must match an existing multi-choice option |
| Integer | Boolean | 0 converts to false; any other non-null value converts to true |
| Number | Boolean | 0 converts to false; any other non-null value converts to true |
Converting to Choices or Multi-choices? The target choice options must already exist on the field before you convert. A value that doesn’t match any existing option is cleared, even if it looks like a reasonable option name.
Converting a field
- Open the Field Editor for the relevant object (Accounts, Cases, or Transactions).
- Select the field you want to convert.
- Choose Convert type, then select a target type from the available options.
- Review the data loss warning, if one is shown. If you haven’t already exported your data, do it now — before confirming.
- Confirm the conversion. Persona converts existing values in the background and shows you the progress. Note that the field is deactivated during conversion (see below).
- Once the conversion finishes, review the summary for any values that didn’t convert. If you exported beforehand, you can look up the original values for any cleared records.
What happens to a field during conversion
Persona deactivates the field for the duration of the conversion, blocking both reads and writes. This means while a conversion is in progress:
- The field won’t render on layouts.
- Field cannot be updated or read via the API or Workflows (e.g. account.fields.
). - You can’t start a second conversion on the same field.
The field is automatically reactivated once every value has converted or cleared, but this means you should plan conversions for a window when it’s OK for dependent integrations, workflows, and dashboard views to see the field as blank, or remove these references and add them back after the conversion has completed.
Best Practices
- Export before every conversion, not just the ones you expect to be lossy — it’s the only way to recover if a conversion doesn’t go as planned.
- Confirm your choice options exist first if you’re converting into Choices or Multi-choices — values without a matching option are cleared.
- Spot-check a sample of your data against the target type’s expected format before converting a field with a “possible failure per record” risk, so you have a sense of how many values might clear.
- Don’t start a new conversion on a field that already has one in progress.
- Time conversions for low-traffic windows. Since the field is unreadable and unwritable for the duration, any integration, workflow, or dashboard view depending on it will see it as blank until the conversion finishes.