Schedule Instagram posts with Workflow, Due and Dropbox

Instagram is probably my favorite social network, for both personal and work.

I’ve tried a few services that help with scheduling posts. Given Instagram’s API, you cannot schedule posts directly to the app, like with Buffer or Sprout Social. These other services are workarounds: you upload a photo, write a caption and set a time you’d like to publish it. The app gives you a reminder, loads the photo, copies the caption and opens Instagram.

The downside? They can cost hundreds of dollars a year, have limits on the number of photos you can upload and file sizes for photos and videos.

Using them and seeing what they did, I knew there was a way to automate this myself.

So after playing around for about 6 hours and trying several different methods ((including using Google calendars and searching for file names in Photos app)), I came up with a pretty simple way to send similar reminders to myself for social media, using the mighty Workflow (link), the every pesky Due (link) and a free Dropbox account.

The workflow

Part 1: InstaSchedule 2

Get the Workflow here

There are two separate Workflow actions, one for saving the share and one for retrieving it.

The first is InstaSchedule 2. When its run, the workflow asks you to name the social post – this will be the unique identifier used to save and retrieve the photos and videos later. It will now be known as the project.” ((I added in a rule to search and replace any spaces, in case you include them which will break Due))

After this, you are asked to choose a photo through the iOS photo picker. Workflow then converts it to a JPEG (for consistency) and renames it to the project name. It then saves it in a new folder (also named the project) in Dropbox — this may take up to a minute. I save them all into a folder called Instagram Share” on Dropbox. You can save it anywhere you want, but this is the default in the workflow.

Now comes the caption: You’ll be prompted to type in the caption what you want — you can always change this in the future. You’ll see the project name at the top of the text field — this will allow Workflow to use it as the file name. The caption is then saved in a text document to the Dropbox folder to be retrieved later.

Now it’s time to set the time. Workflow prompts you for a date and time you’d like to be reminded to share the post. Once you do that, it will takes you to Due to confirm the reminder. Workflow has created a special a x-callback-URL with the Project name to open in Workflow later.

The URL looks like this:

Post VideocastWorkflow to Instagram workflow://run-workflow?name=InstaShare&input=text&text=VideocastWorkflow

Part 2: Reminder

When it’s time to post (in a day, a week or a year), Due will send you a notification.((You can also run this whenever you want, if the schedule changes)) When you open it, it will ask if you want to run the attached URL. You do. The Instashare workflow opens in Workflow.

Part 3: InstaShare

Get the Workflow here

This Workflow loads those files from Dropbox (using the project name). The caption is copied to your clipboard (replacing the project name in the first line with a blank space) and the image is grabbed from Instagram and loaded into Instagram. I added in a prompt asking you if the account is correct, for those who manage multiple accounts.

Boom. Time to tweak the caption, add tags and share!

Next steps:

There’s still a lot I want to do to make this work better, including:

  • Make a Workflow that can be launched from the share sheet for images within iOS apps.
  • Make something similar for the Mac in Keyboard Maestro that will take an image, save the files to Dropbox, and create the Due reminder with call back URL to use on iPhone at a later date.
  • Copy and tweak the Workflow to schedule videos.


  • It can take a while to save to Dropbox. Don’t know how to get around that.
  • URL schemes in Due. It doesn’t handle chained URLs well (which was my first attempt) and for the project name, it doesn’t support spaces. Originally, the identifier was the image name (eg IMG_2345) but that failed when I_ would add a photo from computer with a file name like really cute dog photo.jpg.” And at the very beginning, I wanted everything in the URL. Good thing that failed, this is MUCH simpler.

Pros and Cons:

  • Pros: limitless uploads and low cost.
  • Cons: no auto fill for hashtags or usernames, no calendar view and no analytical features you get with the other apps


I’ve been using this for a couple of weeks and it’s been working great being reminded on the go to post to Instagram.

Ideas to improve? Criticisms? I’d love to hear your feedback in the comments below or hit me up on Twitter or Instagram. I’m @fritzklug

June 1, 2016