Migrate Selected Content Using the Query Export Plugin
The Query Export plugin (cm:stacks:export-query) lets you export selected content types from a stack based on query criteria.
Use it when you need to export a subset of stack content instead of a full stack export.
Prerequisites
Before running the export, ensure the following:
- CLI v1.44+ installed and authenticated. Run csdx auth:login or use a management token alias.
- Query Export plugin installed (one-time)
csdx plugins:install @contentstack/cli-cm-export-query - Management token available (Delivery tokens are not supported.)
- Export directory defined: specify the -d path; optionally use --branch or --branch-alias (default: main).
Export Content Types Using CLI Commands
Use the following examples to export content types based on different query methods.
Export by Content Type Title
csdx cm:stacks:export-query -k <stack_api_key> -d ./export --query '{"modules":{"content-types":{"title":{"$in":["Blog","Author"]}}}}'Export by Content Type UID
csdx cm:stacks:export-query -k <stack_api_key> -d ./export --query '{"modules":{"content-types":{"uid":{"$in":["blog","author"]}}}}'Export Using a Query File
csdx cm:stacks:export-query -k <stack_api_key> -d ./export --query ./my-query.json
Example my-query.json:
{
"modules": {
"content-types": {
"$and": [
{ "uid": { "$in": ["blog_post", "author"] } }
]
}
}
}Export from a Specific Branch
csdx cm:stacks:export-query -k <stack_api_key> -d ./export --branch main --query '{"modules":{"content-types":{"title":{"$in":["Blog"]}}}}'Query Format
- The top-level key must be modules; under it use content-types (the only queryable module for this plugin).
- Use Delivery API–style operators (e.g. $in, $regex, $gte).
- The query filters content types only. Entries and assets are not directly filtered in the query JSON. All entries under matched content types are exported; only assets referenced by those exported entries are included.
Additional Resource Refer to the Contentstack Content Delivery API documentation for the full list of supported operators.
Export Output Structure
The export generates the same folder structure as a standard stack export:
<data-dir>/<branch>/
For example: ./export/main/
Within this structure, the export creates the following primary directories:
- content_types/
- entries/
- assets/
- locales/
- environments/
In addition to this directory structure, Query Export automatically includes the following components:
- stack settings
- locales
- environments
- queried content types
- global fields
- extensions
- marketplace apps
- taxonomies
- entries for the matched content types
- referenced assets
Import the Exported Content into a Stack
Use the export folder (e.g., ./export/main) as -d in import or import-setup.
Import into an Empty Stack
csdx cm:stacks:import -k <target_stack_api_key> -d ./export/main
Import into a Stack with Existing Content
Step 1: Run import-setup
This generates a backup and prepares the mapper for entries and their dependencies (assets, extensions, marketplace-apps, taxonomies).
csdx cm:stacks:import-setup -k <target_stack_api_key> -d ./export/main --module entries
Note the backup path printed in the output (for example, ./_backup_456).
Step 2: Import with overwrite
csdx cm:stacks:import -k <target_stack_api_key> -d ./export/main --backup-dir ./_backup_456 --replace-existing --module entries