Sunday nights in our house are chaos as it stands, but when we’re trying to keep track of birthday parties, dinner with friends, and family activities, it's nearly impossible without a calendar. We use Apple Calendars to track the various activities in our day-to-day lives. We can automate this with an Apple Shortcuts workflow that sends a weekly iMessage to keep us updated on what's going on.

What this Shortcut does: Every Sunday at 7pm, it reads your Apple Calendar, groups events by day, and sends a formatted iMessage to anyone you choose — no app, no subscription, no server. Setup takes about 10 minutes, and it runs automatically every week after that.

What You'll Need

  • iPhone with iOS 16 or later

  • Apple Shortcuts app (built-in — no download needed)

  • A few minutes to tap through the Shortcut builder

Building the Weekly Digest

This Shortcut runs every Sunday at 7 pm and sends a formatted iMessage with everything on the calendar for the coming week. Here's what the output looks like:

This week

[Tuesday, Mar 31]
9:00 AM – Golf Club

[Friday, Apr 3]
9:00 AM – Dinner Party

[Sunday, Apr 5]
All Day – Easter

Step 1 — Fetch the calendar events

Add a Find Calendar Events action. This is the only filter setup you need:

  • Start Date: is in the next 7 days

  • Sort by: Start Date, ascending

  • Order: Oldest First

  • Limit: Off

This will get us all the events in the next seven days from every calendar we've loaded into Apple Calendars. Without the ascending sort, we won't get the calendar date grouped correctly. If there is a calendar you want to exclude from this, we can do so in a future step.

One thing to note about the 'is in the next 7 days' filter is that, since we have this automation set to run on Sunday at 7pm, anything on the calendar for Sunday at 9 pm will also appear in this weekly briefing.

Step 2 — Set up the message variables

Before we loop through events, initialize two Text variables:

WeeklyMessage — starts empty. This is where the formatted digest gets built up line by line.

LastDay — also starts empty. This tracks which day you're currently on, so you know when to insert a new day header.

LastDay is a simple trick to avoid printing the same date header twice — without it, every event would print its own date, and the message would look cluttered.

Step 3 — Loop through events and build the message

Add a Repeat with Each action over the Calendar Events from Step 2. 

Subscribe to keep reading

This content is free, but you must be subscribed to Automation Almanac to continue reading.

Already a subscriber?Sign in.Not now

Keep Reading