Two essentials for anyone running a real site: knowing who changed what, and being able to move the site somewhere else. WordPress makes both into plugin searches (WP Activity Log, WP All Import, All-in-One WP Migration) with wildly different data models. Contensio ships both in the core.
Activity log — read-only audit trail
Every admin action that matters — creating content, publishing, deleting, changing roles,
enabling plugins, updating settings — is recorded with the who, what, when, where,
and old/new values. The viewer at /admin/activity-log is read-only,
filterable, paginated, and gated by the activity_log.view permission.
| When | User | Action | Subject | Details |
|---|---|---|---|---|
| Apr 16, 14:22 | Ana | published |
post #142 | "Introducing the Block Editor" |
| Apr 16, 13:48 | Daniel | updated |
role #3 | Added media.delete to "Editor" |
| Apr 16, 11:05 | System | plugin_enabled |
social-connect | Migrations ran successfully |
What's recorded
- User (or "System" for automated jobs)
- Action verb: created, updated, deleted, published, trashed, login, plugin_enabled, etc.
- Subject: content / user / role / setting / plugin — with its ID
- Old + new values for updates (stored as JSON)
- IP address and timestamp
Import / Export
One JSON file carries your entire site's structured data — pages, posts, custom content, menus, languages, translations, meta. Perfect for dev → staging → prod migrations, backups, cloning a site as a starting point, or open-sourcing a sample site.
Export
Tick what to include (content, menus), click Download — you get a timestamped JSON file with the full structure, translations, blocks and meta.
Import
Upload the file, pick conflict behavior: skip existing (safer) or overwrite existing (matched by slug for content, by name for menus).
What's included
- Pages + posts with all translations, blocks, and meta
- Menus with items, per-language labels, and URLs
- Languages (the target site creates any missing ones)
- A format-version marker so future-you can tell what kind of dump this is
Media files and site settings are intentionally out of scope — they're site-specific and often server-specific. Media can be rsync'd or moved via your hosting platform; settings are a small UI action.
Compared to WordPress
WordPress
- ✗Activity log needs a plugin (often paid)
- ✗Export is XML; imports require different plugins
- ✗Serialization quirks break portability
Contensio
- ✓Core activity log, gated by permission
- ✓Single JSON file for full content portability
- ✓Skip / overwrite conflict strategy