How to Import an iCal Subscription Into Notion as Calendar Database
🔍 WiseChecker

How to Import an iCal Subscription Into Notion as Calendar Database

You want to bring events from an external calendar — like Google Calendar, Outlook, or a sports schedule — into Notion so you can view, filter, and manage them inside your workspace. Notion does not offer a direct one-click iCal import button for subscriptions. Instead, you must use a third-party automation tool to fetch the iCal feed and sync it into a Notion calendar database. This article explains the exact steps to set up that sync using the free tier of a popular automation service, covering prerequisites, the configuration process, and common pitfalls to avoid.

Key Takeaways: Importing an iCal Feed Into a Notion Calendar Database

  • Make.com (formerly Integromat) scenario: Fetches the iCal feed URL and creates Notion database items for each event.
  • iCal feed URL format: Must be a public, web-accessible URL ending in .ics — private feeds require a sharing link that includes an authentication token.
  • Notion database property mapping: Maps iCal fields (summary, dtstart, dtend, description, location) to Notion database columns (Name, Date, Description, Select).

ADVERTISEMENT

Why Notion Cannot Import iCal Subscriptions Directly

Notion supports embedding a public iCal URL into a calendar view of an existing database, but it does not create database items from the feed. The embedded view only displays events; you cannot edit, filter, or relate them to other Notion data. To get events as actual database rows, you need an automation service that reads the iCal feed and writes each event into a Notion database. Make.com (formerly Integromat) offers a free plan with 1,000 operations per month, which is sufficient for most personal calendar subscriptions. The process involves three components: the iCal feed URL, a Make scenario that parses the feed, and a Notion integration token that authorizes Make to write to your database.

Prerequisites

Before starting, confirm you have the following:

  • A public iCal feed URL that ends in .ics. For Google Calendar, go to Calendar settings > Integrate calendar > Public address in iCal format. Copy the entire URL.
  • A free Make.com account. Sign up at make.com.
  • A Notion integration token. Create one at https://www.notion.so/my-integrations. Click New integration, name it, select the workspace, and copy the Internal Integration Secret.
  • A Notion database with at least these columns: Name (Title), Date (Date), Description (Text), Location (Text or Select).
  • The integration must be connected to your database. Open the database page, click Share in the top-right, then Add connections, and select your integration name.

Steps to Sync an iCal Subscription Into a Notion Database

This method uses Make.com because it can parse iCal data natively. The scenario runs on a schedule — for example, every hour — and adds new events to your Notion database without duplicating existing ones.

  1. Create a new scenario in Make
    Log in to Make.com. Click Create a new scenario from the dashboard. Give it a name like “iCal to Notion Sync.” Click the empty module to add the first app.
  2. Add the iCal trigger module
    Search for iCal in the app list. Select Watch Events as the trigger. In the module settings, paste your iCal feed URL into the Feed URL field. Set Maximum returned events to 100 or your preferred limit. Set Start from to Now so it only fetches future events. Click OK.
  3. Add a router to check for duplicates (optional but recommended)
    Click the right side of the iCal module and add a Router. This step is not mandatory but prevents duplicate entries if the scenario runs multiple times. Add a second path with a Notion > Search Objects module. Configure it to search your database for an event with the same UID (a unique identifier from the iCal feed). If found, the router stops; if not, the event proceeds to the next module.
  4. Add the Notion create module
    After the router (or directly after the iCal module if skipping the router), click the plus icon and add a Notion > Create a Database Item module. Connect your Notion account by pasting the integration token. Select your database from the dropdown.
  5. Map iCal fields to Notion database columns
    In the Create a Database Item module, map the following fields:
    Name: Map to SUMMARY from the iCal bundle.
    Date: Map DTSTART as the start date and DTEND as the end date. Use the ISO format option. If the event is all-day, check the All day box.
    Description: Map DESCRIPTION.
    Location: Map LOCATION.
    Leave other fields empty or map additional iCal properties like URL if your database has a URL column.
  6. Set the schedule and start the scenario
    Click the clock icon on the iCal module. Set the schedule to Every hour or Every 15 minutes depending on your needs and operation limits. Click Run once to test. Check your Notion database — a new event should appear. If it works, toggle the On switch at the bottom of the scenario.

ADVERTISEMENT

If the iCal Import Still Has Issues

Even with correct setup, you may encounter problems. Below are the most common failure patterns and their fixes.

Make Scenario Runs But No Events Appear in Notion

This usually means the iCal feed URL is not publicly accessible or the date filter excludes all events. Check the iCal feed by pasting the URL into a browser — you should see a plain text file starting with BEGIN:VCALENDAR. If the feed requires authentication, generate a public sharing link from your calendar provider. For Google Calendar, the public address is found under Settings > Settings for my calendars > Calendar name > Access permissions > Make available to public. Also verify that the Start from setting in the iCal module is set to Now and not a past date.

Duplicate Events Created on Each Sync

Without a duplicate-check mechanism, every scenario run creates duplicate entries. Add the Router with a Notion > Search Objects module as described in step 3. In the Search Objects module, use the filter UID Equals and map the UID field from the iCal bundle. If a match is found, route that path to a Do nothing module. If no match, route to the Create a Database Item module.

Event Times Are Wrong or Shifted by Time Zone

iCal feeds often use UTC time, but Notion displays dates in the workspace time zone. In the Create a Database Item module, ensure you are mapping DTSTART and DTEND as ISO format with time zone. You can also use a Make Date and Time function to convert UTC to your local time zone before mapping. For example, use the formula parseDate(UTCstring; "YYYY-MM-DDTHH:mm:ss"; "America/New_York").

Item Embedded iCal View Make.com Imported Database
Creates database rows No — events are read-only Yes — each event is a separate item
Editable in Notion No Yes — you can rename, add properties, link relations
Supports filtering Limited to calendar view filters Full database filter, sort, and group
Sync frequency Real-time (embedded view updates when page reloads) Depends on Make scenario schedule (every 15 min minimum)
Requires third-party service No Yes — Make.com free plan (1,000 operations/month)

After setting up the Make scenario, your Notion calendar database will automatically receive new events from the iCal feed on a regular schedule. You can now apply filters, create linked databases, and use rollups or relations with other Notion data. As an advanced tip, add a Last Synced formula column to the database that shows now() — this lets you verify the sync is still running by checking the timestamp on the most recent event.

ADVERTISEMENT