Schedule a text? (Write now, send later)

I have some people who it is best to contact via text message. The problem is that I sometimes think of things at night when I don’t want to text them, so I’ll put it off for the next day.

If it was an email, I could write it and schedule it to send later, or just stick in my drafts.

With a text… I don’t know what to do with it.

I suppose I could write it in Drafts and just send it the next day. But are there other ideas?

Ideally I’d like solution that I can use on Mac and iOS. I know there are ways to send from Drafts to Messages on iOS… is there a way to do that on macOS too?

1.How much control do you need over the schedule? Send at a custom time for each message or is check a queue and at the same time each day sufficient?
2. Do they have to be Apple messages, or would SMS suffice?
- If SMS is okay, do you know if your mobile/cell phone provider has an e-mail to SMS gateway (they certainly used to be relatively common).

Note: if your queued text messages sync between devicew, you only need to schedule delivery on one platform.

You could write the text in a draft with a specific tag/workspace, and have an iOS shortcut parse out drafts with that tag. (Get drafts from workspace… and then For every -> send iMessage)

You can use the new automations and run that shortcut at a particular time each day? (Have not had time to test that though)

Personally I’d have a system save the messages to Data Jar, and then when you open Messages check if it’s after the specified time and if so, send it.

I’d have each message as something like this:

    "message": "Hi TJ!",
    "to": "123-456-7890",
    "sendAfter": "2020-09-01 09:00"

Then once the message is sent, the Data Jar entry could be deleted.

1 Like

I use launch Center pro to schedule the message on due. See if it works for you. The double curvy brackets implies url encoded so you can create a Apple shortcut for it.

due:///add?title={{Scheduled SMS - launch://messaging?to={{+1234567890123}}&body={{Test}}}}&hourslater={{2}}&x-success={{launch:}}

1 Like

I’ve created this concept with DataJar and Shortcuts, though I’m sure you could store it in JSON and keep it somewhere on the cloud.

TLDR: I’ve created three shortcuts

  1. Plan delayed texts: schedules messages to go out on some day the next week
  2. Delayed texts report: previews any texts to go out the next day in case I need to make changes.
  3. Send Delayed texts: sends any scheduled messages for today and deletes it from DataJar

Here are a few more details:

  • I wanted to schedule only for the next week; to me, if I think of a text I need to send next month, it’s more email territory.
  • I have a dictionary called “delated_texts” in DataJar that holds 7 internal dicts named “Sunday” “Monday” etc. for the upcoming days.
  • I wrote a shortcut called “Plan Delayed Texts” that asks three questions: 1) what contact do I want to send it to (it grabs the contacts cell number), 2) what message I want to send, and 3) what day I want the text to go out. It stores a dictionary with two text items (“number” and “message”) in the proper day.
  • Each day, I run a report that 1) reports any planned messages for the next day (in case I need to adjust something in the message or remove it) and 2) sends out any messages for the day before deleting the them from DataJar. This reporting feature ensures I don’t send out any messages when they no longer make sense.
  • I send it at 8:01 am each day automatically (iOS 14 automation) so it looks slightly less planned than 8:00am sharp. Also, it’s unlikely that something would have changed that early to make sending the message out no longer necessary.

Anyhow, that’s a bit stream of consciousness, but hope it’s helpful.

I like the idea of having it send when I open Messages…need to give this some thought :slight_smile:

I just created two Shortcuts:

This uses Data Jar. I decided that sending a message after X hour was good enough for me, but you could change the date picker to date and time and remove my Hours section altogether (along with other appropriate updates).

The second shortcut can be attached to whatever automation trigger you like. Or, if like me you have a spare iPhone running the Pushcut Automation Server, you can schedule it regularly through that.


I created a Shortcut using Data Jar and Pushcut but wrote about it in a new thread as this initially seemed a macOS based need (and it is tagged macOS). As others are linking their Shortcut solutions, I thought I’d drop a link to my version:

Also @RosemaryOrchard, the Scheduled Messages link is broken for me (iOS Public Beta 7):

Let’s try another link, this is sadly a beta problem.


That worked, thanks.

Wrote up the process with plug-and-play Shortcuts if anyone is interested in scheduling delayed texts.


@RosemaryOrchard I know this is a little late, but I only now got around to trying out that “send delayed messages” shortcut.

I found the following issue.

If there are multiple messages sent in one session and the script needs to delete multiple entries in the Data Jar dictionary, the script runs into the problem of incorrect messages being deleted from the Data Jar dictionary.

The script is deleting “Send Later.1” first then “Send Later.2” second etc.
The problem is that after the first message is deleted from Data Jar, everything shifts up one index.

I’ve made the following changes to the script:
Send Delayed Messages (Please let me know if there’s a more elegant way of doing this)

  • instead of deleting the message during the repeat loop, I have the index number of each message added to the variable, “Index to delete”
  • after all the messages have been sent, this list of indexes are reversed (largest number first)
  • the script then deletes the messages using this reversed list of indexes
1 Like