Dynamic Add to Calendar links for emails
This tool is a link with customizable parameters that can be used to create an event on-the-fly, or send your users to their calendar service where they can add your event, or attach your event to an email you send to your users.
The API requires an API token to work.
Please sign in or
create an account to receive your
account’s API token.
Link to an event landing page
Link that directs users to an event page where they can view event details and add the event to their calendar.
<a href="https://dynamic.addevent.com/dir/?client=CLIENT&start=start&end=end&title=title&timezone=timezone">Add to Calendar</a>
<a href="https://dynamic.addevent.com/dir/?client=USER-CLIENT-ID&start=09%2F25%2F2026+09%3A00+AM&end=09%2F25%2F2026+11%3A00+AM&title=Title+of+the+event&description=Description+of+the+event&location=1600+Amphitheatre+Pkwy%2C+Mountain+View%2C+CA+94043&timezone=America%2FLos_Angeles">Add to Calendar</a>
Link directly to a calendar service
Multiple links that take users directly to their chosen calendar service, where they can add the event to their calendar.
Add to Calendar:
<a href="https://dynamic.addevent.com/dir/?client=CLIENT&start=start&end=end&title=title&timezone=timezone&service=service">Link Text</a>
Add to Calendar:
<a href="https://dynamic.addevent.com/dir/?client=USER-CLIENT-ID&start=09%2F25%2F2026+09%3A00+AM&end=09%2F25%2F2026+11%3A00+AM&title=Title+of+the+event&description=Description+of+the+event&location=1600+Amphitheatre+Pkwy%2C+Mountain+View%2C+CA+94043&timezone=America%2FLos_Angeles&service=apple">Apple</a>
<a href="https://dynamic.addevent.com/dir/?client=USER-CLIENT-ID&start=09%2F25%2F2026+09%3A00+AM&end=09%2F25%2F2026+11%3A00+AM&title=Title+of+the+event&description=Description+of+the+event&location=1600+Amphitheatre+Pkwy%2C+Mountain+View%2C+CA+94043&timezone=America%2FLos_Angeles&service=google">Google</a>
<a href="https://dynamic.addevent.com/dir/?client=USER-CLIENT-ID&start=09%2F25%2F2026+09%3A00+AM&end=09%2F25%2F2026+11%3A00+AM&title=Title+of+the+event&description=Description+of+the+event&location=1600+Amphitheatre+Pkwy%2C+Mountain+View%2C+CA+94043&timezone=America%2FLos_Angeles&service=office365">Office 365</a>
<a href="https://dynamic.addevent.com/dir/?client=USER-CLIENT-ID&start=09%2F25%2F2026+09%3A00+AM&end=09%2F25%2F2026+11%3A00+AM&title=Title+of+the+event&description=Description+of+the+event&location=1600+Amphitheatre+Pkwy%2C+Mountain+View%2C+CA+94043&timezone=America%2FLos_Angeles&service=outlook">Outlook</a>
<a href="https://dynamic.addevent.com/dir/?client=USER-CLIENT-ID&start=09%2F25%2F2026+09%3A00+AM&end=09%2F25%2F2026+11%3A00+AM&title=Title+of+the+event&description=Description+of+the+event&location=1600+Amphitheatre+Pkwy%2C+Mountain+View%2C+CA+94043&timezone=America%2FLos_Angeles&service=outlookcom">Outlook.com</a>
<a href="https://dynamic.addevent.com/dir/?client=USER-CLIENT-ID&start=09%2F25%2F2026+09%3A00+AM&end=09%2F25%2F2026+11%3A00+AM&title=Title+of+the+event&description=Description+of+the+event&location=1600+Amphitheatre+Pkwy%2C+Mountain+View%2C+CA+94043&timezone=America%2FLos_Angeles&service=yahoo">Yahoo</a>
Link to download or attach an .ics file
Link that downloads an .ics file. If you send emails using a Mail API or your own code you can attach an event file in an email. In the example you'll find an example on how to attach an event using the Mandrill Mail API. The same technique can be applied to almost any other service used for sending out emails.
https://dynamic.addevent.com/dir/?client=CLIENT&start=start&end=end&title=title&description=description&timezone=timezone&service=stream
// Get event file for attachment
$attachment = file_get_contents('https://dynamic.addevent.com/dir/?
client=USER-CLIENT-ID&start=09%2F25%2F2026+09%3A00+AM&
end=09%2F25%2F2026+11%3A00+AM&title=Title+of+the+event&
description=Description+of+the+event&timezone=America%2FLos_Angeles&
service=stream');
// Event file: Base 64 encode the event file
$attachment_encoded = base64_encode($attachment);
// Set message object
$compose = array(
'html' => 'Email content',
'subject' => 'Email subject',
'from_email' => 'from@example.com',
'to' => array(
array(
'email' => 'to@example.com'
)
),
'attachments' => array(
array(
'content' => $attachment_encoded,
'type' => 'text/calendar',
'name' => 'event.ics',
)
)
);
// Send the email
$response = $mandrill->messages->send($compose);
Account client ID. The account client ID is available in the Account section and is incorporated in all code examples on this page.
Start date of the event. Accepts most date/time formats, e.g. 09/11/2026 03:00 PM (12-hour format) or 11-09-2026 15:00 (24-hour format).
Use numeric values to describe the date, e.g. "" and not textual, e.g. "".
Dates in the m/d/y or d-m-y formats are disambiguated by looking at the separator between the various components: if the separator is a slash (/), then the American m/d/y is assumed; whereas if the separator is a dash (-) or a dot (.), then the European d-m-y format is assumed. If, however, the year is given in a two digit format and the separator is a dash (-, the date string is parsed as y-m-d. To avoid potential ambiguity, it's best to use ISO 8601 (YYYY-MM-DD) dates
Date examples:
09/11/2026 03:00 PM or 11-09-2026 15:00 or 2026/09/11 03:00 PM or 2026-09-11 15:00
Use numeric values to describe the date, e.g. "" and not textual, e.g. "".
Dates in the m/d/y or d-m-y formats are disambiguated by looking at the separator between the various components: if the separator is a slash (/), then the American m/d/y is assumed; whereas if the separator is a dash (-) or a dot (.), then the European d-m-y format is assumed. If, however, the year is given in a two digit format and the separator is a dash (-, the date string is parsed as y-m-d. To avoid potential ambiguity, it's best to use ISO 8601 (YYYY-MM-DD) dates
Date examples:
09/11/2026 05:00 PM or 11-09-2026 17:00 or 2026/09/11 05:00 PM or 2026-09-11 17:00
If end is not defined, the end date is automatically set to start date plus one hour.
Title of the event. Single line string.
The field accepts plain text or simplified HTML. Simplified HTML is supported by calendar clients like Outlook and Apple Calendar. If the calendar client does accept HTML, the content of the field is automatically converted into readable text.
Keep the description short and to the point. Link to a website for further details if the event description is long. Maximum 500 characters recommended.
Reason: Most modern browsers allow an unlimited number of characters to be transferred by the browser. Internet Explorer / Edge only allows ~2000 characters. A 500 characters maximum is recommended to make sure your event is cross browser compatible.
For the "Outlook.com" and "Office 365" options the description is automatically truncated after 700 characters when not using the Microsoft Events API version. The reason is that longer descriptions (unfortunately) will make Microsoft's Calendar services fail.
If you fill out organizer you must also include the organizer_email field.
If you include an organizer and an organizer_email, the event is considered to be a "meeting" by calendar clients like Outlook. If you don't include the fields, the event is considered to be an "appointment".
If you fill out organizer_email you must also include the organizer field.
If you include an organizer and an organizer_email, the event is considered to be a "meeting" by calendar clients like Outlook. If you don't include the fields, the event is considered to be an "appointment".
The date_format used to be mandatory but is optional today.
If timezone is applied (recommended), date/time will be converted to Zulu time / GMT / UTC. If timezone is not applied, date/time will be parsed as is (fluid date/time).
Explanation: The timezone parameter makes sure the date/time is correct no matter if you are in New York or Sydney. If your event has users from multiple time zones in the world, it's highly recommended to use the parameter.
If a service is specified, e.g. "apple" the event will be downloaded immediately to the users computer/device. If service isn't defined, the user will be redirected to an event page. Example: https://www.addevent.com/event/?db52444.
Use the value stream if you want to attach event files in your existing Mail API.
In order to create/access custom templates please go to "Events" -> "New Event" and save it. Then scroll down the page and click the "Custom template" button. With "Custom templates" you can edit all HTML of the event page, change date formats (e.g. 24-hour clock) etc.
Accepted input: Number
Example: Reminder "15" minutes before event starts = 15 or
one day before event starts : 60 minutes x 24 hours = 1440.
Event reminders are currently supported by:
- Apple Calendar
- Google Calendar (using Google Events API)
- Outlook
- Outlook.com (using Microsoft Events API)
Make the event repeat for a number of times.
Recurring rules are advanced and needs to be tested before you publish it. Please notice: The start date/time must match the recurrence rule in order to work in strict calendar systems like Outlook and Apple Calendar.
Recurring rules are currently supported by:
- Apple Calendar
- Google Calendar (using "Direct" and Google Events API)
- Office 365 (using the Microsoft Events API)
- Outlook
- Outlook.com (using Microsoft Events API)
Examples:
joe@example.com or joe@example.com,jack@example.com
Warning. Use this option only if it serves a purpose in your coding.
If the value is not defined (recommended), the system defaults to "CONFIRMED".
Warning. Use this option only if it serves a purpose in your coding.
Examples of usage:
PUBLISH, REQUEST, CANCEL, "REFRESH".
Warning. Use this option only if it serves a purpose in your coding.
Determines whether the event appears as "free" or "busy" on the users calendar. Default value is OPAQUE (busy).
Accepted values:
TRANSPARENT or OPAQUE.