diff --git a/electron_app/src/electron-main.js b/electron_app/src/electron-main.js
index 91258c6c..9453839f 100644
--- a/electron_app/src/electron-main.js
+++ b/electron_app/src/electron-main.js
@@ -68,7 +68,14 @@ if (argv["help"]) {
     app.exit();
 }
 
-if (argv['profile-dir']) {
+// check if we are passed a profile in the SSO callback url
+const deeplinkUrl = argv["_"].find(arg => arg.startsWith('riot://'));
+if (deeplinkUrl && deeplinkUrl.includes('riot-desktop-user-data-path')) {
+    const parsedUrl = new URL(deeplinkUrl);
+    if (parsedUrl.protocol === 'riot:') {
+        app.setPath('userData', parsedUrl.searchParams.get('riot-desktop-user-data-path'));
+    }
+} else if (argv['profile-dir']) {
     app.setPath('userData', argv['profile-dir']);
 } else if (argv['profile']) {
     app.setPath('userData', `${app.getPath('userData')}-${argv['profile']}`);
@@ -233,6 +240,11 @@ ipcMain.on('ipcCall', async function(ev, payload) {
         case 'getConfig':
             ret = vectorConfig;
             break;
+        case 'getUserDataPath':
+            if (argv['profile-dir'] || argv['profile']) {
+                ret = app.getPath('userData');
+            }
+            break;
 
         default:
             mainWindow.webContents.send('ipcReply', {
diff --git a/src/vector/platform/ElectronPlatform.js b/src/vector/platform/ElectronPlatform.js
index 6b75c1ee..09312480 100644
--- a/src/vector/platform/ElectronPlatform.js
+++ b/src/vector/platform/ElectronPlatform.js
@@ -228,6 +228,11 @@ export default class ElectronPlatform extends VectorBasePlatform {
                 description: _td("Open user settings"),
             });
         }
+
+        // we assume this happens before any SSO actions occur but do not block.
+        this._ipcCall('getUserDataPath').then(userDataPath => {
+            this.userDataPath = userDataPath;
+        });
     }
 
     async getConfig(): Promise<{}> {
@@ -424,6 +429,9 @@ export default class ElectronPlatform extends VectorBasePlatform {
     getSSOCallbackUrl(hsUrl: string, isUrl: string): URL {
         const url = super.getSSOCallbackUrl(hsUrl, isUrl);
         url.protocol = "riot";
+        if (this.userDataPath) {
+            url.searchParams.set("riot-desktop-user-data-path", this.userDataPath);
+        }
         return url;
     }