Export and roundtrip
The ZIP export downloads the record content of the types you select as a single archive. Work on it locally, hand it to an AI agent, then import it back here or on another installation. Find it under Tools → Octa Editor → Export, card Content (ZIP).
What the ZIP contains
Section titled “What the ZIP contains”The archive mirrors the order the importer works in, terms before posts, one file per record.
posts/ post/hello-world.json page/about-us.jsonterms/ category/news.json product_cat/accessories.jsonEach file is a canonical document, exactly the format the bulk importer reads. Folder names are for you, not for the importer. It flattens the archive and sorts the batch itself, so moving a file between folders changes nothing.
What it does not contain
Section titled “What it does not contain”The export captures record content, not a clone of your WordPress installation. It includes post fields, ACF fields, SEO fields through the Yoast and Rank Math providers, terms and term fields.
It does not include image or file binaries (only alt text and metadata travel), menus, widgets, WordPress options, or plugin settings. Moving a site wholesale is a job for a migration plugin. This export is for content.
It also skips records without a slug, usually drafts that were never published. Slug is how a portable document finds its record again, so every import of such a file would create one more copy. A draft that has a slug (a page taken back to draft, say) travels like any other record, which keeps its published children attached to it on the other site. With Keep source IDs the id identifies each record, so nothing is skipped.
A parent page you cannot see is never named in your export, not even by its slug.
Forms (Octa Forms) are listed last and left unticked. A form’s configuration lives in settings the document does not carry, so an exported form holds little more than its title and is no backup of the form. Tick the box if you need the titles anyway. Leaving every type unticked exports the default selection, which also leaves forms out.
Portable by default
Section titled “Portable by default”An exported document is portable, which means it carries no source ids. The export strips the record id, rewrites a numeric parent into the parent’s slug, and pins identity in _match by slug.
That default is what makes the roundtrip work. A raw id from site A means nothing on site B, and the importer refuses to guess. It would report octa_not_found and fail rather than silently creating a record, so an archive full of foreign ids would fail to import on a clean instance instead of populating it.
With slug identity, both directions behave the way you expect. The first import on a clean instance creates the records. Every import after that updates the matching records instead of duplicating them.
Keep source IDs
Section titled “Keep source IDs”Tick Keep source IDs when the archive goes back to the site that produced it and you want an exact update of those same records. The documents then carry their original id, which beats the slug in the resolver, so a record whose slug you changed locally still updates the right record.
Leave it off whenever the archive travels to another installation.
A single record downloaded with Download JSON in the editor panel always carries its source id, so it updates that same record on that same site. To move records to another installation, use this export.
References by id stay local
Section titled “References by id stay local”Portability covers identity, not every reference inside a document. A featured image id, a term id in a taxonomy assignment, and an ACF relation pointing at another record are all numeric ids that mean something only on the site that produced them.
This is a deliberate boundary, the same one the image index lives behind. When you move content between installations, expect to re-point image and relation fields on the target.
Image index for the agent
Section titled “Image index for the agent”The Image library (index) checkbox, in the same row as the types, packs thumbnails plus media/manifest.json into the same archive, so an agent writing documents offline can see which attachment id is which picture.
The index is same-site only, and the importer skips the reserved media/ folder on the way back in, so an archive carrying an index stays re-importable without leaving a phantom record in the preview. See the image index guide.
Permissions
Section titled “Permissions”Collection follows the anti-oracle rule used everywhere else in the plugin. An administrator exports every record of the selected types. A role without edit_others_posts exports only its own records, and every object is re-checked individually before it enters the archive. Nobody learns about a record they cannot already edit.
Limits and requirements
Section titled “Limits and requirements”ZIP export needs the ZipArchive PHP extension. When the host lacks it, the section explains this, and you can still download records one at a time from the editor panel.
Next to the type checkboxes the export counts the documents of each type and adds up your selection against what one import on this site takes, so an archive too large to import in one go shows up before you download it. The count is exactly what the archive will hold: it applies the same permission checks and follows the Keep source IDs switch. An archive with nothing in it is refused with a message instead of downloaded as an empty file. See Server limits.
On the import side, the defaults are 1000 .json entries per package, 100 MB unzipped in total, 25 MB for the uploaded archive itself and 2 MB per single document. All of them are filterable through octa_editor_bulk_limits. A host without ZipArchive can still upload a bundle .json in the shape {"documents":[…]}, which needs no extension.
The roundtrip in practice
Section titled “The roundtrip in practice”- Export the types you need, leaving Keep source IDs off.
- Unpack the archive and edit the JSON files locally, by hand or with an AI agent working from the agent guide on the Guide tab.
- Zip the folder again, or upload the individual files.
- Import on the target site’s Import tab. Read the dry-run preview, which shows
CREATEorUPDATEper file before anything is written, then confirm.