Concrete CMS has been powering websites since 2008, but each major version rewrite broke compatibility with existing add-ons, and many developers never came back. Today the marketplace is thin, the community is small, and site owners are finding it harder to get help when something breaks.
A Platform Built on a Shrinking Island
Originally released as concrete5 by PortlandLabs in Portland, Oregon, Concrete CMS built a devoted following on the strength of one genuinely innovative idea: in-context editing. Instead of switching to a backend editor to change page content, you clicked directly on the page and edited it in place. In 2008, that was remarkable. The block-and-area architecture that underpinned it was elegant, and the add-on marketplace attracted a community of developers who built themes and packages on top of it.
Then the versions changed. Concrete5 7 introduced new add-on requirements, and a significant portion of developers did not rewrite their products for the new architecture. Concrete5 8 repeated the pattern. The cumulative effect on the marketplace was severe. PortlandLabs themselves abandoned their eCommerce and discussion board add-ons, leaving site owners reliant on community replacements. By the time the platform rebranded to Concrete CMS in 2021 and version 9 was released, the add-on ecosystem had a fraction of the activity it had a decade earlier.
With the release of version 7 and continued in version 8, the add-on ecosystem was severely reduced due to new add-on requirements and some developers not wanting to rewrite their products. Portland Labs had abandoned their eCommerce and discussion board add-ons, leaving some site designers high and dry.
Verified reviewer, Capterra, Concrete CMS reviews (page 2)

The Developer Pool and the Real Cost of Running the Platform
Concrete CMS market share is approximately 0.5%. That figure represents around 50,000 websites worldwide, a respectable number for a niche platform, but it also defines the available talent pool. Most web developers have never worked with Concrete CMS and have no reason to learn it. The developers who do know it can charge a premium for that scarcity, and as the platform ages, the pool contracts further.
We were happy at the outset of our Concrete5 journey, but it did not last long. Making us feel we were thrown into the ocean wearing concrete shoes as support was no longer available to fix problems on our site. None of the vendors with reasonable rates even recommended using this platform for creating a website.
Verified reviewer, Capterra, Concrete CMS reviews
Great for clients but they will need a ConcreteCMS developer to do the ideal setup.
Verified user review, Capterra, March 2024
Many site owners who started on Concrete5 now feel the platform getting smaller around them: fewer add-ons, fewer theme choices, and fewer developers who still work with it every day.
C5Desk, Concrete5 to WordPress Migration in 2025, August 2025

Concrete CMS Features and Their WordPress Equivalents
Every piece of functionality in Concrete CMS is delivered through Blocks placed in Areas on Pages. The block system is the platform’s core strength, and it maps cleanly to WordPress‘s Gutenberg block model. The difference is in ecosystem depth: WordPress has thousands of maintained block extensions, plugins, and themes where Concrete CMS has hundreds, and that gap is widening. The table below maps the most commonly used Concrete CMS features to their WordPress equivalents.
| Concrete CMS Feature | What It Does | WordPress Equivalent | Cost |
|---|---|---|---|
| Blocks (content units in Areas) | Rich content sections placed into named page zones | Gutenberg Block Editor + ACF Blocks | Free + Pro |
| Page Types + Attributes | Custom page structures with typed field definitions | WP Custom Post Types + ACF Pro custom fields | Free + Pro |
| In-context (inline) page editing | Edit content directly on the live page view | Gutenberg Block Editor (visual editing) | Built in |
| Conversations block | Threaded discussion and comment system on pages | WP native comments + wpForo 360° AI for forums | Free + Pro |
| Form block / Express Forms | Form building with submissions stored in the database | Gravity Forms / WPForms / Fluent Forms | Free tiers |
| Community Store | Open source e-commerce (after Portland Labs abandoned theirs) | WooCommerce (8M+ active installs) | Free core |
| Express Entries | Custom data objects with typed fields (like custom CPTs) | Custom Post Types + ACF Pro | Free + Pro |
| File Manager | Centralized file upload and organization | WordPress Media Library (built in) | Built in |
| Users + Groups | User registration, profile attributes, and group access | WordPress User Roles + MemberPress | Free core |
| Calendar (built in) | Event scheduling and display | The Events Calendar (700k+ installs) | Free core |
| Stacks | Reusable global content blocks shared across pages | WP Reusable Blocks / Patterns + ACF Options | Built in |
| Concrete CMS Themes | Template files controlling page design and layout | Custom WordPress PHP theme | Custom dev |
| Workflow + Permissions | Content approval and granular page-level access control | WP User Roles + PublishPress / custom hooks | Free tiers |
A note on the Conversations migration. Concrete CMS Conversations provide a threaded comment system at the page level. For organizations that want to add a full community discussion platform to their new WordPress site, gConverter implements wpForo 360° AI as part of the migration. This delivers proper forum categories, topic subscriptions, member ranks, and AI-powered moderation rather than the basic threaded comment model that Conversations provided.
What a Proper Concrete CMS Migration Involves
Concrete CMS stores its content in MySQL using a combination of core tables and dynamically generated attribute tables. Pages, blocks, file manager entries, user accounts, and form submissions are all in separate table groups that require specific knowledge to read correctly. A proper migration reads the source database directly and maps each content layer explicitly.
Pages, page types, and attributes
Pages in Concrete CMS are stored in the Collections and Pages tables with page type definitions in PageTypes. Each page type has a set of attributes (custom fields) stored in dynamically named tables like atBoolean, atDateTime, atSelect, and atTextarea, with values mapped back to pages via CollectionAttributeValues. A proper migration reads every page per type, maps the attribute values to their ACF Pro equivalents in WordPress, and creates posts or custom post types that replicate the original structure. No attribute value is dropped.
Block content
Every block placed in an area on a Concrete CMS page is stored in its own table (for example, btContentLocal for the Content block, btImage for the Image block, btForm for Form blocks). A proper migration reads each block table, maps the content to the equivalent Gutenberg block in WordPress, and reconstructs the page layout in the correct area-to-column order. The visual structure of every page is preserved.
Form submissions
Form block submissions are stored in FormResults and FormResultsData. Express Forms data is in the Express Entries tables. Every submission including all field values is exported and archived. No inquiry, contact, or submission record is lost during migration.
Users and groups
Concrete CMS users are stored in the Users table with custom profile attribute values in dynamically named user attribute tables. All registered users are imported to WordPress with role mapping. User attribute data is imported as WordPress user meta. Password hashes use different algorithms between the two systems, so users receive a secure reset link on first login.
File Manager and media
Concrete CMS file entries are tracked in the Files, FileVersions, and FileStorageLocations tables. All files including images, documents, and downloads are imported to the WordPress Media Library preserving filenames, folder structure, and alt text. All content that referenced these files is updated to point to the new WordPress media URLs.
URLs and SEO
Concrete CMS generates URL slugs from page names. Where these can be replicated in WordPress permalink settings, they are preserved exactly. Where the structure must change, 301 redirects are created for every affected URL. SEO metadata stored in Concrete CMS‘s SEO attributes per page is imported to Yoast SEO. No page goes live without its URL and SEO data intact.

