Documentation Smart Links

Smart Links

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.

How it works

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.

Smart Link URL
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_York
Identical parameters always resolve to the same event, so a webhook firing twice or a refreshed link never creates a duplicate.

Parameters

Every event detail is passed as a URL parameter. Title and a start date are the only required fields.

ParameterRequiredDescription
titleRequiredThe title of the event. A single line, up to 255 characters.
date_startRequiredStart date and time. Use ISO format like 2026-05-24T15:00:00. Avoid ambiguous formats like 1/2/2020.
date_endConditionalEnd date and time. Required unless you pass a duration or it is an all-day event.
durationConditionalEvent length in minutes, for example 30 or 90. If both duration and date_end are set, date_end is ignored.
timezoneOptionalIANA timezone like America/New_York. Falls back to the calendar timezone if omitted.
locationOptionalA physical address or a virtual meeting link.
descriptionOptionalA longer description: agenda, notes, or instructions.
is_all_dayOptionalUse 1 for all-day events, 0 for time-specific. All-day events use the viewer's local timezone.
embedOptionalUse 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.
Either duration or date_end must be provided, unless the event is all-day.

Send straight to one calendar app

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 vs. direct link
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

Embed inline on your page

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.

Inline iframe embed
<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>
Embedding requires a paid plan (Premium and above), consistent with event embeds. Leave the calendar service off the link when embedding: embed applies to the chooser panel, not direct-to-app links.

Merge fields and URL encoding

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.

With merge tags
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.

Why encoding matters: the rule is encode everything except your merge tags. Get it wrong and the link is either rejected as invalid, or your platform can't find its tags to fill in. Those are the two most common reasons a link "doesn't work". You don't need to do any of this by hand: the Link Builder in the app handles the encoding for you. Pick your platform, type your tags, and copy a link that is already correct.
A link that opens fine in your browser can still be invalid. Browsers quietly clean up messy URLs, but strict senders like WhatsApp through ActiveCampaign do not, and reject them. Always build the link in the Link Builder and test with a real send, not by pasting the raw URL into a browser.

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.

Build a link in the app

Approval workflow

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:

  • Approve publishes the event and syncs it to every subscriber and connected calendar, exactly as a normal event.
  • Reject discards it. It never reaches your calendar or your subscribers.
Approval is the control layer for a public Smart Link key: anyone with the key can submit an event, but only events you approve go live.
Manage your Smart Links

Build your link

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.

What a Smart Link looks like
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_York
Open the Link Builder

Limits

You 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.

The limit counts events, not clicks or adds. An event is one unique set of details, however many people add it to their calendars, so a single link shared with thousands of people still counts as one event.