{"id":14908,"date":"2026-04-11T18:46:45","date_gmt":"2026-04-11T13:16:45","guid":{"rendered":"https:\/\/www.huntbee.com\/resources\/docs\/product-stock-notification\/premium-stock-alert-page\/otp-email-verification\/"},"modified":"2026-04-11T18:47:49","modified_gmt":"2026-04-11T13:17:49","slug":"otp-email-verification","status":"publish","type":"docs","link":"https:\/\/www.huntbee.com\/resources\/docs\/product-stock-notification\/premium-stock-alert-page\/otp-email-verification\/","title":{"rendered":"OTP Email Verification"},"content":{"rendered":"\n<p>The premium add-on uses a one-time password system to verify guest email ownership before exposing alert records. The OTP table (<code>hb_stock_alert_email_verify<\/code>) and its seed data are created by the main extension install flow \u2014 the add-on relies on this setup and does not recreate it at runtime.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">OTP behavior at a glance<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>6-digit numeric code<\/li>\n\n\n\n<li>Hashed storage, not plaintext<\/li>\n\n\n\n<li>One active row per email<\/li>\n\n\n\n<li>15-minute expiry window<\/li>\n\n\n\n<li>60-second resend cooldown<\/li>\n\n\n\n<li>Max 5 sends per email per hour<\/li>\n\n\n\n<li>Max 10 sends per IP per hour<\/li>\n\n\n\n<li>OTP row deleted on success<\/li>\n\n\n\n<li>Expired rows cleaned up after 3 days<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Session behavior after verification<\/h2>\n\n\n\n<p>Once a guest email is verified, it is stored in the browser session under the&nbsp;<code>hb_stock_alert_verified_emails<\/code>&nbsp;key as an associative array with the normalized email as key and the verification timestamp as value. Verified guest alert sections are built from this session map on each page load. Session state does not persist between browser sessions.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">OTP email template<\/h2>\n\n\n\n<p>The OTP email is sent through the main extension template system. The template is selected from&nbsp;<strong>Settings \u2192 Email Setting \u2192 OTP Email Verification Template<\/strong>&nbsp;and can be assigned per language. If no custom template is assigned, the system falls back to the seeded OTP template whose label starts with&nbsp;<em>Email Verification OTP<\/em>.<\/p>\n","protected":false},"featured_media":0,"parent":14906,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","doc_tag":[],"class_list":["post-14908","docs","type-docs","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>OTP Email Verification - HuntBee Resources<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.huntbee.com\/resources\/docs\/product-stock-notification\/premium-stock-alert-page\/otp-email-verification\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"OTP Email Verification - HuntBee Resources\" \/>\n<meta property=\"og:description\" content=\"The premium add-on uses a one-time password system to verify guest email ownership before exposing alert records. The OTP table (hb_stock_alert_email_verify) and its seed data are created by the main extension install flow \u2014 the add-on relies on this setup and does not recreate it at runtime. OTP behavior at a glance Session behavior after [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.huntbee.com\/resources\/docs\/product-stock-notification\/premium-stock-alert-page\/otp-email-verification\/\" \/>\n<meta property=\"og:site_name\" content=\"HuntBee Resources\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/huntbee.opencart\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-11T13:17:49+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.huntbee.com\\\/resources\\\/docs\\\/product-stock-notification\\\/premium-stock-alert-page\\\/otp-email-verification\\\/\",\"url\":\"https:\\\/\\\/www.huntbee.com\\\/resources\\\/docs\\\/product-stock-notification\\\/premium-stock-alert-page\\\/otp-email-verification\\\/\",\"name\":\"OTP Email Verification - HuntBee Resources\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.huntbee.com\\\/resources\\\/#website\"},\"datePublished\":\"2026-04-11T13:16:45+00:00\",\"dateModified\":\"2026-04-11T13:17:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.huntbee.com\\\/resources\\\/docs\\\/product-stock-notification\\\/premium-stock-alert-page\\\/otp-email-verification\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.huntbee.com\\\/resources\\\/docs\\\/product-stock-notification\\\/premium-stock-alert-page\\\/otp-email-verification\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.huntbee.com\\\/resources\\\/docs\\\/product-stock-notification\\\/premium-stock-alert-page\\\/otp-email-verification\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.huntbee.com\\\/resources\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Product Stock Notification\",\"item\":\"https:\\\/\\\/www.huntbee.com\\\/resources\\\/docs\\\/product-stock-notification\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Premium Stock Alert Page\",\"item\":\"https:\\\/\\\/www.huntbee.com\\\/resources\\\/docs\\\/product-stock-notification\\\/premium-stock-alert-page\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"OTP Email Verification\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.huntbee.com\\\/resources\\\/#website\",\"url\":\"https:\\\/\\\/www.huntbee.com\\\/resources\\\/\",\"name\":\"HuntBee Resources\",\"description\":\"OpenCart Extension Documentations - Guides - Blogs - Projects\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.huntbee.com\\\/resources\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.huntbee.com\\\/resources\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.huntbee.com\\\/resources\\\/#organization\",\"name\":\"HuntBee OpenCart\",\"url\":\"https:\\\/\\\/www.huntbee.com\\\/resources\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.huntbee.com\\\/resources\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.huntbee.com\\\/resources\\\/wp-content\\\/uploads\\\/2020\\\/04\\\/cropped-mobile-logo-new.png\",\"contentUrl\":\"https:\\\/\\\/www.huntbee.com\\\/resources\\\/wp-content\\\/uploads\\\/2020\\\/04\\\/cropped-mobile-logo-new.png\",\"width\":945,\"height\":200,\"caption\":\"HuntBee OpenCart\"},\"image\":{\"@id\":\"https:\\\/\\\/www.huntbee.com\\\/resources\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/huntbee.opencart\",\"https:\\\/\\\/www.instagram.com\\\/opencart.huntbee\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"OTP Email Verification - HuntBee Resources","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.huntbee.com\/resources\/docs\/product-stock-notification\/premium-stock-alert-page\/otp-email-verification\/","og_locale":"en_US","og_type":"article","og_title":"OTP Email Verification - HuntBee Resources","og_description":"The premium add-on uses a one-time password system to verify guest email ownership before exposing alert records. The OTP table (hb_stock_alert_email_verify) and its seed data are created by the main extension install flow \u2014 the add-on relies on this setup and does not recreate it at runtime. OTP behavior at a glance Session behavior after [&hellip;]","og_url":"https:\/\/www.huntbee.com\/resources\/docs\/product-stock-notification\/premium-stock-alert-page\/otp-email-verification\/","og_site_name":"HuntBee Resources","article_publisher":"https:\/\/www.facebook.com\/huntbee.opencart","article_modified_time":"2026-04-11T13:17:49+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.huntbee.com\/resources\/docs\/product-stock-notification\/premium-stock-alert-page\/otp-email-verification\/","url":"https:\/\/www.huntbee.com\/resources\/docs\/product-stock-notification\/premium-stock-alert-page\/otp-email-verification\/","name":"OTP Email Verification - HuntBee Resources","isPartOf":{"@id":"https:\/\/www.huntbee.com\/resources\/#website"},"datePublished":"2026-04-11T13:16:45+00:00","dateModified":"2026-04-11T13:17:49+00:00","breadcrumb":{"@id":"https:\/\/www.huntbee.com\/resources\/docs\/product-stock-notification\/premium-stock-alert-page\/otp-email-verification\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.huntbee.com\/resources\/docs\/product-stock-notification\/premium-stock-alert-page\/otp-email-verification\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.huntbee.com\/resources\/docs\/product-stock-notification\/premium-stock-alert-page\/otp-email-verification\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.huntbee.com\/resources\/"},{"@type":"ListItem","position":2,"name":"Product Stock Notification","item":"https:\/\/www.huntbee.com\/resources\/docs\/product-stock-notification\/"},{"@type":"ListItem","position":3,"name":"Premium Stock Alert Page","item":"https:\/\/www.huntbee.com\/resources\/docs\/product-stock-notification\/premium-stock-alert-page\/"},{"@type":"ListItem","position":4,"name":"OTP Email Verification"}]},{"@type":"WebSite","@id":"https:\/\/www.huntbee.com\/resources\/#website","url":"https:\/\/www.huntbee.com\/resources\/","name":"HuntBee Resources","description":"OpenCart Extension Documentations - Guides - Blogs - Projects","publisher":{"@id":"https:\/\/www.huntbee.com\/resources\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.huntbee.com\/resources\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.huntbee.com\/resources\/#organization","name":"HuntBee OpenCart","url":"https:\/\/www.huntbee.com\/resources\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.huntbee.com\/resources\/#\/schema\/logo\/image\/","url":"https:\/\/www.huntbee.com\/resources\/wp-content\/uploads\/2020\/04\/cropped-mobile-logo-new.png","contentUrl":"https:\/\/www.huntbee.com\/resources\/wp-content\/uploads\/2020\/04\/cropped-mobile-logo-new.png","width":945,"height":200,"caption":"HuntBee OpenCart"},"image":{"@id":"https:\/\/www.huntbee.com\/resources\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/huntbee.opencart","https:\/\/www.instagram.com\/opencart.huntbee\/"]}]}},"comment_count":0,"_links":{"self":[{"href":"https:\/\/www.huntbee.com\/resources\/wp-json\/wp\/v2\/docs\/14908","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.huntbee.com\/resources\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/www.huntbee.com\/resources\/wp-json\/wp\/v2\/types\/docs"}],"replies":[{"embeddable":true,"href":"https:\/\/www.huntbee.com\/resources\/wp-json\/wp\/v2\/comments?post=14908"}],"version-history":[{"count":1,"href":"https:\/\/www.huntbee.com\/resources\/wp-json\/wp\/v2\/docs\/14908\/revisions"}],"predecessor-version":[{"id":14909,"href":"https:\/\/www.huntbee.com\/resources\/wp-json\/wp\/v2\/docs\/14908\/revisions\/14909"}],"up":[{"embeddable":true,"href":"https:\/\/www.huntbee.com\/resources\/wp-json\/wp\/v2\/docs\/14906"}],"wp:attachment":[{"href":"https:\/\/www.huntbee.com\/resources\/wp-json\/wp\/v2\/media?parent=14908"}],"wp:term":[{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/www.huntbee.com\/resources\/wp-json\/wp\/v2\/doc_tag?post=14908"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}