diff --git a/src/app/utils/HiveSigner.js b/src/app/utils/HiveSigner.js
index b4494dda1c35a1c22d134fb075c618c4bdf95118..a049f55fbe4bc0e21e331942f39285b0d5ebd17f 100644
--- a/src/app/utils/HiveSigner.js
+++ b/src/app/utils/HiveSigner.js
@@ -1,11 +1,15 @@
 import { isLoggedIn, extractLoginData } from 'app/utils/UserUtil';
 import hivesigner from 'hivesigner';
 import { APP_URL, HIVE_SIGNER_APP } from 'app/client_config';
+import { encodeOps } from 'hive-uri';
 
-const HOST_URL =
-    typeof window !== 'undefined'
-        ? window.location.protocol + '//' + window.location.host
-        : APP_URL;
+const isBrowser = () => typeof window !== 'undefined' && window;
+
+const HOST_URL = isBrowser()
+    ? window.location.protocol + '//' + window.location.host
+    : APP_URL;
+
+const HIVE_SIGNER_URL = 'https://hivesigner.com';
 
 export const hiveSignerClient = new hivesigner.Client({
     app: HIVE_SIGNER_APP,
@@ -43,4 +47,15 @@ export const setHiveSignerAccessToken = (
     hiveSignerClient.setAccessToken(access_token);
 };
 
-export const sendOperationsWithHiveSigner = hivesigner.sendOperations;
+export const sendOperationsWithHiveSigner = (ops, params, cb) => {
+    if (!params) params = {};
+    if (!params.callback) {
+        params.callback = window.location.href;
+    }
+    const uri = encodeOps(ops, params);
+    const webUrl = uri.replace('hive://', `${HIVE_SIGNER_URL}/`);
+    if (cb && isBrowser()) {
+        window.location = webUrl;
+    }
+    return webUrl;
+};