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.
Related
For developers
- Upload endpoint:
POST /api/v1/bulk-posts(auth + workspace + active subscription, plus theposts.bulk_uploadplan 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/templatereturnsbulk_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.