Outlook to Email, a daily meeting digest you trust
Your day starts, you open your calendar, and it’s already a mess. Meetings scattered across views, links buried in descriptions, and that one invite with “TBD” that somehow still matters.
Marketing managers trying to protect focus time feel this. A business owner bouncing between calls feels it too. And so does an ops lead who just wants an Outlook email digest they can trust, without hunting through Outlook at 8:05 AM.
This workflow pulls today’s Microsoft Outlook meetings, formats them into a clean HTML email, and sends it to you automatically. You’ll see what it does, what you need, and where teams usually customize it.
How This Automation Works
See how this solves the problem:
n8n Workflow Template: Outlook to Email, a daily meeting digest you trust
flowchart LR
subgraph sg0["Schedule Flow"]
direction LR
n0@{ icon: "mdi:cog", form: "rounded", label: "Microsoft Outlook", pos: "b", h: 48 }
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Code"]
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields", pos: "b", h: 48 }
n3@{ icon: "mdi:message-outline", form: "rounded", label: "Send Email", pos: "b", h: 48 }
n4@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Generate HTML"]
n1 --> n0
n2 --> n5
n5 --> n3
n4 --> n1
n0 --> n2
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n4 trigger
class n1,n5 code
classDef customIcon fill:none,stroke:none
class n1,n5 customIcon
The Challenge: Keeping Today’s Meetings Straight
Outlook is great at storing meetings. It’s not great at helping you start the day with clarity. You bounce between Day view and Agenda view, then open each event to find the join link, then scan attendee lists to remember who’s in the room. If you’re on mobile, it’s worse. And when someone reschedules at 7:58 AM, your “plan” for the morning is instantly outdated, so you end up reacting instead of preparing.
It adds up fast. Here’s where it breaks down in real life.
- Checking each event one-by-one eats about 20 minutes most mornings, even before you’ve done any real work.
- Meeting links get missed because they’re tucked inside body text, or the invite was forwarded without the details.
- Important context is scattered, so you join calls cold and spend the first five minutes catching up.
- When calendars are shared across a team, it’s easy to overlook internal holds, time blocks, or “soft” meetings that still need prep.
The Fix: A Daily Outlook Digest Delivered to Email
This n8n automation runs for you every morning (8 AM by default). It calculates the exact start and end of “today” in a way Outlook understands, then pulls every calendar event that starts within that window. Next, it cleans the data into a simpler format (subject, start/end time, organizer, attendees, and meeting link). Finally, it generates a nicely formatted HTML email that reads like a daily briefing, not a raw export, and sends it to the address you choose. The result is a single message you can trust as your source of truth for the day.
The workflow starts on a schedule. Outlook events are fetched using a date-range filter for today, then shaped into consistent fields. After that, n8n builds the email markup and sends it via SMTP, so it lands in your inbox like any other daily digest.
What Changes: Before vs. After
| What This Eliminates | Impact You’ll See |
|---|---|
|
|
Real-World Impact
Say you average 8 meetings a day. If you spend maybe 2 minutes opening each invite, finding the link, and checking who’s attending, that’s about 16 minutes daily, plus extra time when one invite is missing details. With this workflow, you spend about 30 seconds skimming one email, because the subject, times, attendees, and meeting links are already laid out. Over a week, that’s roughly an hour of attention back, and honestly it feels like more.
Requirements
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Microsoft Outlook to read your calendar events.
- SMTP email account to send the digest email.
- Microsoft OAuth credentials (create in Azure app registration with Calendars.Read permission).
Skill level: Beginner. You’ll connect Outlook and SMTP credentials, then adjust the schedule and recipient email.
Need help implementing this? Talk to an automation expert (free 15-minute consultation).
The Workflow Flow
A scheduled run kicks things off. The workflow triggers every day at 8:00 AM (based on your n8n server timezone), so it shows up right when you start planning.
Today’s date range is computed. n8n calculates “start of today” and “start of tomorrow,” then converts both to ISO timestamps so Microsoft Outlook can filter events correctly.
Outlook events are pulled and cleaned up. Using an Outlook calendar events query, it fetches only meetings that start today, then maps the messy event objects into consistent fields like subject, organizer, attendees, and the meeting link.
An HTML digest is built and emailed. A code step formats each meeting into a readable card-style block, creates a clear subject line, and sends the whole thing through the Send Email node via your SMTP account.
You can easily modify the send time to match your routine, or change the date range to cover “next business day” instead of “today.” See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Schedule Trigger
Set the daily schedule that initiates the workflow and kicks off date range calculations for today’s meetings.
- Add and open Scheduled Automation Start.
- Set Rule to
intervaland set Trigger At Hour to8(matches the current configuration). - Connect Scheduled Automation Start to Compute Date Range.
Step 2: Connect Microsoft Outlook
Pull today’s meetings from your Outlook calendar using a date range filter driven by the previous code node.
- Open Retrieve Outlook Events.
- Credential Required: Connect your microsoftOutlookOAuth2Api credentials.
- Set Resource to
event. - Set Filters → Custom to
=start/dateTime ge '{{$json.today}}' and start/dateTime lt '{{$json.tomorrow}}'. - Confirm the connection flow: Compute Date Range → Retrieve Outlook Events → Map Meeting Fields.
Step 3: Set Up Data Processing
Normalize meeting fields into a consistent structure and prepare them for HTML rendering.
- Open Compute Date Range and keep the default JavaScript that creates
todayandtomorrowISO timestamps. - Open Map Meeting Fields and confirm the following field mappings:
- Set id to
={{ $json.id }}, subject to={{ $json.subject }}, and description to={{ $json.bodyPreview }}. - Set meeting_start to
={{ $json.start.dateTime }}and meeting_end to={{ $json.end.dateTime }}. - Set attendees to
={{ $json.attendees }}. - Set meeting_organizer to
={{ $json.organizer.emailAddress.name }}and meeting_organizer_email to={{ $json.organizer.emailAddress.address }}. - Set meeting_link to
={{ $json.webLink }}. - Ensure the flow continues from Map Meeting Fields to Build Email Markup.
Step 4: Configure Email Output
Generate HTML for the meeting reminder and send it via SMTP.
- Open Build Email Markup and keep the provided JavaScript that assembles HTML and sets the email subject.
- Open Dispatch Email Notice.
- Credential Required: Connect your smtp credentials.
- Set HTML to
={{ $json.html }}and Subject to={{ $json.subject }}. - Set To Email to
[YOUR_EMAIL]and From Email to[YOUR_EMAIL]. - Confirm the connection flow: Build Email Markup → Dispatch Email Notice.
[YOUR_EMAIL] with a verified sender address to avoid SMTP delivery failures.Step 5: Test and Activate Your Workflow
Run a manual test to confirm the data flow, then activate the workflow for daily reminders.
- Click Execute Workflow and verify that Retrieve Outlook Events outputs today’s meetings.
- Check that Build Email Markup returns a single item with subject and html.
- Confirm Dispatch Email Notice sends an email with the meeting cards in HTML.
- If the test succeeds, toggle the workflow to Active so Scheduled Automation Start runs daily.
Watch Out For
- Microsoft Outlook credentials can expire or need specific permissions. If things break, check your Azure app registration and the n8n Credentials entry (Calendars.Read is the usual missing piece) first.
- If your SMTP provider has stricter login rules, sending can fail silently. Confirm the SMTP host/port and verify “app password” requirements in your email account settings.
- Timezone mismatches are sneaky. If your n8n server timezone differs from your Outlook timezone, your “today” filter can pull the wrong meetings, so check the Schedule Trigger timezone and your Outlook account settings.
Common Questions
About 30 minutes if your Outlook and SMTP credentials are ready.
Yes. You’ll mostly be copying credentials into n8n and changing the schedule and email addresses.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in SMTP costs (often free on existing email) and any Microsoft tenant policies for OAuth apps.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
You can change the Schedule Trigger time, then adjust the “Compute Date Range” code to cover tomorrow, the next business day, or the full work week. If you want to filter what counts as a “real meeting,” refine the Outlook node’s OData filter (for example, exclude “Free” events or only include meetings with attendees). Most teams also tweak the “Build Email Markup” code to add location, meeting category, or a clearer join button.
Usually it’s expired or misconfigured OAuth credentials in n8n, or the Azure app doesn’t have Calendars.Read approved by an admin. It can also fail when the tenant blocks third-party app consent. Less common, but real: your date filter is valid, yet returns nothing because the timezone in n8n doesn’t match the Outlook calendar timezone.
For a once-daily digest, capacity is basically a non-issue. On n8n Cloud Starter you can run thousands of executions per month, and this uses one execution per day per digest. If you self-host, you’re limited by your server rather than executions. Even with a packed calendar, generating one HTML email is lightweight.
Often, yes, because n8n handles the “format it nicely” part (custom HTML) without awkward workarounds. You also get full control over the date logic in code, which matters more than people think when timezones and workdays get involved. Zapier and Make can absolutely send daily emails, but the Outlook filtering plus HTML formatting tends to get fiddly. If your workflow needs strict control, or you want the option to self-host, n8n is a cleaner fit. Talk to an automation expert if you want someone to sanity-check the best option for your setup.
One email. All the meetings. The workflow handles the repetitive checking so you can start your day with your brain intact.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.