---
title: CIAM-Passwordless-Protect-Verify-Email-Subflow
description: The CIAM-Passwordless-Protect-Verify-Email-Subflow lets a user verify their email address.
component: pingone-solutions
page_id: pingone-solutions:pingone-customers-passwordless:flow_reference/ciam_passwordless_ciam_verify_email
canonical_url: https://docs.pingidentity.com/pingone-solutions/pingone-customers-passwordless/flow_reference/ciam_passwordless_ciam_verify_email.html
revdate: July 22, 2024
section_ids:
  purpose: Purpose
  structure: Structure
  input-schema: Input schema
  output-schema: Output schema
  variables: Variables
---

# CIAM-Passwordless-Protect-Verify-Email-Subflow

The CIAM-Passwordless-Protect-Verify-Email-Subflow lets a user verify their email address.

## Purpose

The **CIAM-Passwordless-Protect-Verify-Email-Subflow** displays an HTML page giving users the option to enter a verification code sent to their email or resend the code. If the user enters the code, a PingOne node verifies the code. If the user requests that the coe be resent, a PingOne node resends the code, then the user is returned to the beginning of the flow.

## Structure

Diagram of the structure, as described below.

This flow is divided into sections using teleport nodes:

* **Ask for email verification code**

  Uses a flow instance variable to track the number of verification attempts. It presents the user with an HTML page on which they can enter a verification code or request that the code be resent. If the user submits a verification code, the flow progresses to the **Verify verification code** section. If the user requests a new code, the flow progresses to the **Resend verification code** section.

* **Verify verification code**

  Increments the number of validation attempts. If the number of attempts has not reached the maximum, a PingOne node validates the verification code. If the validation succeeds, a JSON success message is sent. If the validation fails, an error message is displayed.

* **Resend verification code**

  Uses a PingOne node to send a new verification code, then displays a confirmation message for the user.

* **Return Error**

  Sends a JSON error message.

## Input schema

This flow has the following inputs.

| Input Name         | Required? | Description                                                                  |
| ------------------ | --------- | ---------------------------------------------------------------------------- |
| `pingOneUserID`    | Yes       | The user ID of the current user.                                             |
| `ciam_companyLogo` | No        | The company logo.Used only when the main flow was launched using the widget. |

## Output schema

This flow has the following outputs.

| Output Name         | Description                                      |
| ------------------- | ------------------------------------------------ |
| `ciam_errorMessage` | The error message to display in the parent flow. |

## Variables

This flow uses the following variables.

| Variable Name            | Description                                                           |
| ------------------------ | --------------------------------------------------------------------- |
| `ciam_logoStyle`         | The HTML style to use for your company logo.                          |
| `ciam_logoUrl`           | The URL for your company logo.                                        |
| `ciam_companyName`       | Displays the name of your company.                                    |
| `ciam_verificationLimit` | The maximum number of times a user can attempt to verify their email. |
