diff --git a/changes/changelog.d/476.bugfix b/changes/changelog.d/476.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..e2efbc0a3ae8781d840c3526e0acb53fdaae2089
--- /dev/null
+++ b/changes/changelog.d/476.bugfix
@@ -0,0 +1 @@
+Fixed invitation code not prefilled in form when accessing invitation link (#476)
diff --git a/front/src/App.vue b/front/src/App.vue
index e0c4070a87cc1e9cf4c6cd14c0d41e9ca7ebac59..f80020e93931f376fb601a70dbd590569524dc13 100644
--- a/front/src/App.vue
+++ b/front/src/App.vue
@@ -165,11 +165,7 @@ export default {
       messages: state => state.ui.messages
     }),
     suggestedInstances () {
-      let rootUrl = (
-        window.location.protocol + '//' + window.location.hostname +
-        (window.location.port ? ':' + window.location.port : '')
-      )
-      let instances = [rootUrl, 'https://demo.funkwhale.audio']
+      let instances = [this.$store.getters['instance/defaultUrl'](), 'https://demo.funkwhale.audio']
       return instances
     },
     version () {
diff --git a/front/src/router/index.js b/front/src/router/index.js
index 1747c88581f9ef45254a07fc79a0a27d41e68d4f..0d8a0b9367c126d8585133a78bd56466814b5544 100644
--- a/front/src/router/index.js
+++ b/front/src/router/index.js
@@ -100,7 +100,7 @@ export default new Router({
       name: 'signup',
       component: Signup,
       props: (route) => ({
-        invitation: route.query.invitation
+        defaultInvitation: route.query.invitation
       })
     },
     {
diff --git a/front/src/store/instance.js b/front/src/store/instance.js
index 64e48f7b4b557e87f141a47a231069a84853220d..5610b0ec7fc48f69af1eb33180be7b49fbef351d 100644
--- a/front/src/store/instance.js
+++ b/front/src/store/instance.js
@@ -2,6 +2,13 @@ import axios from 'axios'
 import logger from '@/logging'
 import _ from 'lodash'
 
+function getDefaultUrl () {
+  return (
+    window.location.protocol + '//' + window.location.hostname +
+    (window.location.port ? ':' + window.location.port : '')
+  )
+}
+
 export default {
   namespaced: true,
   state: {
@@ -71,6 +78,9 @@ export default {
     }
   },
   getters: {
+    defaultUrl: (state) => () => {
+      return getDefaultUrl()
+    },
     absoluteUrl: (state) => (relativeUrl) => {
       if (relativeUrl.startsWith('http')) {
         return relativeUrl
@@ -78,7 +88,9 @@ export default {
       if (state.instanceUrl.endsWith('/') && relativeUrl.startsWith('/')) {
         relativeUrl = relativeUrl.slice(1)
       }
-      return state.instanceUrl + relativeUrl
+
+      let instanceUrl = state.instanceUrl || getDefaultUrl()
+      return instanceUrl + relativeUrl
     }
   },
   actions: {
diff --git a/front/yarn.lock b/front/yarn.lock
index 6bc14175f69bdeb38f3be3c7be4f67c6de7d6362..764052bbfe2994fd5d9770b8dca413ce91e0fade 100644
--- a/front/yarn.lock
+++ b/front/yarn.lock
@@ -7522,9 +7522,9 @@ void-elements@^2.0.0, void-elements@^2.0.1:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec"
 
-vue-gettext@^2.0.31:
-  version "2.0.31"
-  resolved "https://registry.yarnpkg.com/vue-gettext/-/vue-gettext-2.0.31.tgz#0f113bea6aed747e2a809ae4a0db83eaac0b07fc"
+vue-gettext@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/vue-gettext/-/vue-gettext-2.1.0.tgz#e4932037a8601412dd9f7d7d7a5d60c4bdb341d1"
 
 vue-hot-reload-api@^2.1.0:
   version "2.3.0"