Guides

Why aren't links in my calendar event clickable on iPhone?

Calendar files carry an event's description as plain text, so an HTML link can show up as raw tags in Apple Calendar. Writing each address out in full fixes it.

By Armen Suny · Updated

The short answer

Calendar files and subscription links carry an event's description as plain text. When a publisher writes a link there as HTML, with the address hidden behind words like “Book now”, the tags arrive as ordinary characters, and a Scouting forum member saw them that way in Apple Calendar on a Mac and an iPhone. The fix is on the publisher's side: write each address out in full in the description, starting with https://. Services that write events into Google Calendar or Outlook through their APIs can send HTML, and linked words stay linked there.

Why do links break in calendar events?

The standard for calendar files, RFC 5545, gives an event's DESCRIPTION the TEXT value type, which it defines as “human-readable text”. The one piece of formatting it provides for is a line break. So a link written as <a href="https://example.com/book">Book now</a> reaches the app as exactly those characters, tags included.

What the app does with them varies. In a thread titled “ICS subscription displays HTML tags in Apple Calendar”, a Scouting forum member subscribed to a calendar feed by URL and found its HTML formatted in Google Calendar, while Apple Calendar on a Mac and an iPhone showed the raw tags. Another member saw the tags in Outlook on the web as well.

What are the ways to put a link in an event?

Method What it looks like How apps treat it
Address written out in the description Tickets: https://example.com/tickets Plain text, as the standard expects. Any app that shows the description shows the whole address.
HTML in the description <a href="…">Tickets</a> Plain characters as far as the standard goes. In the Scouting thread, Google Calendar formatted it and Apple Calendar showed the tags.
An HTML copy beside the plain text X-ALT-DESC;FMTTYPE=text/html:… or STYLED-DESCRIPTION Microsoft's iCalendar spec describes X-ALT-DESC as “an alternate format for the DESCRIPTION property (an HTML body)”. RFC 9073 added STYLED-DESCRIPTION in 2021. Next to it, the DESCRIPTION is left out or holds “a plain-text rendering of the styled text.”
The URL property URL:https://example.com/tickets A web address for the event, kept apart from the description. The standard allows it once per event.
Written in through an API An app connected to your Google or Microsoft account Google's API says a description “can contain HTML”, and Microsoft Graph says an event's body “can be in HTML or text format”.

The standard also lets a text property point to a fuller version elsewhere through its ALTREP parameter, and a property that does so still has to carry its ordinary text.

Where did the event come from?

On an iPhone, events from a calendar link you subscribe to, or from an .ics file you open, arrive as calendar files with a plain-text description. Apple Calendar on a Mac keeps notes and a URL as separate fields on an event, which matches the split in the standard between DESCRIPTION and URL. If a link works in one of your calendars and breaks in another, compare where the two events came from before blaming the phone.

What should a business do?

  • Write every address out in full, starting with https://, with a few words before it saying where it goes.
  • Check what your calendar tool exports. If it sends HTML, look for a setting that writes plain text, or one that adds a plain-text version with the addresses spelled out.
  • Put the main link in the URL property if your tool lets you set one, and keep it in the description as well.
  • Test on a real iPhone. Subscribe to your own calendar link, open an event and look at what a customer sees.

How TheyCal handles links

We make TheyCal, and its events go out two ways. In Google and Microsoft calendars, which people connect with their permission, we send the description as HTML, so linked words stay linked. Calendar links for Apple Calendar and other apps get plain text, with each link's address written out in parentheses after its words, like “See the menu (https://theycal.com/go/…)”. An address pasted on its own is written once.

That address is a theycal.com/go/ link. When someone opens it, we count the click and send them on to the address the business wrote, and the business can see clicks for each event and each link.

An event from a TheyCal calendar link in Apple Calendar on an iPhone, with a link's address written out in the notes
In a TheyCal calendar link, each link's address is written out in the event's notes.

Common questions

Why does my event show code like <a href=…>?

The publisher put HTML into a field that calendar files define as plain text. Let them know, and copy the address out of the tags in the meantime.

Why is the same link clickable in Google Calendar?

Google Calendar formats HTML in descriptions. Its API says a description “can contain HTML”, and in the Scouting forum thread it showed a subscribed calendar's HTML properly where Apple Calendar showed the tags.

Can an event have more than one link?

The description can hold as many addresses as you like. The URL property appears once per event.

Does Outlook show formatted links from a calendar file?

Microsoft's iCalendar spec says that when a file includes an X-ALT-DESC marked as HTML, the HTML gets converted to rich text and stored with the event on import. In the Scouting forum thread, a member saw a feed's HTML tags as plain text in Outlook on the web.

Sources

See it land in your own calendar.

The demo takes a minute. Or start your 30-day free trial, no credit card.