Skip to content
notionsolutions

A practical library for building,
organizing and working in Notion.

Workflow guides

Notion Content Calendar: Build One Database for Posts, Deadlines and Social

A Notion content calendar is one database with a page per piece, a Publish date, a Status and a Type, shown as a calendar by publish date with a board by Status. Add two deadlines, a template per content type, a related Social posts database with a promo count, and Notion Calendar for your dates.

Published
A white ceramic tray divided into a planner grid, with a diagonal line of blue glass tiles, a parallel line of frosted tiles a few compartments earlier and two steel pins wired to blue tiles
Each piece gets two dates: the calendar plots when it goes live, and the internal deadline says when the draft is due.

A Notion content calendar is one database with a page per piece, a Publish date, a Status and a Type, shown as a Calendar view by publish date with a Board grouped by Status beside it. I'd build it from scratch rather than from a gallery template. It takes two date properties, a few status stages and a template per content type, and you'll know why each is there. Social posts get a related database once they need their own dates, the way Notion's marketing team runs its calendar.

If you publish on one or two channels for yourself, one database with a calendar and a board is the whole system. If you produce for several clients, or run social posts alongside long-form work, add a Client relation and a related Social posts database and keep everything else the same. Borrow a template's look if you like it, but keep the database underneath your own.

Build one database with a short property list

Notion's calendar view needs a Date property to place anything, so create the database as a calendar from the start: on a new page, under Get started with, click ••• → Calendar. On a page you already use, type /Calendar view and press Enter. If your content list already lives in a table, click + next to the database name and pick Calendar; the pages stay where they are, and you get a new way to see them.

Then add properties. Notion's guide to its own marketing calendar suggests "Writer for a Person property", "Deadline for a Date property", "Type for a Select property to tag blog posts, videos, social media updates" and "a Checkbox property called SEO Checklist". The set below keeps those ideas and splits the one deadline into two, because a publish date and the date a draft is due answer different questions.

Content calendar properties: type and job
PropertyTypeWhy it's there
NameTitleOne page per piece. The page body holds the brief, outline and draft, so the work sits where it's tracked.
Publish dateDateThe external date the calendar plots. Notion describes the Date type as "Useful for deadlines, especially with calendar and timeline views."
Internal deadlineDate or FormulaWhen the draft is due to you or your editor. The choice between the two types is covered below.
StatusStatusThe pipeline stages that drive the board.
TypeSelectBlog post, Newsletter, Video, Social. One value per piece keeps filters simple.
OwnerPersonWho writes it. A Person property can tag members or guests.
ClientRelationOnly if you produce for several clients: links each piece to the client's record.
SEO checklistCheckboxOne box for the pre-publish pass, taken from Notion's guide.
Live URLURLWhere the piece went live, filled in after publishing.
Social postsRelationLinks to the social database once you split it out.

Start with Name, Publish date, Status and Type. Add Owner when a second person writes, Client when a second client arrives, and the social relation when promo posts get their own schedule. Every type in the table comes from Notion's list of database property types, and a database can hold up to 500 properties, so the limit you'll hit first is how much a card can show.

For Status, Notion fixes three groups, To-do, In Progress and Complete, and you add your own stages under them. The status property guide uses content work as its example: "1st Draft, 2nd Draft, Editing" sit under In Progress as "the different stages of creating a piece of content", while "Ready to Publish" and "Published" sit under Complete. For a calendar I'd use Idea and Planned under To-do; Drafting, Editing and Client review under In Progress; and Scheduled and Published under Complete. The guide also puts "Waiting" under In Progress for work that needs approval, which is where a client review belongs. Status beats a Select here for the reason the same guide gives: with a Select, "anyone can just type in a whole new category, without knowing that a similar one already exists." The longer comparison is in Notion Status vs Select for project tracking.

A Client relation needs a Clients database to point at. If you don't have one yet, building the client and project relation walks through the same pattern with projects in place of content pieces.

Give the calendar four views, not ten

