Delayed Messages on iOS

10 April 2022

When I got my first iPhone in March I was surprised to find that iMessage didn’t support scheduling messages to be sent at a later time. This feature is pretty common on some other messaging platforms, and it’s especially useful when I remember I need to text my mom (who always has her ringer turned on) about something at 3 o’clock in the morning and I don’t want to wake her up.

I played around with trying to implement this with an iOS Shortcut, but it turned out to be a little trickier than I expected and I had to get a little creative. I ended up using a combination of a shortcut and an automation (also via the Shortcuts app1) plus an iOS Calendar to schedule messages to be sent later.

A New Calendar

First, we create a new calendar within the iOS Calendar app. I titled mine Delayed Messages here. We will use this calendar to store messages to be sent later, with individual calendar events storing the message text and recipient2.

A new calendar

Under the “Calendars” menu you can toggle which calendars are shown, so you can hide this new Delayed Messages calendar if you don’t like looking at these messages on your agenda.

The Shortcut

A shortcut is a way to automatically do some tasks on iOS at the click of a button. They can save you a lot of time if you find yourself manually doing the same actions over and over again multiple times a day.

The shortcuts app

Below, you can see the structure of the shortcut. It’s pretty straightforward: first, we grab the text content of the message, pick what date we want to send the message, and we ask the user to choose a phone number from their contacts.

Reading user input

Then we create a new calendar item in our Delayed Messages calendar with the information. The title of the calendar is the recipient’s phone number, and the Notes field contains the text of the message.

Creating the calendar event

If you want to try it out yourself, you can get the shortcut here (just remember you have to create the Delayed Messages calendar yourself first).

The Automation

An automation is very similar to a shortcut, as it allows you to automatically do things - the difference is that while a shortcut runs immediately when we click on it, an automation is scheduled to run at a certain interval (such as once a week).

Unfortunately, the most often an automation can be run is once a day at one specific time, so I couldn’t make it send my messages at different times throughout the day3. I settled on just sending all of the delayed messages at 9am, since I figured most people are awake at that point (sorry to my west coast friends!).

First, our automation will grab any events in our Delayed Messages calendar that need to be sent today.

Then, we loop through each of the calendar events, and send the messages to the listed recipient.

Finally, we delete the calendar events, though you could skip this step.

I turned off the “ask before running” and “notify when run” options just to make it a little easier. I’m also not sure how iOS automations handle cases where the automation wasn’t able to run (e.g. your phone is off/dead at 9AM on a certain day), so it might be a good idea to modify the automation’s Find action to fetch all calendar events at earlier dates as well to avoid a message from getting skipped (better late than never?)

  1. Yeah, so the “Shortcuts” app contains both “Shortcuts” and “Automations”… don’t blame me, I didn’t pick the names. 

  2. Someone pointed out this handy app called DataJar which you can use to store shortcut data. In hindsight it 100% would’ve been easier to use than a calendar… 

  3. It is possible, it just didn’t seem worth it to me: in the first shortcut, have the user input a time as well and store that in the calendar event too. Then, create multiple automations scheduled to run at different times of the day (e.g. you could have one at 9am and 5pm, or whatever suits you).