diff --git a/src/Api/Data/EventInterface.php b/src/Api/Data/EventInterface.php
new file mode 100644
index 0000000..f2ece37
--- /dev/null
+++ b/src/Api/Data/EventInterface.php
@@ -0,0 +1,15 @@
+ 'addtocart',
+ 'data' => [
+ 'productKey' => $this->dataHelper->getTweakwiseId((int)$this->product->getId()),
+ 'quantity' => $this->qty,
+ 'totalAmount' => $this->getTotalAmount()
+ ]
+ ];
+ }
+
+ /**
+ * @param Product $product
+ * @return AddToCart
+ */
+ public function setProduct(Product $product): AddToCart
+ {
+ $this->product = $product;
+ return $this;
+ }
+
+ /**
+ * @param int $qty
+ * @return $this
+ */
+ public function setQty(int $qty): AddToCart
+ {
+ $this->qty = $qty;
+ return $this;
+ }
+
+ /**
+ * @return float
+ */
+ private function getTotalAmount(): float
+ {
+ $price = (float)$this->product->getPriceInfo()->getPrice(FinalPrice::PRICE_CODE)->getValue();
+ return $this->priceFormatService->format($price * $this->qty);
+ }
+}
diff --git a/src/Event/AddToWishlist.php b/src/Event/AddToWishlist.php
new file mode 100644
index 0000000..815b4ac
--- /dev/null
+++ b/src/Event/AddToWishlist.php
@@ -0,0 +1,50 @@
+ 'addtowishlist',
+ 'data' => [
+ 'productKey' => $this->dataHelper->getTweakwiseId((int)$this->product->getId())
+ ]
+ ];
+ }
+
+ /**
+ * @param Product $product
+ * @return AddToWishlist
+ */
+ public function setProduct(Product $product): AddToWishlist
+ {
+ $this->product = $product;
+ return $this;
+ }
+}
diff --git a/src/Observer/Event/TriggerAddToCartEvent.php b/src/Observer/Event/TriggerAddToCartEvent.php
new file mode 100644
index 0000000..81b2bf0
--- /dev/null
+++ b/src/Observer/Event/TriggerAddToCartEvent.php
@@ -0,0 +1,45 @@
+getData('product');
+ $qty = (int)$observer->getData('request')->getParam('qty');
+ if ($qty === 0) {
+ $qty = 1;
+ }
+
+ $this->sessionService->add(
+ 'AddToCart',
+ $this->addToCartEvent->setProduct($product)->setQty($qty)->get()
+ );
+ }
+}
diff --git a/src/Observer/Event/TriggerAddToWishlistEvent.php b/src/Observer/Event/TriggerAddToWishlistEvent.php
new file mode 100644
index 0000000..e43392b
--- /dev/null
+++ b/src/Observer/Event/TriggerAddToWishlistEvent.php
@@ -0,0 +1,40 @@
+getData('product');
+ $this->sessionService->add(
+ 'AddToWishlist',
+ $this->addToWishlistEvent->setProduct($product)->get()
+ );
+ }
+}
diff --git a/src/Plugin/Event/AddEventDataToSection.php b/src/Plugin/Event/AddEventDataToSection.php
new file mode 100644
index 0000000..033ab83
--- /dev/null
+++ b/src/Plugin/Event/AddEventDataToSection.php
@@ -0,0 +1,32 @@
+sessionService->get();
+ $this->sessionService->clear();
+
+ return array_merge($result, ['tweakwise_events' => $events]);
+ }
+}
diff --git a/src/Service/Event/PriceFormatService.php b/src/Service/Event/PriceFormatService.php
new file mode 100644
index 0000000..add8fa7
--- /dev/null
+++ b/src/Service/Event/PriceFormatService.php
@@ -0,0 +1,19 @@
+get();
+ $eventData[$identifier] = $data;
+ /** @phpstan-ignore-next-line */
+ $this->session->setTweakwiseEventData($eventData);
+ }
+
+ /**
+ * @return array
+ */
+ public function get(): array
+ {
+ /** @phpstan-ignore-next-line */
+ $eventData = $this->session->getTweakwiseEventData();
+ if (is_array($eventData)) {
+ return $eventData;
+ }
+
+ return [];
+ }
+
+ /**
+ * @return void
+ */
+ public function clear(): void
+ {
+ /** @phpstan-ignore-next-line */
+ $this->session->setTweakwiseEventData([]);
+ }
+}
diff --git a/src/etc/frontend/di.xml b/src/etc/frontend/di.xml
index 73565f9..5f8530a 100644
--- a/src/etc/frontend/di.xml
+++ b/src/etc/frontend/di.xml
@@ -1,8 +1,66 @@
+
+
+
+
+
+
+ Magento\Checkout\Model\Session
+
+
+
+
+
+ Tweakwise\TweakwiseJs\Service\Event\CheckoutSessionService
+
+
+
+
+
+
+ Tweakwise\TweakwiseJs\Service\Event\CheckoutSessionService
+
+
+
+
+
+
+
+
+
+ Magento\Customer\Model\Session
+
+
+
+
+
+ Tweakwise\TweakwiseJs\Service\Event\CustomerSessionService
+
+
+
+
+
+
+
+ Tweakwise\TweakwiseJs\Service\Event\CustomerSessionService
+
+
+
+
+
+
diff --git a/src/etc/frontend/events.xml b/src/etc/frontend/events.xml
index 8fc4a45..352543c 100644
--- a/src/etc/frontend/events.xml
+++ b/src/etc/frontend/events.xml
@@ -9,4 +9,12 @@
+
+
+
+
+
+
diff --git a/src/view/frontend/layout/default.xml b/src/view/frontend/layout/default.xml
index fb70c4b..376e67b 100644
--- a/src/view/frontend/layout/default.xml
+++ b/src/view/frontend/layout/default.xml
@@ -42,5 +42,18 @@
+
+
+
+
+
+
+