Tag action links turn a normal email link into a one-click preference action. When a subscriber clicks, Lumail adds or removes tags on their profile **instantly** and shows a success page.

Use them for interest capture, topic opt-outs, preference centers, and workflow triggers — without asking the subscriber to log in.

There is **no confirmation step**. The click itself is the action.

> **Important:** An **Add tag** click also resubscribes a subscriber whose status is unsubscribed. Use add-tag links only when that is the intended outcome.

## How It Works

1. You use a tag action variable as the **URL** of a link or button
2. When the email is sent, Lumail replaces it with a unique per-subscriber URL
3. On click, tags are applied immediately
4. The subscriber lands on a success page with the requested tags shown as badges

Tag action syntax is **only valid in a link or button URL**. It is not a content or subject-line variable. Typing `{{addTag:vip}}` in the email body does not create a clickable action.

## Syntax

```
{{addTag:tag-name}}
{{removeTag:tag-name}}
```

Multiple tags, comma-separated:

```
{{addTag:vip,early-access}}
{{removeTag:promo,newsletter}}
```

| Variable                    | What it does          |
| --------------------------- | --------------------- |
| `{{addTag:tag-name}}`       | Adds one tag          |
| `{{removeTag:tag-name}}`    | Removes one tag       |
| `{{addTag:tag-a,tag-b}}`    | Adds multiple tags    |
| `{{removeTag:tag-a,tag-b}}` | Removes multiple tags |

## Insert In The Editor

1. Select the text you want to turn into a link, or select a button
2. Open the link field with the link icon or `Cmd+K`
3. In the URL input, type `@` to open the variable menu
4. Select **Add tag** or **Remove tag**, or keep typing:
   - `@addTag` / `@removeTag` opens the tag submenu
   - `@vip` surfaces matching add/remove actions for that tag
5. Choose an existing tag, or type a new tag name and press Enter

You can insert a tag that does not exist yet. **Add tag** creates it on the first click. **Remove tag** is a no-op until that tag exists on the subscriber.

![Type @tag to surface Add tag and Remove tag](/docs/tag-action-links-menu.png)

![Choose a tag from the Add tag submenu](/docs/tag-action-links-submenu.png)

![Tag action variable inserted as the link URL](/docs/tag-action-links-url.png)

![Linked text using a tag action URL in the editor](/docs/tag-action-links-editor.png)

## Examples

### Interest capture

```
Want more content about AI? [Get AI updates]({{addTag:interested-ai}})
```

The link text is the promise. The URL is only `{{addTag:interested-ai}}`.

### Soft opt-out

Leave one topic without a full unsubscribe:

```
[Stop promotional emails]({{removeTag:promo}})
```

### Multiple tags at once

```
[Join the VIP list]({{addTag:vip,early-access}})
```

### Button URL

Insert a button, then set its URL to a tag action. Same syntax as a text link:

```
{{addTag:interested}}
{{removeTag:onboarding}}
```

### HTML

If you are writing HTML (API, snippet, or custom block), put the variable in `href` only:

```html
<a href="{{addTag:interested-ai}}">Get AI updates</a>
<a href="{{removeTag:promo}}">Stop promotional emails</a>
<a href="{{addTag:vip,early-access}}">Join the VIP list</a>
```

Do not wrap it in `https://`. Lumail already generates a full subscriber-specific URL at send time. A prefix like `https://{{addTag:vip}}` is stripped, but a bare `{{addTag:vip}}` is the form to use.

### Preference center in the email

Put choices directly in the email instead of a separate settings page:

```
Keep weekly tips: [Yes, keep them]({{addTag:weekly-tips}})
Leave the promo stream: [Unsubscribe from promos]({{removeTag:promo}})
```

### Workflow trigger

Use a click as the entry signal for a sequence:

1. Subscriber clicks `{{addTag:interested}}`
2. A workflow starts when that tag is added
3. The follow-up sequence begins automatically

See [Workflows](/docs/workflows) and [Action Step](/docs/workflows/workflow-action-step) for tag-based automation.

## What The Subscriber Sees

After the click, the subscriber sees a success page that:

- Uses your organization branding
- Confirms the action completed
- Shows the tags requested by the link as badges

## Constraints

- Tag action links work only in **non-transactional** emails (campaigns and workflow emails)
- Prefer existing organization tags so the editor menu stays easy to scan
- **Add tag** links create a tag automatically if it does not already exist; **Remove tag** links only remove existing tags
- **Add tag** links also resubscribe an unsubscribed subscriber
- You can combine them with conditional content (`showIf`) to show different options to different segments
- Test the complete click path and success page before sending

## Best Practices

- Make the link text describe the result (`Get AI updates`, not only "click here")
- Prefer one clear action per link
- Keep tag names short and readable (`interested-ai`, `promo`, `vip`)
- Pair opt-out links with a soft alternative when useful
- Use add-tag links carefully if your audience includes unsubscribed subscribers

## Related Documentation

- [Variables](/docs/features/variables) - Personalize email content and subject lines
- [Workflows](/docs/workflows) - Trigger sequences from tag changes
- [Action Step](/docs/workflows/workflow-action-step) - Add or remove tags inside a workflow
- [Workflow Groups](/docs/workflows/workflow-groups) - Chain tag handoffs without overlapping enrollments
- [Subscriber Events](/docs/features/subscriber-events) - Review tag add/remove history
- [Tags API](/docs/api-reference/api-tags-get) - Create and manage tags programmatically
- [Add Tags to Subscriber](/docs/api-reference/api-subscriber-tags-post) - Add tags via API
- [Remove Tags from Subscriber](/docs/api-reference/api-subscriber-tags-delete) - Remove tags via API
- [Content Deliverability](/docs/features/content-deliverability) - Keep campaign content inbox-ready
