Publishing

Bulk import: schedule a calendar from one CSV

The column spec (datetime, text, media, title), how filenames match uploaded files, the per-platform picks, and what the validator checks before anything is created.

A month of posts is a spreadsheet. Dashboard → Bulk import turns each row into a scheduled post on as many accounts as you pick, with the media attached and the per-platform fields filled in.

The columns

Header names are read case-insensitively, and several spellings are accepted. You need a text column and a time; the rest is optional.

ColumnAccepted headersRequired
When to publishdatetime, date_time, scheduled, scheduledtime, when — or a date column with an optional time columnYes
The posttext, content, caption, postYes
Files to attachmedia, files, file, attachmentsNo
TitletitleNo

Commas, not semicolons

The file must be comma-separated. Excel in a European locale exports semicolon-separated CSV by default, which arrives as one column and will not import. Save as CSV UTF-8 with commas, or set the delimiter before exporting.

A working example

datetime,text,media,title
2026-08-03 09:00,"Three things we changed this month",launch.mp4,August changelog
2026-08-04 17:30,"Behind the scenes of the shoot",bts-1.jpg;bts-2.jpg,
2026-08-05 12:00,"No media on this one, just text",,
  • Times are read in your computer's timezone. 2026-08-03 09:00 means 9am where you are sitting.
  • Every row must be in the future — the importer refuses past times rather than publishing instantly.
  • Wrap any text containing a comma in double quotes, as in the example.
  • Leave a cell empty to skip it. Empty trailing columns are fine.

Where the title goes

The title column is used by YouTube and Pinterest, the two platforms with a separate title field. Leave it out and YouTube takes the first line of your text, trimmed to fit. Every other platform ignores it.

Attaching media

The media column holds filenames, separated by semicolons: bts-1.jpg;bts-2.jpg. In the same dialog you upload the actual files, and rows match to them by name.

  • Matching is on the filename only. Folder paths are ignored, and case does not matter.
  • Two different files with the same filename will collide — rename one before uploading.
  • Rows referencing a file you have not uploaded yet show Missing media and clear the moment it arrives. You can drop the CSV in first and add files after.
  • Uploads run in the background; rows go green as each file finishes.

Per-platform picks

Three platforms need something a spreadsheet cannot express, so the dialog asks once rather than making you add columns:

PlatformWhat it asksScope
PinterestWhich board pins go to — a pin cannot be created without onePer selected Pinterest account
TikTokThe privacy level, which TikTok requires you to choosePer selected TikTok account
YouTubeWhether the videos are altered or synthetic contentOnce, applied to every row in the import

The YouTube declaration is the disclosure YouTube asks for on manual uploads: tick it when the videos make real people, places or events look real but they were generated or altered. Animation, effects and beauty filters do not count. Category and privacy are filled in for you.

Which accounts you can select

  • Text-capable platforms — LinkedIn, X, Bluesky, Threads, Facebook — accept any row.
  • Instagram, TikTok, YouTube and Pinterest need media, so they become selectable only when every valid row has some. The dialog says every row needs media until then.
  • TikTok and YouTube need a video specifically, and say every row needs a video otherwise.

Splitting an import into a text-only file and a video file is usually faster than trying to satisfy every platform in one pass.

What gets checked

Rows are validated before anything is created, and each one is listed with a tick, a cross or a spinner. The counter at the bottom reads {n} of {total} rows ready to import.

MessageCause
Unreadable date: "…"The datetime cell could not be parsed.
Time is in the pastThe row is scheduled before now.
Empty row (no text, no media)Nothing to publish in that row.
Missing media: a.jpgA referenced file has not been uploaded.

Only valid rows are imported. Invalid ones are left alone, so you can fix the spreadsheet and run it again without creating duplicates of the rows that already worked.

Once imported, each row is an ordinary scheduled post: editable, reschedulable, and reporting its own per-account result. See why a post failed for reading those.

Limits

  • 200 MB per file, images and video only. Videos also cap at 15 minutes.
  • 2,000 file uploads per day.
  • No cap on rows. Rows are created at a deliberate pace, so a few hundred takes a couple of minutes — leave the dialog open while it runs.

Caption limits still apply per platform once the rows land — the reference is in platform limits.

Not covered here?

Write to support@schedchie.com with the account name and the scheduled time of the post, and you get a person, not a form.

Unlimited accounts, unlimited posts, €7.99

Nine platforms on one calendar. The trial runs 14 days with everything switched on.

14-day free trial · Cancel anytime, no questions asked