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 – EasterStep 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.