Getting content in
Bring your content with you, images and all
CSV and JSON files, RSS and Atom feeds, and built-in migrators for WordPress, Alloy CMS and Total CMS 1. Large imports run in the background through the job queue.
Most content already exists somewhere. Total CMS imports it from a file, a feed, or another CMS, and lands it in a collection you have already modelled — so the fields mean what they are called from the first row.
For files, the rule is the same in CSV and in JSON: property names in your data must match property names in the collection, and anything that does not match is ignored. A CSV's first row carries the property names and each row becomes an object; a JSON document is an array of objects. By default only new objects are created and data for existing ids is skipped — tick update instead and the import only updates what is already there, using as few properties as you supply. Supplying an id and one property is a perfectly good way to correct one field across a thousand records.
Text files cannot carry binaries, so images and files come in by path. Put the file on the server and use its full path as the value: an image or file property takes a path to one file, a gallery or depot property takes a path to a folder. Imported images are processed exactly as if they had been uploaded through the admin, with metadata and colour information extracted for you. List properties accept a comma-delimited list, and hex colours are converted to OKLCH on the way in.
Coming from another system, there is usually a purpose-built path. Total CMS 1 sites have their own importer under Utilities → Import Total CMS 1, which auto-detects a cms-data/ folder, maps each v1 folder into a collection, and never deletes the original — so you can re-run it safely. WordPress and Alloy CMS have their own import systems, and RSS, Atom and JSON feeds can be ingested from Utilities → Import RSS or the tcms rss:import command, which maps eight feed fields onto your properties and queues items as drafts unless you say otherwise.
Anything large should be queued. Queued imports run in the background through the job queue, which needs one scheduled command — php <install_dir>/resources/bin/tcms jobs:process, typically every ten minutes. The Job Queue Manager page in the admin builds the exact command line for you and shows progress while it runs.
What you get
CSV and JSON, create or update
Column and property names have to match; the rest is ignored. Update mode changes only existing objects, and only the properties you supply.
Images and files by path
Point an image or file property at a file on the server, or a gallery or depot property at a folder. Metadata and colour data are extracted exactly as on upload.
A real Total CMS 1 migrator
Utilities → Import Total CMS 1 auto-detects a cms-data/ folder, maps every v1 folder to a collection, and leaves the originals in place so a re-run is safe.
Feeds on a schedule
tcms rss:import pulls an RSS, Atom or JSON feed into a collection with automatic field mapping. The admin form writes the crontab line for you.
Big jobs run in the background
Queue the import and let tcms jobs:process drain it on a schedule. The Job Queue Manager shows progress and gives you the exact command to schedule.
In practice
One snippet
# Import a CSV — the header row must match your property names
tcms collection:import blog posts.csv
# Update existing objects instead of creating new ones
tcms collection:import blog updates.json --update
# Queue every entry from a feed, then drain the queue in the same run
tcms rss:import https://example.com/feed.xml blog && tcms jobs:process
The same imports are available as forms in the admin; the CLI versions are what you put in a cron job or a migration script.
FAQ
Common questions
How do I get images in from a spreadsheet?
Upload the images to the server first, then put the full path to each file in the image column. For gallery and depot properties, give the path to a folder and every file in its top level is imported. The images are processed on import just as they would be on upload.
Will an import overwrite what is already there?
Not by default. A normal import only creates new objects and ignores data for ids that already exist. Enabling the update option flips it the other way: only existing objects are updated, with whichever properties you supplied.
Do I need cron for imports?
Only if you queue them. A queued import is processed by tcms jobs:process, which you schedule in your host's control panel or crontab — every ten minutes is a good default. The Job Queue Manager page gives you the exact command for your install.
I'm moving from Total CMS 1. What comes across?
The v1 importer maps blogs, dates, depots, feeds, files, galleries, images, text and video folders into Total CMS 3 collections, re-processing images and galleries as it goes. Images that were uploaded inside a v1 styled-text area are the exception — keep the cms-data folder in place, or re-add those images through the editor.
Related features
- JumpStart export/import Export schemas, collections, objects and templates to one JSON file and import it anywhere. Faker-backed factory blocks generate sample content on the way in.
- Push & pull sync Deploy schemas, templates and collection settings from local to production with tcms push — content stays put, and a dry run shows what changes first.
- 20+ built-in content types Blog, image, gallery, file, depot, text, number, date, toggle, color, url, email, svg and feed schemas ship built in. Bind one to a collection and edit.
Want the details? Read the Import from anywhere documentation →
Or keep browsing: every Total CMS feature →
Start Your Free 45-Day Trial