ContentSync
Introduction
Mirror articles from one Joomla site to another as a scheduled task. Images come along, categories, authors and access levels are mapped, and a dry run shows what will change first.
What it does
You publish an article on one Joomla site and want it on another one too. So you copy the text, upload the images again, fix the paths and pick the category. And you do it again when the article changes.
ContentSync does that for you. It is a task for the Joomla Task Scheduler that fetches articles from a source site through the Joomla Web Services API and creates, updates or removes them on the site it is installed on. Set it up once, give it a schedule, and the target site follows the source.
The sync runs one way: from the source site to the site with the plugin. An article that has not changed on the source since the last run is skipped.
How it works
- Create an API token on the source site. In Users, open a user and copy the token from the Joomla API Token tab. Nothing has to be installed on the source.
- Add the task on the target site. In System > Scheduled Tasks, choose "Content Sync: Synchronise Articles" and enter the source site URL and the token.
- Choose what to sync and where it goes. Set the filters, the target category and the mappings.
- Give it a schedule. The Joomla Task Scheduler runs it from then on.
You can add the task more than once, for instance one task per source site or per category.
Sync only what you need
The filters are applied on the source, so only matching articles are fetched:
- Category IDs
- Tag IDs
- Language
- Publication state
- Featured, not featured, or both
- Workflow stage (needs Joomla 6.2 or newer on the source)
Everything lands in the right place
IDs are different on every site. ContentSync maps them instead of copying them:
- Categories. One target category for everything, or a mapping from source category to local category.
- Tags. A mapping from source tag to local tag. Leave it empty to skip tags.
- Authors. A mapping from source user to local user, with a default author for everyone else.
- Access levels. A mapping from source view level to local view level.
Members-only stays members-only
View level 4 on the source is not the same audience as view level 4 on the target. Reusing the number can publish a members-only article to everyone. The levels Joomla installs (Public, Registered, Special, Guest and Super Users) have the same ID on every site and are carried over as they are. For an article with a view level you created yourself that is not in your mapping, you choose what happens:
- Use the most restrictive local view level (the default)
- Skip the article
- Reuse the number from the source, for sites with identical view levels
Images mirrored
Images in the article text and in the intro and full article image fields are downloaded and stored in the same folder structure on the target site.
- Only JPG, PNG, GIF, WebP and AVIF files are written, and the file type must match its extension.
- Images are only written inside the folders you allow:
imagesandfilesby default, the folders of the Joomla Media Manager. - An image that already exists is not downloaded again.
Documents, audio and video too
Switch on Mirror Documents and Media and the files your articles link to or play come along as well: PDF, Word, Excel, PowerPoint and OpenDocument files, text and CSV files, MP3, M4A, OGG and WAV audio, and MP4, WebM and MOV video.
- The same rules apply as for images: inside the allowed folders only, and the file type must match its extension.
- You set a maximum file size. A larger file is skipped and reported in the log.
- A link to a mirrored file keeps pointing at the target site, also with Rewrite Relative Links on.
Dry run first
Switch on Dry Run and the task simulates a run without writing anything to the database or downloading any files. The task log shows which articles would be created, updated or deleted, and which images and files would be downloaded. The switch turns itself off after one run, so the next scheduled run is a real one.
Custom fields come along
Switch on Sync Custom Fields and the custom field values of every article are copied too.
- A field on the source is matched to the field with the same name on the target site. When the names differ, a field mapping connects them.
- Both fields must have the same type. A field without a counterpart is skipped and reported in the log.
- Supported types: text, textarea, editor, URL, integer, number, calendar, color, list, radio, checkboxes, media and media file.
- The image or file of a media field is mirrored along with it.
More control
- Removed articles. When an article no longer exists on the source, move the local copy to the trash, unpublish it or delete it permanently. Or leave it alone.
- Incremental sync. Only ask the source for articles changed since the last successful run. This saves many API requests on a large site.
- Force resync. Process every article again, once, regardless of its modification date.
- Rewrite relative links. Point relative links in the article back to the source site.
- Filter article HTML. Scripting is removed from the article HTML before it is stored. On by default.
- Schema.org data. Mirror the structured data of each article (needs Joomla 6.2 or newer on the source).
- Logging. Choose a log level and write every run to
administrator/logs/contentsync.php, next to the task log of the scheduler.
Good to know
- The Web Services API must be reachable on the source site, with a user token that may read articles.
- The plugin goes on the target site only.
- Changes you make to a synced article on the target site are overwritten when the article changes on the source.
- Custom fields are not created for you. Create them on the target site first, with the same name and type as on the source.
Technical details
- Task plugin for the Joomla Task Scheduler, built on the namespaced Joomla plugin architecture with a service provider
- Joomla 5 and 6, PHP 8.1 or higher
- One database table that links source articles to local articles; removed again on uninstall
- No template overrides, no core changes
License
ContentSync comes in a FREE and a PRO edition, both licensed under the GNU GPL version 3 or later.
FREE creates and updates articles into one category on a schedule, with a filter on state and on one source category, image mirroring, the dry run, force resync and logging. Scripting is filtered out of the article HTML in both editions.
PRO adds filtering on several categories and on tag, language, featured and workflow stage, the mappings for categories, tags, authors and access levels, custom fields, documents, audio and video with several media folders, the handling of removed articles, incremental sync, Schema.org data and link rewriting. A PRO license includes updates and support, and installing PRO over FREE keeps your task settings.
- Documentation: https://www.joomill-extensions.com/documentation/contentsync
- Support: https://www.joomill-extensions.com/contact
ContentSync
- Version:
- 1.0.0
- Developer:
- Joomill
- Last updated:
-
Oct 09 2026
5 hours ago - Date added:
- Oct 09 2026
- License:
- GPLv2 or later
- Type:
- Free download
- Includes:
- p
- Compatibility:
- J5 J6
Share