Close Menu
SalesforceCodex
    Facebook X (Twitter) Instagram
    Trending
    • 10 Salesforce Chrome Extensions to Boost Your Productivity
    • How to Build a Generic Modal Window in Lightning Web Component
    • Top 10 Salesforce Flow Features of Salesforce Summer ’25
    • Unlock the Power of Vibe Coding in Salesforce
    • How to Implement Dynamic Queueable Chaining in Salesforce Apex
    • How to Implement Basic Queueable Chaining in Salesforce Apex
    • How to Suppress PMD Warnings in Salesforce Apex
    • Top 10 PMD Issues Salesforce Developers Should Focus on in Apex
    Facebook X (Twitter) Instagram
    SalesforceCodex
    Subscribe
    Tuesday, June 10
    • Home
    • Architecture
    • Salesforce
      • News
      • Apex
      • Integration
      • Books Testimonial
    • Questions
    • Certification
      • How to Prepare for Salesforce Integration Architect Exam
      • Certification Coupons
    • Integration Posts
    • Downloads
    • About Us
      • Privacy Policy
    SalesforceCodex
    Home»Salesforce»Apex»Generate OTP in LWC

    Generate OTP in LWC

    Dhanik Lal SahniBy Dhanik Lal SahniSeptember 12, 2021Updated:June 11, 20234 Comments2 Mins Read
    Facebook Twitter Pinterest LinkedIn Tumblr Email
    Generate OTP in LWC
    Share
    Facebook Twitter LinkedIn Pinterest Email

    OTP is another form of multi-factor authentication (MFA) designed to make it much harder for hackers to access protected information. An OTP is similar to a password but it can only be used once, thus it stands for one-time password or one-time pin . It is often used in combination with a regular password as an additional authentication mechanism providing extra security. In this post we will generate OTP in LWC using an external library jsOTP

    OTP is normally categorized in two type. In both type, we need two values a seed and a moving factor to generate OTP. The seed is a static value (secret key) that’s created when we establish a new account on the authentication server. While the seed doesn’t change, the moving factor does each time a new OTP is requested. 

    1. HOTP

    The “H” in HOTP stands for Hash-based Message Authentication Code (HMAC). HMAC-based One-time Password algorithm (HOTP) is an event-based OTP where the moving factor in each code is based on a counter.

    2. TOTP

    Time-based One-time Password (TOTP) is a time-based OTP. The seed for TOTP is static, just like in HOTP, but the moving factor in a TOTP is time-based rather than counter-based.

    This library jsOTP support generation for both type of OTPs. Let us use this and generate OTP in LWC.

    Steps for jsOTP Integration:

    1. Include Js library in Static Resource
    2. Create apex class to send WhatsApp Message
    3. Create component to include jsOTP
    4. Test Page

    1. Include Js library in Static Resource

    Download JS library from here and add to static resource as jsOTP.

    2. Create apex class to send WhatsApp Message

    Create an apex class which will get record information and send OTP as WhatsApp message to customer/contact or user.

    This class is using WhatsAppMessage service class. Refer our existing post for this class.

    3. Create LWC component to generate OTP

    Create a lwc component which will generate OTP and send to customer using WhatsApp message. We can generate both type of OTP using this library. Instead of WhatsApp we can use SMS or email as well for verification.

    Similar to jsOTP.totp().getOtp we can use jsOTP.hotp().getOtp to generate hash based OTP.

    4. Test Page

    Add LWC component on Account record page. This will generate OTP and send to account’s mobile.

    Related Post:

    Integrate Salesforce with WhatsApp using Twilio API

    Customer Engagement Using SMS with Nexmo API

    application security jsOTP lightning lightning component Lightning web component otp
    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
    Previous ArticleSchedule Email alerts based on Business Hours
    Next Article Option Group in LWC Select
    Dhanik Lal Sahni
    • Website
    • Facebook
    • X (Twitter)

    With over 18 years of experience in web-based application development, I specialize in Salesforce technology and its ecosystem. My journey has equipped me with expertise in a diverse range of technologies including .NET, .NET Core, MS Dynamics CRM, Azure, Oracle, and SQL Server. I am dedicated to staying at the forefront of technological advancements and continuously researching new developments in the Salesforce realm. My focus remains on leveraging technology to create innovative solutions that drive business success.

    Related Posts

    By Dhanik Lal Sahni9 Mins Read

    10 Salesforce Chrome Extensions to Boost Your Productivity

    June 1, 2025
    By Dhanik Lal Sahni4 Mins Read

    How to Build a Generic Modal Window in Lightning Web Component

    May 26, 2025
    By Dhanik Lal Sahni6 Mins Read

    Top 10 Salesforce Flow Features of Salesforce Summer ’25

    May 11, 2025
    View 4 Comments

    4 Comments

    1. Om on November 18, 2021 12:26 pm

      I have created a custom field of type text in contact object Mobile__c but while clicking send OTP button nothing happened.

      Reply
      • Dhanik Lal Sahni on November 18, 2021 10:17 pm

        Hello Om,
        Have you tried debugging the issue behind this? If not, please try to debug and update once again. We will connect and resolve your issue.

        Thank You,
        Dhanik

        Reply
    2. Jeff on January 18, 2023 10:31 am

      this is great! I have used this to create a lwc component to generate a totp code. It is working, but I am getting the following error when i refresh the page. [Cannot read properties of undefined (reading ‘length’)]

      e.base32tohex()@https://iqlink–iqlinksbx1.sandbox.lightning.force.com/resource/1674015731000/jsOTP:7:324
      e.getOtp()@https://iqlink–iqlinksbx1.sandbox.lightning.force.com/resource/1674015731000/jsOTP:7:662
      S.generateOTP()@https://iqlink–iqlinksbx1.sandbox.lightning.force.com/lightning/r/CustomerOrganization__c/a8i3H0000008aBjQAI/modules/c/customerOrg_PasswordManager.js:1:3468
      eval()@https://iqlink–iqlinksbx1.sandbox.lightning.force.com/lightning/r/CustomerOrganization__c/a8i3H0000008aBjQAI/modules/c/customerOrg_PasswordManager.js:1:2931

      Reply
      • Dhanik Lal Sahni on January 22, 2023 4:31 pm

        Hello Jeff,
        As per the error, looks like you have used the length function on some array or string. On refresh, this array is undefined/null so you are getting an error. Please check your code and if you need any help, please ping me on my LinkedIn profile.

        Thank You,
        Dhanik

        Reply
    Leave A Reply Cancel Reply

    Ranked #1 SALESFORCE DEVELOPER BLOG BY SALESFORCEBEN.COM
    Featured on Top Salesforce Developer Blog By ApexHours
    Recent Posts
    • 10 Salesforce Chrome Extensions to Boost Your Productivity
    • How to Build a Generic Modal Window in Lightning Web Component
    • Top 10 Salesforce Flow Features of Salesforce Summer ’25
    • Unlock the Power of Vibe Coding in Salesforce
    • How to Implement Dynamic Queueable Chaining in Salesforce Apex
    Ranked in Top Salesforce Blog by feedspot.com
    RSS Recent Stories
    • Top 20 Salesforce Data Cloud Interview Questions & Answers for Admins June 5, 2025
    • How to Connect Excel to Salesforce to Manage Your Data and Metadata February 9, 2025
    • Difference Between With Security and Without Security in Apex January 2, 2025
    • Top Reasons to Love Salesforce Trailhead: A Comprehensive Guide December 5, 2024
    • How to Utilize Apex Properties in Salesforce November 3, 2024
    Archives
    Categories
    Tags
    apex (111) apex code best practice (8) apex rest (11) apex trigger best practices (4) architecture (22) Asynchronous apex (9) AWS (5) batch apex (9) batch processing (4) code analysis (3) code optimization (8) custom metadata types (5) design principle (9) flow (15) future method (4) google (6) google api (4) integration (19) integration architecture (6) lighting (8) lightning (65) lightning-combobox (5) lightning-datatable (10) lightning component (31) Lightning web component (63) lwc (52) named credential (8) news (4) optimize apex code (4) optimize apex trigger (3) Permission set (4) pmd (3) Queueable (9) rest api (23) S3 Server (4) salesforce (142) salesforce apex (47) salesforce api (4) salesforce api integration (5) Salesforce Interview Question (4) salesforce news (5) salesforce question (5) solid (6) tooling api (5) Winter 20 (8)

    Get our newsletter

    Want the latest from our blog straight to your inbox? Chucks us your detail and get mail when new post is published.
    * indicates required

    Facebook X (Twitter) Instagram Pinterest YouTube Tumblr LinkedIn Reddit Telegram
    © 2025 SalesforceCodex.com. Designed by Vagmine Cloud Solution.

    Type above and press Enter to search. Press Esc to cancel.

    Ad Blocker Enabled!
    Ad Blocker Enabled!
    Our website is made possible by displaying online advertisements to our visitors. Please support us by disabling your Ad Blocker.