{"id":344144,"date":"2026-08-21T05:04:13","date_gmt":"2026-08-21T05:04:13","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/authyo-elementor-form\/"},"modified":"2026-08-21T08:55:07","modified_gmt":"2026-08-21T08:55:07","slug":"authyo-otp-for-elementor-form","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/authyo-otp-for-elementor-form\/","author":23299154,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Authyo OTP for Elementor Form","header_author":"Authyo","header_description":"Integrates Authyo OTP Verification (Email, SMS, WhatsApp, Voice Call) into Elementor forms. Not affiliated with Elementor Ltd.","assets_banners_color":"f3f5fc","last_updated":"2026-08-21 08:55:07","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/authyo.io","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":57,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"konceptwise","date":"2026-08-21 05:06:56"},"1.0.1":{"tag":"1.0.1","author":"konceptwise","date":"2026-08-21 08:55:07"}},"upgrade_notice":{"1.0.1":"<p>Recommended for any site behind a page cache or CDN. OTP sessions are now established at runtime, so cached pages no longer cause &quot;Send OTP&quot; failures. Page caches are purged automatically on update.<\/p>","1.0.0":"<p>Initial release. No upgrade steps required.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3658126,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3658126,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3658600,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3658600,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[76538,9210,43415,711,712],"plugin_category":[41],"plugin_contributors":[247673],"plugin_business_model":[],"class_list":["post-344144","plugin","type-plugin","status-publish","hentry","plugin_tags-elementor","plugin_tags-otp","plugin_tags-phone-verification","plugin_tags-sms","plugin_tags-verification","plugin_category-communication","plugin_contributors-konceptwise","plugin_committers-konceptwise"],"banners":{"banner":"https:\/\/ps.w.org\/authyo-otp-for-elementor-form\/assets\/banner-772x250.png?rev=3658600","banner_2x":"https:\/\/ps.w.org\/authyo-otp-for-elementor-form\/assets\/banner-1544x500.png?rev=3658600","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/authyo-otp-for-elementor-form\/assets\/icon-128x128.png?rev=3658126","icon_2x":"https:\/\/ps.w.org\/authyo-otp-for-elementor-form\/assets\/icon-256x256.png?rev=3658126","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Authyo OTP for Elementor Form adds OTP (One-Time Password) verification to your Elementor forms. Protect your forms with multi-channel verification \u2014 Email, SMS, WhatsApp, and Voice Call \u2014 powered by the Authyo API.<\/p>\n\n<p><strong>Features:<\/strong><\/p>\n\n<ul>\n<li>11 field types: First Name, Last Name, Email, Phone, Message, Dropdown, Checkbox, Radio Button, File Upload, Hidden Field, Multi-Step Form<\/li>\n<li>Enable OTP toggle on Email and Phone fields individually<\/li>\n<li>Multi-channel OTP delivery: Email, SMS, WhatsApp, Voice Call<\/li>\n<li>Configurable OTP length (4\u20138 digits), expiry (1\u201360 minutes), resend cooldown, and max resend limit<\/li>\n<li>Failsafe protection: allow forms to submit even if OTP delivery fails (e.g. low balance)<\/li>\n<li>Built-in country code selector with 250+ countries via the Authyo API, with a bundled static fallback<\/li>\n<li>Clean, modern settings panel with vertical tab layout<\/li>\n<li>Rate limiting on send and verify endpoints to prevent abuse<\/li>\n<li>Full WordPress REST API integration with nonce verification<\/li>\n<\/ul>\n\n<p><strong>Third-Party Disclaimer:<\/strong><\/p>\n\n<p>This plugin is NOT affiliated with, endorsed by, or officially supported by Elementor Ltd. It is an independent third-party integration that works alongside Elementor to provide OTP verification functionality using Authyo's API services.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to the Authyo API (<code>https:\/\/app.authyo.io<\/code>) for the following purposes:<\/p>\n\n<ul>\n<li><p><strong>Send OTP<\/strong> \u2014 <code>POST https:\/\/app.authyo.io\/api\/v1\/auth\/sendotp<\/code>\nSends a one-time password to the user's phone number or email address via the selected channel (SMS, WhatsApp, Voice Call, or Email). The user's contact target, OTP length, expiry, and delivery channel are transmitted.<\/p><\/li>\n<li><p><strong>Verify OTP<\/strong> \u2014 <code>POST https:\/\/app.authyo.io\/api\/v1\/auth\/verifyotp<\/code>\nVerifies the OTP entered by the user against a temporary maskId issued during the send step. No contact information is sent during verification.<\/p><\/li>\n<li><p><strong>Country list<\/strong> \u2014 <code>GET https:\/\/app.authyo.io\/api\/v1\/user\/getcountrylist<\/code>\nFetches the list of supported countries for the phone number field dropdown. This is called once and cached; no user data is transmitted.<\/p><\/li>\n<\/ul>\n\n<p>These requests are made from your WordPress server (server-side), not from the user's browser. Use of these services is subject to the <a href=\"https:\/\/authyo.io\/terms-service\/\">Authyo Terms of Service<\/a> and <a href=\"https:\/\/authyo.io\/privacy-policy\/\">Privacy Policy<\/a>.<\/p>\n\n<h3>Privacy Policy<\/h3>\n\n<p>This plugin transmits personal data to the Authyo API (<code>https:\/\/app.authyo.io<\/code>) in order to deliver and verify one-time passwords. The following data may be sent:<\/p>\n\n<ul>\n<li><strong>Phone number or email address<\/strong> \u2014 transmitted when a user requests an OTP, to identify the delivery target.<\/li>\n<li><strong>OTP session token (maskId)<\/strong> \u2014 a temporary, opaque identifier returned by the Authyo API and used only to verify the code the user enters. No contact information is included in the verify request.<\/li>\n<li><strong>Country list requests<\/strong> \u2014 no personal data is transmitted; only a request for supported country codes is made.<\/li>\n<\/ul>\n\n<p>No personal data collected through this plugin is stored on the Authyo servers beyond what is necessary to deliver and verify a single OTP session.<\/p>\n\n<p>Site administrators are responsible for informing their users about this data transmission in their own site privacy policy.<\/p>\n\n<p>For full details, refer to the <a href=\"https:\/\/authyo.io\/privacy-policy\/\">Authyo Privacy Policy<\/a> and <a href=\"https:\/\/authyo.io\/terms-service\/\">Terms of Service<\/a>.<\/p>\n\n<h3>About<\/h3>\n\n<p><strong>Konceptwise Digital Media Pvt. Ltd.<\/strong> is the parent company that officially develops and maintains this plugin.<\/p>\n\n<p><strong>Authyo<\/strong> is a product line developed and owned by Konceptwise Digital Media Pvt. Ltd., providing multi-channel OTP verification services (Email, SMS, WhatsApp, and Voice Call) for web applications.<\/p>\n\n<p>This plugin is NOT affiliated with, endorsed by, or officially supported by Elementor Ltd. It is an independent third-party integration.<\/p>\n\n<!--section=installation-->\n<h4>Automatic Installation<\/h4>\n\n<ol>\n<li>Log in to your WordPress admin panel.<\/li>\n<li>Go to <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>.<\/li>\n<li>Choose the plugin ZIP file and click <strong>Install Now<\/strong>.<\/li>\n<li>Click <strong>Activate Plugin<\/strong>.<\/li>\n<\/ol>\n\n<h4>Manual Installation<\/h4>\n\n<ol>\n<li>Upload the <code>authyo-otp-for-elementor-form<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<\/ol>\n\n<h4>After Activation<\/h4>\n\n<ol>\n<li>Navigate to <strong>Authyo OTP for Elementor Form \u2192 General Settings<\/strong>.<\/li>\n<li>Enter your <strong>App ID<\/strong>, <strong>Client ID<\/strong>, and <strong>Client Secret<\/strong> from your <a href=\"https:\/\/app.authyo.io\">Authyo dashboard<\/a>.<\/li>\n<li>Enable the OTP channels you want to use under the <strong>OTP Channel<\/strong> tab.<\/li>\n<li>In the Elementor editor, add the <strong>Authyo Form<\/strong> widget to any page.<\/li>\n<li>In the widget's repeater fields, enable <strong>OTP<\/strong> on any Email or Phone field.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20authyo%20account%3F\"><h3>Do I need an Authyo account?<\/h3><\/dt>\n<dd><p>Yes. You need a free or paid Authyo account to obtain your API credentials (App ID, Client ID, Client Secret). Sign up at <a href=\"https:\/\/app.authyo.io\">https:\/\/app.authyo.io<\/a>.<\/p><\/dd>\n<dt id=\"which%20otp%20channels%20are%20supported%3F\"><h3>Which OTP channels are supported?<\/h3><\/dt>\n<dd><p>Email, SMS, WhatsApp, and Voice Call. Each channel can be enabled or disabled individually under <strong>Authyo OTP for Elementor Form \u2192 General Settings \u2192 OTP Channel<\/strong>.<\/p><\/dd>\n<dt id=\"does%20it%20work%20without%20elementor%20pro%3F\"><h3>Does it work without Elementor Pro?<\/h3><\/dt>\n<dd><p>Yes. The plugin works with both the free Elementor plugin and Elementor Pro.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20the%20authyo%20api%20is%20unreachable%3F\"><h3>What happens if the Authyo API is unreachable?<\/h3><\/dt>\n<dd><p>If the Failsafe Protection option is enabled (under General Settings), forms will still submit even if the OTP cannot be delivered. You can configure a notification email to be alerted when this occurs.<\/p><\/dd>\n<dt id=\"what%20data%20is%20sent%20to%20authyo%3F\"><h3>What data is sent to Authyo?<\/h3><\/dt>\n<dd><p>When sending an OTP, the user's phone number or email address, the selected OTP channel, and OTP length\/expiry settings are sent to the Authyo API. When verifying, the maskId (a temporary session token returned by Authyo) and the OTP entered by the user are sent. No personally identifiable information is stored by this plugin beyond standard WordPress transients used for session management.<\/p><\/dd>\n<dt id=\"is%20the%20country%20list%20cached%3F\"><h3>Is the country list cached?<\/h3><\/dt>\n<dd><p>Yes. The country list is fetched from the Authyo API once and cached as a WordPress option. You can refresh it manually from the <strong>Country<\/strong> tab in the settings panel.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Compatibility: the REST nonce and OTP session tokens are now fetched at runtime instead of being embedded in the page, so forms work correctly behind server-level and CDN page caches (Varnish, Nginx FastCGI, Cloudflare) that cannot honour DONOTCACHEPAGE.<\/li>\n<li>Reliability: a request rejected because a cached page supplied an expired nonce is now retried automatically with a fresh one.<\/li>\n<li>Maintenance: page caches are purged automatically after a plugin update.<\/li>\n<li>Added the <code>authyo_ef_disable_page_cache<\/code> filter for site owners who prefer to keep form pages cached.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Supports Email, SMS, WhatsApp, and Voice Call OTP channels.<\/li>\n<li>11 field types in the Elementor widget.<\/li>\n<li>Rate limiting, failsafe protection, and country dropdown with cache.<\/li>\n<\/ul>","raw_excerpt":"Integrates Authyo OTP verification (Email, SMS, WhatsApp, Voice Call) into Elementor forms.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/344144","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=344144"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/konceptwise"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=344144"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=344144"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=344144"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=344144"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=344144"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=344144"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}