diff --git a/src/Extension/CommonBinding/WPDeskTrackerBridge.php b/src/Extension/CommonBinding/WPDeskTrackerBridge.php
index 131a9e9c222cee4961d4445f578d8e128d59ab59..554e6cbbefad10ba3ac3019c0f7ebbedb86f8265 100644
--- a/src/Extension/CommonBinding/WPDeskTrackerBridge.php
+++ b/src/Extension/CommonBinding/WPDeskTrackerBridge.php
@@ -1,20 +1,40 @@
 <?php
+declare(strict_types=1);
 
 namespace WPDesk\Init\Extension\CommonBinding;
 
+use Psr\Log\LoggerInterface;
 use WPDesk\Init\Binding\Hookable;
+use WPDesk\Init\Configuration\Configuration;
 use WPDesk\Init\Plugin\Plugin;
 
 class WPDeskTrackerBridge implements Hookable {
 
 	private Plugin $plugin;
 
-	public function __construct( Plugin $plugin ) {
+	private LoggerInterface $logger;
+
+	private Configuration $config;
+
+	public function __construct( Plugin $plugin, Configuration $config, LoggerInterface $logger ) {
 		$this->plugin = $plugin;
+		$this->config = $config;
+		$this->logger = $logger;
 	}
 
 	public function hooks(): void {
 		$tracker_factory = new \WPDesk_Tracker_Factory_Prefixed();
-		$tracker_factory->create_tracker( $this->plugin->get_basename() );
+		$tracker_factory->create_tracker( $this->plugin->get_basename(), $this->logger );
+
+		$shops      = $this->config->get( 'shops', [] );
+		$shop_url   = $shops[ get_user_locale() ] ?? ( $shops['default'] ?? 'https://wpdesk.net' );
+		$tracker_ui = new OptInOptOut(
+			$this->plugin->get_file(),
+			$this->plugin->get_slug(),
+			$shop_url,
+			$this->plugin->get_name()
+		);
+		$tracker_ui->create_objects();
+		$tracker_ui->hooks();
 	}
 }
diff --git a/src/Extension/ConditionalExtension.php b/src/Extension/ConditionalExtension.php
index 19d28d2a6d868350c135e86a108f58c239fcb366..c0039ba46290d1ecaf60195ebd477dcf8d60f1ca 100644
--- a/src/Extension/ConditionalExtension.php
+++ b/src/Extension/ConditionalExtension.php
@@ -9,6 +9,7 @@ use Psr\Container\ContainerInterface;
 use Psr\Log\LoggerInterface;
 use WPDesk\Init\Binding\Loader\ArrayDefinitions;
 use WPDesk\Init\Binding\Loader\BindingDefinitions;
+use WPDesk\Init\Configuration\Configuration;
 use WPDesk\Init\Configuration\ReadableConfig;
 use WPDesk\Init\DependencyInjection\ContainerBuilder;
 use WPDesk\Init\Extension\CommonBinding\RequirementsCheck;
@@ -20,6 +21,7 @@ use WPDesk\Logger\SimpleLoggerFactory;
 class ConditionalExtension implements Extension {
 
 	public function bindings( ContainerInterface $c ): BindingDefinitions {
+		$config   = $c->get( Configuration::class );
 		$bindings = [];
 
 		if ( class_exists( \WPDesk_Basic_Requirement_Checker::class ) ) {
@@ -34,7 +36,7 @@ class ConditionalExtension implements Extension {
 		}
 
 		if ( class_exists( \WPDesk_Tracker::class ) ) {
-			$bindings[] = WPDeskTrackerBridge::class;
+			$bindings['plugins_loaded'] = WPDeskTrackerBridge::class;
 		}
 
 		return new ArrayDefinitions( $bindings );
diff --git a/src/Extension/ConfigExtension.php b/src/Extension/ConfigExtension.php
index 0924093b4374092d92f9ac9daca74946b99c02e5..9e7053fbb297474ea66ae2b1ef0aae4359fb2aba 100644
--- a/src/Extension/ConfigExtension.php
+++ b/src/Extension/ConfigExtension.php
@@ -29,7 +29,7 @@ class ConfigExtension implements Extension {
 
 	public function build( ContainerBuilder $builder, Plugin $plugin, ReadableConfig $config ): void {
 		$services = array_map(
-			fn( $service ): string => (string) ( new Path( $service ) )->absolute( $plugin->get_path() ),
+			fn ( string $service ) => (string) ( new Path( $service ) )->absolute( $plugin->get_path() ),
 			(array) $config->get( 'services', [] )
 		);