diff --git a/src/components/structures/HostingProviderTrigger.tsx b/src/components/structures/HostingSignupAction.tsx
similarity index 73%
rename from src/components/structures/HostingProviderTrigger.tsx
rename to src/components/structures/HostingSignupAction.tsx
index bc7733ce60..7434abfff8 100644
--- a/src/components/structures/HostingProviderTrigger.tsx
+++ b/src/components/structures/HostingSignupAction.tsx
@@ -16,22 +16,22 @@ limitations under the License.
 
 import * as React from "react";
 import Modal from "../../Modal";
-import HostingProviderDialog from "./HostingProviderDialog";
+import HostingSignupDialog from "./HostingSignupDialog";
 
 interface IProps {}
 
 interface IState {}
 
-export default class HostingProviderTrigger extends React.PureComponent<IProps, IState> {
+export default class HostingSignupAction extends React.PureComponent<IProps, IState> {
     private static openDialog() {
         Modal.createDialog(
-            HostingProviderDialog, {}, "mx_HostingProviderDialog",
+            HostingSignupDialog, {}, "mx_HostingSignupDialog",
         );
     }
 
     public render(): React.ReactNode {
         return (
-            <div onClick={HostingProviderTrigger.openDialog} className="mx_HostingProviderTrigger">
+            <div onClick={HostingSignupAction.openDialog} className="mx_HostingSignupAction">
                 Get your own personal Element!
             </div>
         );
diff --git a/src/components/structures/HostingProviderDialog.tsx b/src/components/structures/HostingSignupDialog.tsx
similarity index 91%
rename from src/components/structures/HostingProviderDialog.tsx
rename to src/components/structures/HostingSignupDialog.tsx
index fd5799a1b7..7cd4e85046 100644
--- a/src/components/structures/HostingProviderDialog.tsx
+++ b/src/components/structures/HostingSignupDialog.tsx
@@ -24,7 +24,7 @@ interface IState {
     error: string,
 }
 
-export default class HostingProviderDialog extends React.PureComponent<IProps, IState> {
+export default class HostingSignupDialog extends React.PureComponent<IProps, IState> {
     iframeRef;
     hostingSignupUrl: string;
 
@@ -36,7 +36,7 @@ export default class HostingProviderDialog extends React.PureComponent<IProps, I
         };
 
         this.iframeRef = React.createRef();
-        this.hostingSignupUrl = SdkConfig.get().hosting_signup_iframe;
+        this.hostingSignupUrl = SdkConfig.get().hosting_signup.url;
     }
 
     private messageHandler = (message) => {
@@ -83,7 +83,7 @@ export default class HostingProviderDialog extends React.PureComponent<IProps, I
 
     public render(): React.ReactNode {
         return (
-            <div className="mx_HostingProviderDialog_container">
+            <div className="mx_HostingSignupDialog_container">
                 <iframe
                     src={this.hostingSignupUrl}
                     ref={ref => this.iframeRef = ref}
diff --git a/src/components/structures/UserMenu.tsx b/src/components/structures/UserMenu.tsx
index d92b233c52..fa46f190e1 100644
--- a/src/components/structures/UserMenu.tsx
+++ b/src/components/structures/UserMenu.tsx
@@ -51,7 +51,7 @@ import { RightPanelPhases } from "../../stores/RightPanelStorePhases";
 import ErrorDialog from "../views/dialogs/ErrorDialog";
 import EditCommunityPrototypeDialog from "../views/dialogs/EditCommunityPrototypeDialog";
 import {UIFeature} from "../../settings/UIFeature";
-import HostingProviderTrigger from "./HostingProviderTrigger";
+import HostingSignupAction from "./HostingSignupAction";
 
 interface IProps {
     isMinimized: boolean;
@@ -312,20 +312,20 @@ export default class UserMenu extends React.Component<IProps, IState> {
                 </div>
             );
         }
-        const hostingSignupIFrame = SdkConfig.get().hosting_signup_iframe;
-        let hostingIFrame;
-        if (hostingSignupIFrame) {
+        const hostingSignupOptions = SdkConfig.get().hosting_signup;
+        let hostingSignupIFrame;
+        if (hostingSignupOptions && hostingSignupOptions.url) {
             // If hosting_signup_domains is set to a non-empty array, only show
             // dialog if the user is on the domain or a subdomain.
-            const hostingSignupDomains = SdkConfig.get().hosting_signup_domains || [];
+            const hostingSignupDomains = hostingSignupOptions.domains || [];
             const mxDomain = MatrixClientPeg.get().getDomain();
             const validDomains = hostingSignupDomains.filter(d => (d === mxDomain || mxDomain.endsWith(`.${d}`)));
             if (!hostingSignupDomains || validDomains.length > 0) {
-                hostingIFrame = <div
+                hostingSignupIFrame = <div
                     className="mx_UserMenu_contextMenu_header mx_UserMenu_contextMenu_hostingLink"
                     onClick={this.onCloseMenu}
                 >
-                    <HostingProviderTrigger />
+                    <HostingSignupAction />
                 </div>;
             }
         }
@@ -513,7 +513,7 @@ export default class UserMenu extends React.Component<IProps, IState> {
                 </AccessibleTooltipButton>
             </div>
             {topSection}
-            {hostingIFrame}
+            {hostingSignupIFrame}
             {primaryOptionList}
             {secondarySection}
         </IconizedContextMenu>;