Build a signup form with Vue

#Before you begin

  • Sign up for a Userfront account
  • In your Userfront Dashboard, note your workspace ID: this appears under the workspace name on your Overview page, and looks something like 123abc4d

In this section, we create a custom signup form with email and password that includes:

#Example: custom signup form with Vue.js

You can clone the example signup form on CodePen and make edits, or follow along below.

The example form has the Userfront Core JS library added to the document, as described in the next section.

#Add the Userfront Core JS library

You can add the Userfront Core JS library by CDN or using npm.

You only need to do one of these.



Then import the library into your file(s)

#Set up the form

Create your signup form with the elements you want to use.

In this case, we've added:

  • email - required for signup
  • accountName - example of a custom field
  • password - required for signup with password
  • passwordVerify - optional, for checking the password before registering the user

#Signup form Vue code

#<form> element

In the <form> element, we bind our variables email, accountName, password, and passwordVerify to the inputs using v-model.

We also set the form to call signupWithPassword() when it is submitted.


When the form is submitted, this function calls Userfront.signup() with the current email, accountName, and password.

#SSO <button> element

We set the SSO <button> element to call signupWithSSO() when it is clicked.


When the SSO button is clicked, this function calls Userfront.signup() with "google" as the signup method.

#Custom fields

The form has a field for Account Name, which is a custom field.

When we pass this to the Userfront.signup() method under the data object, it is saved to the user's record as

#Error handling

In this example, we use a <div>{{ alert }}</div> element to display the alert message.

We first clear the alert message whenever the form is submitted.

If the passwords do not match, we set the alert message and return without submitting the signup.

Whenever the Userfront.signup() method fails, we catch its error in the promise chain. This error contains a message property with what went wrong, and we set that as the alert message.

#Password verification

Userfront will verify that the password is the correct length and format, and we can additionally verify that the user has typed what they intended by having them type it twice.

This "passwords match" verification is performed before sending the information to Userfront.

#Single sign-on

To configure Single sign-on (SSO), first add the provider you want to use in the Userfront dashboard in the SSO tab.

The SSO flow is as follows:

  1. The user clicks the SSO button ("Sign up with Google"), which triggers Userfront.signup()
  2. The browser redirects to the provider (Google), where the user authorizes your application
  3. Upon success, the browser redirects back to your login page (your After-logout path) with uuid and token login credentials in the URL
  4. Your application calls Userfront.login() to log in the user with the uuid and token

#Sign up with Google button

To configure Single sign-on (SSO), first add the provider you want to use in the Userfront dashboard in the SSO tab.

In this example, we add an SSO <button> to allow signup with Google.

Ultimately, we need to call Userfront.signup({ method: "google" }) whenever the button is clicked. You can style the button however you like.

You can find more provider options like GitHub, LinkedIn, and Facebook in the docs for signup().

We added an SSO <button> element to call signupWithSSO() when clicked.

#Login after redirect

Once the browser is redirected back to your login page after SSO approval, your application should call

Userfront.login({ method: "link" })

You can set up your JS to call this method automatically by checking whether the URL contains the token and uuid parameters.

If your original SSO signup call contained a redirect parameter, it will be included in the URL and followed automatically.