# Instructions, Triggers, and Actions

eesel agents first need to be **triggered >** then follow their **instructions** to reply and take **actions.**&#x20;

Below we'll walk you through exactly how to select the right triggers and actions, and how best to prompt them in the instructions.&#x20;

## Triggers

The first step for deploying your AI agent is to select your trigger. For helpdesks, this will be one of the following:&#x20;

Triggers tell your agent when to activate. Without a trigger, your agent only works in the test chat - it won't respond to real tickets or messages on its own.

### How triggers work <a href="#how-triggers-work" id="how-triggers-work"></a>

```
 ┌──────────┐     ┌──────────┐     ┌──────────┐     ┌──────────┐
 │  Event    │────▶│  Trigger │────▶│  Agent   │────▶│  Action  │
 │  happens  │     │  fires   │     │  runs    │     │  taken   │
 └──────────┘     └──────────┘     └──────────┘     └──────────┘

 Example:
 Customer      "Any Customer    Agent reads     Replies to
 sends a  ───▶  Message"    ───▶ ticket and ───▶ customer
 ticket        trigger fires    finds answer
```

When an event matches your trigger condition, your agent activates, processes the input, and takes the configured actions.

### Setting up triggers

Triggers can be selected inside the specific integration you want eesel to be triggered within. For example:

{% stepper %}
{% step %}

### Click your integration

On the left sidebar, once you've installed an integration, simply click the integration you want to setup a trigger for.

<figure><img src="/files/UxRHaNJghDwZ7kCK40xH" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Select the triggers you want to enable

Once you click enable on the trigger, the bot will then be active live. We recommend starting with the @eesel trigger while you test, before moving to the more automated triggers.

<figure><img src="/files/kK4HrwDeDLXHv428Zhur" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Ensure the right actions are enabled and prompted

When your eesel agent is triggered, it will be able to take the actions you enable. You should enable the draft reply action to start with, and add additional actions as you build your agent.&#x20;

