---
title: Import from default ACF options
description: "Import bootstraps PolyFields from your existing single-language ACF options data. It seeds the default-language store and propagates values to other languages according to each field's translation mode. ## Backup Always back up your database before running import. Import writes to…"
url: "https://www.wp-polyfields.com/docs/import-migration/import-from-default-acf-options/"
updated: "2026-07-05"
category: "Import & Migration"
---

# Import from default ACF options

Import bootstraps PolyFields from your existing single-language ACF options data. It seeds the default-language store and propagates values to other languages according to each field's translation mode.

## Backup

Always back up your database before running import. Import writes to WordPress options stores; a backup lets you restore the prior state if anything goes wrong.

## How import works

Import runs in two steps:

1. Seed the default-language store from the original options page value.
2. Apply propagation to other language stores according to the field translation mode.

## When a value already exists

- Source value empty (`null`, `''`, or empty array for non-container fields): skipped entirely, nothing is written.
- Default-language target already has a value: kept as-is by default during import seeding.
- `copy_once` target already has a value: kept as-is (only empty targets are filled).
- `translate` and `translate_once` target already has a value: queued translation job skips that target.
- `sync` target already has a value: overwritten to keep stores aligned during propagation (only when the default-language seed step runs for that field; see note below).
- `ignore`: no propagation to other language stores, regardless of existing values.

## Sync overwrite note

Sync overwrite of sibling language stores only applies when the default-language seed step runs for that field. If seeding is skipped because the default-language value is already set, propagation (including sync) does not run unless `--overwrite` is passed via WP-CLI.

## Machine translation during import

Not all machine translation during import runs in the background. Behavior depends on how import is triggered and on workload thresholds.

- **Admin and first-use import**: Always queues machine-translation jobs for `translate` and `translate_once` fields when DeepL is available. The import batch may complete in one request for small workloads, but translation jobs still run asynchronously afterward.
- **WP-CLI import below thresholds**: Machine translation runs synchronously during the command.
- **WP-CLI import above thresholds**: Uses the same queue-based path as admin import.

See [Field translation overview](https://www.wp-polyfields.com/docs/field-translation-modes/field-translation-overview/) and [Workload thresholds](https://www.wp-polyfields.com/docs/configuration/workload-thresholds-async-behavior/) for threshold configuration.

## Admin and WP-CLI

- Import is intended as a one-time bootstrap from admin. After completion, it is marked as completed and cannot be triggered again from the notice.
- WP-CLI import can be run again to force another pass. See [wp polyfields import-options](https://www.wp-polyfields.com/docs/wp-cli-reference/wp-polyfields-import-options/).
- To force overwrite non-empty default-language values from WP-CLI, pass `--overwrite`.

For field mode details during import, see [Field translation overview](https://www.wp-polyfields.com/docs/field-translation-modes/field-translation-overview/) and the individual mode pages.
