Skip to content

Bulk import

Bulk import lets you add a whole batch of posts in one go by uploading a single spreadsheet (CSV) file.

Why use it

Instead of creating posts one by one, you fill in one row per post and upload them all together. Sosyabot then schedules them for you, neatly spaced apart.

Step by step

Pick your channels

Open the bulk import page and choose which channels (your connected accounts) should receive the posts.

Download the sample file

Click the button to download the template. It is a ready-made spreadsheet that shows exactly which columns to fill in.

Fill in one row per post

Open the file in Excel, Google Sheets, or Numbers. Put one post on each row: write the caption text, and if you want a photo, paste a link to the image. Then save the file.

Set the time between posts

Back on the page, type how many minutes apart the posts should go out. For example, 60 means one post per hour.

Upload and import

Drag your file in (or click to choose it), then click Import. That's it — all your posts queue up automatically and go out on schedule.

TIP

If a caption contains a comma or a line break, wrap the whole caption in double quotes so it stays in one box. The sample file shows how it should look.

Good to know

  • The most you can upload at once is a 10 MB file.
  • If a row has a date in the past or one that doesn't make sense, that post simply starts from now instead.
  • If some rows can't be read, they're skipped and the rest still import.
  • A post can have just text, or text plus a photo link — both work.
For developers
  • Upload endpoint: POST /api/v1/bulk-posts (auth + workspace + active subscription, plus the posts.bulk_upload plan feature).
  • Multipart form-data; file field mediaCsv (in-memory, 10 MB max, CSV mime only). Body fields: accounts (channel IDs), interval (minutes, >= 1).
  • Template download: GET /api/v1/bulk-posts/template returns bulk_template.csv.
  • Column order: Text, Year, Month, Day, Hour (0-23), Minutes, Image URL, Link. First row is treated as a header if its first cell contains "text".
  • Invalid/past dates fall back to now; structurally invalid rows are skipped, and the request errors only if no valid rows remain.