diff --git a/chrome/browser/sync/chrome_sync_client.cc b/chrome/browser/sync/chrome_sync_client.cc
index 72997ff7..dcb41ac 100644
--- a/chrome/browser/sync/chrome_sync_client.cc
+++ b/chrome/browser/sync/chrome_sync_client.cc
@@ -257,6 +257,12 @@
       profile_, ServiceAccessType::EXPLICIT_ACCESS);
 }
 
+send_tab_to_self::SendTabToSelfSyncService*
+ChromeSyncClient::GetSendTabToSelfSyncService() {
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
+  return SendTabToSelfSyncServiceFactory::GetForProfile(profile_);
+}
+
 sync_sessions::SessionSyncService* ChromeSyncClient::GetSessionSyncService() {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   return SessionSyncServiceFactory::GetForProfile(profile_);
@@ -458,16 +464,6 @@
   }
 #endif  // defined(OS_CHROMEOS)
 
-  if (!disabled_types.Has(syncer::SEND_TAB_TO_SELF) &&
-      base::FeatureList::IsEnabled(switches::kSyncSendTabToSelf)) {
-    controllers.push_back(std::make_unique<syncer::ModelTypeController>(
-        syncer::SEND_TAB_TO_SELF,
-        std::make_unique<syncer::ForwardingModelTypeControllerDelegate>(
-            SendTabToSelfSyncServiceFactory::GetForProfile(profile_)
-                ->GetControllerDelegate()
-                .get())));
-  }
-
   return controllers;
 }
 
diff --git a/chrome/browser/sync/chrome_sync_client.h b/chrome/browser/sync/chrome_sync_client.h
index e4891d6..b1a729a 100644
--- a/chrome/browser/sync/chrome_sync_client.h
+++ b/chrome/browser/sync/chrome_sync_client.h
@@ -45,6 +45,8 @@
   bookmarks::BookmarkModel* GetBookmarkModel() override;
   favicon::FaviconService* GetFaviconService() override;
   history::HistoryService* GetHistoryService() override;
+  send_tab_to_self::SendTabToSelfSyncService* GetSendTabToSelfSyncService()
+      override;
   sync_sessions::SessionSyncService* GetSessionSyncService() override;
   base::Closure GetPasswordStateChangedCallback() override;
   syncer::DataTypeController::TypeVector CreateDataTypeControllers(
diff --git a/components/browser_sync/BUILD.gn b/components/browser_sync/BUILD.gn
index f0f1f6f..026adef8 100644
--- a/components/browser_sync/BUILD.gn
+++ b/components/browser_sync/BUILD.gn
@@ -32,6 +32,7 @@
     "//components/password_manager/core/browser",
     "//components/prefs",
     "//components/reading_list/features:flags",
+    "//components/send_tab_to_self",
     "//components/signin/core/browser",
     "//components/sync_bookmarks",
     "//components/sync_sessions",
diff --git a/components/browser_sync/browser_sync_client.h b/components/browser_sync/browser_sync_client.h
index a628137..fc6f687 100644
--- a/components/browser_sync/browser_sync_client.h
+++ b/components/browser_sync/browser_sync_client.h
@@ -30,6 +30,10 @@
 class HistoryService;
 }  // namespace history
 
+namespace send_tab_to_self {
+class SendTabToSelfSyncService;
+}  // namespace send_tab_to_self
+
 namespace sync_sessions {
 class SessionSyncService;
 }  // namespace sync_sessions
@@ -62,6 +66,8 @@
   virtual favicon::FaviconService* GetFaviconService() = 0;
   virtual history::HistoryService* GetHistoryService() = 0;
   virtual sync_sessions::SessionSyncService* GetSessionSyncService() = 0;
+  virtual send_tab_to_self::SendTabToSelfSyncService*
+  GetSendTabToSelfSyncService() = 0;
   virtual autofill::PersonalDataManager* GetPersonalDataManager() = 0;
   virtual BookmarkUndoService* GetBookmarkUndoService() = 0;
   virtual base::RepeatingClosure GetPasswordStateChangedCallback() = 0;
diff --git a/components/browser_sync/profile_sync_components_factory_impl.cc b/components/browser_sync/profile_sync_components_factory_impl.cc
index 8ea99da..85e9d71 100644
--- a/components/browser_sync/profile_sync_components_factory_impl.cc
+++ b/components/browser_sync/profile_sync_components_factory_impl.cc
@@ -31,6 +31,7 @@
 #include "components/password_manager/core/browser/sync/password_model_type_controller.h"
 #include "components/prefs/pref_service.h"
 #include "components/reading_list/features/reading_list_switches.h"
