diff --git a/packages/livechat/src/components/App/App.js b/packages/livechat/src/components/App/App.js
index f1893bee6c20..e2161042b07b 100644
--- a/packages/livechat/src/components/App/App.js
+++ b/packages/livechat/src/components/App/App.js
@@ -117,6 +117,7 @@ export class App extends Component {
 		} else {
 			dispatchRestore();
 		}
+		Triggers.callbacks.emit('chat-opened-by-visitor');
 	}
 
 	handleOpenWindow = () => {
diff --git a/packages/livechat/src/lib/triggers.js b/packages/livechat/src/lib/triggers.js
index 0df433e6ba35..98c1bf9e65ab 100644
--- a/packages/livechat/src/lib/triggers.js
+++ b/packages/livechat/src/lib/triggers.js
@@ -1,3 +1,4 @@
+import mitt from 'mitt';
 import { route } from 'preact-router';
 
 import { Livechat } from '../api';
@@ -59,6 +60,7 @@ class Triggers {
 			this._triggers = [];
 			this._enabled = true;
 			Triggers.instance = this;
+			this.callbacks = mitt();
 		}
 
 		return Triggers.instance;
@@ -89,8 +91,8 @@ class Triggers {
 	}
 
 	async fire(trigger) {
-		const { token, firedTriggers = [] } = store.state;
-		if (!this._enabled) {
+		const { token, firedTriggers = [], user } = store.state;
+		if (!this._enabled || user) {
 			return;
 		}
 		const { actions } = trigger;
@@ -121,7 +123,10 @@ class Triggers {
 						parentCall('callback', ['assign-agent', normalizeAgent(agent)]);
 					}
 
-					route('/trigger-messages');
+					const foundCondition = trigger.conditions.find((c) => c.name === 'chat-opened-by-visitor');
+					if (!foundCondition) {
+						route('/trigger-messages');
+					}
 					store.setState({ minimized: false });
 				});
 			}
@@ -136,11 +141,6 @@ class Triggers {
 
 	processRequest(request) {
 		this._requests.push(request);
-		if (!this._started) {
-			return;
-		}
-
-		this.processTriggers();
 	}
 
 	processTriggers() {
@@ -163,13 +163,10 @@ class Triggers {
 						break;
 					case 'chat-opened-by-visitor':
 						const openFunc = () => {
-							const { user } = store.state;
-							if (user) {
-								store.off('change', openFunc);
-								this.fire(trigger);
-							}
+							this.fire(trigger);
+							this.callbacks.off('chat-opened-by-visitor', openFunc);
 						};
-						store.on('change', openFunc);
+						this.callbacks.on('chat-opened-by-visitor', openFunc);
 						break;
 				}
 			});
diff --git a/packages/livechat/src/routes/TriggerMessage/component.js b/packages/livechat/src/routes/TriggerMessage/component.js
index a9906bc8c8f7..41f18db445f3 100644
--- a/packages/livechat/src/routes/TriggerMessage/component.js
+++ b/packages/livechat/src/routes/TriggerMessage/component.js
@@ -18,9 +18,9 @@ class TriggerMessage extends Component {
 	componentDidUpdate() {
 		let height = 0;
 
-		this.ref.current.base.children.forEach((el) => {
+		for (const el of this.ref.current.base.children) {
 			height += el.scrollHeight;
-		});
+		}
 
 		parentCall('resizeWidget', height);
 	}
diff --git a/packages/livechat/src/routes/TriggerMessage/container.js b/packages/livechat/src/routes/TriggerMessage/container.js
index 40765f87cc1a..e46f7fd2fa89 100644
--- a/packages/livechat/src/routes/TriggerMessage/container.js
+++ b/packages/livechat/src/routes/TriggerMessage/container.js
@@ -8,15 +8,16 @@ import TriggerMessage from './component';
 
 
 export class TriggerMessageContainer extends Component {
-	handleStart() {
+	handleStart(props) {
 		parentCall('setFullScreenDocumentMobile');
 		parentCall('openWidget');
+		props.onRestore();
 		route('/');
 	}
 
 	render = (props) => {
 		parentCall('resetDocumentStyle');
-		return <TriggerMessage onStartChat={this.handleStart} {...props} />;
+		return <TriggerMessage onStartChat={() => this.handleStart(props)} {...props} />;
 	}
 }
 
diff --git a/packages/livechat/tsconfig.json b/packages/livechat/tsconfig.json
index 2d0a2cf459aa..286861613866 100644
--- a/packages/livechat/tsconfig.json
+++ b/packages/livechat/tsconfig.json
@@ -11,6 +11,6 @@
 	},
 	"exclude": [
 		"./node_modules",
-		"./build"
+		"./dist"
 	]
 }