Social Media Posting Schedule Template (Free)

Social Media Posting Schedule Template (Free)

A posting schedule template you can copy inline, with slot grids for one to four channels, how to choose times, and how to test them properly.

A posting schedule is a fixed set of slots: which channel, which day, which time. Fixing the slots once removes a decision you would otherwise make every week, and it is the thing that makes batching and queues work at all.

The template is below, inline and ungated. Pick the version matching your channel count, fill in your times, and stop deciding.

The template

# Posting Schedule: [BRAND NAME]
**Timezone:** [TIMEZONE, e.g. Europe/London]
**Set on:** [DATE]  **Next review:** [DATE + 90 DAYS]
**Posts per week:** [N]  **Slots per week:** [N]  **Buffer left empty:** [N]

## Weekly slot grid

| Slot | Day | Time | Channel | Pillar | Format | Owner |
|---|---|---|---|---|---|---|
| 1 | Mon | [HH:MM] | [PLATFORM] | [PILLAR] | [FORMAT] | [NAME] |
| 2 | Mon | [HH:MM] | [PLATFORM] | [PILLAR] | [FORMAT] | [NAME] |
| 3 | Tue | [HH:MM] | [PLATFORM] | [PILLAR] | [FORMAT] | [NAME] |
| 4 | Wed | [HH:MM] | [PLATFORM] | [PILLAR] | [FORMAT] | [NAME] |
| 5 | Wed | [HH:MM] | [PLATFORM] | [PILLAR] | [FORMAT] | [NAME] |
| 6 | Thu | [HH:MM] | [PLATFORM] | [PILLAR] | [FORMAT] | [NAME] |
| 7 | Fri | [HH:MM] | [PLATFORM] | [PILLAR] | [FORMAT] | [NAME] |
| 8 | Fri | [HH:MM] | [PLATFORM] | [PILLAR] | [FORMAT] | [RESERVED: reactive] |

**Reserved slots (leave empty at planning time):** [LIST SLOT NUMBERS]
**Never post:** [DAYS/TIMES, e.g. after 18:00 Friday, public holidays]

## Recurring anchors

| What | Cadence | Slot | Notes |
|---|---|---|---|
| [e.g. weekly roundup] | Weekly | [N] | [NOTES] |
| [e.g. monthly customer story] | Monthly | [N] | [NOTES] |
| [e.g. quarterly product update] | Quarterly | [N] | [NOTES] |

## Test log

| Period | What we changed | Posts in test | Result | Kept? |
|---|---|---|---|---|
| [DATES] | [e.g. moved slot 3 from 09:00 to 12:30] | [N] | [METRIC before / after] | [Y/N] |

One channel, starting out

| Slot | Day | Time | Pillar | Format |
|---|---|---|---|---|
| 1 | Tue | [HH:MM] | [PILLAR] | [FORMAT] |
| 2 | Thu | [HH:MM] | [PILLAR] | [FORMAT] |
| 3 | Sat | [HH:MM] | [PILLAR] | [FORMAT] |

Three posts a week you sustain beats seven you abandon in month two.

Two channels, small team

| Slot | Day | Time | Channel | Pillar | Format |
|---|---|---|---|---|---|
| 1 | Mon | [HH:MM] | [PRIMARY] | [PILLAR] | [FORMAT] |
| 2 | Tue | [HH:MM] | [SECONDARY] | [PILLAR] | Repurposed from slot 1 |
| 3 | Wed | [HH:MM] | [PRIMARY] | [PILLAR] | [FORMAT] |
| 4 | Thu | [HH:MM] | [SECONDARY] | [PILLAR] | [FORMAT] |
| 5 | Fri | [HH:MM] | [PRIMARY] | [PILLAR] | [FORMAT] |
| 6 | Fri | [HH:MM] | [EITHER] | Reactive | Reserved |

Four channels, one full-time person