+#include "components/send_tab_to_self/send_tab_to_self_sync_service.h"
 #include "components/sync/base/report_unrecoverable_error.h"
 #include "components/sync/device_info/device_info_sync_service.h"
 #include "components/sync/driver/async_directory_type_controller.h"
@@ -404,6 +405,16 @@
         syncer::USER_EVENTS));
   }
 
+  if (!disabled_types.Has(syncer::SEND_TAB_TO_SELF) &&
+      base::FeatureList::IsEnabled(switches::kSyncSendTabToSelf)) {
+    controllers.push_back(std::make_unique<syncer::ModelTypeController>(
+        syncer::SEND_TAB_TO_SELF,
+        std::make_unique<syncer::ForwardingModelTypeControllerDelegate>(
+            sync_client_->GetSendTabToSelfSyncService()
+                ->GetControllerDelegate()
+                .get())));
+  }
+
   // TODO(crbug.com/919489): Enable security events once their controller
   // delegate is wired properly.
 
diff --git a/ios/chrome/browser/BUILD.gn b/ios/chrome/browser/BUILD.gn
index ed6df48..13664c2 100644
--- a/ios/chrome/browser/BUILD.gn
+++ b/ios/chrome/browser/BUILD.gn
@@ -105,6 +105,7 @@
     "//components/search_engines",
     "//components/search_provider_logos",
     "//components/security_state/core",
+    "//components/send_tab_to_self",
     "//components/signin/core/browser",
     "//components/strings",
     "//components/sync",
diff --git a/ios/chrome/browser/DEPS b/ios/chrome/browser/DEPS
index 7bb2e46..e90b9876 100644
--- a/ios/chrome/browser/DEPS
+++ b/ios/chrome/browser/DEPS
@@ -68,6 +68,7 @@
   "+components/search_provider_logos",
   "+components/security_interstitials",
   "+components/security_state",
+  "+components/send_tab_to_self",
   "+components/services/unzip",
   "+components/sessions",
   "+components/signin/core/browser",
diff --git a/ios/chrome/browser/sync/BUILD.gn b/ios/chrome/browser/sync/BUILD.gn
index a37bd58d..9a9af94 100644
--- a/ios/chrome/browser/sync/BUILD.gn
+++ b/ios/chrome/browser/sync/BUILD.gn
@@ -23,6 +23,8 @@
     "model_type_store_service_factory.h",
     "profile_sync_service_factory.cc",
     "profile_sync_service_factory.h",
+    "send_tab_to_self_sync_service_factory.h",
+    "send_tab_to_self_sync_service_factory.mm",
     "session_sync_service_factory.h",
     "session_sync_service_factory.mm",
     "sync_observer_bridge.h",
@@ -48,6 +50,7 @@
     "//components/prefs",
     "//components/reading_list/core",
     "//components/search_engines",
+    "//components/send_tab_to_self",
     "//components/sessions",
     "//components/signin/core/browser",
     "//components/sync",
diff --git a/ios/chrome/browser/sync/ios_chrome_sync_client.h b/ios/chrome/browser/sync/ios_chrome_sync_client.h
index 9056c41..c70e319 100644
--- a/ios/chrome/browser/sync/ios_chrome_sync_client.h
+++ b/ios/chrome/browser/sync/ios_chrome_sync_client.h
@@ -39,6 +39,8 @@
   base::FilePath GetLocalSyncBackendFolder() override;
   syncer::ModelTypeStoreService* GetModelTypeStoreService() override;
   syncer::DeviceInfoSyncService* GetDeviceInfoSyncService() override;
+  send_tab_to_self::SendTabToSelfSyncService* GetSendTabToSelfSyncService()
+      override;
   bookmarks::BookmarkModel* GetBookmarkModel() override;
   favicon::FaviconService* GetFaviconService() override;
   history::HistoryService* GetHistoryService() override;
