Bulk Upload Posts via CSV

Import and schedule many posts at once from a CSV file

3 min readUpdated 2 weeks ago

What Bulk Upload Does

Bulk Upload lets you create and schedule many text posts at once by importing them from a CSV file. It's useful when you've drafted a month's worth of captions in a spreadsheet and want to load them into SocialCal in one go.

You'll find it in the sidebar under Create → Bulk Upload (/dashboard/create/bulk).

CSV Format

The CSV needs one required column and supports two optional ones:

ColumnRequired?What it does
contentYesThe text of the post
platformsNoWhich platforms to post to (overrides the page default)
schedule_timeNoWhen to publish (overrides "Generate Schedule")

Header names are case-insensitive and the parser strips punctuation, so Content, content, and Post Content all work.

Multiple platforms per row

Use a pipe (|) to list more than one platform in a single cell:

``

facebook|bluesky|linkedin

`

Valid platform IDs: twitter, instagram, facebook, linkedin, youtube, tiktok, threads, bluesky, pinterest.

<h3 id="sample-csv" class="scroll-mt-28 text-lg font-semibold text-gray-900 mt-8 mb-2">Sample CSV</h3>

`

content,platforms,schedule_time

"Launching our spring sale today!","facebook|bluesky","2026-05-15T10:00"

"New blog post is live","linkedin|twitter","2026-05-15T11:00"

`

Click <strong class="font-semibold text-gray-900">Download Template</strong> on the page to get this exact format pre-filled with tomorrow's dates.

<h2 id="uploading-the-file" class="scroll-mt-28 text-2xl font-bold text-gray-900 mt-10 mb-3">Uploading the File</h2>

You can either:

  • <strong class="font-semibold text-gray-900">Click the upload area</strong> and pick your CSV
  • <strong class="font-semibold text-gray-900">Drag and drop</strong> the CSV onto the upload area

Each row shows up as a card in the <strong class="font-semibold text-gray-900">Posts Preview</strong> panel with the content, platforms, character count, and schedule time. You can:

  • <strong class="font-semibold text-gray-900">Edit</strong> any post (pencil icon) — change content, platforms, or time
  • <strong class="font-semibold text-gray-900">Remove</strong> any post (trash icon) — drops it from the batch

<h2 id="default-platforms" class="scroll-mt-28 text-2xl font-bold text-gray-900 mt-10 mb-3">Default Platforms</h2>

The <strong class="font-semibold text-gray-900">Default Platforms</strong> panel on the right controls what platforms are used <strong class="font-semibold text-gray-900">only when a row's platforms cell is empty</strong>. If your CSV specifies platforms per row, this setting is ignored for that row.

<h2 id="generate-schedule-stagger-times" class="scroll-mt-28 text-2xl font-bold text-gray-900 mt-10 mb-3">Generate Schedule (Stagger Times)</h2>

If your CSV doesn't include schedule_time (or you want to override it), use the <strong class="font-semibold text-gray-900">Scheduling Settings</strong> card:

  1. Pick a <strong class="font-semibold text-gray-900">Start Time</strong> (datetime)
  2. Pick an <strong class="font-semibold text-gray-900">Interval</strong> in minutes between 5 and 1,440 (24 hours)
  3. Click <strong class="font-semibold text-gray-900">Generate Schedule</strong>

Every post gets a time spaced interval minutes after the previous one. The first post goes at the start time, the second interval` minutes later, and so on.

Schedule All

When every post has a time, click Schedule All in the top-right of the Posts Preview. Each post is submitted to the scheduler in parallel. Cards turn:

  • Green with a checkmark if scheduled successfully
  • Red with the error message if something went wrong

You can fix red ones in the edit modal and re-run Schedule All — only the ones that still need scheduling will be re-submitted.

Limitations

  • Text only. Bulk Upload doesn't accept media in the CSV. For posts that need images or videos, create them in New Post instead — or add media after bulk scheduling by editing each scheduled post.
  • Bulk Upload is a paid feature — it requires an active SocialCal subscription (any paid plan or active trial)
  • One CSV file at a time — uploading a new CSV replaces the current preview

Tips

  • Quote any cell that contains a comma so the parser doesn't split it
  • Start with a small CSV (3–5 rows) to confirm your format parses correctly before importing 100 posts
  • Combine Bulk Upload with Drafts — schedule the text in bulk, then open each scheduled post to attach media to the ones that need it

Was this article helpful?

Ready to schedule smarter?

Plan, schedule and publish across every platform from one place.

Start Your 7-Day Trial

See the content calendar

Related articles