[ Documentation ](https://addcal.co/documentation.md) Smart Links 

Documentation menu- [ Overview](https://addcal.co/documentation.md)

No code

- [ Add to Calendar button](https://addcal.co/documentation/calendar-button.md)
- [ Embeds](https://addcal.co/documentation/embeds.md)
- [ Smart Links](https://addcal.co/documentation/smart-links.md)

AI assistants

- [ MCP Server](https://addcal.co/documentation/mcp-server.md)

Developers

- [ Dynamic Links](https://addcal.co/documentation/dynamic-links.md)
- [ Developer API](https://addcal.co/documentation/api.md)

 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.

[ Create a Smart Link ](https://addcal.co/integrations/smart-links)[ See the feature overview ](https://addcal.co/automations/smart-links.md)

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 Copy

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

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

 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 Copy

```
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
```

Smart Links vs Dynamic Links
----------------------------

 The deciding question is whether the event details are the **same for everyone** or **personalized per recipient**.

- Use **Smart Links** when the event is the same for everyone (a webinar, a launch, a class). You get one shared event in AddCal with full analytics rolled up against it.
- Use **Dynamic Links** when each recipient gets different details, like their own meeting link, seat, or address, where a personalized add-to-calendar link makes more sense than a shared event.

[ Read the Dynamic Links docs ](https://addcal.co/documentation/dynamic-links.md)

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 Copy

```
<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 Copy

```
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 ](https://addcal.co/integrations/smart-links)

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 ](https://addcal.co/integrations/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 Copy

```
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 ](https://addcal.co/integrations/smart-links)

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.