Notion's own collection of content calendar templates warns that "too many sections, filters, or views can make it difficult to quickly understand what's due and when." I'd stop at four views on the database and one linked view on the page your team or client opens first. If you're still deciding which layout answers which question, choosing a Notion view by the question it answers covers the layouts themselves; the set below is the one I'd pick for content.

Calendar by publish date

This is the main view. Drag a card to another day and the Publish date changes on the page itself; drag a card's left or right edge and it spans several days. Show the useful properties on the card from the settings menu → Property visibility, using the eye icon to show or hide each one and the ⋮⋮ handle to set the order. Type, Status and Owner are enough for most cards.

If your database has more than one Date property, click Show calendar by and pick the property the view should use. That's how you get a separate deadline calendar from the same pages. Calendar layouts open pages in center peek, and if you write drafts inside the page, Layout → Open pages in → Full page gives the draft the whole screen. Notion picks Sunday or Monday as the first day of the week by region, and you can change it under Settings → Preferences → Start week on Monday, which applies to calendar databases and the reminder date picker.

A week calendar for busy weeks

When most days hold more than one piece, month cells get crowded. Duplicate the calendar view and set Layout → Show calendar as → Week. Each view keeps its own settings, so the month view stays as it was.

A board by Status

A board answers "where is each piece stuck?" Add it with + → Board, and Notion's board view help says it groups by your Status property by default. Dragging a card between columns changes its Status, and the gray number next to each column heading counts its cards. Column design, card layout and keeping Published from swallowing the board are covered in the Notion kanban board guide.

An upcoming table

A table filtered to everything not yet Published and sorted by Publish date gives you the queue in date order, including pieces still waiting for a date. When you add the filter, Notion's views, filters and sorts help offers Save for everyone; leave it off and the filter applies only to you.

A linked "going live this week" view

Notion's marketing team keeps "a view of the content calendar showing content going live this week" at the top of its team wiki. That's a linked view of the same database, so nothing is copied: the original pages appear there, and what an edit in that view changes is covered in whether editing a linked database changes the original. A "this week" filter needs a clear definition of the week, and the weekly review dashboard guide shows how to set one instead of trusting the label.

Timeline is the other date layout, but Notion's timeline view only works when the database has a date property holding a range of dates, so it suits multi-day campaigns better than single publish dates.

Give each piece two deadlines

Notion's marketing team runs two: "We have internal and external deadlines (and views for each of these)". The external one is the Publish date. The internal one is when the draft is due, and you can set it up in two ways.

  1. A second Date property. You type or pick it for each piece, it can get its own calendar through Show calendar by, and the date picker's Remind option can notify you on that date and time. It doesn't move when the publish date moves; you move it yourself.
  2. A formula. dateSubtract(prop("Publish date"), 3, "days") recalculates whenever the publish date changes. Notion's formula syntax reference lists dateSubtract with the units "years", "quarters", "months", "weeks", "days", "hours" or "minutes".

I'd use the formula when the gap is fixed, say every blog draft due three days before it goes live. When deadlines get agreed piece by piece with a client or a guest writer, a separate Date property is the honest choice, because a formula would overwrite the agreement every time the publish date shifts. One more consequence decides it for some people: Notion Calendar treats dates generated by a Formula as read-only, so a formula deadline can be seen there but not dragged.

A day in dateSubtract is a calendar day, and the unit list has no workday option. A three-day gap from a Tuesday publish date lands on a Saturday. If your deadlines should stay on weekdays, this version uses only functions from the same reference (let, ifs and day, where day returns 1 for Monday through 7 for Sunday) and moves a weekend result back to Friday:

let(d, dateSubtract(prop("Publish date"), 3, "days"),
  ifs(day(d) == 6, dateSubtract(d, 1, "days"),
      day(d) == 7, dateSubtract(d, 2, "days"),
      d))

If the formula shows an error or a blank, the guide to Notion formula date errors traces the usual input problems, starting with a date that turns out to be text.

Make a template for each content type

