# Authyo OTP for Elementor Form

> Build forms in Elementor with built-in OTP verification. Add the Authyo Form widget, turn on OTP for email and phone fields, and verify visitors by SMS, WhatsApp, Email or Voice Call.

Source: https://authyo.io/authyo-docs/authyo-otp-for-elementor-form/

> Note: Voice Call OTP is currently available only in India.

## At a glance

- **What it does:** Adds an **Authyo Form** widget to Elementor with OTP verification for email and phone fields, plus lead management.
- **OTP channels:** Email, SMS, WhatsApp and Voice Call.
- **How you add it:** Drag the **Authyo Form** widget (in the **Authyo** category) onto a page in the Elementor editor. There is no shortcode.
- **You need:** Elementor (free or Pro), WordPress 5.8+, PHP 7.4+, and an Authyo account with a Client ID and Client Secret.
- **Settings location:** WordPress admin, under **Authyo OTP for Elementor Form** (General Settings, Lead Management and How to Use).
- **Form fields:** First Name, Last Name, Email, Phone, Message, Dropdown, Checkbox, Radio Button, File Upload, Hidden Field and Multi-Step Form.
- **Get the plugin:** [WordPress.org: Authyo OTP for Elementor Form](https://wordpress.org/plugins/authyo-otp-for-elementor-form/)

## Overview

**Authyo OTP for Elementor Form** adds its own form widget to Elementor. You build the form with the fields you need, switch on **Enable OTP** for the email and phone fields, and visitors verify their contact details with a one-time password (OTP) before they can submit.

The plugin also saves every submission in a **Lead Management** screen, where you can filter, change the status of and export your leads.

_This plugin is an independent add-on for Elementor, developed by Konceptwise Digital Media Pvt. Ltd. It is not affiliated with, endorsed by or supported by Elementor Ltd._

- **Authyo Form widget:** A complete form builder inside Elementor, with 11 field types and styling controls.
- **OTP on email and phone:** Switch on OTP for each email or phone field on its own.
- **Four OTP channels:** Email, SMS, WhatsApp and Voice Call, with a primary phone method and fallback.
- **Multi-step forms:** Split a long form into steps with Next and Previous buttons and a step indicator.
- **File uploads:** Let visitors attach files. They are stored in your Media Library.
- **Lead Management:** See every submission, set its status, search, filter, export to CSV and delete.
- **Country selector:** A phone field with 250+ countries. Show all, or only the ones you serve.
- **Failsafe protection:** Optionally let forms submit if an OTP cannot be sent, for example when your balance runs out.

## Requirements

- WordPress **5.8** or later and PHP **7.4** or later.
- **Elementor** installed and activated. Both the free plugin and Elementor Pro work.
- An **Authyo account** with an application. You will need its **Client ID** and **Client Secret**.
- Balance in your Authyo wallet to send OTPs.

## Installation

Install Elementor first, then the Authyo plugin.

### Step 1: Install and activate Elementor
Go to **Plugins → Add New**, search for **Elementor**, then click **Install Now** and **Activate**. Skip this step if it is already active.

### Step 2: Install Authyo OTP for Elementor Form
Go to **Plugins → Add New**, search for **Authyo OTP for Elementor Form**, then click **Install Now** and **Activate**. You can also upload the plugin ZIP using **Plugins → Add New → Upload Plugin**.

### Step 3: Open the plugin menu
A new **Authyo OTP for Elementor Form** item appears in the WordPress admin menu, with three pages: **General Settings**, **Lead Management** and **How to Use**. If your credentials are not set, a notice reminds you to configure them.

## Setup

Connect the plugin to your Authyo account. You can use the setup wizard, or fill in the settings yourself.

### Step 1: Create your Authyo account
Go to [app.authyo.io](https://app.authyo.io/account/welcome) and create a free account.

### Step 2: Copy your credentials
Open [your applications](https://app.authyo.io/application/userapplication) in the Authyo dashboard and copy the **Client ID** and **Client Secret**. Create an application first if you do not have one.

### Step 3: Paste them into General Settings
Go to **Authyo OTP for Elementor Form → General Settings → General**. Under **API Credentials**, enter the **Client ID** and **Client Secret**, then click **Save Changes**. The page shows **Connected** once the credentials are set.

_The setup wizard has five steps: Credentials, Channels, Countries, OTP Behaviour and Finish. It covers the same settings as the tabs._

### Step 4: Enable your OTP channels
Open the **OTP Channel** tab. Switch on **Email OTP**, **SMS OTP**, **WhatsApp OTP** and **Voice Call OTP** as needed. Set a **Primary Phone OTP Method** and choose whether to **Allow Visitor Method Choice**. At least one channel is required.

### Step 5: Review the OTP defaults and countries (optional)
The **OTP Defaults** tab controls code length, expiry, resend cooldown and the resend limit. The **Country** tab controls which countries appear in the phone field. The recommended defaults work for most sites.

_If your credentials are not set, OTP is switched off on your forms and no OTP is sent. Administrators see a message on the form with a link to the settings. Visitors do not._

## How to use

The form is an Elementor widget, so you add it in the editor and not with a shortcode.

### Step 1: Add the widget to a page
Open a page or post with **Elementor**. Search for **Authyo Form**, or find it in the **Authyo** category, and drag it onto the page. It starts with these fields: First Name, Last Name, Email, Phone and Message.

### Step 2: Set up the form fields
Open **Form Fields** to add, remove or reorder fields. For each field you can set the **Type**, **Label**, **Placeholder**, **Required** and **Column Width**. Dropdown, Checkbox and Radio fields take their options one per line.

### Step 3: Switch on OTP
Click an **Email** or **Phone** field and set **Enable OTP** to **Yes**. Visitors must then verify that email address or phone number before they can submit. Each field is set on its own, so you can verify only the phone, only the email, or both.

### Step 4: Add steps (optional)
Add a **Multi-Step Form** field between the fields where you want to split the form. For example: name fields, a Multi-Step field, contact fields, another Multi-Step field, then the message gives three steps. Set the **Button Label** for the Next button. Required fields are checked before the visitor moves on, and Submit shows on the last step.

### Step 5: Allow file uploads (optional)
Add a **File Upload** field and set **Max File Size (MB)**. The default is 10 MB. Files go into your Media Library and the file link is saved with the lead.

### Step 6: Choose what happens after submit
Under **After Submit**, set the **Success Title** and **Success Message**, or enter a **Redirect URL** to send visitors to a thank-you page.

### Step 7: Style the form
Use the **Style** tab to change the card, header, button and input field colors, radius, spacing and borders. The **Buttons** section controls the submit button’s size, alignment, text, link, ID and class.

### Step 8: Publish and test
Publish the page and submit the form as a visitor. Enter an email address or phone number, request the code, enter it and submit.

## Settings reference

Every setting in the plugin, grouped by where you find it.

### General Settings: API credentials

- **Client ID**: The Client ID of your Authyo application.
- **Client Secret**: The Client Secret of your Authyo application. Use the eye icon to show or hide it. After saving, leave it blank to keep the saved value.

### General Settings: failsafe protection

Keeps submissions flowing if your Authyo wallet runs dry or the API is unreachable.

- **Bypass OTP on failure** (Default: Off): When on, forms still submit if Authyo cannot send an OTP, for example because of an empty wallet or a network error. Your site administration email is alerted when this happens.
- **Low Balance Warning (credits)** (Default: 50): An alert is sent to your site administration email when your wallet drops below this amount.

### OTP Channel

- **Email OTP, SMS OTP, WhatsApp OTP, Voice Call OTP**: Switch on the channels you want to offer. At least one is required.
- **Primary Phone OTP Method** (Default: SMS): The method used first for phone OTPs: SMS, WhatsApp or Voice Call.
- **Allow Visitor Method Choice** (Default: Off): Lets visitors pick their preferred delivery method when they request a code.
- **Fallback Timer (seconds)**: If the primary method does not deliver, an alternative is suggested after this many seconds. Allowed range: 15 to 120.
- **Strict Validation (Multi-step Forms)** (Default: Off): When on, visitors cannot move to the next step until the required verification on the current step is complete.
- **Allow Skipping Email Verification** (Default: Off): Visitors can submit even if their email address is not verified.
- **Allow Skipping Phone Verification** (Default: Off): Visitors can submit even if their phone number is not verified.

### OTP Defaults

- **OTP Length** (Default: 6): Number of digits in the code. Allowed range: 4 to 8.
- **Expiry (minutes)** (Default: 5): How long a code stays valid. Allowed range: 1 to 60.
- **Resend Cooldown (seconds)** (Default: 30): How long visitors must wait before requesting another code. Allowed range: 0 to 300.
- **Max Resends** (Default: 3): How many times a visitor can request a new code. Allowed range: 1 to 10.

### Country

- **All Countries / Specific Countries** (Default: All Countries): Show every country in the phone field dropdown, or only the ones you choose. Search to find a country.
- **Default Country**: The country preselected when the phone field loads. It must be one of the allowed countries.
- **Country List Cache**: The country list is fetched from Authyo and cached. Use **Refresh Cache** to get the latest list. A built-in fallback list is used if the Authyo list cannot be loaded.

### Widget: Form Header

- **Title / Subtitle**: The heading and the line of text at the top of the form.
- **Show Icon**: Show or hide the icon in the header.

### Widget: form field options

- **Type**: First Name, Last Name, Email, Phone, Message, Dropdown, Checkbox, Radio Button, File Upload, Hidden Field or Multi-Step Form.
- **Label, Placeholder, Required**: The text shown with the field, the hint inside it, and whether it must be filled in.
- **Options**: For Dropdown, Checkbox and Radio fields. Enter each option on a new line.
- **Enable OTP**: For Email and Phone fields. Set to **Yes** to require OTP verification.
- **Default Value**: A value the field starts with. Useful for hidden fields.
- **Button Label** (Default: Next): For a Multi-Step Form field. The text on the Next button.
- **Column Width**: How wide the field is, so you can place fields side by side.
- **Rows**: The height of a Message field.
- **Max File Size (MB)** (Default: 10): For File Upload fields. The largest file allowed.
- **ID / Class**: Optional ID and custom CSS classes for the field.

### Widget: buttons and after submit

- **Submit Button** (Default text: Submit): The button text, plus an optional URL. When a URL is set, the button acts as a link instead of submitting the form.
- **Size, Column Width, Alignment**: How the buttons look and where they sit.
- **Label and Required Mark**: Show or hide the field labels and the required marker.
- **Success Title and Success Message** (Defaults: Submitted! / Your form has been submitted successfully.): What visitors see after submitting.
- **Redirect URL**: Send visitors to this address after submitting. Leave it empty to show the success message.

### Lead Management

- **Status**: Each lead is **New**, **Contacted**, **Converted** or **Spam**. Change it from the dropdown.
- **Search and filter**: Search leads and filter by status.
- **Lead details**: Open a lead to see its date, form, channel, OTP status and every submitted field.
- **Export CSV**: Download leads with ID, date, form, status, channel and all field values.
- **Delete**: Delete one lead, or select several and use **Delete Selected**. This cannot be undone.

## Troubleshooting

### I do not see the Authyo Form widget in Elementor
Check that Elementor is installed and active and that the Authyo plugin is active. Reload the Elementor editor, then search for “Authyo Form” or look in the **Authyo** category.

### The form shows a message that OTP is disabled
Your Client ID and Client Secret are not set. Only administrators see this message. Open **General Settings**, enter the credentials and save.

### The “Enable OTP” option is missing on a field
The option appears only on **Email** and **Phone** fields. If a notice says the credentials are not set, configure them in General Settings first.

### The OTP does not arrive
Check your Client ID and Client Secret, that the channel is switched on in the **OTP Channel** tab, and that your Authyo wallet has balance. Check that the email address or phone number is valid. If you see “No OTP channels are enabled”, switch on at least one channel.

### Visitors see “Please enter a valid email address” or “valid phone number”
The contact detail is not in a valid format. For phone numbers, choose the right country and check the digits.

### Visitors see “Too many attempts” or “Too many verification attempts”
The visitor reached the limit for codes. They should wait a few minutes and try again. You can allow more resends with **Max Resends** under OTP Defaults.

### Visitors see “The OTP you entered is invalid”
The code was wrong. Check the digits and try again, or request a new code.

### Visitors see “Session expired. Please send a new OTP”
The code timed out. By default a code is valid for 5 minutes. Ask the visitor to request a new one, or raise **Expiry (minutes)** (up to 60).

### Visitors see “OTP verification is required. Please verify all OTP fields before submitting”
Every field that has OTP enabled must be verified before the form can be submitted. Ask the visitor to verify each one, or switch on the skip options in the OTP Channel tab.

### Visitors see “This form could not be validated. Please reload the page” or an invalid nonce message
The page was open for a long time, or an old cached copy is being shown. Reload the page. If it keeps happening, exclude the page from caching.

### The country list is empty or says unavailable
Check your internet connection and credentials, then open **General Settings → Country** and click **Refresh Cache**.

### Forms submit without OTP when my wallet is empty
That is the **Bypass OTP on failure** setting. When on, forms continue to submit if an OTP cannot be sent, and an alert goes to your site administration email. Top up your Authyo wallet to restore verification, or turn the setting off.

## Frequently asked questions

### Do I need an Authyo account?
Yes. You need an Authyo account to get a Client ID and Client Secret for the plugin settings.

### Which OTP channels are supported?
Email, SMS, WhatsApp and Voice Call. You can switch each channel on or off in the **OTP Channel** tab.

### Does it work without Elementor Pro?
Yes. It works with the free Elementor plugin and with Elementor Pro.

### How do I turn OTP on for a field?
In the Authyo Form widget, click an Email or Phone field and set **Enable OTP** to **Yes**.

### Can I build multi-step forms?
Yes. Add a **Multi-Step Form** field wherever you want a new step. Next and Previous buttons and a step indicator appear automatically.

### Where are my form submissions saved?
In **Authyo OTP for Elementor Form → Lead Management**, where you can search, filter, change status, delete and export to CSV.

### Where do uploaded files go?
Into your WordPress Media Library. The file link is saved with the lead.

### What happens if Authyo cannot be reached?
If **Bypass OTP on failure** is on, forms still submit and your site administration email is alerted. If it is off, the visitor cannot submit until verification works.

### What data is sent to Authyo?
To send a code, the visitor’s email address or phone number, the channel, and the code length and expiry are sent. To verify, a temporary session token and the code the visitor entered are sent. The requests are made from your server, not from the visitor’s browser.

### Is the country list cached?
Yes. It is fetched from Authyo once and stored. You can refresh it from the **Country** tab.

### Is this plugin made by the Elementor team?
No. It is developed by Konceptwise Digital Media Pvt. Ltd. and is not affiliated with, endorsed by or supported by Elementor Ltd.

## Support

If this guide does not answer your question, submit the support form: https://authyo.io/support/
