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.
| Column | Accepted headers | Required |
|---|---|---|
| When to publish | datetime, date_time, scheduled, scheduledtime, when — or a date column with an optional time column | Yes |
| The post | text, content, caption, post | Yes |
| Files to attach | media, files, file, attachments | No |
| Title | title | No |
Commas, not semicolons
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:00means 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 mediaand 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:
| Platform | What it asks | Scope |
|---|---|---|
| Which board pins go to — a pin cannot be created without one | Per selected Pinterest account | |
| TikTok | The privacy level, which TikTok requires you to choose | Per selected TikTok account |
| YouTube | Whether the videos are altered or synthetic content | Once, 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 mediauntil then. - TikTok and YouTube need a video specifically, and say
every row needs a videootherwise.
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.
| Message | Cause |
|---|---|
Unreadable date: "…" | The datetime cell could not be parsed. |
Time is in the past | The row is scheduled before now. |
Empty row (no text, no media) | Nothing to publish in that row. |
Missing media: a.jpg | A 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.
Related help
Reference
Platform limits reference
Caption and title limits for all nine platforms, which ones take a custom video cover, and the video ceiling that applies everywhere. Read from the product config.
Start here
Getting started
The first four steps in Schedchie: connect an account through the platform, write one post for all of them, put it on the calendar, and check what went out.
Publishing
Why a post failed
Read per-account publish results, tell Partial from Failed, retry only the accounts that missed, and match the common platform errors to their fix.
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
