Scheduling

Bulk CSV Import: Schedule a Month of Posts

Plan your posts in a spreadsheet, upload the CSV, and SocialPatra validates every row and schedules the whole batch at once.

SocialPatra TeamJune 13, 20266 min read

Some people think in a calendar. They plan a month of content in a spreadsheet during one focused afternoon: dates, captions, which account, which image. The problem is getting that plan out of the spreadsheet and into a scheduler without re-typing every row. Bulk CSV import does exactly that. You fill in a sheet, upload it, and SocialPatra turns each row into a scheduled post.

How it works in three steps

  1. Download the CSV template so your columns line up.
  2. Fill in one row per post and upload the file.
  3. Review the validation summary, then confirm to schedule the batch.

Nothing gets scheduled on upload. The upload step only validates. You see how many rows passed and which ones had problems before anything is committed, so a typo in row 14 never turns into a broken post going live.

Start from the template

Download the template from the bulk scheduling page. It comes with the right headers and a filled-in example row so you can see the format at a glance. Three columns are required:

  • content — the post text.
  • platforms — which platforms this row posts to, comma-separated.
  • platformIds — the specific connected accounts, comma-separated, one per platform listed.

Then there are optional columns you'll use most of the time:

  • scheduledAt — when to post, in ISO 8601 (like 2026-07-01T09:00:00Z). It has to be in the future.
  • mediaUrls — image or media links, comma-separated.
  • tags — your own labels, comma-separated.
  • title — a title where the platform uses one.
  • postType — the kind of post; defaults to a standard post if you leave it blank.

Here's what a couple of rows look like:

content,platforms,platformIds,scheduledAt,tags
"New drop is live 🚀","instagram,twitter","acct_ig_1,acct_x_1",2026-07-01T09:00:00Z,"launch,product"
"Behind the scenes from this week","instagram","acct_ig_1",2026-07-02T17:30:00Z,"bts"

Rules that keep your batch clean

A few constraints exist so a bad row gets caught at upload instead of at publish time:

  • Up to 100 rows per file. If you've planned more, split it into batches. This keeps each import fast and predictable.
  • platforms and platformIds must have the same count. Two platforms means two account IDs, in order.
  • Dates must be in the future and valid ISO 8601. A past date or a malformed one gets flagged.
  • Content tops out at 5,000 characters. Plenty for a long caption, and well past every platform's own limit.

The column headers are forgiving. "caption" or "message" map to content, "channels" maps to platforms, "date" maps to scheduledAt. If your existing planning sheet already uses sensible names, it'll usually import without renaming a thing.

Review before you commit

After upload you get a summary: total rows, how many are valid, how many failed, and the exact reason each bad row failed. From there you either fix the spreadsheet and re-upload, or confirm and skip the invalid rows so the good ones still get scheduled. Nothing is all-or-nothing.

I batch a full month for every client on the first of the month. One spreadsheet per workspace, one upload, done before lunch.

Agency owner using client workspaces

Two ways people use it

A solo creator running one Instagram and a newsletter plans next month in a sheet, drops in the dates and captions, uploads once, and walks away. An agency keeps a separate planning sheet per client, uploads each into that client's own workspace, and the accounts in the platformIds column can only ever be that client's connected accounts.

Where the time savings actually come from

The obvious win is not re-typing captions. The bigger one is that planning in a spreadsheet changes how you think. When every post for the month sits in rows in front of you, gaps jump out. You notice you've got nothing scheduled for the week of a product launch, or that you've stacked five promotional posts in a row with no value content between them. You fix the plan before a single post goes out, instead of realizing mid-month that the rhythm is off.

A spreadsheet is also the easiest thing to collaborate on. A creator can hand a sheet to a freelance writer to fill in captions. An agency can share a planning sheet with a client for sign-off, then import the approved version. The CSV is the handoff format that everyone already knows how to use.

Tips for a clean import

  • Wrap text in quotes if a caption contains a comma, so the column doesn't split mid-sentence.
  • Use the same date format everywhere — full ISO 8601 with the time and the Z suffix is the safest.
  • Double-check the account IDs. The order in platformIds has to match the order in platforms, one ID per platform.
  • Keep emojis and line breaks — they survive the import, so the caption you see in the sheet is the caption that posts.

Adjust after the fact

Plans shift. If a launch slips, you don't re-upload. You can reschedule a set of posts in one move to a new start time, optionally spacing them out by a fixed interval in minutes so they don't all bunch up. There's also a smart scheduling helper that suggests time slots based on when your posts have performed, for Facebook, X, Instagram, LinkedIn, and TikTok.

FAQ

How many posts can one file hold?

Up to 100 rows per file. For a bigger plan, split it into multiple uploads.

What if some rows have errors?

The upload validates first and tells you which rows failed and why. You can fix and re-upload, or confirm and skip the invalid ones so the valid rows still schedule.

Do I have to set a date for every row?

The schedule column is optional. Set scheduledAt for a future post, or leave it off. Any date you include must be valid ISO 8601 and in the future.

Can I post one row to several platforms?

Yes. List the platforms comma-separated and give a matching account ID for each in the platformIds column, in the same order.

Plan a month in a spreadsheet and let SocialPatra handle the rest. Start free during early access and import your first batch today.

Related articles