The three mechanisms

A downloadable .ics file. Works with every calendar application on every platform. Carries the timezone by name, the duration, and the recurrence rule if there is one. It is the only one of the three that is a real calendar object.

A Google Calendar link. Opens Google's event creation screen pre-filled. Convenient for the very large number of people using Google, useless for everyone else.

An Outlook link. The same idea for Outlook on the web.

Offer the .ics prominently and the two links as conveniences. The tool above produces all three so you can see the difference in what they carry.

Why the .ics is better than it looks

The Google and Outlook URLs can only express times as absolute instants — that is what their URL formats accept. The .ics file carries the timezone's name.

The difference appears when something moves. If a country changes its daylight-saving rules, or if the attendee's phone is in another zone that week, a named zone still resolves to the right local time and an absolute instant does not. For a venue selling tickets to people who travel, that is not academic.

The generated file above uses a duration rather than an end time for the same reason: it is what keeps a two-hour event two hours long across a clock change.

Where to put the button

On the event page, near the date, not in a footer of social icons. Label it “Add to calendar”, not with a bare icon — an icon-only button here is guessed at rather than read.

If the event repeats, decide what the button does. Adding just the next occurrence is usually right for a one-off attendee. For a regular, a subscription to the whole calendar is far more valuable, so offer both: “add this date” and “subscribe to everything”.

Serving the file correctly

An .ics must be served as text/calendar. Served as plain text, browsers display it as a wall of text instead of handing it to the calendar app, and the visitor sees gibberish and leaves. It is a one-line header and it is a common mistake.

Give the file a sensible name too — quiz-night-12-sep.ics, not download.ics. It appears in the attendee's downloads folder and in the calendar's import prompt.

The bigger opportunity

An add-to-calendar button gives somebody one date. A subscribe link gives them every future date, permanently, including changes. For a venue with a regular programme, the second is worth considerably more — and almost nobody offers it.