A Smart Link is a single URL that creates a calendar event from the parameters you pass it. Wire it into a form, an email, a CRM, Zapier, or your own code, and events get created and synced to every major calendar automatically.
Create a Smart Link in your dashboard and point it at a calendar. Each link has its own secret key. To create an event, visit the link with event details as URL parameters. The first time a link with a given set of details is opened, AddCal saves it as one event on the calendar you connected, then redirects to its public add-to-calendar page so the visitor can add it to their own calendar.
That one event is shared by everyone who opens the link. A thousand people opening the same link add the same event to their own calendars, while you keep a single event in AddCal with all the analytics rolled up against it. Change the details in the link (a different date or title) and you get a new event.
https://addcal.co/s/your-key
?title=Team+Meeting
&date_start=2026-05-24T15:00:00
&date_end=2026-05-24T16:00:00
&timezone=America/New_YorkEvery event detail is passed as a URL parameter. Title and a start date are the only required fields.
| Parameter | Required | Description |
|---|---|---|
title | Required | The title of the event. A single line, up to 255 characters. |
date_start | Required | Start date and time. Use ISO format like 2026-05-24T15:00:00. Avoid ambiguous formats like 1/2/2020. |
date_end | Conditional | End date and time. Required unless you pass a duration or it is an all-day event. |
duration | Conditional | Event length in minutes, for example 30 or 90. If both duration and date_end are set, date_end is ignored. |
timezone | Optional | IANA timezone like America/New_York. Falls back to the calendar timezone if omitted. |
location | Optional | A physical address or a virtual meeting link. |
description | Optional | A longer description: agenda, notes, or instructions. |
is_all_day | Optional | Use 1 for all-day events, 0 for time-specific. All-day events use the viewer's local timezone. |
embed | Optional | Use 1 to render the add-to-calendar panel inline when the link is loaded in an iframe, instead of redirecting. Ignored when a calendar service is set. Requires a paid plan. |
duration or date_end must be provided, unless the event is all-day. Add a calendar service to the end of the link to skip the chooser and send people directly to that calendar. Supported services: google, apple, outlook, outlook_web, office365, yahoo, ics.
You can make a direct link for each calendar app from the same Smart Link, with the same event details. They all create and report on the same event, so a Google link and an Apple link in the same email roll up to one event's analytics, rather than splitting into separate ones.
Event page (default) https://addcal.co/s/your-key?title=Team+Meeting&date_start=2026-05-24T15:00:00&duration=60 Direct to Google Calendar https://addcal.co/s/your-key/google?title=Team+Meeting&date_start=2026-05-24T15:00:00&duration=60
The deciding question is whether the event details are the same for everyone or personalized per recipient.
Append embed=1 and drop the Smart Link straight into an <iframe>. Instead of redirecting, it renders the full add-to-calendar panel inline, built dynamically from the URL parameters. This is ideal for post-booking confirmation pages where you want the event card to appear right on the page.
<iframe
src="https://addcal.co/s/your-key?title=Team+Meeting&date_start=2026-05-24T15:00:00&duration=60&embed=1"
style="width:100%;border:none;min-height:400px;"
></iframe>embed applies to the chooser panel, not direct-to-app links. Because a Smart Link is just a URL, you can build one in your email or CRM tool and drop its merge tags where the values go. Every recipient gets their own personalized event with nothing to build.
Mailchimp
https://addcal.co/s/your-key?title=*|EVENT_TITLE|*&date_start=*|EVENT_START|*
HubSpot
https://addcal.co/s/your-key?title={{event.title}}&date_start={{event.start}} A URL cannot safely contain spaces, line breaks, emoji, or symbols like & and %. Those have to be encoded (a space becomes %20). The catch: if you encode the whole link, your merge tags get encoded too, and your platform can no longer find them. ActiveCampaign's %WEBINAR_LINK% would become %25WEBINAR_LINK%25, which it will not replace.
For a paragraph break in the description that shows correctly everywhere (Google Calendar reads it as HTML), use <br><br> between paragraphs. Our system handles the rest.
Each Smart Link has an approval toggle. With it on, every event created through the link arrives as pending instead of going live, so you can automate event creation without giving up control over what gets published. Leave it off and events are approved and synced the moment they are created.
Pending events are held on the link's calendar. Open the calendar in your dashboard to review them and approve or reject each one:
The Link Builder in the app walks you through it: pick your event details, choose your email or automation platform, and copy a ready-to-share link or embed. No hand-editing URLs.
https://addcal.co/s/your-key
?title=Team+Meeting
&date_start=2026-05-24T15:00:00
&date_end=2026-05-24T16:00:00
&timezone=America/New_YorkYou can create as many Smart Links as you like on every plan. The free plan is for testing and caps the events created through Smart Links at 5 per month. Premium raises that to 200 events a month and Business is unlimited.