Templates / Content calendar
Content calendar template
The column structure, then four weeks of filled rows so you can see what a realistic month actually looks like before you commit to one.
Most content calendars die in week three. Not because the team stopped caring, but because the calendar only tracked what to publish and never tracked who owed what by when.
This template adds the two columns that keep it alive: draft due, which is always earlier than publish date, and owner, which is always a person and never a team.
Below the column list you get four filled weeks for a made up project management app selling to small agencies. Copy the structure, keep the cadence, swap the topics for yours.
How to use it
- 01Create a sheet and paste the header row from the first block into row one. Freeze row one.
- 02Fill the publish date column for the next four weeks first, before you have any topics. An empty dated row is a prompt. A topic with no date is a wish.
- 03Work backwards on draft due: publish date minus five working days for blog posts, minus two for social, minus three for the newsletter.
- 04Assign every row to a named person. If a row has no owner, delete the row or find the owner today.
- 05Fill the repurpose column at the same time you plan the original. One blog post should feed at least two other slots that month.
- 06Review every Friday for fifteen minutes: move slipped rows, mark done rows, and add the next week so the calendar never has fewer than three weeks ahead of it.
The template
Header row. Copy this into row one.
Ten columns. Each one earns its place. Adding an eleventh is usually how the calendar starts getting ignored.
Publish date | Channel | Working title | Owner | Draft due | Audience | Primary keyword | Call to action | Repurpose into | Status
What goes in each column
Read this once, then never again. The definitions are what keep two people filling the sheet the same way.
Publish date: the day it goes live. A real date, never a week number.
Channel: blog, newsletter, LinkedIn, Instagram, YouTube, email campaign, podcast. One channel per row.
Working title: a full sentence, not a topic. Weekly project reviews is a topic. How to run a weekly project review people do not dread is a title.
Owner: one named person. Not marketing, not the agency.
Draft due: the date the finished draft lands for review, always before publish date.
Audience: which persona this is for. If you cannot name one, the piece is for nobody.
Primary keyword: the search term for search pieces. Write none for social and newsletter rows rather than leaving it blank.
Call to action: the single thing you want the reader to do. One per row.
Repurpose into: where this piece goes next. Fill it now, not after publishing.
Status: Idea, Briefed, Drafting, In review, Scheduled, Live, Killed.
Week 1. Theme: running better project reviews
Filled example for a project management app sold to small agencies. Two blog posts, two social, one newsletter.
Mon Mar 2 | Blog | How to run a weekly project review people do not dread | [WRITER] | Feb 24 | Agency ops lead | weekly project review | Download the review agenda | LinkedIn carousel, newsletter lead | Scheduled
Tue Mar 3 | LinkedIn | The five questions we ask in every project review | [SOCIAL OWNER] | Mar 1 | Agency ops lead | none | Comment agenda for the doc | Cut from Monday blog | Drafted
Wed Mar 4 | Newsletter | Issue 41: the meeting nobody skips | [EDITOR] | Mar 2 | Full list | none | Read the full post | Intro reused as blog opener | Drafted
Thu Mar 5 | Blog | Project review agenda template for agency teams | [WRITER] | Feb 26 | Agency ops lead | project review agenda template | Download the agenda | Sales follow up attachment | In review
Fri Mar 6 | Instagram | Behind the scenes: our own Friday wrap up | [SOCIAL OWNER] | Mar 4 | Prospects | none | Follow | Reuse in hiring posts | Idea
Week 2. Theme: client reporting
Same rhythm, new theme. Notice the guest post row with a longer lead time.
Mon Mar 9 | Blog | What clients actually read in your status report | [WRITER] | Mar 3 | Account manager | client status report | Try the report builder | LinkedIn post, newsletter lead | Drafting
Tue Mar 10 | LinkedIn | Three lines every client report should open with | [SOCIAL OWNER] | Mar 6 | Account manager | none | Link to the post | Cut from Monday blog | Idea
Wed Mar 11 | Newsletter | Issue 42: the report your client forwards | [EDITOR] | Mar 9 | Full list | none | Read the full post | None | Idea
Thu Mar 12 | Blog | Monthly client report template, filled in | [WRITER] | Mar 5 | Account manager | monthly client report template | Download the template | Onboarding email attachment | Briefed
Fri Mar 13 | Guest post | How small agencies keep clients past year one | [FOUNDER] | Feb 27 | Agency owner | none | Link back to the blog | Newsletter mention when live | In review
Week 3. Theme: onboarding a new client
This is the week the email campaign runs, so social volume drops on purpose.
Mon Mar 16 | Blog | The first seven days of a new client, step by step | [WRITER] | Mar 10 | Agency owner | client onboarding process | Book a walkthrough | Email campaign body, LinkedIn | Drafting
Tue Mar 17 | Email campaign | Onboarding kit for agencies, three email series | [EDITOR] | Mar 11 | Trial signups, last 90 days | none | Book a walkthrough | Reuse email 2 as blog post | Briefed
Wed Mar 18 | Newsletter | Issue 43: week one decides year one | [EDITOR] | Mar 16 | Full list | none | Read the full post | None | Idea
Thu Mar 19 | Blog | Client onboarding checklist for agencies | [WRITER] | Mar 12 | Agency owner | client onboarding checklist | Download the checklist | Sales follow up, LinkedIn | Briefed
Fri Mar 20 | LinkedIn | The onboarding question we ask before the kickoff call | [SOCIAL OWNER] | Mar 18 | Agency owner | none | Comment kit for the checklist | Cut from Thursday blog | Idea
Week 4. Theme: capacity and the monthly recap
End of month gets one forward looking piece and one look back. Keep the recap short or it becomes a chore.
Mon Mar 23 | Blog | How to tell if your team is actually at capacity | [WRITER] | Mar 17 | Agency owner | team capacity planning | Try the capacity view | LinkedIn, newsletter lead | Idea
Tue Mar 24 | LinkedIn | Utilization is not the same as busy | [SOCIAL OWNER] | Mar 20 | Agency owner | none | Link to the post | Cut from Monday blog | Idea
Wed Mar 25 | Newsletter | Issue 44: everything we published in March | [EDITOR] | Mar 23 | Full list | none | Reply with what to cover next | None | Idea
Thu Mar 26 | Blog | Capacity planning spreadsheet for agency teams | [WRITER] | Mar 19 | Agency ops lead | capacity planning spreadsheet | Download the spreadsheet | Sales follow up | Idea
Fri Mar 27 | Instagram | Team pick: the tool we use that is not ours | [SOCIAL OWNER] | Mar 25 | Prospects | none | Follow | Reuse in newsletter footer | Idea
The monthly rhythm underneath those four weeks
If you copy nothing else, copy the shape.
Two blog posts a week: one opinion or how to on Monday, one template or checklist on Thursday.
One newsletter a week on Wednesday, built from the Monday post so it costs you thirty minutes, not three hours.
Two to three social posts a week, all of them cut from that week blog posts. Nothing written from scratch.
One bigger swing a month: a guest post, a campaign, a webinar, a research piece.
One theme per week. Four themes a month. Every piece in a week points at the same reader problem.
One recap at month end, which is also your check that the calendar was real.
Status values and what they mean
Shared definitions stop the weekly review turning into a status interrogation.
Idea: dated and owned, nothing written. Fine to sit here for two weeks, not four.
Briefed: the writer has a brief with the angle, audience and keyword agreed.
Drafting: someone is writing it right now.
In review: draft is done and waiting on a named reviewer. Put the reviewer name in the cell.
Scheduled: loaded into the tool with the publish date set.
Live: published, links checked.
Killed: deliberately dropped. Keep the row, do not delete it. Killed rows tell you what you keep over planning.
Friday review, fifteen minutes
The whole maintenance cost of the calendar.
Move anything that slipped to a new date rather than leaving it in the past. A calendar with overdue rows stops being read.
Mark last week rows Live and paste the URL in the working title cell.
Add one new week so you always have at least three weeks planned ahead.
Look at the owner column. If one person owns more than half of next week, rebalance now.
Kill anything that has been an Idea for a month. It is not happening.
Where this usually goes wrong
- Tracking publish date but not draft due. The draft is what slips, and without its own column nobody notices until publish day.
- Assigning rows to a team instead of a person. Everyone assumes someone else has it.
- Planning six months out. Anything past four weeks changes before you get there, and the time spent planning it is gone.
- Filling the repurpose column after publishing, which means never. Decide the second use while the piece is still being planned.
- Adding columns until the sheet needs horizontal scrolling. Ten columns fit on a screen, and a calendar nobody can see at a glance is a calendar nobody opens.
Common questions
How far ahead should a content calendar be planned?
Four weeks in detail, with themes sketched for the two months after that. Detail past four weeks tends to get rewritten before it ships.
Should social posts live in the same calendar as blog posts?
Yes, if you want repurposing to actually happen. Seeing the Monday blog and the Tuesday social post in adjacent rows is what makes the connection obvious. Split them only when different teams own them and neither will look at the other sheet.
What is a realistic publishing cadence for a small team?
The example above assumes one writer and one social owner. If you have less than that, cut to one blog post a week and keep the newsletter. Cadence you can hold beats cadence you announce.
Where does keyword research fit into this?
Before the calendar, not inside it. Do a research pass, pick the terms worth writing for, then drop one term per search focused row. Creaiter can run the keyword research and drop the terms straight into the plan, but the calendar still needs a human deciding the order.
Related templates