What Bad Concrete CMS Migrations Look Like
- Attribute values dropped. Generic migration tools do not know how to read the dynamically named attribute tables (
atBoolean,atSelect,atTextarea, etc.). They grab the rendered HTML of each page and miss every structured attribute field. Custom page fields, event dates, category selections, and all structured metadata disappear silently. - Block content flattened. Each Concrete CMS block type has its own database table. Generic tools cannot read the individual block tables and instead scrape the rendered HTML output of the page. All structured block data, images linked through the Image block, and file downloads linked through the File block are broken or lost.
- Form submissions abandoned. FormResults and Express Entries data is in Concrete CMS-specific tables that no standard WordPress importer handles. All submitted contact and inquiry records disappear.
- File Manager not migrated. Files tracked in the Concrete CMS File Manager are not always imported to the WordPress Media Library. Content that linked to those files gets broken URLs after launch.
- User attribute data lost. Custom user profile attributes stored in user attribute tables are not handled by generic migration tools. User accounts arrive in WordPress without profile data.
- No URL redirects. Concrete CMS page slugs are replaced by default WordPress slugs with no redirects in place. All inbound links and search rankings for specific pages break immediately after launch.
GDPR and Your Data
A Concrete CMS database contains the personal data of every registered user: email addresses, hashed passwords, and all custom profile attribute values. The FormResults tables hold every field submitted through any Form block on the site, which may include names, addresses, phone numbers, and other personal information visitors provided. If Community Store was active, customer order records are in the commerce tables. For European organizations running Concrete CMS, this data is subject to GDPR.
Migrating this to WordPress requires a signed Data Processing Agreement before any provider accesses your database. gConverter is US-registered with full EU GDPR compliance. We sign a DPA before any access, store credentials in AES-256 encrypted vaults, transfer over TLS 1.3, and permanently delete all customer data within 30 days. Read the full GDPR documentation →
What Clients Say
Went FAR above and beyond to help us work through this project. We are thrilled with the final result and they were professional, great to work with, and responsive every step of the way. Would highly recommend.
Anna P., Wilmington NC – Customer Lobby, January 2026
Very few conversion issues on the first pass, and they cleaned it right. Very Impressive.
Stacy C., Katy TX – Customer Lobby, November 2025

The Bottom Line
Concrete CMS is a genuinely well-designed CMS with a coherent block architecture, real in-context editing, and a thoughtful permissions system. For the organizations that built on it at its peak, it served them well. But the add-on ecosystem has contracted through successive version rewrites, the developer community is a fraction of what it was, and the competitive position against WordPress has only widened over time.
WordPress is where the talent pool is and where the ecosystem is actively expanding. Every Concrete CMS page, every attribute value, every block, every form submission, every file, and every user account can be migrated cleanly. And for sites that want to add a full community discussion platform, that migration includes moving to wpForo 360° AI.