diff --git a/src/app/appsettingsmanager.h b/src/app/appsettingsmanager.h
index b28deddc04efe09df90e1da31a184cc66a8c75e9..69344ac6c64b714e4fbb3836ba69bd13fee178c1 100644
--- a/src/app/appsettingsmanager.h
+++ b/src/app/appsettingsmanager.h
@@ -57,6 +57,7 @@ extern const QString defaultDownloadPath;
     X(WindowState, QWindow::AutomaticVisibility) \
     X(EnableExperimentalSwarm, false) \
     X(LANG, "SYSTEM") \
+    X(PluginStoreEndpoint, "https://plugins.jami.net") \
     X(PositionShareDuration, 15) \
     X(PositionShareLimit, true) \
     X(FlipSelf, true) \
diff --git a/src/app/pluginadapter.cpp b/src/app/pluginadapter.cpp
index 79a9ff9446fb9a919ef495a297e536c3e8efed17..ccc23df89d85175a72421eacaa7b5b08435e398d 100644
--- a/src/app/pluginadapter.cpp
+++ b/src/app/pluginadapter.cpp
@@ -40,12 +40,11 @@ PluginAdapter::PluginAdapter(LRCInstance* instance,
                              QString baseUrl)
     : QmlAdapterBase(instance, parent)
     , pluginStoreListModel_(new PluginStoreListModel(instance, this))
-    , pluginVersionManager_(new PluginVersionManager(instance, baseUrl, this))
+    , pluginVersionManager_(new PluginVersionManager(instance, this))
     , pluginListModel_(new PluginListModel(instance, this))
     , lrcInstance_(instance)
     , settingsManager_(settingsManager)
     , tempPath_(QDir::tempPath())
