> For the complete documentation index, see [llms.txt](https://asperazera.gitbook.io/simple-event-system/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://asperazera.gitbook.io/simple-event-system/advanced/subscribe-to-multiple-tags.md).

# Subscribe to multiple Tags

Sometimes a single Actor or Widget needs to react to different types of events. Instead of creating multiple `Bind Event` nodes, you can handle everything inside a single Listener logic.

There are **three common ways** to handle multiple tags, depending on your needs.

***

### 1. Distinct Events (The Switch Node)

**Best for:** When you have a few specific, unrelated events that require different logic.

This is the standard approach. The `Switch on Gameplay Tag` node allows you to add as many output pins as you need.

In the **Details panel** of the node add the tags you want to listen to.

<figure><img src="/files/XGXqOckvoth6HjPvwLmp" alt=""><figcaption></figcaption></figure>

> **Note:** The Switch node typically performs an **Exact Match**. If you listen for `Game.Start`, it will not trigger for `Game.Start.Round1`.

***

### 2. Hierarchical Groups (Parent Tags)

**Best for:** When you want to react to a *category* of events.

Gameplay Tags are hierarchical (`Parent.Child.SubChild`). If you want one piece of logic to run for **all** sub-tags under a specific parent, use the **Matches Tag** node instead of a Switch.

#### Example Scenario

You have events:

* `Round.Started`
* `Round.Finished`
* `Round.Paused`

You want your Actor to react to **any** Round related events.

#### Implementation

1. Take the incoming **Event Tag**.
2. Search for the **Matches Tag** node.
3. In the **Tag to Match** field, select the parent tag: `Round`.
4. Connect the boolean result to a **Branch** node.

<figure><img src="/files/7XKtY0Y1DvVzSdyh8PDb" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
**Result:** The Branch will be *True* for `Round.Started` or any other sub-tag, because they "match" the parent category.
{% endhint %}

***

### 3. Custom Lists (Matches Any Tags)

**Best for:** When you want to trigger the *same* logic for a specific list of tags that are NOT hierarchically related.

Sometimes you need to group unrelated events together (e.g., show a notification for both "Quest Complete" and "Level Up").

#### Implementation

1. Create a `Make Literal Gameplay Tag Container` node.
2. Add the specific tags you want to check (e.g., `Quest.Complete` and `Player.LevelUp`).
3. Take the incoming **Event Tag** and search for the `Matches Any Tags` node.
4. Connect your Container to the **Other Container** pin.
5. Connect the result to a `Branch`.

{% hint style="info" %}
**Tip:** Instead of `Make Literal Gameplay Tag Container`  you can create separate **variable** of **Gameplay Tag Container** type. With it you can add and remove Tags in this variable to react on events dynamically!
{% endhint %}

<figure><img src="/files/jPCQFpwG0K4Mv10h1pcF" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
**Result:** The Branch will be *True* if the incoming event matches *any one* of the tags in your list.
{% endhint %}

***

### 💡 Summary: Which one to choose?

| Method             | Node Used                | Use Case                                                                            |
| ------------------ | ------------------------ | ----------------------------------------------------------------------------------- |
| **Specific Logic** | `Switch on Gameplay Tag` | I need to do **different things** for different events (A -> Jump, B -> Run).       |
| **Category Logic** | `Matches Tag`            | I need to do **one thing** for a whole group of events (Any Damage -> Subtract HP). |
| **Group Logic**    | `Matches Any Tags`       | I need to do **one thing** for a specific list of unrelated events.                 |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://asperazera.gitbook.io/simple-event-system/advanced/subscribe-to-multiple-tags.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