A blog post, a newsletter and a video need different pages, and database templates let each new piece start with the right properties and the right body. Click the dropdown arrow next to New → + New template, name it (the page title becomes the template's name), set the property values, and build the page body. Notion's marketing guide suggests a creative brief, an outline and content-specific pages: a blog template "can contain content ideas, research, a draft of the article, and all edits," and a video template can hold the shot list and script.

I'd make four to start: Blog post, Newsletter, Video and Social batch, each setting Type and holding the checklist that type needs. Templates exist only in the database where you made them, and there's no limit on how many you create. One rule from the same help page matters for client work: if a template fills in a relation, every page made from it relates to the same page. Leave Client empty in a shared template, or make one template per client on purpose. If every new piece already points at one client, why every new task links to the same client shows where that value comes from.

A weekly newsletter can come from a repeating template. Open the dropdown next to New, click ••• next to the template and set Repeat: daily, weekly, monthly or yearly, with the interval, start date and time. You can't nest a template inside one that repeats daily, and a template allows three levels of nesting. Whether a recurring piece should follow the calendar or the last finished issue is a separate choice, covered in Notion recurring tasks: schedule or repeat after completion.

Automations can handle the hand-offs, such as assigning an editor when Status changes to Editing. Notion's database automations help says they're "available on paid plans on all platforms", and the pricing page lists Free as "Basic buttons only" and Plus as "Custom database automations". The automation moves the assignment; you still decide who edits which piece. A page created by a repeating template won't trigger a database automation, while a button that creates a page will, and why a repeating template doesn't trigger your automation covers the workarounds.

Plan social posts in a second, related database

Notion's marketing team runs "one database for all our content and another for social media," joined by a relation: "If we're launching a new video, we can see all the tweets, Instagram and LinkedIn posts we plan on publishing to support that video." That's the setup I'd copy for a social media plan in Notion, with one condition. While promo posts are few and go out the same day as the piece, a Type option called Social in the main database is enough. Once social posts outnumber the main pieces or get their own schedule, three posts over a week for one video for example, split them out. When two lists belong in one database goes through the same test for any pair of lists.

The social database needs only a few properties: a title, a Post date (Date), a Platform (Select), a Status, and the post copy in the page body. Then connect it to the content database:

  1. In the social database, add a property and choose Relation, then pick the content database.
  2. Turn on Show on [content database] so the link appears on both sides, name the matching property Social posts, and click Add relation.
  3. Limit the relation on the social side to 1 page, so each post supports one main piece.
  4. In the content database, add a Rollup on the Social posts relation, pick the posts' title as the property and Count all as the calculation, and name it Promo posts.

Each step follows Notion's relations and rollups help, which also notes that rollups sort only when they output a number. A count is a number, so you can sort the upcoming table by Promo posts and see the pieces with zero at the top. The rollup shows the zero; you still decide whether that newsletter needs a promo post at all.

Two linked databases: a Content database with Blog post 1 showing 2 promo posts and Newsletter 1 showing 0, and a Social posts database whose two posts for Blog post 1, on Feb 2 and Feb 5, connect back to it through a relation
Each social post points to one main piece, and the Promo posts rollup counts them, so a piece with zero stands out.

Give the social database its own Calendar view by Post date. That's your social media content planner, and because each post links back to its main piece, opening a post shows which launch it serves.

See publish dates in Notion Calendar

Notion Calendar is a separate app that shows database dates next to your meetings, and it comes with every plan, Free included. Notion's guide to using Notion Calendar with Notion sets out how to connect and what you can change from there.

  1. Open Notion Calendar on desktop or web, go to Settings → Notion workspaces → Add Notion workspace. The connection is made per user, so each person on the team connects their own, and each workspace needs its own connection even under the same email address.
  2. In Notion Calendar's left sidebar, hover over the workspace's calendar name and choose ••• → Add Notion database, or press O. From Notion, click the view's name and choose Manage in Notion Calendar.
  3. With two date properties, pick Publish date as the primary property. The slider icon above the database's list panel changes it later, along with the color, a Status filter and a Date filter. The Date filter can show only pages with no date, which is a quick way to find unscheduled ideas.

The limits are specific. You can add a database only from Notion Calendar for desktop or web, and up to 20 databases in total. Connecting needs at least Can view access; editing or adding pages needs Can edit content, otherwise you can only view. The help also says "you can only view your Notion database in Notion Calendar, not in Google or iCloud calendar." Duplicating an item there creates a page with the same title and date and nothing else, so new pieces should still start from your templates in Notion.

Under Settings → Calendars → Default calendar you can make the content database the place where every new Notion Calendar event lands. I'd leave that off for a content calendar, or a quick call you add would show up as a content page. I'd use Notion Calendar to see publish dates beside meetings and to move a date when a week gets tight. Owner can't be changed there, because Person properties are read-only, and the help contradicts itself on multi-select: the edit panel allows select "but not multi-select" properties, while its list of manageable properties includes "Select and multi-select". That's one more reason to keep Type as a Select.

Share the calendar with a client or a freelance team

Review rounds work best on the piece's page. Hover at the top of the page and click Add comment, @-mention the reviewer, and resolve the thread with the checkmark when it's done. Notion's comments and mentions help says adding someone to a Person property sends the same kind of notification as an @-mention, and that someone mentioned on a page they can't access isn't notified. For a dated review, set Remind on the deadline's Date property; if a reminder never shows up, the missing Inbox reminder checklist separates the Inbox entry from the device alert.

Clients usually join as guests. Notion's pricing page sets the external guest limit at 10 on Free and lists unlimited guests on paid plans, and adds that "Guests are free of charge - but they can only access individual pages they are invited to." Paid plans charge per member, so whether a regular freelance writer should be a guest or a member is worth deciding on purpose; Notion guest vs member compares the two.

A client page with a filtered linked view looks like the right kind of privacy, but it isn't. Notion's linked data source help says every linked data source "will respect the access level of the original database", so people get the same access to those records that they have in the original. A filter hides rows on screen; it doesn't control who can open them. Notion client portal permissions shows how to share only the right records. One more limit for multi-client work: boards can't group by a relation, so a per-client board uses a filter on Client rather than one column per client.

New content requests can come in through a Notion form, which every plan can create; each question maps to a property, and responses land in the database, in a Table view named Responses. The form handles collection; you still decide which request becomes a scheduled piece and who owns it. Notion forms for client intake covers the setup and the follow-up.

Don't publish the calendar itself to the web. Notion's web publishing help says publishing a page publishes all its subpages, and that the page's metadata includes the names, profile photos and email addresses of the Notion users who contributed to it.

Template or build: check it before you move in

Notion's content calendar template category lists 1,152 templates, and its top 10 free content calendar collection gives sensible criteria: look for a clear layout, integration with your tools, customizable tags, statuses and categories, and tracking such as "status indicators and deadline reminders"; avoid overly complex layouts, templates that "lock you into specific time slots", and fields you can't change. Those criteria turn into a check you can run on any template before you move real work into it:

If a template passes, copying its layout is fine. I'd still keep my own database and rebuild the views on it, because the property names and status stages are the parts you'll live with every day. Notion templates for freelancers covers the same inspection for paid templates, along with dependencies and client access.

Content calendar setups, compared

This comparison works from Notion's documented behavior and one computed example month. Each row states the setting and the limit that comes with it.

The view set: question, setting and limit
ViewQuestion it answersSettingLimit or condition
Calendar by Publish dateWhat goes live when?+ → Calendar; Show calendar by → Publish dateNeeds a Date property. Opens pages in center peek unless you change it.
Week calendarWhat's happening this week, card by card?Layout → Show calendar as → WeekA daily view exists on mobile, by tapping a date.
Deadline calendarWhich drafts are due?Show calendar by → Internal deadlineDocumented for Date properties; a formula deadline still shows on cards and in the upcoming table.
Board by StatusWhere is each piece stuck?+ → Board, grouped by Status by defaultCan't group by a relation or formula.
Upcoming tableWhat isn't out yet, in date order?Filter on Status, sort by Publish date, Save for everyone if sharedEach view keeps its own settings.
Linked "this week" viewWhat's coming out this week?A linked view of the same database on the team or client pageRespects the original database's access.
Internal deadline: second Date property or formula
SetupWhen Publish date movesSet by handIn Notion CalendarChoose it when
Second Date propertyStays put until you move itYes, with Remind in the date pickerEditable with Can edit contentDeadlines are agreed piece by piece
dateSubtract(prop("Publish date"), 3, "days")RecalculatesNo, it's calculatedRead-onlyThe gap between draft and publish is fixed
Weekend-shift formula (let, ifs, day)Recalculates, then moves Saturday or Sunday to FridayNo, it's calculatedRead-onlyThe gap is fixed and deadlines should fall on weekdays
What you can change from Notion Calendar
PropertyIn Notion Calendar
Title, Date, Status, Checkboxes, database page iconManageable
SelectManageable, including from the edit panel
Multi-selectListed as manageable, but the edit panel says "not multi-select"
TextManageable; rich text works, functions and mentions don't
Person (Owner), IDRead only
Dates from Formula, Created time or Last edited timeRead-only

A worked month

Here is the calendar applied to an example February in 2027, a month that starts on a Monday and has four Tuesdays and four Thursdays: four blog posts on Tuesdays, four newsletters on Thursdays, and eight social posts, two for each blog post, on its publish day and the Friday after. Every deadline below is computed with the two formulas above.

Example February 2027: publish dates and computed internal deadlines
PiecePublish date3-day dateSubtractWeekend-shift formulaPromo posts (rollup)
Blog post 1Tue Feb 2Sat Jan 30Fri Jan 292
Newsletter 1Thu Feb 4Mon Feb 1Mon Feb 10
Blog post 2Tue Feb 9Sat Feb 6Fri Feb 52
Newsletter 2Thu Feb 11Mon Feb 8Mon Feb 80
Blog post 3Tue Feb 16Sat Feb 13Fri Feb 122
Newsletter 3Thu Feb 18Mon Feb 15Mon Feb 150
Blog post 4Tue Feb 23Sat Feb 20Fri Feb 192
Newsletter 4Thu Feb 25Mon Feb 22Mon Feb 220

The social posts go out on Feb 2 and 5, 9 and 12, 16 and 19, and 23 and 26. That's 16 dated pieces across two databases plus eight internal deadlines in one month, and the example shows four things a plain setup would miss:

February 2027 month grid starting Monday, with blog posts on Tuesdays 2, 9, 16 and 23, newsletters on Thursdays 4 to 25, draft deadlines on Mondays and Fridays, promo chips on blog publish days and the Fridays after, and the first blog draft due January 29 in a separate January cell
In this example month the first draft is due in January, and three Fridays hold a draft deadline and a promo post at once.

The setup I'd start with

One content database with a page per piece, a Status-driven board and a calendar by Publish date. Add the internal deadline as a formula when the gap is fixed, and as a second Date property when deadlines are agreed one piece at a time. Give each content type its own template, leave relations empty in shared templates, and split social posts into a related database with a Promo posts count once they need their own dates. Use Notion Calendar to see publish dates beside your meetings, not as the place where you assign work. Start with four properties and two views, and add the rest only when a real piece of work asks for it.

Questions about Notion content calendars

Can I change how dates look on the calendar?

Per property, yes: open a date and choose Date format & timezone in the date picker. A default date format for every Date property isn't available; Notion's calendar help answers that one with "Not at the moment, unfortunately."

Why can't I scroll back to last month?

Scrolling only moves forward. Use the < and > arrows around Today at the top right to go back, and the calendar will remember the date range you viewed last.

Can I bring my Google Calendar into the Notion content calendar?

Only as a view-only embed. Notion's calendar help says you can embed a view-only Google Calendar into Notion when it uses the same email address as your Notion account, and points to the Notion API for anything that should sync.

Plan the content workflow