| Slot | Day | Time | Channel | Source |
|---|---|---|---|---|
| 1 | Mon | [HH:MM] | [PRIMARY] | Original |
| 2 | Mon | [HH:MM] | [PLATFORM 2] | Adapted from slot 1 |
| 3 | Tue | [HH:MM] | [PRIMARY] | Original |
| 4 | Tue | [HH:MM] | [PLATFORM 3] | Adapted from slot 3 |
| 5 | Wed | [HH:MM] | [PRIMARY] | Original |
| 6 | Wed | [HH:MM] | [PLATFORM 4] | Adapted from slot 5 |
| 7 | Thu | [HH:MM] | [PRIMARY] | Original |
| 8 | Thu | [HH:MM] | [PLATFORM 2] | Original |
| 9 | Fri | [HH:MM] | [PRIMARY] | Recycled, 3+ months old |
| 10 | Fri | [HH:MM] | [EITHER] | Reserved: reactive |

Notice how few originals there are. Four channels does not mean four times the writing, and a schedule that assumes it does is a schedule that fails in week three.

How to choose the times

Start with your own data, not an article. Open your analytics, look at when your existing posts got the most reach, and start there. Your audience is not the average audience.

If you have no data, start with three sane slots and treat them as a hypothesis: one mid-morning, one early afternoon, one evening, on different days. Then test.

Set the timezone once, at the top of the document. Multi-timezone audiences are the most common source of quiet underperformance, and there is no clever fix: pick your largest audience region and schedule for it.

Our free best-time tools give a starting point per platform, and the honest version of the advice is that published “best times” are averages across millions of accounts and are worth exactly one round of testing against your own numbers.

How to test a slot properly

The test log in the template exists because most posting-time changes are evaluated on two posts and a feeling.

  • Change one thing. One slot, one time, nothing else.
  • Give it at least eight posts in that slot. Fewer than that and you are measuring which post was good, not which time was good.
  • Compare against the same slot’s previous eight, not against a different slot.
  • Compare a rate, not a total. Reach per post, or engagement rate, since post counts will differ.
  • Expect small effects. Timing usually moves reach by less than format or topic does. If a time change appears to double your numbers, something else changed too.

Log the result either way. A slot you tested and kept is worth recording, otherwise you will retest it next year.

How often to change it

Review quarterly. Change nothing in between unless something breaks.

The reason is that a posting schedule’s main value is that it is fixed. Every change resets the comparison baseline, and an account whose times move monthly can never tell whether timing matters at all.

Do change it when your audience shifts region, when a platform materially changes how it distributes content, or when your capacity changes. Do not change it because a post did badly.

What most people get wrong

Too many slots. The most common failure is a schedule built for the enthusiasm of week one. Count your realistic weekly production, then fill three quarters of it.

No reserved slots. If every slot is planned, there is nowhere for anything reactive, and reactive posts end up published on top of scheduled ones.

Posting to every channel at the same minute. Same time everywhere means the same person sees the same thing three times in three feeds. Stagger by at least a few hours.

Copying a schedule from an article. Including this one. The grids above are shapes, not times.

Ignoring the timezone field. A schedule with no stated timezone will eventually be misread by someone, usually during a handover.

Changing times constantly. Every change costs you the ability to interpret the previous three months.

Turning the grid into an actual queue

A posting schedule is only fixed if something enforces it. On paper it decays within about six weeks.

The practical version is a queue: define the slots once, then add posts to the queue rather than picking a date and time for each one. BulkPublish’s calendar and queue does that, so a batch of 12 drafts drops into the next 12 open slots in order and the grid above stays true without anyone maintaining it. Recurring anchors from the template map onto repeat posts, which is where a weekly roundup belongs rather than in a reminder. If you want to see what the current schedule costs in hours, our time cost calculator is a quick sanity check before you add slots.

  • Channels: Free: 3 (1 per platform). Pro: 30 (2 per platform). Business: 75 (5 per platform).
  • Posts: Free: 3/day. Pro: 30/day. Business: unlimited.

The short version

Fix the slots once: day, time, channel, pillar, owner. State the timezone. Reserve a quarter of the slots for reactive posts. Start from your own analytics rather than published averages. Test one slot at a time over at least eight posts and log the result. Review quarterly and otherwise leave it alone.