How to bulk upload social media posts from a spreadsheet (CSV / Excel / Numbers)

Please note that instead of supporting Excel, Numbers, or any other spreadsheet, we support a special format called ‘CSV’.  CSV stands for Comma Separated Values and when loaded by a Excel or Numbers the CSV file will be converted into rows and columns for easier editing.

First click on the Spreadsheet Import toolbar icon

Social Scheduler toolbar screenshot highlighting the Spreadsheet import button

In this documentation covers:

Download a template

When you use a spreadsheet to plan your social media posts each row represents a message.  Each column represents something important, such as the date and time and the message that you would like to schedule.

It’s critical that the spreadsheet is in a known format, that’s why you can click on the ‘Generate CSV Template’ option and it will create a template for you to edit.  This means it will have all the correct column names.

Customising the template

You can specify the following options to customise the generated template

  • Start – The starting date
  • End – The ending date
  • Days of the week – tick the days of the week that you usual post
  • Date format – MM/DD/YYYY or DD/MM/YYYY only

If you decide later that you need to post on a different day, you can just edit the dates in the spreadsheet, or re-generate the template.

Once you click on the Download CSV Template button the generated CSV file is downloaded to your machine, normally in your normal browser download folder.

How to edit the CSV / Spreadsheet

Usually when you double-click on a .CSV file it will load your associated application for you (like Microsoft Excel on Windows, or Numbers on the Mac, or perhaps a text editor).

If you use your File Explorer (Windows) or Finder (Mac) to navigate to your browsers ‘download’ folder you can double-click on the CSV file to begin editing.

Completing the spreadsheet

All of the following columns must exist, but they can be re-ordered and you can add other columns and they will be safely ignored.

  • Date (dd/MM/yyyy) or Date (MM/dd/yyyy) – what day to schedule the post
  • Time (HH:mm) – the time to schedule the post
  • Message – what message will be posted (keep it short for Twitter)
  • Link URL – use by LinkedIn and Facebook so that when your post is clicked the user is taken to the specified URL
  • Title – LinkedIn will display this title
  • Description – LinkedIn will display this title
  • Image URL – An optional image URL (Facebook have strict rules here)
  • Draft – leave blank if you do not need draft, or explicitly set to No or False.  Set this to Yes, or True, or 1 for draft.
  • Account override(s) – This is an advanced option that will be covered later, by default only the accounts selected in the side of the bulk-upload window will be selected if this cell is left blank.

Saving / Exporting your spreadsheet

Social Scheduler does not recognise Excel or Numbers or any other Spreadsheet file format, but it does support CSV.

Please choose the option to export your Spreadsheet using CSV.

If you have the advanced option to specify the Text Encoding then please choose ‘Unicode UTF-8’ – this will ensure that Emojis and other characters are exported correctly.

PLEASE NOTE – Do not save using UTF-8 BOM encoding, it must be exported as UTF-8

Upload the CSV to Social Scheduler

You can now drag your CSV file that contains all of your scheduled posts to the same panel where you clicked “Generate CSV Template”.

Preview the import

Immediately after dragging your .CSV file into Social Scheduler you will be presented with a preview of each row.

Any errors will be highlighted with a red bar, for example if the text is too long to fit your selected accounts. You can either make the required edits in the preview, or return back to your spreadsheet and make all the changes there.

You can cancel the import from the preview popup, this will ensure the posts will not be posted.

Each post is submitted in turn, successful posts will be removed from the preview, but failed posts will remain for you to edit.

If you plan to schedule posts in six months time, then you should ensure that your subscription enables you to post that far in advance (the Pro plan is 12 months for example).  Any posts that exceed your subscription will not be posted.

Draft mode

By default all posts will be in ‘Final’ mode, you must explicitly set the draft to be ‘Yes’ or ‘True’ or 1.

During preview mode no posts are created until you click the Import button at the bottom of the dialog, if you do not see it then keep scrolling to the very bottom.

Once you have clicked the import button you can review all your scheduled posts in the calendar and then toggle the draft flag on or off as required.  Draft posts are not sent to the social media platforms.

Selecting the accounts to target

If you leave the Account Overrides cell empty then the post will be published to each social network selected in the bulk upload popup, this is the default.

Advanced – Account Overrides (entered in the cell)


Usually within Social Scheduler you place your social media accounts into groups and you can’t post across those groups.  Each group is like a sandbox and can be useful for social media agencies to place each client in their own group.  This way when you schedule a post it is not possible to accidentally post to company B whilst scheduling posts for company A.

This sandbox can be bypassed when using the CSV importer if you use the Account Overrides cell.

Now that the warning is out of the way, lets explore this advanced feature.

If you populate the Account Overrides cell then a special syntax must be used to specify which social platforms and account names should be selected when scheduled.

The format of this cell is


Notice the colon (:) character separating out the Platform from the Account Name.

You can optionally specify multiple entries by separating them by semi-colons (;), for example


For example here’s three different account selections

Facebook Page:Devology;Facebook Group:Test23,Twitter:*

You can use the ‘*’ symbol to indicate ‘anything’.  In the Twitter example above this means all Twitter accounts.  You should be careful when using this syntax because you will bypass the group protection as detailed above.  The preview is therefore critical to ensure you’re not posting to the wrong accounts.

The ‘*’ character can also be used in the Platform and Account, for example

Facebook*:Devology* – Means any platform that starts with ‘Facebook’ and the account starts with ‘Devology’

Finally you can use the special syntax


This indicates all social platforms and all accounts.  Unless you only have your own accounts in Social Scheduler this should be used with extreme caution.