Skip to main content
Out of Scope

is uploading content to the cms out of scope?

Yes — bulk-loading a client's entire library of pages, posts, and assets into the CMS is content-population labor, and it's separate from building the system that holds it. The exception is a small amount of sample or demo content needed to show the build works.

Why this answer

Building the machine and feeding the machine are two different jobs. When you build a CMS-backed site, your deliverable is the system — the templates, the content types, the editing interface, the thing that lets content be added and managed. Pouring the client's actual content into that system is data entry, and at any real volume it's a substantial, repetitive labor of its own: formatting each page, placing images, fixing the inconsistencies in whatever source material the client hands you, and reconciling content that was never designed to fit the structure you built. A client who says 'and then just load all our pages in' is often picturing a few minutes of work, when in fact they're handing you a hundred messy documents to transcribe and tidy. The build is finite and skilled; the population is open-ended and mostly clerical, and it scales directly with how much content the client has — which is their variable, not yours. Your contract describes the system you create, not the encyclopedia they want poured into it. Unless content migration or population was named and quantified in the scope, loading the whole library is new work, and often a lot of it.

When the answer flips

It leans in-scope when the content is minimal and serves the build itself — entering a handful of sample pages to demonstrate the templates work, or the few core pages a small brochure site genuinely needs, is reasonable as part of showing the system functions. It's clearly included if your contract named a migration phase or specified a page count. The verdict tips out-of-scope as volume climbs and as the source material gets messier — bulk-loading dozens or hundreds of pages, importing a blog archive, or transcribing content from PDFs and old sites is a migration project, not a courtesy. A real gray zone is the 'just a few pages' that turns out to be forty; the fix is to quantify early. Automated migration is its own consideration: writing an import script is engineering you might bill for even if hand-entry would be tedious, and the client shouldn't assume either approach is free just because the system you built can technically hold the data.

What to do next

Quantify the content before you agree to anything, because 'load our pages in' hides a number that changes the whole calculation. Ask directly: how many pages, posts, and assets, and in what shape is the source material? Then separate the build from the population in plain terms: 'The system's ready and I've loaded sample content to show it works. Migrating your full library — looks like around eighty pages — is content population, which I can quote as a separate piece or hand off as a task your team can do.' Offer the choice honestly: many clients are happy to load their own content into a system you've made easy to use, especially once they see the volume priced. If you do it, decide between hand-entry (billed by volume or time) and a migration script (billed as engineering), and pick based on what's actually cheaper. Build a short 'how to add content' guide as part of handoff so the client can self-serve. On future contracts, state whether content migration is included and cap the page count if so.

Frequently asked questions

The client says 'the site isn't done until the content's in it' — are they right?+

They're describing their goal, not your scope, and the two aren't the same. From the client's seat, a site with no content isn't usable, so it feels unfinished — that's a fair feeling. But your deliverable was the system: the templates, the structure, the editing tools that make content possible. A built CMS with sample content demonstrating that it works is a complete system, even if the client's full library isn't loaded yet. Populating it is a distinct labor that scales with how much content they have, which is their variable. The honest reframe is to agree with their goal while separating the work: 'The system's done and working — getting all your content in is the next piece, and it's content population, which we should scope as its own task.' You're not refusing to help them reach a usable site; you're naming who does the data entry and at what price.

How much sample content should I load before it counts as migration?+

Enough to prove the build works, and no more. The purpose of sample content during a build is to demonstrate that the templates render correctly, the content types behave, and the editing interface is usable — a representative page or two per type usually does that. Once you're past 'demonstrating the system' and into 'transcribing the client's actual library,' you've crossed from build into migration, and the volume is what makes the difference. There's no magic page number, but the test is intent: are you adding content to show the machine works, or to fill the client's site so it can launch? The first is part of building; the second is population. If you find yourself formatting the client's tenth real page, you're doing migration, and it's worth pausing to scope it rather than letting it accumulate unbilled because each page felt small in the moment.

Should I hand-enter content or write an import script?+

Pick whichever is genuinely cheaper for the volume and shape of the content, and bill it accordingly. Hand-entry makes sense for small or highly inconsistent libraries where every page needs human judgment to place correctly — automation can't easily clean up source material that's a mess in a hundred unique ways. A migration script makes sense when the content is large and reasonably structured, where the upfront engineering of an importer pays off across hundreds of records. Crucially, both are billable: hand-entry by volume or time, the script as engineering work. Clients sometimes assume a script is free because 'the computer does it,' but writing a reliable importer that handles the client's specific data quirks is real development. Estimate both paths, quote the cheaper one, and don't let the existence of an automated option turn into an expectation that migration costs nothing.

The client's source content is a mess — does cleaning it up fall on me?+

Not by default, and this is exactly where unscoped migration gets painful. There's a difference between loading clean content into the CMS and fixing content that's inconsistent, incomplete, or badly formatted before it can be loaded. The second is editorial cleanup — restructuring, rewriting, chasing missing images, reconciling contradictions — and it's a separate and often larger job than the entry itself. If you agreed to populate content, that fairly means content that arrives in a usable state, not raw material you have to repair first. When the source is a mess, flag it early: 'I can load your content, but a lot of it needs cleanup before it'll fit the structure — do you want to tidy it on your side, or should I quote that as editorial work?' Otherwise you absorb an invisible job that dwarfs the data entry you actually signed up for.

Can I just give the client access and have them load their own content?+

Often that's the best outcome for everyone, and it's worth offering as the default. The whole point of building a CMS is that content becomes manageable without a developer, so handing the client a working system plus a short guide on how to add content lets them self-serve at no extra cost. Many clients prefer this once they understand the volume — they'd rather spend their own staff's time than pay your rate for data entry, and they end up knowing their system better for having filled it. Make it easy: a clean editing interface, a brief written or recorded walkthrough, and your availability for genuine questions during a short support window. Reserve paid migration for clients who explicitly don't want to do it themselves or whose volume justifies automation. Self-service keeps the clerical work off your plate while still leaving the client fully served.

What if I quoted the project assuming I'd load the content and now realize there's way more than expected?+

Then you priced against an unknown that turned out larger, and the honest move is to surface it rather than silently eat it. If you genuinely committed to loading the content but did so before knowing the volume, you share some responsibility for not quantifying it — but a tenfold surprise is a material change worth raising. Go back with specifics: 'When we scoped this I assumed roughly ten pages; it's turning out to be closer to a hundred, which is a different amount of work. Here's how I'd suggest we handle it.' Offer options — a change order for the extra volume, the client loading the overflow themselves, or an import script if automation now makes sense. Clients generally respond well to a clear, early, numbers-based conversation. The lesson for next time is to count the content before you quote, because 'all our pages' is a number that hides until you ask.

Answer scope creep from your actual contract — not a template.

Settled reads your contract and the client's request, gives you a verdict (In Scope / Out of Scope / Ambiguous), and drafts the email grounded in your specific clause.