Use the [Instructions](#instructions) tab to explain how and when each action should occur.

<figure><img src="/files/UQnl7WDoMO3D4IMOyQyR" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

Some platforms have platform specific triggers, but the basic triggers are:&#x20;

| Trigger                                                 | When to use                                                                                        |
| ------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
| @eesel mention (in an internal note, or in Slack/Teams) | When you want eesel to be 'on demand', rather than automatic.                                      |
| Any customer message                                    | When you want to automate eesel activating for all incoming messages on new and existing tickets.  |
| First customer message                                  | When you just want eesel as the initial first response, but not to respond on subsequent responses |

Please see the specific [integration](/integrations/overview.md) to learn more about specific triggers.

You can add multiple triggers to the same agent. For example:

* **Any Customer Message** - Agent responds to all tickets
* **Agent Requests AI Help** - Team can also ask the agent for help directly

### Tips <a href="#tips" id="tips"></a>

**Start with "Agent Requests AI Help"** if you're nervous about automation. This lets your team control when the AI activates by @mentioning it.

**Use "First Customer Message" for triage.** It fires before any agent replies, making it ideal for categorization and routing.

**Disable triggers to pause.** You can disable a trigger without deleting it — useful for maintenance or testing. This will pause the agent from responding at all.

## Instructions

Instructions are how you tell your agent what to do. Think of them as the onboarding document you'd give a new team member - they define your agent's personality, rules, and behavior.

The eesel sidebar chat is your best friend when it comes to knowledge and instructions - you can chat with it to update its own instructions and knowledge.

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

Good instructions include:

* **Who the agent is** - "You are a friendly support agent for Acme Corp"
* **How to respond** - "Keep answers concise. Use bullet points for steps."
* **What to do in specific situations** - "If the customer asks about billing, check their order status first"
* **When to escalate** - "If you can't answer confidently, assign to the Support team"

They work in tandem with your triggers and actions. When you enable a trigger > your agent uses its instruction to > take actions that you've enabled.&#x20;

Once you have enabled some actions, you should specify in the instructions *how and when* to take those actions.&#x20;

For example, add the 'add tag' action. In your instructions, explain: "Every time a query comes through, apply one tag from the following options: Billing, Bugs, Setup, Troubleshooting.&#x20;

## Actions

Actions are the things your agent can do - reply to customers, tag tickets, assign to team members, look up information, and more. You configure which actions are available, and your agent uses them when appropriate based on its [instructions.](#instructions)

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

### How actions work

Your agent doesn't blindly execute actions. It reads the incoming message, considers its instructions and knowledge, and decides which actions to take:

```
 ┌────────────┐     ┌──────────────────────────┐     ┌──────────────┐
 │ Incoming    │     │      Agent decides:       │     │   Results:   │
 │ ticket:     │────▶│                           │────▶│              │
 │ "Where's    │     │  1. Search order status   │     │  Reply sent  │
 │  my order?" │     │  2. Reply with tracking   │     │  to customer │
 │             │     │  3. Tag as "order-status"  │     │              │
 └────────────┘     └──────────────────────────┘     └──────────────┘
```

### Setting up actions

{% stepper %}
{% step %}

### Click your integration

On the left sidebar, once you've installed an integration, simply click the integration you want to setup a trigger for.

<figure><img src="/files/UxRHaNJghDwZ7kCK40xH" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Select the actions you want to enable

Once you click enable on the trigger, the bot will then be active live. We recommend starting with the @eesel trigger and selecting the draft reply action.

<figure><img src="/files/lVTmppgijJpaWUGFQKtG" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Update the instructions

Use the [Instructions](#instructions) tab on the left sidebar of the dash to explain how and when each action should occur. You can use the test chat on the right to ask the agent how best to implement its actions, and get it to update its instructions for you.

<figure><img src="/files/RfOWR1WEkYPVcyZts9GO" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

### Available actions by integration

#### Helpdesk actions

These actions are available when you connect a helpdesk integration (Zendesk, Freshdesk, Intercom, Gorgias, Jira):

#### Responding to customers

| Action                  | Description                            | Available on                          |
| ----------------------- | -------------------------------------- | ------------------------------------- |
| **Leave Public Reply**  | Send a response the customer sees      | Zendesk, Freshdesk, Intercom, Gorgias |
| **Leave Draft Reply**   | Create a draft for your team to review | Zendesk, Freshdesk, Intercom, Gorgias |
| **Leave Internal Note** | Add a note only your team sees         | Zendesk, Freshdesk, Intercom, Gorgias |
| **Comment on Issue**    | Add a comment to a Jira issue          | Jira                                  |

#### Ticket management

| Action              | Description                               | Available on                                |
| ------------------- | ----------------------------------------- | ------------------------------------------- |
| **Tag Ticket**      | Add tags for categorization               | Zendesk, Freshdesk, Intercom, Gorgias       |
| **Assign Ticket**   | Route to a specific team member           | Zendesk, Freshdesk, Intercom, Gorgias, Jira |
| **Assign to Group** | Route to a team queue                     | Zendesk, Freshdesk                          |
| **Close Ticket**    | Mark as resolved                          | Zendesk, Freshdesk, Intercom, Gorgias       |
| **Create Ticket**   | Open a new ticket                         | Zendesk, Freshdesk, Gorgias                 |
| **Update Ticket**   | Change status, priority, or custom fields | Zendesk, Freshdesk, Intercom                |
| **Label Issue**     | Add labels to a Jira issue                | Jira                                        |

#### Information lookup

| Action                | Description                                | Available on                       |
| --------------------- | ------------------------------------------ | ---------------------------------- |
| **Read Ticket**       | Read full ticket with conversation history | Zendesk, Freshdesk, Intercom       |
| **Search Tickets**    | Search past tickets                        | Zendesk, Freshdesk, Intercom, Jira |
| **List Tickets**      | List tickets with filters                  | Zendesk, Freshdesk, Intercom       |
| **Get User by Email** | Look up user details                       | Zendesk, Intercom                  |
| **Get Organization**  | Retrieve organization info                 | Zendesk                            |
| **Get Ticket Fields** | Read custom field values                   | Zendesk, Intercom                  |

#### Shopify actions

| Action                        | Description                             |
| ----------------------------- | --------------------------------------- |
| **Get Order History**         | Look up a customer's orders by email    |
| **Get Order by ID**           | Get detailed order info                 |
| **Get Customer by Email**     | Look up customer profile                |
| **Search Products**           | Search the product catalog              |
| **Get Products**              | Retrieve product details                |
| **Get Product Variants**      | Get size, color, SKU, price, inventory  |
| **Get Order Fulfillment**     | Check shipping and tracking status      |
| **Create Return**             | Initiate a product return               |
| **Refund Order**              | Process a refund                        |
| **Cancel Order**              | Cancel an unfulfilled order             |
| **Generate Product Carousel** | Create a visual product display in chat |

#### Slack actions

| Action           | Description                       |
| ---------------- | --------------------------------- |
| **Send Message** | Send a message to a Slack channel |

#### Gmail actions

| Action                 | Description                              |
| ---------------------- | ---------------------------------------- |
| **Search Emails**      | Search emails using Gmail syntax         |
| **Read Email**         | Read a full email by ID                  |
| **Send Email**         | Send an email with optional CC/BCC       |
| **Get Email from URL** | Extract an email thread from a Gmail URL |

#### Zendesk Messenger actions

| Action                      | Description                                  |
| --------------------------- | -------------------------------------------- |
| **Send Messenger Reply**    | Reply in the Zendesk Messaging Widget        |
| **Transfer to Human Agent** | Hand off a Messenger conversation to a human |

### Tips for configuring actions

**Start with fewer actions.** Give your agent only the actions it needs. Too many options can lead to confusion.

**Match actions to instructions.** If you give your agent a "Close Ticket" action, make sure your instructions explain when to use it.

**Use draft replies first.** When starting out, use "Leave Draft Reply" instead of "Leave Public Reply" until you trust the agent's judgment.

**Enable HITL for sensitive actions.** Turn on human in the loop (settings button next to each action) for actions with significant impact (refunds, ticket closure, public replies).

**Describe actions in your instructions.** Explicitly tell your agent when to use each action. For example: "After resolving a simple how-to question, tag the ticket and close it."


---

# Agent Instructions: 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://docs.eesel.ai/getting-started/instructions-triggers-and-actions.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.
