Setup
| Time to Complete | 15 minutes |
|---|---|
| Skills Required | No technical skills! |
Complete this Setup guide before following the 1-Click Signup SDK Integration or API Integration guide.
1. Access the Dashboard.
Create or log into your Verified Dashboard account.
How to Create a Dashboard Account
a. Enter your email and click the 1-Click Login button.
We'll send you a verification code by email.
Use your work email. We use AI to auto-magically set brand information based on your email domain, so you don't have to manually enter it!
b. Complete the verification step.
Click the verification button in the email or enter the verification code. We'll automatically log you in. It's a 1-click experience, as promised!
c. (optional) Set up MFA.
Set up multi-factor authentication with an authenticator app. This is optional until you request approval for Production access, at which point it's required.
d. (if necessary) Confirm your company name.
If you're creating the Dashboard account for your company, we'll ask you to confirm your company name. If someone on your team has already created your account, you won't need to do this.
If your account doesn't have a brand yet, we'll automatically create one for you and take you to its Brand Details page.
Your company account can have one or more brands. Generally, you'll only need one brand, but there are some cases where it's helpful to use multiple. For example:
- If you have multiple products: If you have products that go by different names, it can be useful to create different brands to help users know which product they're using 1-Click Signup for — and to help your team track metrics specific to that product.
- If you want to try different brand settings: If you want to change brand settings without affecting your existing implementation (even in Sandbox), you can duplicate your brand and configure different settings on the new brand.
e. (optional) Invite team members.
Invite your team members to join your Dashboard account.
2. Configure brand settings.
On the Brands page, click the Create button to create a new brand, or click Brand Details to access brand settings for an existing brand.
Brand Name
Choose an external name for your brand. This will be used elsewhere in the Dashboard (for example on the Metrics page) and displayed to users in the SDK (if you choose to use the SDK).
The internal brand name is separate, and you can edit it at the top of the page. You can use this to label brands created for testing purposes, for example.
Integration Type
Choose how you'll integrate 1-Click Signup: with our SDK or our API.
The SDK integration type is by far the easier option, and we strongly recommend using it. The SDK handles almost everything for you and is highly customizable, so you can use it to exactly match your branding and desired user experience. It implements our recommended user experience, which is hyper optimized from our experience verifying millions of users.
With the API integration type, you need to handle everything yourself, and you need approval from us to go live.
1-Click Signup Settings
Click the 1-Click Signup tab to access these settings.
Challenges
A challenge is a secondary input (alongside verified phone, which is always required) that must match the corresponding output.
By default, First Name is set to Always, and Birth Date and SSN4 are disabled.
Choose which challenge(s) to use:
| Option | Description |
|---|---|
| First Name | Prompt the user for their first name |
| Birthday | Prompt the user for their birthday |
| SSN4 | Prompt the user for their SSN4 |
For the enabled challenge(s), choose when to prompt the user for them:
| Option | Description |
|---|---|
| Always | Upfront, every time |
| Only if necessary | Only if Verified can't source data based on other inputs |
We recommend using a single challenge, either First Name or Birthday, and always requiring it.
Why We Recommend This
- One challenge is generally better than multiple:
- Every additional input adds friction, with the risk that we won't be able to source data for the user.
- We can successfully source data based on phone and one challenge the vast majority of the time.
- Prompting for another challenge only slightly increases the chance that we'll be able to source data for the user, and it adds substantial friction.
- First Name is generally easiest for the user:
- Users are typically comfortable providing their first name.
- Most users will have an autofill option for first name from their browser or OS.
- First names are easy and fast to type.
- Birthday is generally better than SSN4:
- Users are typically more comfortable providing their birthday.
- Some users will have an autofill option for birthday from their browser or OS.
- Everyone has a birthday, but not everyone has an SSN.
- Data quality is higher with a challenge than without one:
- You can use 1-Click Signup without always requiring any challenge.
- If you do, we'll return data if we can source a unique user record based on phone only.
- However, for most use cases this isn't worth the slightly lower friction, because data quality is lower with phone only.
If you enable multiple challenges, drag and drop them into the order in which you want the user to be prompted for them. Challenges set to Always will automatically be put before those set to Only if necessary.
Manual Signup
Choose how to handle manual signup:
| Option | Description |
|---|---|
| Use Verified's Coming Soon | Use Verified to handle manual signup |
| Use your own | Use your own manual signup flow |
| Hide | Don’t show user manual signup button |
A manual signup flow begins if the user clicks the “Sign Up Manually Instead” button on the phone screen. If you select the Hide option below, this button will be hidden.
Hiding the manual signup option could reduce conversion or it could reduce fraud — it depends on your use case and implementation.
Risk Signals
Risk signals are metadata that enhance 1-Click Signup's anti-fraud capabilities.
Choose which risk signals to include in Verified's responses:
| Option | Description |
|---|---|
| On | Include risk signals |
| Off Not Recommended | Don't include risk signals |
We can return up to 3 most recent addresses for a user, if you have risk signals turned on. We order these addresses from most to least recent, as best as we're able to determine recency.
You can show the user a dropdown to select one of the addresses on the info confirmation step (see here on the User Experience page). We highly recommend this because it helps reduce the chance the user will need to manually enter an address, reducing friction and boosting conversion.
Off is not recommended. It will prevent us from sourcing risk signals for a user — and blocking them if the risk score is too high. It will also prevent us from returning multiple addresses for a user.
Default Credential Requests
- A credential is a piece of identity data about a user (like a first name or address).
- A credential request is how you ask Verified for a particular credential. It encodes what type of data you're asking for, whether it's required or optional, whether multiple values should be returned, etc. See the
CredentialRequesttype for full details.
Choose which credentials Verified should try to source about the user:
Settings for a Credential Request
| Setting | Relevant to Integration With | Options | Default | Description | Example |
|---|---|---|---|---|---|
| Field Type | SDK and API | Credential type | - | Type of user data this field is for | Full Name |
| Field Description | SDK only | Text | - | Text that appears under the field | Legal name (for Full Name field type) |
| Optional or Required | SDK only |
| Optional | Whether the field is optional or required | Optional |
| Allow User Input | SDK only |
| Yes | Whether the user is allowed data returned for the field | Yes |
| Multiple Values | SDK and API |
|
| Whether the user can choose among multiple values (if they're returned) | No |
Field Description, Optional or Required, and Allow User Input are only relevant if you use our SDK because they affect the user interface the SDK displays.
If Optional or Required is set to Required if available:
- If data is returned for the field, the user is required to share it. (If Allow User Input is set to Yes, the user can edit the data.)
- If data is not returned for the field, the user can optionally share it. (If Allow User Input is set to Yes, the user can edit the data. If it's set to No, the field is not displayed to the user.)
When you create a new brand, the Dashboard starts you off with standard credential requests to provide you with a helpful starting point:
Standard Credential Requests
| Field Type | Field Description | Optional or Required | Allow User Input | Multiple Values |
|---|---|---|---|---|
| Full Name | - | Optional | Yes | No |
| ↳ First Name | - | Optional | Yes | - |
| ↳ Last Name | - | Optional | Yes | - |
| Phone | - | Optional | Yes | No |
| Address | - | Optional | Yes | Yes |
| ↳ Line 1 | - | Optional | Yes | - |
| ↳ Line 2 | Apt, Unit, etc. | Optional | Yes | - |
| ↳ City | - | Optional | Yes | - |
| ↳ State | - | Optional | Yes | - |
| ↳ ZIP Code | - | Optional | Yes | - |
| ↳ Country | - | Optional | Yes | - |
| Birth Date | - | Optional | Yes | - |
| SSN | - | Optional | Yes | - |
Styling Settings
Styling settings only apply to 1-Click Signup using the SDK because they affect the user interface the SDK displays. (They also apply to Text to Signup.)
So, if you are only using 1-Click Signup with the the API, you can ignore these settings.
We use AI to auto-magically configure styling settings based on your email domain, so you don't have to do so manually from scratch!
Click the Styling tab to access these settings.
Choose how to style the SDK:
| Setting | Options | Default | Description |
|---|---|---|---|
| Logo | Any square image (max size 200 KB, JPG or PNG) | - | Logo displayed to users |
| Alignment |
| Center | Alignment used for most text, buttons, and the powered by Verified graphic |
| Font Family | Any Google font | Lato | Font used for all elements |
| 1-Click Word |
| Signup | Word that appears after "1-Click" in the powered by Verified graphic |
| Input Border Radius | Any number | 4 | Border radius used for all inputs |
| Button Border Radius | Any number | 4 | Border radius used for all buttons |
| Success Animation |
| Full | Whether to show the success animation |
| Primary Color | Any hex code | #0DBC3D | Color used for primary buttons and success indicators |
| Error Color | Any hex code | #EB0D28 | Color used for errors |
| Muted Color | Any hex code | #BDBDBD | Color used for secondary buttons and text |
| Background Color | Any hex code | #FFFFFF | Color used for background |
| Graphic Color |
| Green | Color of the Verified logo in the powered by Verified graphic |
| Advanced Styling | Custom JSON | - | Custom JSON configuration that allows fine-grained control over any SDK component styling, using the MUI theme system |
The SDK will automaticallly adjust the color of text to achieve good contrast, given the color of an element. For example:
- If you set Background Color to be dark, the SDK will adjust text on the background to be light.
- If you set Primary Color to be light, the SDK will adjust text on buttons to be dark.
Advanced Styling
The sections below give examples of how you can use custom code to style the SDK in more complex ways.
It's up to you to ensure that custom code you use in the Advanced Styling setting works reliably — and to adapt it as needed for future versions of the SDK.
Wrapper
Update External SDK Wrapper
// In some style file that applies style to the wrapper of the parent element of the SDK
.sdk-iframe-container > iframe {
padding: 2rem;
margin: 2rem;
max-width: 1000px;
}
Container
Change Container Padding
{
"components": {
"MuiCssBaseline": {
"styleOverrides": {
"body": {
"[data-testid=\"client-sdk-container\"]": {
"padding": "2rem"
}
}
}
}
}
}
Background
Make Background Transparent
{
"components": {
"MuiCssBaseline": {
"styleOverrides": {
"body": {
"&, & .MuiContainer-root > main > .MuiPaper-root": {
"backgroundColor": "transparent"
},
"& [data-testid='phone-input-container'] label.MuiFormLabel-root": {
"background": "transparent"
},
"& [data-testid='phone-input-container'] .MuiInputBase-root::before": {
"opacity": 0
},
"& [data-testid='phone-input-container'] .MuiOutlinedInput-notchedOutline": {
"border": "1px solid #ffffff",
"zIndex": 0,
"m": 0,
"top": 0,
"&::before": {
"content": "none",
"position": "relative",
"inset": 0,
"backgroundColor": "#ffffff",
"zIndex": 0
},
"& legend": {
"display": "block"
}
},
"& [data-testid='phone-input-container'] .MuiOutlinedInput-root:hover .MuiOutlinedInput-notchedOutline": {
"border": "1px solid #ffffff"
},
"& [data-testid='phone-input-container'] .MuiOutlinedInput-root.Mui-focused .MuiOutlinedInput-notchedOutline": {
"border": "1px solid #ffffff"
}
}
}
}
}
}
Headers
Change Header Font Sizes
{
"components": {
"MuiCssBaseline": {
"styleOverrides": {
"body": {
"[data-testid=\"header\"] h2": {
"font-size": "24px"
},
"[data-testid=\"header\"] #signin-instructions": {
"font-size": "20px"
},
"[data-testid=\"header\"] #verification-instructions *": {
"font-size": "20px"
},
"[data-testid=\"header\"] #form-instructions": {
"font-size": "20px"
},
"[data-testid=\"header\"] #birthday-form-instructions": {
"font-size": "20px"
},
"[data-testid=\"header\"] #ssn4-form-instructions": {
"font-size": "20px"
}
}
}
}
}
}
Buttons
Modify Confirm Button
{
"components": {
"MuiCssBaseline": {
"styleOverrides": {
"body": {
"[data-testid=\"confirm-button\"]": {
"display": "block",
"width": "100%",
"box-shadow": "none !important"
}
}
}
}
}
}
Modify Manual Signup Button
{
"components": {
"MuiCssBaseline": {
"styleOverrides": {
"body": {
"[data-testid=\"manual-signup-button\"]": {
"display": "block",
"width": "100%",
"box-shadow": "none !important"
}
}
}
}
}
}
Modify Edit Phone Button
{
"components": {
"MuiCssBaseline": {
"styleOverrides": {
"body": {
"[data-testid=\"edit-phone-button\"]": {
"display": "block",
"width": "100%",
"box-shadow": "none !important"
}
}
}
}
}
}
Modify Resend Code Button
{
"components": {
"MuiCssBaseline": {
"styleOverrides": {
"body": {
"[data-testid=\"resend-code-button\"]": {
"display": "block",
"width": "100%",
"box-shadow": "none !important"
}
}
}
}
}
}
Modify Edit Info Button
{
"components": {
"MuiCssBaseline": {
"styleOverrides": {
"body": {
"#credentials-region > div > button": {
"display": "block",
"width": "100%",
"box-shadow": "none !important"
}
}
}
}
}
}
Modify Open Help Modal Button
{
"components": {
"MuiCssBaseline": {
"styleOverrides": {
"body": {
"[data-testid=\"help-button\"]": {
"display": "block",
"width": "100%",
"box-shadow": "none !important"
}
}
}
}
}
}
Modify Close Help Modal Button
{
"components": {
"MuiCssBaseline": {
"styleOverrides": {
"body": {
"[data-testid=\"data-provider-dialog-close-button\"]": {
"display": "block",
"width": "100%",
"box-shadow": "none !important"
}
}
}
}
}
}
Success Animation
Hide Confetti
{
"components": {
"MuiCssBaseline": {
"styleOverrides": {
"body": {
"[data-testid=\"client-sdk-container\"] > main > div > div+div": {
"display": "none"
}
}
}
}
}
}
Hide Verified Checkmark
{
"components": {
"MuiCssBaseline": {
"styleOverrides": {
"body": {
"[data-testid=\"step-success\"] > div": {
"display": "none"
}
}
}
}
}
}