A powerful Strapi v5 plugin for importing and exporting CSV data with full support for components, relations, media, nested fields, and mapping presets.
- 📁 Upload CSV files with configurable delimiter and encoding
- 🔄 Auto-mapping of CSV columns to Strapi fields
- 📍 Support for nested paths (
seo.metaTitle,intro.title,items.0.name) - 🧩 Components support (single and repeatable)
- 🔗 Relations support (oneToOne, oneToMany, manyToMany)
- 🖼️ Media upload from URLs
- 🔀 Upsert by any unique field (id, slug, email, etc.)
- 👁️ Preview before import
- 💾 Save mapping as preset
- 📊 Select specific fields to export
- 🔗 Configurable relation format (ID, slug, or full JSON)
- 🖼️ Configurable media format (URL, ID, or full JSON)
- 📦 Components exported as JSON
- 🌐 Locale support for i18n content
- 💾 Save and reuse mapping configurations
- ⚡ Quick import with predefined settings
npm install @some-dev/strapi-plugin-csv-manager
# or
yarn add @some-dev/strapi-plugin-csv-managerAdd the plugin to your config/plugins.ts (or config/plugins.js):
export default () => ({
'csv-manager': {
enabled: true,
},
});Then rebuild your Strapi admin panel:
npm run build
npm run developAfter installation, you'll find CSV Manager in the left sidebar of your Strapi admin panel.
- Go to CSV Manager → Import tab
- Select the target Content Type
- (Optional) Select a saved Preset
- Upload your CSV file
- Configure CSV options (delimiter, encoding)
- Map CSV columns to Strapi fields
- Select Unique Field for upsert logic
- Click Preview to verify data
- Click Import
- Go to CSV Manager → Export tab
- Select the Content Type
- Choose fields to export
- Configure relation/media format
- Set limit (optional)
- Click Export
- Go to CSV Manager → Presets tab
- Create, edit, or delete mapping presets
- Use presets during import for quick configuration
| Type | Import Format | Export Format |
|---|---|---|
| String | Plain text | Plain text |
| Number | 123 or 123.45 |
Number |
| Boolean | true/false, 1/0, yes/no |
true/false |
| Date | YYYY-MM-DD, DD.MM.YYYY, DD/MM/YYYY |
YYYY-MM-DD |
| DateTime | ISO 8601 format | ISO 8601 |
| JSON | Valid JSON string | JSON string |
| Array | value1|value2|value3 or JSON array |
Pipe-separated or JSON |
| Relation | ID, slug, or JSON | ID, slug, or JSON |
| Media | URL to download | URL or ID |
| Component | JSON object | JSON object |
| Repeatable Component | JSON array or pipe-separated JSON objects | JSON array |
title;slug;price;is_featured
Product 1;product-1;99.99;true
Product 2;product-2;149.99;false
title;slug;category;tags
Product 1;product-1;electronics;tag1|tag2|tag3
Product 2;product-2;clothing;tag4|tag5
title;slug;seo.title;seo.description
Product 1;product-1;SEO Title 1;Meta description 1
Product 2;product-2;SEO Title 2;Meta description 2
title;slug;image;gallery
Product 1;product-1;https://example.com/img1.jpg;https://example.com/g1.jpg|https://example.com/g2.jpg
title;advantages
Product 1;[{"title":"Fast","description":"Very fast"},{"title":"Reliable","description":"Always works"}]
By default, relations are looked up by id. You can configure lookup by other fields:
id- Match by Strapi IDdocumentId- Match by document IDslug- Match by slug fieldname- Match by name fieldtitle- Match by title fieldemail- Match by email field
Enable "Auto-create" option to automatically create related entries if they don't exist.
Choose a unique field for upsert:
- If a record with matching value exists → Update
- If no match found → Create
The plugin supports Strapi's i18n plugin:
- Select locale during import/export
- Content is imported/exported for the specified locale
MIT License
Contributions are welcome! Please feel free to submit a Pull Request.
If you find a bug or have a feature request, please open an issue on GitHub.
For questions and support, please open an issue on the GitHub repository.