-    , baseUrl_(baseUrl)
 
 {
     QML_REGISTERSINGLETONTYPE_POBJECT(NS_MODELS, pluginStoreListModel_, "PluginStoreListModel");
@@ -99,7 +98,7 @@ PluginAdapter::getPluginsFromStore()
     const auto& language = settingsManager_->getLanguage();
     header["Accept-Language"] = QByteArray(language.toStdString().c_str(), language.size());
     pluginVersionManager_
-        ->sendGetRequest(QUrl(baseUrl_
+        ->sendGetRequest(QUrl(baseUrl()
                               + "?arch=" + lrcInstance_->pluginModel().getPlatformInfo()["os"]),
                          header,
                          [this, errorHandler](const QByteArray& data) {
@@ -127,7 +126,7 @@ PluginAdapter::getPluginDetails(const QString& pluginId)
     const auto& language = settingsManager_->getLanguage();
     header["Accept-Language"] = QByteArray(language.toStdString().c_str(), language.size());
     pluginVersionManager_
-        ->sendGetRequest(QUrl(baseUrl_ + "/details/" + pluginId
+        ->sendGetRequest(QUrl(baseUrl() + "/details/" + pluginId
                               + "?arch=" + lrcInstance_->pluginModel().getPlatformInfo()["os"]),
                          header,
                          [this](const QByteArray& data) {
@@ -214,19 +213,19 @@ PluginAdapter::checkVersionStatus(const QString& pluginId)
 QString
 PluginAdapter::baseUrl() const
 {
-    return baseUrl_;
+    return settingsManager_->getValue("PluginStoreEndpoint").toString();
 }
 
 QString
 PluginAdapter::getIconUrl(const QString& pluginId) const
 {
-    return baseUrl_ + "/icons/" + pluginId
+    return baseUrl() + "/icons/" + pluginId
            + "?arch=" + lrcInstance_->pluginModel().getPlatformInfo()["os"];
 }
 
 QString
 PluginAdapter::getBackgroundImageUrl(const QString& pluginId) const
 {
-    return baseUrl_ + "/backgrounds/" + pluginId
+    return baseUrl() + "/backgrounds/" + pluginId
            + "?arch=" + lrcInstance_->pluginModel().getPlatformInfo()["os"];
 }
diff --git a/src/app/pluginadapter.h b/src/app/pluginadapter.h
index 5b7c3ae92bdbcd36a14737ef377c8c75d8fdb53b..f79d35384d9f92818134dccd70cdcdc34dd0aee6 100644
--- a/src/app/pluginadapter.h
+++ b/src/app/pluginadapter.h
@@ -22,6 +22,7 @@
 #include "pluginlistmodel.h"
 #include "pluginhandlerlistmodel.h"
 #include "pluginlistpreferencemodel.h"
+#include "appsettingsmanager.h"
 #include "pluginversionmanager.h"
 #include "pluginstorelistmodel.h"
 #include "preferenceitemlistmodel.h"
@@ -78,8 +79,8 @@ private:
     std::unique_ptr<PluginHandlerListModel> pluginHandlerListModel_;
 
     LRCInstance* lrcInstance_;
+    AppSettingsManager* settingsManager_;
     std::mutex mtx_;
     QString tempPath_;
     QString baseUrl_;
-    AppSettingsManager* settingsManager_;
 };
diff --git a/src/app/pluginversionmanager.cpp b/src/app/pluginversionmanager.cpp
index 6f2c11d5233458f2fd116a5efb1aca976e239bd2..e6a177e7f34a83572bbbdfe7f666cabda7caa4c4 100644
--- a/src/app/pluginversionmanager.cpp
+++ b/src/app/pluginversionmanager.cpp
@@ -33,7 +33,7 @@ public:
     Impl(LRCInstance* instance, PluginVersionManager& parent)
         : QObject(nullptr)
         , parent_(parent)
-        , appSettingsManager_(new AppSettingsManager(this))
+        , settingsManager_(new AppSettingsManager(this))
         , lrcInstance_(instance)
         , tempPath_(QDir::tempPath())
         , updateTimer_(new QTimer(this))
@@ -78,12 +78,12 @@ public:
 
     bool isAutoUpdaterEnabled()
     {
-        return appSettingsManager_->getValue(Settings::Key::PluginAutoUpdate).toBool();
+        return settingsManager_->getValue(Settings::Key::PluginAutoUpdate).toBool();
     }
 
     void setAutoUpdate(bool state)
     {
-        appSettingsManager_->setValue(Settings::Key::PluginAutoUpdate, state);
+        settingsManager_->setValue(Settings::Key::PluginAutoUpdate, state);
     }
 
     void checkVersionStatus(const QString& pluginId)
@@ -103,7 +103,8 @@ public:
             return;
         }
 
-        parent_.sendGetRequest(QUrl(parent_.baseUrl + "/versions/" + plugin.id + "?arch="
+        parent_.sendGetRequest(QUrl(settingsManager_->getValue("PluginStoreEndpoint").toString()
+                                    + "/versions/" + plugin.id + "?arch="
                                     + lrcInstance_->pluginModel().getPlatformInfo()["os"]),
                                [this, plugin](const QByteArray& data) {
                                    // `data` represents the version in this case.
@@ -121,7 +122,7 @@ public:
     void installRemotePlugin(const QString& pluginId)
     {
         parent_.downloadFile(
-            QUrl(parent_.baseUrl + "/download/"
+            QUrl(settingsManager_->getValue("PluginStoreEndpoint").toString() + "/download/"
                  + lrcInstance_->pluginModel().getPlatformInfo()["os"] + "/" + pluginId),
             pluginId,
             0,
@@ -158,15 +159,14 @@ public:
     };
 
     PluginVersionManager& parent_;
-    AppSettingsManager* appSettingsManager_ {nullptr};
+    AppSettingsManager* settingsManager_ {nullptr};
     LRCInstance* lrcInstance_ {nullptr};
     QString tempPath_;
     QTimer* updateTimer_;
 };
 
-PluginVersionManager::PluginVersionManager(LRCInstance* instance, QString& baseUrl, QObject* parent)
+PluginVersionManager::PluginVersionManager(LRCInstance* instance, QObject* parent)
     : NetworkManager(&instance->connectivityMonitor(), parent)
-    , baseUrl(baseUrl)
     , pimpl_(std::make_unique<Impl>(instance, *this))
 {}
 
diff --git a/src/app/pluginversionmanager.h b/src/app/pluginversionmanager.h
index cf03b0b8525e4d74c4a2a900a7a4a5700cb90795..9aff2feaffd11a4a89c71e6a8cb0be6332e18913 100644
--- a/src/app/pluginversionmanager.h
+++ b/src/app/pluginversionmanager.h
@@ -46,9 +46,7 @@ class PluginVersionManager final : public NetworkManager
 {
     Q_OBJECT
 public:
-    explicit PluginVersionManager(LRCInstance* instance,
-                                  QString& baseUrl,
-                                  QObject* parent = nullptr);
+    explicit PluginVersionManager(LRCInstance* instance, QObject* parent = nullptr);
     ~PluginVersionManager();
 
     Q_INVOKABLE bool isAutoUpdaterEnabled();