# Triggering options - "When to show?"

Canonical URL: https://support.optimonk.com/en/articles/triggering-options-when-to-show

Triggers are the rules that decide **when** your popup appears. You can use them on their own, or narrow the audience further with targeting rules (*who should see the popup*). OptiMonk has six triggers:

1. **On exit-intent**
2. **After a delay** (X seconds on the page)
3. **After scrolling** (X% of the page)
4. **On click** (a specific element)
5. **After inactivity** (X seconds without activity)
6. **On a JavaScript event**

---

## Where triggers are set

Every campaign carries one settings package: triggers, targeting rules, and frequency together. There are two ways to change it.

### In the campaign's Settings tab

1. Open **Campaigns** in the left menu and click the campaign you want to edit.
2. Open the **Settings** tab.
3. The first section is **When will the popup show up** — your current triggers, one card each.

Each trigger card names the trigger and describes it in one line, ending with the devices it runs on — for example *When a visitor is about to leave your site · Desktop & mobile*. Between two trigger cards the rail shows an **OR** badge: the campaign fires when **any** of them triggers.

If the campaign has none yet, the section says: *No triggers yet - add one so the popup can appear.*

### In chat

You don't have to open the editor at all. The campaign's chat rail takes plain requests:

*Change trigger to exit intent
*

The panel updates as you talk. When the agent changes something you already touched, you get a choice: **Keep my edits** or **Load assistant's version** (which discards yours).

The agent also suggests a trigger/targeting/frequency package by itself when a campaign is created, based on your brief and the concept — you can accept it, edit it, or replace it.

---

## Add, edit and remove a trigger

- **Add** — click **Add trigger**. The picker says *Pick when the campaign should show. Triggers are combined with OR.* and lists the six triggers with a one-line subtitle each. A trigger already on the campaign is marked **Added**.
- **Edit** — click the trigger's card. The same dialog opens on it.
- **Remove** — use the card's delete action.

In the dialog, you set the trigger's value (seconds, percent, selector or event name), pick the devices, and click **Save** (**Cancel** drops it). Each dialog carries an info box and a **How it works** section with the details of that trigger.

A campaign can hold up to **8** triggers.

### Devices

Under **On devices,** you switch **Desktop** and **Mobile** on or off. Leaving both on means the popup can fire on either; switching one off makes the trigger desktop-only or mobile-only. So you can set one trigger to work only on mobile and a different one only on desktop, in the same campaign.

**On click** and **On a JavaScript event** are the exception: they have no single device switch, because each selector or event name carries its **own** device chooser (see below). Their cards show *per element* instead of a device name.

---

## Save

While you have unsaved edits, the section shows **You have unsaved changes** with **Discard** and **Save changes**. Nothing reaches your visitors until you save.

If a save fails, you are told explicitly — *Couldn't save your changes - they are not stored yet. Please try again.* — so don't reload the page on a failed save.

**A campaign with no trigger cannot go live.** If you try to switch one on, OptiMonk refuses it: *This campaign has no trigger, so it would never appear. Add a trigger (for example, a 5-second delay) in the campaign settings, then activate it again.
*

---

## 1. On exit-intent

*When about to leave.* The popup appears when the visitor is about to leave your site without converting — a last chance to keep them.

On desktop, OptiMonk watches the top 10 pixels of the browser's inner area: if the cursor is dragged up into that strip, it counts as exit intent. On mobile, the signals are different — see Exit-intent trigger on mobile devices.

The dialog's info box:

*Shows when a visitor is about to leave your site without converting — on both desktop and mobile. Multiple triggers are combined with OR — the campaign fires when any of them triggers.
*

The card reads: *When a visitor is about to leave your site · {devices}*.

---

## 2. After a delay

*X seconds on the page.* Set **Show after** *N* **seconds** — anything from **0 to 60**.

The counter starts once the page has loaded and OptiMonk has loaded with it, and it restarts on every page load.

**0 seconds** makes it an entry popup: it appears the moment a visitor lands. The card then reads **Immediately** — *Show on page load*. It works, but it interrupts people before they have seen anything, so it is rarely the best choice; follow your visitors' behaviour and pick a moment that fits.

