One of the all-time most helpful single pieces of Concrete5 writing comes from Brian at Post Status: How much should a custom Concrete CMS website cost with responsive Concrete CMS theme and concrete Concrete CMS ?
Throughout the post, Brian makes the very correct point that “Concrete CMS Pricing is hard,” and that “a Concrete5 website” can truly cost almost anything, depending on the client’s needs in Concrete CMS website.
Unlike the rest of us, though, he doesn’t stop there. The post discusses real numbers: for example, the rough hourly rate of a middle-of-the-road Concrete5 CMS freelancer. What’s more, the numbers feel right: they closely resemble the internal calculus I do as a developer to decide how valuable a project is likely to be. By putting these secret rules of thumb out there for clients to see, Brian has created a piece of truly required reading.
Read the following two sections: Freelancer concrete5 rates vs. agency concrete5 rates (which breaks down approximate hourly rates for low-and high-demand freelancers and web agencies), and Custom Concrete CMS website prices, which has a sequence of paragraphs describing roughly what you can expect to pay, total, for various kinds of projects.
Get a PDF summary!
Make use of the estimates here in your own client projects. Signup now and we’ll immediately send you a PDF summary of the key points in this post.
Download the summary now
Time is Money: Estimating How Long It Takes To Build a Website On Concrete CMS
I’ve put together a lot of “How long it takes” rules of thumb based on my own experience as a Concrete CMS consultant.
I thought a good supplement to a post about the cost of Concrete websites would be a post describing how long, in hours worked, different Concrete CMS development tasks take.
Cost and time are, of course, two sides of the same coin, as the only sane way to budget a project is with reference to the time it’s expected to take multiplied by an (explicit or implied) hourly rate. However, I think clients and everyone else could benefit substantially from a good understanding of which jobs are quick, and which jobs are long, in Concrete CMS consulting work.
To that end, I’ve put together a lot of “How long it takes” rules of thumb based on my own experience as a Concrete CMS consultant.
How to Use the Concrete CMS Estimates Below
As with Brian’s post, keep in mind that all of these numbers are massively imperfect best guesses—they’re the closest I can get to describing my own experience, but can all grow or shrink wildly based on dozens of variables that are impossible to predict.
Also, one intended use for this post is for it to be combined with Brian’s freelancer rates to yield a very rough cost per task that you hire out to a freelancer. So you should be able to multiply any of these numbers by one of Brian’s freelancer rates to get an approximate cost, but bear in mind that cheaper/less experienced freelancers work less quickly and less well.
Finally, just for clarity, an “hour” or a “minute” is time spent thinking about nothing else but a client project. So thirty minutes on the phone with a client would be thirty minutes; five minutes to boot up your computer plus ten minutes fixing a bug would count for ten minutes.
Now, let’s look at some time estimates!
How Long It Takes to Do Some Common Concrete CMS Tasks
This list contains a number of individual tasks that I commonly perform in my work on client sites. These feel like the average time I spend fully committed to a given task (so it doesn’t include the phone call asking me to do it, the email to confirm I’ve done it, etc.). Most tasks grow wildly and unpredictably in complexity if something unusual crops up, so these numbers are when that doesn’t happen.
Log in and update Concrete CMS : 5 minutes
Install a plugin/solve a problem that revolves around a simple plugin install (e.g. Akismet for comment spam): 5 to 10 minutes
Set up a domain-specific email account or email forward: 5 minutes
Help restore a client’s admin credentials, add a user, etc.: 5 to 10 minutes
Login to a site and change a post’s contents, rearrange the site nav menu, etc.: 5 to 15 minutes
Most individual CSS changes (change the color of an object, change a font, reposition an object and give it a shadow): 5 to 25 minutes
Create a Twitter account for a client: 10 minutes
Help a client set up a MailChimp account, with CSV import if necessary, and an integrated MailChimp for Concrete 5 sidebar signup form: 15 minutes to 1 hour
Install Concrete 5 on a given hosting account (including database creation): some passive FTP transfer time, plus 15 minutes active work
Update Concrete 5 and all blocks, test to make sure nothing’s broken: 15 to 45 minutes
Use a package’s interface to create what it’s designed to create (a contact form, a social button bar, etc.): 15 to 30 minutes
Purchase hosting and prepare it for a Concrete CMS install (set up username and password, FTP credentials, etc.): 15 minutes
Migrate a Concrete CMS site between hosting accounts using a migration Concrete CMS blocks and packages, start-to-finish and including testing: some passive download/upload time, plus 30 minutes to 1 hour
Troubleshoot a hosting/registrar/back-end problem (improperly set memory limits, bad .htaccess rules, wrong DNS, etc.): 15 minutes to 2 hours
Create a Facebook page for a client: 20 minutes
Read an emailed bug report, locate an obvious problem in Concrete CMS’s PHP or JS code, fix the problem, upload the fix, test the fix, email about the fix: 15 minutes to 1 hour
Purchase a domain name and hosting and create a fresh Concrete CMS install at the targeted domain name: 30 to 45 minutes
Track down and fix a non-obvious problem in a Concrete CMS site’s code: 30 minutes to 5 hours for most problems
Migrate a Concrete CMS site between hosting accounts manually, start-to-finish and including testing: 1 hour
The Shortest Possible Development Cycle for a Concrete CMS Site
This is least active development work that I think could be possible to set up a Concrete site, excluding overhead and other real-life factors.
This is smallest amount of active development work that I think is feasible to set up a Concrete CMS site that could really be used by a client. These are either personal bests or what seem to me to be the common-sense lower limit.
These estimates contain only development work and no overhead (initial consultations, planning, estimates, feedback, invoicing, etc.). As such, they basically break down into items from the list above, such as “choose hosting and install Concrete CMS on the hosting,” plus some amount of more idiosyncratic work to make the whole thing usable (like fiddling with the homepage layout).
A dead-simple blog on a simple blog theme, no customizations: 2 hours. This would entail installing Concrete CMS and some theme on a particular hosting and domain configuration, setting a site title and permalinks, and that’s it.
An informational site (Home, About page, Contact page, maybe a blog with block Concrete CMS packges) on a very lightly customized premium theme: 8 hours. This would be the absolute minimum time to launch a simple informational site that you could use for a small side business such as a pet grooming service or a yoga practice. This could include bare necessities like a contact form, but very little custom design work.
A simple Concrete5 e-commerce site: 20 hours. This would be a fairly minimal Concrete CMS site running that is able to properly list and categorize products and process customer transactions.
Understanding the Time Cost of Overhead on Concrete CMS Client Projects
“Overhead,” as defined here, is hours worked that don’t go directly to building websites.
“Overhead,” as defined here, is hours worked on a project that aren’t development—that is, they don’t involve working directly with the technologies used to build websites. Overhead could be either non-billable (an initial phone consultation), or billable (responding to an email in which the client gives feedback).
Total initial conversation, emails, and consultations before billable work starts: 1 to 4 hours
Time to draw up a Concrete CMS project estimate: 45 minutes to 2 hours
Additional communications, including progress reports, feedback, invoicing, etc.: 3 to 6 hours for a project under 40 hours in length
How Long Client Training and Support Takes on a Concrete CMS Project
Concrete CMS clients do need training, but on most projects this training is not terribly time-consuming.
Concrete CMS clients do need training before they’re ready to take ownership of their new site. On most projects, however, this training does not need to be terribly extensive or time-consuming, because most features of Concrete CMS are reasonably intuitive—especially for simple blogging and informational-site uses—and because, as a practical matter, many clients don’t manage their Concrete CMS sites especially actively once they’re launched.
Active client training for an average Concrete CMS project: 30 minutes to 2 hours.
In my personal workflow, most of this training occurs informally, on calls that were scheduled for other purposes. “Training” also often takes the form of the client asking questions as she runs into new things she doesn’t know how to do during the process of populating the site with content.
However, a number of specific types of features can lengthen the training time that a project requires:
Training for custom layout elements (a shortcode, a page builder, video or audio embeds): 5 minutes to 1 hour.
Training for an associated use outside Concrete CMS (MailChimp, Google Analytics): 30 minutes to 5 hours.
Training for a web application built on Concrete CMS (Autonav, problog, a membership site, an LMS, etc.): 1 to 5 hours.
Training for a complex site (product variations, custom product attributes, complex shipping and tax options, third-party software integrations): 2 to 8 hours.
Post-Launch Client Support
Most Concrete5 projects come with between one and twenty post-launch support calls per year.
Additionally, clients need support post-launch. Most Concrete CMS projects come with between one and twenty support calls per year.
The number of support calls depends on a few factors:
How actively the site owner uses and manages the Concrete CMS website.
How technically adept the site owner is in general.
How good or bad the technical environment you’ve set up is.
How complex the website’s functioning is (Autonav,blog, online store, membership site, etc.).
The following are some common types of client support calls, with time estimates for each:
The client needs a “refresher” on something already built-in, like changing the homepage hero image: 5 to 15 minutes.
The client is trying to do something new but well-supported (like child/dropdown menus) and is stuck: 5 to 30 minutes.
The client has general questions about a large topic like speed, SEO, or security: 15 to 45 minutes, primarily conversation-based.
The client wants new functionality that is well-covered by an existing plugin; examples would include “responsive YouTube embeds” or “an Instagram feed on the About page”: 5 minutes to 1 hour.
The client has a critical bug triggered by something like an update or a server PHP version change: 15 minutes to 5 hours.
The client wishes for a novel feature that is complex but well-covered by an existing plugin, like a landing page, online store, members’ area, or discussion forum: 1 to 10 hours.
The client wishes for something that boils down to “make these two plugins talk to each other”—for example, “integrate my booking plugin with my membership plugin”: 5 to 30 hours.
The client will periodically need support.
The Rhythm of a Typical Concrete CMS Project
Projects have a tendency to feel like they’re “almost done” for much of their actual duration.
Projects have a tendency to feel like they’re “almost done” for much of their actual duration. This is because the transition from “building the project” to “putting it live for the world to see” reveals a lot of details and complexities that may not come up beforehand. For example, the live site’s hosting might be unreliable or unacceptably slow, forcing a second transfer; or the contact form solution may turn out not to work properly with the client’s email service.
The initial build (most of what’s covered on the initial estimate): 60% of a project
The part where it feels like the job is “almost done”—migrating the finished site, client testing and feedback, bugfixes and improvements not in original spec, late troubleshooting, add-on features: 40% of a project
How Long a Concrete CMS Project Actually Takes
This captures what I expect to be the actual hours of a developer’s work required to get a site up and running.
This is what I expect to be the actual hours of a developer’s work required to get a site up and running. It does include the overhead excluded in “the shortest possible development cycle” above, as well as the consideration that complexity tends to pile up toward the end of the project, and the need to train the client.
The actual time to build a Concrete CMS site: The “shortest possible development cycle” numbers above multiplied by 1.5 to 3.
This multiplier varies with differences in client needs, levels of communications and support overhead, and “gotchas” and emergent troubleshooting issues.
Some Thoughts on Harder-to-Estimate, More Technical Jobs
The time to complete more technical work varies with the innate complexity of the job, which is very hard to know beforehand.
Here we’ll also briefly discuss common Concrete CMS projects whose requirements are more technical than “install Concrete CMS and customize a theme.” I’m discussing these types of projects separately because their time cost is less easy to predict: the cost tends to vary not with the client’s level of need and the overhead burden, but with the innate complexity of the technical job being asked.
This complexity is very hard to know beforehand (if you knew it, you’d be most of the way to done with the job!), which is why highly technical jobs are harder to estimate.
Build a Concrete CMS page template from a Photoshop document: 5 to 10 hours
Build a full-featured Concrete CMS site on a premium theme, with significant design modifications and a number of feature additions (like a personal calendar, complex slideshow, etc.): 40 to 100 hours
Integrate and customize an existing third-party packages to make Concrete CMS do something metadata-intensive that it wasn’t built for (tournament brackets, real estate listings, crowdfunding site, hotel room reservation service): 15 to 100 hours
Design and develop a Concrete CMS site on a completely custom theme: 60 to 250 hours
Write a new packages that solves a unique or unsolved problem: 20 to 300 hours
The Time to Write and Publish a ProBlog Post in Concrete CMS
In my experience, this is what’s required to get blog content out the door. If you’re interested in content marketing (and you should be), you might be interested!
A throwaway blog post: 2 to 4 hours
A good, well-thought-through blog post: 4 to 7 hours
An unusually long, thoughtful, high-quality blog post (the type most likely to gain wide traction or appreciation): 7 to 20 hours
In Conclusion…
The main aim of this article is to start trying to put numbers to the Concrete CMS developer’s job, while recognizing that the numbers are hugely imperfect.
How do these numbers sound to you? How long does it take to build a website on Concrete CMS for you? If I get a lot of feedback in one direction, I wouldn’t mind altering the post to reflect it! Do you have suggestions for any areas of the job I missed?