diff --git a/ios/chrome/browser/sync/ios_chrome_sync_client.mm b/ios/chrome/browser/sync/ios_chrome_sync_client.mm
index 66d0efd..9fb1104 100644
--- a/ios/chrome/browser/sync/ios_chrome_sync_client.mm
+++ b/ios/chrome/browser/sync/ios_chrome_sync_client.mm
@@ -62,6 +62,7 @@
 #include "ios/chrome/browser/sync/device_info_sync_service_factory.h"
 #include "ios/chrome/browser/sync/ios_user_event_service_factory.h"
 #include "ios/chrome/browser/sync/model_type_store_service_factory.h"
+#include "ios/chrome/browser/sync/send_tab_to_self_sync_service_factory.h"
 #include "ios/chrome/browser/sync/session_sync_service_factory.h"
 #include "ios/chrome/browser/undo/bookmark_undo_service_factory.h"
 #include "ios/chrome/browser/web_data_service_factory.h"
@@ -137,6 +138,12 @@
   return DeviceInfoSyncServiceFactory::GetForBrowserState(browser_state_);
 }
 
+send_tab_to_self::SendTabToSelfSyncService*
+IOSChromeSyncClient::GetSendTabToSelfSyncService() {
+  DCHECK_CURRENTLY_ON(web::WebThread::UI);
+  return SendTabToSelfSyncServiceFactory::GetForBrowserState(browser_state_);
+}
+
 bookmarks::BookmarkModel* IOSChromeSyncClient::GetBookmarkModel() {
   DCHECK_CURRENTLY_ON(web::WebThread::UI);
   return ios::BookmarkModelFactory::GetForBrowserState(browser_state_);
diff --git a/ios/chrome/browser/sync/send_tab_to_self_sync_service_factory.h b/ios/chrome/browser/sync/send_tab_to_self_sync_service_factory.h
new file mode 100644
index 0000000..931140a
--- /dev/null
+++ b/ios/chrome/browser/sync/send_tab_to_self_sync_service_factory.h
@@ -0,0 +1,44 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef IOS_CHROME_BROWSER_SYNC_SEND_TAB_TO_SELF_SYNC_SERVICE_FACTORY_H_
+#define IOS_CHROME_BROWSER_SYNC_SEND_TAB_TO_SELF_SYNC_SERVICE_FACTORY_H_
+
+#include <memory>
+
+#include "base/macros.h"
+#include "base/no_destructor.h"
+#include "components/keyed_service/ios/browser_state_keyed_service_factory.h"
+
+namespace send_tab_to_self {
+class SendTabToSelfSyncService;
+}  // namespace send_tab_to_self
+
+namespace ios {
+class ChromeBrowserState;
+}  // namespace ios
+
+// Singleton that owns all SendTabToSelfSyncService and associates them with
+// ios::ChromeBrowserState.
+class SendTabToSelfSyncServiceFactory : public BrowserStateKeyedServiceFactory {
+ public:
+  static send_tab_to_self::SendTabToSelfSyncService* GetForBrowserState(
+      ios::ChromeBrowserState* browser_state);
+
+  static SendTabToSelfSyncServiceFactory* GetInstance();
+
+ private:
+  friend class base::NoDestructor<SendTabToSelfSyncServiceFactory>;
+
+  SendTabToSelfSyncServiceFactory();
+  ~SendTabToSelfSyncServiceFactory() override;
+
+  // BrowserStateKeyedServiceFactory implementation.
+  std::unique_ptr<KeyedService> BuildServiceInstanceFor(
+      web::BrowserState* context) const override;
+
+  DISALLOW_COPY_AND_ASSIGN(SendTabToSelfSyncServiceFactory);
+};
+
+#endif  // IOS_CHROME_BROWSER_SYNC_SEND_TAB_TO_SELF_SYNC_SERVICE_FACTORY_H_
diff --git a/ios/chrome/browser/sync/send_tab_to_self_sync_service_factory.mm b/ios/chrome/browser/sync/send_tab_to_self_sync_service_factory.mm
new file mode 100644
index 0000000..0513c44
--- /dev/null
+++ b/ios/chrome/browser/sync/send_tab_to_self_sync_service_factory.mm
@@ -0,0 +1,70 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ios/chrome/browser/sync/send_tab_to_self_sync_service_factory.h"
+
+#include "components/keyed_service/core/service_access_type.h"
+#include "components/keyed_service/ios/browser_state_dependency_manager.h"
+#include "components/send_tab_to_self/send_tab_to_self_sync_service.h"
+#include "components/sync/device_info/device_info_sync_service.h"
+#include "components/sync/device_info/local_device_info_provider.h"
+#include "ios/chrome/browser/browser_state/chrome_browser_state.h"
+#include "ios/chrome/browser/history/history_service_factory.h"
+#include "ios/chrome/browser/sync/device_info_sync_service_factory.h"
+#include "ios/chrome/browser/sync/model_type_store_service_factory.h"
+#include "ios/chrome/common/channel_info.h"
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+using send_tab_to_self::SendTabToSelfSyncService;
+
+// static
+SendTabToSelfSyncServiceFactory*
+SendTabToSelfSyncServiceFactory::GetInstance() {
+  static base::NoDestructor<SendTabToSelfSyncServiceFactory> instance;
+  return instance.get();
+}
+
+// static
+SendTabToSelfSyncService* SendTabToSelfSyncServiceFactory::GetForBrowserState(
+    ios::ChromeBrowserState* browser_state) {
+  return static_cast<SendTabToSelfSyncService*>(
+      GetInstance()->GetServiceForBrowserState(browser_state, true));
+}
+
+SendTabToSelfSyncServiceFactory::SendTabToSelfSyncServiceFactory()
+    : BrowserStateKeyedServiceFactory(
+          "SendTabToSelfSyncService",
+          BrowserStateDependencyManager::GetInstance()) {
+  DependsOn(DeviceInfoSyncServiceFactory::GetInstance());
+  DependsOn(ModelTypeStoreServiceFactory::GetInstance());
+  DependsOn(ios::HistoryServiceFactory::GetInstance());
+}
+
+SendTabToSelfSyncServiceFactory::~SendTabToSelfSyncServiceFactory() {}
+
+std::unique_ptr<KeyedService>
+SendTabToSelfSyncServiceFactory::BuildServiceInstanceFor(
+    web::BrowserState* context) const {
+  ios::ChromeBrowserState* browser_state =
+      ios::ChromeBrowserState::FromBrowserState(context);
+
+  syncer::LocalDeviceInfoProvider* local_device_info_provider =
+      DeviceInfoSyncServiceFactory::GetForBrowserState(browser_state)
+          ->GetLocalDeviceInfoProvider();
+
+  syncer::OnceModelTypeStoreFactory store_factory =
+      ModelTypeStoreServiceFactory::GetForBrowserState(browser_state)
+          ->GetStoreFactory();
+
+  history::HistoryService* history_service =
+      ios::HistoryServiceFactory::GetForBrowserState(
+          browser_state, ServiceAccessType::EXPLICIT_ACCESS);
+
+  return std::make_unique<SendTabToSelfSyncService>(
+      GetChannel(), local_device_info_provider, std::move(store_factory),
+      history_service);
+}
diff --git a/ios/web_view/internal/sync/web_view_sync_client.h b/ios/web_view/internal/sync/web_view_sync_client.h
index f106829..7db2ba2 100644
--- a/ios/web_view/internal/sync/web_view_sync_client.h
+++ b/ios/web_view/internal/sync/web_view_sync_client.h
@@ -45,6 +45,8 @@
   bookmarks::BookmarkModel* GetBookmarkModel() override;
   favicon::FaviconService* GetFaviconService() override;
   history::HistoryService* GetHistoryService() override;
+  send_tab_to_self::SendTabToSelfSyncService* GetSendTabToSelfSyncService()
+      override;
   sync_sessions::SessionSyncService* GetSessionSyncService() override;
   base::RepeatingClosure GetPasswordStateChangedCallback() override;
   syncer::DataTypeController::TypeVector CreateDataTypeControllers(
diff --git a/ios/web_view/internal/sync/web_view_sync_client.mm b/ios/web_view/internal/sync/web_view_sync_client.mm
index 33003c7..19ccab4 100644
--- a/ios/web_view/internal/sync/web_view_sync_client.mm
+++ b/ios/web_view/internal/sync/web_view_sync_client.mm
@@ -125,6 +125,11 @@
   return nullptr;
 }
 
+send_tab_to_self::SendTabToSelfSyncService*
+WebViewSyncClient::GetSendTabToSelfSyncService() {
+  return nullptr;
+}
+
 autofill::PersonalDataManager* WebViewSyncClient::GetPersonalDataManager() {
   DCHECK_CURRENTLY_ON(web::WebThread::UI);
   return WebViewPersonalDataManagerFactory::GetForBrowserState(browser_state_);