*Use 0 seconds to show immediately on page load. Multiple triggers are combined with OR — the campaign fires when any of them triggers.
*

---

## 3. After scrolling

*X% of the page.* Set **Show after scrolling** *N* **% of the page**, between **1 and 100**.

OptiMonk watches the scroll position and calculates how far down the page the visitor currently is. This catches active visitors: on a blog, for instance, someone who has scrolled past half the article is clearly reading it, and is a far better newsletter prospect than someone who just arrived.

*Shows once the visitor has scrolled down the set percentage of the page — this catches the attention of active visitors. Multiple triggers are combined with OR — the campaign fires when any of them triggers.
*

---

## 4. On click

*Click on a specific element.* The popup appears when the visitor clicks a part of your page you name — a button, a link, a banner. At that point the popup behaves like a mini landing page: put an e-book link in a blog post, and the popup that collects the email opens on the click.

Add one or more **CSS selector** rows (*e.g. #cta-button, .promo-banner a*) with **Add another selector**. The rows are OR-ed: a click on any of them fires the campaign. Each row has its own **Desktop / Mobile** toggle, so one selector can be desktop-only while the next is mobile-only.

The **How it works** section:

*Use this trigger to show the campaign when a visitor clicks a specific part of your page — a button, link, banner, and so on. At that point the popup behaves like a mini landing page.
You can enter any CSS selector: an element name, a class, an ID, or a combination of them. Examples: a · div.container > a · table > a.delete · #container · #container > *
A click on a child element also triggers the campaign when the child sits inside a matching element.
*

**Two things to keep in mind:**

- Clicking the element triggers the campaign **instead of** its normal behaviour, so don't use a selector whose own function you need.
- **Frequency caps do not apply to this trigger.** As the dialog says: *a click always shows the campaign as long as the targeting rules match.* The popup opens on every click — including after a page reload, and even for a visitor who has already filled it in.

### Finding the selector

1. Open your site in Chrome.
2. Right-click the element you want to use and choose **Inspect**.
3. In the panel that opens, hover over the code to see which element it highlights.
4. Take the element's id or class. An `id="e-1570005882489"` becomes `#e-1570005882489` in the CSS selector field; a `class="promo"` becomes `.promo`.

---

## 5. After inactivity

*X seconds without activity.* Set **Show after** *N* **seconds**. Inactivity means no mouse movement, no clicking, and no scrolling.

Use it to catch visitors who have stalled: a special offer appearing unexpectedly is often enough to bring them back. If your analytics show a lot of idle time on a page, this is the trigger for it.

*Shows after the visitor has been inactive (no clicks or scrolling) for the set number of seconds — this catches the attention of inactive visitors. Multiple triggers are combined with OR — the campaign fires when any of them triggers.
*

The dialog accepts 0–60 seconds, but the smallest value the campaign actually runs with is **1 second** — a 0 is saved as 1. For an entry popup, use **After a delay** with 0 seconds instead.

---

## 6. On a JavaScript event

*Your own custom DOM event.* Use this when the moment you care about is not covered by any of the other five — a login, a filter change, a step in your own checkout.

Add one or more **Event name** rows (*e.g. user_login*) with **Add another event**. Like the click selectors, the rows are OR-ed, and each row carries its own device chooser.

Fire the event from your own code with the exact name you entered, on the document or on the `<html>` element:

```
document.dispatchEvent(new Event('user_login', { bubbles: true }))
```

*Shows when a DOM event with the given name fires on your page. Multiple triggers are combined with OR — the campaign fires when any of them triggers.
*

You can read more about JavaScript events at [w3schools](https://www.w3schools.com/js/js_events.asp).

---

## Triggers that were set up in the classic admin

If a campaign was created in the classic OptiMonk admin and uses a trigger this app does not model (for example *average time on page*), it is **not** lost. It appears as a **Custom trigger** card:

*Managed in the OptiMonk admin — kept as-is, not editable here.
*

Opening it shows the raw trigger for reference, read-only. Saving this page keeps it exactly as it is; to change it, open the classic admin.

The same applies to a delay longer than 60 seconds: the classic admin puts no upper limit on it, so such a trigger is preserved untouched rather than clamped to 60.
