{"id":8,"date":"2023-08-25T20:05:50","date_gmt":"2023-08-25T20:05:50","guid":{"rendered":"https:\/\/test.exactdata.com\/info\/?page_id=8"},"modified":"2024-05-09T20:43:16","modified_gmt":"2024-05-10T01:43:16","slug":"home","status":"publish","type":"page","link":"https:\/\/www.exactdata.com\/info\/","title":{"rendered":"Home"},"content":{"rendered":"[vc_section css=&#8221;.vc_custom_1708642262759{padding-top: 50px !important;padding-bottom: 50px !important;background: #f9f9f9 url(https:\/\/www.exactdata.com\/info\/wp-content\/uploads\/2024\/02\/data-background-3.png?id=212) !important;background-position: center !important;background-repeat: no-repeat !important;background-size: cover !important;}&#8221;][vc_row][vc_column width=&#8221;1\/2&#8243;][vc_column_text]\r\n<h1>Enrich Your Campaigns With <span style=\"color: #00a0dc;\">Data and Marketing Solutions<\/span><\/h1>\r\n[\/vc_column_text][vc_column_text]Exact Data is your source for both online and offline business and consumer behavioral data, specializing in postal, email, and telephone list solutions. Backed by fifty years of history, we also offer businesses a variety of marketing solutions to help them stay in touch with potential prospects, and personalize their contact efforts.\r\n\r\nProviding quick turnaround solutions that enable you to achieve your marketing goals, we&#8217;ll help you gain a deeper understanding of your target audience. Form new connections with email marketing or use our appending services to ensure you have accurate, up-to-date information on your prospects. Maximize your ROI today with help from Exact Data.[\/vc_column_text][vc_row_inner][vc_column_inner width=&#8221;1\/2&#8243;]<a style=\"width:275;text-align:center;\" href=\"https:\/\/www.exactdata.com\/\" target=\"_self\" class=\"da-button da-primary-button float-center  \">Build a List<\/a>[vc_empty_space height=&#8221;30px&#8221;][\/vc_column_inner][vc_column_inner width=&#8221;1\/2&#8243;]<a style=\"width:275;text-align:center;\" href=\"#form\" target=\"_self\" class=\"da-button da-tertiary-button float-center scrollToElement \">Contact Us<\/a>[vc_empty_space height=&#8221;30px&#8221;][\/vc_column_inner][\/vc_row_inner][\/vc_column][vc_column width=&#8221;1\/2&#8243; css=&#8221;.vc_custom_1708642554087{padding-top: 50px !important;}&#8221;][vc_single_image image=&#8221;216&#8243; img_size=&#8221;full&#8221;][\/vc_column][\/vc_row][\/vc_section][vc_section css=&#8221;.vc_custom_1708642253401{padding-top: 50px !important;padding-bottom: 100px !important;background-image: url(https:\/\/www.exactdata.com\/info\/wp-content\/uploads\/2024\/02\/grad-back-2.png?id=218) !important;background-position: center !important;background-repeat: no-repeat !important;background-size: cover !important;}&#8221;][vc_row][vc_column width=&#8221;1\/2&#8243;]<!-- Infogroup Video --><video autoplay muted loop data-title=\"Infogroup Video\" onplay=\"sendVideoEvent('Play', this)\" onended=\"sendVideoEvent('Ended', this)\" class=\"infogroupVideo\" src=\"https:\/\/www.exactdata.com\/info\/wp-content\/uploads\/2024\/02\/Comp-1.mp4\"  poster=\"\" preload=\"none\">Sorry, your browser doesn't support embedded videos, but don't worry, you can <a href=\"https:\/\/www.exactdata.com\/info\/wp-content\/uploads\/2024\/02\/Comp-1.mp4\">download it<\/a> and watch it with your favorite video player!<\/video>[\/vc_column][vc_column width=&#8221;1\/2&#8243;][vc_column_text]\r\n<h2>Discover Our Range of Data Solutions<\/h2>\r\nExact Data is committed to helping businesses like yours acquire more clients. Our comprehensive data lists are designed to help businesses of all sizes find new customers and make fast, meaningful connections with them.\r\n\r\nCompiled from thousands of sources, Exact Data\u2019s business and consumer database sources include government records, licensing boards, municipal directions, surveys, magazine subscriptions, purchase histories, memberships, attendee registries, website registrations, DBAs, incorporations, secretary of state data, and annual reports. Containing 15M business contacts and 315M consumer contacts, all postal records are CASS and NCOA certified. Exact Data\u2019s telephone records are also regularly called for connectivity and contact accuracy.\r\n\r\nExact Data provides only the highest quality data. As a result, we\u2019re trusted by businesses across a wide range of industries. Our team of data experts work closely with clients to understand their unique business needs and develop customized solutions to deliver results. Whether a business is looking to acquire new customers, increase brand awareness, or boost their sales, Exact Data has the expertise and resources that can help.[\/vc_column_text]<a  href=\"#data-solutions\" target=\"_self\" class=\"da-button da-tertiary-button  scrollToElement \">Learn More<\/a>[\/vc_column][\/vc_row][\/vc_section][vc_section css=&#8221;.vc_custom_1708639350686{padding-top: 50px !important;padding-bottom: 30px !important;}&#8221;][vc_row][vc_column width=&#8221;1\/2&#8243; css=&#8221;.vc_custom_1708639774470{padding-top: 30px !important;}&#8221;][vc_column_text]\r\n<h2>Streamline Your Data Search<\/h2>\r\n<h6>Get Instant Access to Millions of High-Quality Business and Consumer Contacts<\/h6>\r\nIt&#8217;s fast and easy to access Exact Data&#8217;s millions of Business and Consumer contacts. Customize your list of potential customers using thousands of different search select combinations. Consumer selects include age, head of household, and interests\/hobbies while business selects include job title, sales, industry and number of employees.\r\n\r\nNow, as a subsidiary of Data Axle<sup>\u00ae<\/sup>, Exact Data gives its customers access to an even wider range of data sources and advanced data analytics tools, offering more comprehensive data solutions to our clients.[\/vc_column_text][vc_row_inner][vc_column_inner width=&#8221;1\/2&#8243;]<a style=\"width:275;text-align:center;\" href=\"https:\/\/www.exactdata.com\/business-mailing-lists.html\" target=\"_self\" class=\"da-button da-tertiary-button float-center  \">Business Lists<\/a>[vc_empty_space height=&#8221;30px&#8221;][\/vc_column_inner][vc_column_inner width=&#8221;1\/2&#8243;]<a style=\"width:275;text-align:center;\" href=\"https:\/\/www.exactdata.com\/consumer-mailing-lists.html\" target=\"_self\" class=\"da-button da-tertiary-button float-center  \">Consumer Lists<\/a>[vc_empty_space height=&#8221;30px&#8221;][\/vc_column_inner][\/vc_row_inner][\/vc_column][vc_column width=&#8221;1\/2&#8243;][vc_single_image image=&#8221;204&#8243; img_size=&#8221;full&#8221;][\/vc_column][\/vc_row][\/vc_section][vc_section css=&#8221;.vc_custom_1709936125373{padding-top: 50px !important;padding-bottom: 50px !important;background-image: url(https:\/\/www.exactdata.com\/info\/wp-content\/uploads\/2024\/03\/circle-back-5.png?id=255) !important;background-position: center !important;background-repeat: no-repeat !important;background-size: cover !important;}&#8221;][vc_row][vc_column width=&#8221;1\/2&#8243;][vc_single_image image=&#8221;206&#8243; img_size=&#8221;full&#8221;][\/vc_column][vc_column width=&#8221;1\/2&#8243; css=&#8221;.vc_custom_1708639382241{padding-top: 50px !important;}&#8221;][vc_column_text]\r\n<h2>Maximize Your Marketing Impact<\/h2>\r\n<h6>Unlock the Power of Precision Marketing<\/h6>\r\nExact Data is a premier provider of multi-channel direct marketing services, specializing in postal, email, and telephone list solutions. With our cutting-edge technology and rigorous data hygiene and scoring process, we confidently deliver the most precise and up-to-date data available in today\u2019s competitive market.[\/vc_column_text]<a  href=\"https:\/\/www.exactdata.com\/email-marketing.html\" target=\"_self\" class=\"da-button da-tertiary-button float-left  \">Email Marketing<\/a>[\/vc_column][\/vc_row][\/vc_section][vc_section css=&#8221;.vc_custom_1708639391035{padding-top: 50px !important;padding-bottom: 30px !important;}&#8221;][vc_row][vc_column width=&#8221;1\/2&#8243; css=&#8221;.vc_custom_1708639398106{padding-top: 50px !important;}&#8221;][vc_column_text]\r\n<h2>Easily Find Your Target Audience<\/h2>\r\n<h6>Review Exact Data\u2019s Comprehensive Catalog of Contacts<\/h6>\r\nExplore our vast selection of data today! At Exact Data, we offer the most extensive catalog of postal, email, and telephone lists in the industry. Our real-time counts, competitive pricing, and flexible output options make it easy to find the perfect Business or Consumer list for your next marketing campaign. With our comprehensive search functionality, you can easily filter and select data based on specific criteria that match your target audience. Trust Exact Data to help you achieve your marketing goals with confidence and precision. Start searching now.[\/vc_column_text]<a  href=\"https:\/\/www.exactdata.com\/ready-made-lists.html\" target=\"_self\" class=\"da-button da-tertiary-button float-left  \">Start Your Search<\/a>[\/vc_column][vc_column width=&#8221;1\/2&#8243;][vc_single_image image=&#8221;257&#8243; img_size=&#8221;full&#8221;][\/vc_column][\/vc_row][\/vc_section][vc_section css=&#8221;.vc_custom_1706048207865{padding-top: 50px !important;padding-bottom: 50px !important;background-color: #f9f9f9 !important;}&#8221;][vc_row][vc_column][vc_column_text]\r\n<h2 style=\"text-align: center;\">About Our Lists<\/h2>\r\n<h6 style=\"text-align: center;\">Get Custom-Built Lists Tailored to Your Business Needs with Exact Data<\/h6>\r\n<p style=\"text-align: center;\">Exact Data offers a comprehensive range of lists to meet the unique needs and preferences of businesses across various industries. Containing 15M business contacts and 315M consumer contacts, our databases can help organizations compile various specialty lists such as healthcare, education, government, and geographic-specific lists for different regions, cities, and states. Exact Data also offers custom-built lists tailored to meet the specific requirements of a business. These lists can be further segmented by various demographic, psychographic, and firmographic variables, including age, gender, income, location, and interests.<\/p>\r\n[\/vc_column_text][\/vc_column][\/vc_row][vc_row][vc_column width=&#8221;1\/5&#8243;][vc_single_image image=&#8221;146&#8243; img_size=&#8221;full&#8221; alignment=&#8221;center&#8221;][vc_column_text css=&#8221;.vc_custom_1709926524804{margin-bottom: 15px !important;}&#8221;]\r\n<h3>Business Lists<\/h3>\r\nIdentify the right business leads in search of products and services that you offer. Customize the perfect business mailing, email, or postal list for your marketing, sales prospecting, or research needs.[\/vc_column_text]<a  href=\"https:\/\/www.exactdata.com\/business-mailing-lists.html\" target=\"_self\" class=\"da-button da-quinary-button   \">Learn More<\/a>[\/vc_column][vc_column width=&#8221;1\/5&#8243;][vc_single_image image=&#8221;149&#8243; img_size=&#8221;full&#8221; alignment=&#8221;center&#8221;][vc_column_text css=&#8221;.vc_custom_1709926535556{margin-bottom: 15px !important;}&#8221;]\r\n<h3>Consumer Lists<\/h3>\r\nDesign the perfect list of prospective customers for your marketing campaign, sales efforts, or research needs. Choose from thousands of combinations of search selects and discover your most valuable consumers.[\/vc_column_text]<a  href=\"https:\/\/www.exactdata.com\/consumer-mailing-lists.html\" target=\"_self\" class=\"da-button da-quinary-button   \">Learn More<\/a>[\/vc_column][vc_column width=&#8221;1\/5&#8243;][vc_single_image image=&#8221;147&#8243; img_size=&#8221;full&#8221; alignment=&#8221;center&#8221;][vc_column_text css=&#8221;.vc_custom_1709926548236{margin-bottom: 15px !important;}&#8221;]\r\n<h3>Ready Made Lists<\/h3>\r\nDesigned to suit the needs of businesses across various industries, these pre-built lists are based on criteria such as industry, location, and job title. Our lists allow your businesses to quickly access and target its audience.[\/vc_column_text]<a  href=\"https:\/\/www.exactdata.com\/ready-made-lists.html\" target=\"_self\" class=\"da-button da-quinary-button   \">Learn More<\/a>[\/vc_column][vc_column width=&#8221;1\/5&#8243;][vc_single_image image=&#8221;157&#8243; img_size=&#8221;full&#8221; alignment=&#8221;center&#8221;][vc_column_text css=&#8221;.vc_custom_1709926560577{margin-bottom: 15px !important;}&#8221;]\r\n<h3>SIC Code Lookup<\/h3>\r\nQuickly identify the SIC codes relevant to your products or services and use them to build targeted mailing lists or sales leads. This feature will save your business time and effort in searching for your ideal audience.[\/vc_column_text]<a  href=\"https:\/\/www.exactdata.com\/sic-code-lookup.html\" target=\"_self\" class=\"da-button da-quinary-button   \">Learn More<\/a>[\/vc_column][vc_column width=&#8221;1\/5&#8243;][vc_single_image image=&#8221;155&#8243; img_size=&#8221;full&#8221; alignment=&#8221;center&#8221;][vc_column_text css=&#8221;.vc_custom_1709926572338{margin-bottom: 15px !important;}&#8221;]\r\n<h3>NAICS Code Lookup<\/h3>\r\nExact Data\u2019s NAICS Code Lookup is a powerful tool that allows businesses to search and target specific industries using the North American Industry Classification System (NAICS) codes.[\/vc_column_text]<a  href=\"https:\/\/www.exactdata.com\/naics-code-lookup.html\" target=\"_self\" class=\"da-button da-quinary-button   \">Learn More<\/a>[\/vc_column][\/vc_row][\/vc_section][vc_section css=&#8221;.vc_custom_1708640844711{padding-top: 50px !important;padding-bottom: 50px !important;background-image: url(https:\/\/www.exactdata.com\/info\/wp-content\/uploads\/2024\/02\/data-background-3.png?id=212) !important;}&#8221; el_id=&#8221;data-solutions&#8221;][vc_row][vc_column][vc_column_text]\r\n<h2 style=\"text-align: center;\">About Our Data Solutions<\/h2>\r\n<p style=\"text-align: center;\">At Exact Data we\u2019re ready to assist your business with all of its data and marketing needs. As a leading data provider now backed by Data Axle, our team of professionals work closely with our clients to better understand their unique needs and goals. With our industry expertise and cutting-edge technology, businesses can trust Exact Data to be their partner for a variety of data-related needs.<\/p>\r\n[\/vc_column_text][\/vc_column][\/vc_row][vc_row el_class=&#8221;equalHeights&#8221;][vc_column width=&#8221;1\/3&#8243;][vc_single_image image=&#8221;214&#8243; img_size=&#8221;full&#8221;][vc_empty_space height=&#8221;20px&#8221;][\/vc_column][vc_column width=&#8221;1\/3&#8243;]<div class=\"data-axle-card \" data-equalizer-watch><div class=\"da-card-bottom-container\"><h3>Data Enhancement<\/h3><p>Match your existing customer records with demographic and psychographic information about them to create up-to-date customer profiles, identify new audience segments, and build up your cross and upsell efforts.<\/p><a href=\"https:\/\/www.exactdata.com\/marketing-services\/data-enrichment-services.html\" target=\"_self\" class=\"da-button da-quinary-button\">Learn More<\/a><\/div><\/div>[vc_empty_space height=&#8221;20px&#8221;][\/vc_column][vc_column width=&#8221;1\/3&#8243;]<div class=\"data-axle-card \" data-equalizer-watch><div class=\"da-card-bottom-container\"><h3>Data Licensing<\/h3><p>Gain access to our extensive database of consumer and business contacts. Our data licensing solutions are designed to meet the specific needs of each client, offering a range of licensing options, including one-time use, multi-use, and unlimited use.<\/p><a href=\"https:\/\/www.exactdata.com\/marketing-services\/data-licensing.html\" target=\"_self\" class=\"da-button da-quinary-button\">Learn More<\/a><\/div><\/div>[vc_empty_space height=&#8221;20px&#8221;][\/vc_column][\/vc_row][vc_row el_class=&#8221;equalHeights&#8221;][vc_column width=&#8221;1\/3&#8243;]<div class=\"data-axle-card \" data-equalizer-watch><div class=\"da-card-bottom-container\"><h3>Customer Analysis<\/h3><p>Identify the ideal customer for your business products or services. Explore commonalities in your customer demographic or firmographic data so you can successfully target prospects with future campaigns.<\/p><\/div><\/div>[vc_empty_space height=&#8221;20px&#8221;][\/vc_column][vc_column width=&#8221;1\/3&#8243;]<div class=\"data-axle-card \" data-equalizer-watch><div class=\"da-card-bottom-container\"><h3>Data Appends<\/h3><p>Submit your current data to one of our highly trained data specialists so we can add critical demographic or firmographic information, including U.S. Business and Consumer email addresses.<\/p><a href=\"https:\/\/www.exactdata.com\/business-email-append.html\" target=\"_self\" class=\"da-button da-quinary-button\">Learn More<\/a><\/div><\/div>[vc_empty_space height=&#8221;20px&#8221;][\/vc_column][vc_column width=&#8221;1\/3&#8243;]<div class=\"data-axle-card \" data-equalizer-watch><div class=\"da-card-bottom-container\"><h3>Data Hygiene<\/h3><p>Take a proactive approach to data hygiene and transform pieces of information (like an email or phone number) into a complete customer profile. Use data enrichment to optimize your sales data and reach new customers.<\/p><a href=\"https:\/\/www.exactdata.com\/marketing-services\/enhance-your-data.html\" target=\"_self\" class=\"da-button da-quinary-button\">Learn More<\/a><\/div><\/div>[vc_empty_space height=&#8221;20px&#8221;][\/vc_column][\/vc_row][\/vc_section][vc_section css=&#8221;.vc_custom_1706048207865{padding-top: 50px !important;padding-bottom: 50px !important;background-color: #f9f9f9 !important;}&#8221;][vc_row][vc_column][vc_column_text]\r\n<h2 style=\"text-align: center;\">What Sets Exact Data Apart from the Rest?<\/h2>\r\n<p style=\"text-align: center;\">At Exact Data we offer an unwavering commitment to delivering the highest quality data and marketing services to our clients. We also offer a wide range of data services including data enhancement, data profiling, data licensing, and more, to help businesses achieve their goals. Additionally, our team of experienced professionals has a deep understanding of the various marketing needs of businesses in today\u2019s competitive landscape and work tirelessly to provide personalized solutions that meet the unique needs of each client. At Exact Data, we are passionate about helping businesses succeed and are dedicated to providing the best possible service and support.<\/p>\r\n[\/vc_column_text][\/vc_column][\/vc_row][vc_row][vc_column width=&#8221;1\/3&#8243;]<i style=\"color:#0382d2;font-size:32px;display:block;float:left;\" class=\"igIcon fas fa-bullseye\"><\/i>[vc_empty_space height=&#8221;50&#8243;][vc_column_text]\r\n<h6>HIGHLY TARGETED AUDIENCES<\/h6>\r\nGet your message in front of the right people the first time.[\/vc_column_text][\/vc_column][vc_column width=&#8221;1\/3&#8243;]<i style=\"color:#0382d2;font-size:32px;display:block;float:left;\" class=\"igIcon fas fa-hand-holding-usd\"><\/i>[vc_empty_space height=&#8221;50&#8243;][vc_column_text]\r\n<h6>COMPETITIVE PRICING<\/h6>\r\nWe\u2019re dedicated to providing you with the best data at the best price.[\/vc_column_text][\/vc_column][vc_column width=&#8221;1\/3&#8243;]<i style=\"color:#0382d2;font-size:32px;display:block;float:left;\" class=\"igIcon fas fa-shower\"><\/i>[vc_empty_space height=&#8221;50&#8243;][vc_column_text]\r\n<h6>SUPERIOR DATA HYGIENE<\/h6>\r\nOur postal, phone, and email contacts routinely go through a detailed data hygiene process to ensure our data is accurate and up-to-date.[\/vc_column_text][\/vc_column][\/vc_row][vc_row][vc_column width=&#8221;1\/3&#8243;]<i style=\"color:#0382d2;font-size:32px;display:block;float:left;\" class=\"igIcon fas fa-truck-loading\"><\/i>[vc_empty_space height=&#8221;50&#8243;][vc_column_text]\r\n<h6>QUICK AND EASY FILE DELIVERY<\/h6>\r\nQuickly get access to and download your Business and Consumer files.[\/vc_column_text][\/vc_column][vc_column width=&#8221;1\/3&#8243;]<i style=\"color:#0382d2;font-size:32px;display:block;float:left;\" class=\"igIcon fas fa-history\"><\/i>[vc_empty_space height=&#8221;50&#8243;][vc_column_text]\r\n<h6>REAL-TIME ANALYTICS AND REPORTING<\/h6>\r\nOur comprehensive reporting helps you optimize and improve your campaign performance &amp; ROI.[\/vc_column_text][\/vc_column][vc_column width=&#8221;1\/3&#8243;]<i style=\"color:#0382d2;font-size:32px;display:block;float:left;\" class=\"igIcon fas fa-headset\"><\/i>[vc_empty_space height=&#8221;50&#8243;][vc_column_text]\r\n<h6>EXCEPTIONAL CUSTOMER SERVICE<\/h6>\r\nWe\u2019re always available to help you with your data via phone, email, or live chat.[\/vc_column_text][\/vc_column][\/vc_row][\/vc_section][vc_section css=&#8221;.vc_custom_1709763257061{padding-top: 50px !important;padding-bottom: 50px !important;background-color: #1d4972 !important;}&#8221;][vc_row][vc_column][vc_column_text css=&#8221;.vc_custom_1709762806019{padding-bottom: 30px !important;}&#8221; el_class=&#8221;whitetext&#8221;]\r\n<h2 style=\"text-align: center;\">We Don&#8217;t Like to Brag&#8230; But Our Customers Will!<\/h2>\r\n[\/vc_column_text][vc_row_inner][vc_column_inner]<div class=\"trustpilot-widget\" data-locale=\"en-US\" data-template-id=\"53aa8912dec7e10d38f59f36\" data-businessunit-id=\"5cd550d3478699000150e05b\" data-style-height=\"140px\" data-style-width=\"100%\" data-theme=\"dark\" data-stars=\"4,5\" data-review-languages=\"en\" data-font-family=\"Open Sans\" data-text-color=\"\"><a href=\"https:\/\/www.trustpilot.com\/review\/exactdata.com\" target=\"_blank\" rel=\"noopener\">Trustpilot<\/a><\/div>[\/vc_column_inner][\/vc_row_inner][\/vc_column][\/vc_row][\/vc_section][vc_section css=&#8221;.vc_custom_1708975116422{padding-top: 50px !important;padding-bottom: 50px !important;background-color: #000000 !important;}&#8221;][vc_row][vc_column el_id=&#8221;form&#8221;][vc_column_text el_class=&#8221;whitetext&#8221;]\r\n<h2 style=\"text-align: center;\">Sign up today for access to our database and marketing tools<\/h2>\r\n[\/vc_column_text][\/vc_column][\/vc_row][vc_row][vc_column width=&#8221;5\/12&#8243; css=&#8221;.vc_custom_1709677648779{padding-top: 30px !important;padding-right: 30px !important;padding-bottom: 30px !important;padding-left: 30px !important;background-color: #ffffff !important;border-radius: 10px !important;}&#8221;][vc_column_text]\r\n<h3>Connect with Us<\/h3>\r\n[\/vc_column_text]    <div class=\"hs_inline_form\">\r\n        <script>\r\n            var device = \"\";\r\n            device += detectMob() ? \"Mobile\" : \"Desktop\"; device += \", \" + getBrowserName();\r\n            if (detectMob()) {\r\n                device += \", \" + getMobileOperatingSystem();\r\n            } else {\r\n                device += \", \" + getOperatingSystem();\r\n            }\r\n            var browserName = navigator.userAgent;\r\n\r\n            var randomStringId = Math.random().toString(36).substr(2, 9);\r\n\r\n            window.phone_status = \"Unknown\";\r\n            window.line_type = \"Unknown\";\r\n\r\n            var badWords = [\r\n                \"arse\",\"ass\",\"asshole\",\"bastard\",\"bitch\",\"bollocks\",\"brotherfucker\",\"bugger\",\r\n                \"bullshit\",\"child-fucker\",\"Christ on a bike\",\"Christ on a cracker\",\"crap\",\r\n                \"cunt\",\"damn\",\"effing\",\"fatherfucker\",\"frigger\",\"fuck\",\"goddamn\",\"godsdamn\",\r\n                \"hell\",\"holy shit\",\"horseshit\",\"Jesus Christ\",\"Jesus fuck\",\"Jesus H. Christ\",\r\n                \"Jesus Harold Christ\",\"Jesus wept\",\"Jesus, Mary and Joseph\",\"Judas Priest\",\r\n                \"motherfucker\",\"nigga\",\"prick\",\"shit\",\"shit ass\",\"shitass\",\"sisterfucker\",\r\n                \"slut\",\"son of a bitch\",\"son of a whore\",\"sweet Jesus\",\"twat\",\"suck\",\"sucker\",\r\n                \"fucker\"\r\n            ];\r\n\r\n            hbspt.forms.create({\r\n                region: \"na1\",\r\n                portalId: \"5267700\",\r\n                formId: \"2bf3c23d-0ffd-40c2-a822-97307ce32a31\",\r\n                cssClass: \"ds_on_page_custom_class\",\r\n                formInstanceId: `ds_on_page_${randomStringId}`,\r\n                css:'',\r\n                onFormReady: function($form) {\r\n                    $form.find(\"input[type=submit]\").css(\"width\", \"100%\");\r\n                    $form.find(\"input[name=device]\").val();\r\n                    $form.find(\"input[name=bas_phone]\").val();\r\n                    $form.find(\"input[name=google_analytics_campaign]\").val(Cookies.get(\"campaignid\") || \"Not Present\");\r\n                    $form.find(\"input[name=sfcid]\").val(Cookies.get(\"sfcid\") || \"701Pa000007r0KSIAY\");\r\n                    $form.find(\"input[name=media_code]\").val(Cookies.get(\"media_code\") || \"EXDCMSW00100\");\r\n                    $form.find(\"input[name=gclid]\").val(Cookies.get(\"gclid\") || \"Not Present\");\r\n                    $form.find(\"input[name=ms_click_id]\").val(Cookies.get(\"msclkid\") || \"Not Present\");\r\n                    $form.find(\"input[name=facebook_cookie_fbc]\").val(Cookies.get(\"_fbc\") || \"Not Present\");\r\n                    $form.find(\"input[name=facebook_cookie_fbp]\").val(Cookies.get(\"_fbp\") || \"Not Present\");\r\n                    $form.find(\"input[name=utm_campaign]\").val(Cookies.get(\"utm_campaign\") || \"Not Present\");\r\n                    $form.find(\"input[name=utm_content]\").val(Cookies.get(\"utm_content\") || \"Not Present\");\r\n                    $form.find(\"input[name=utm_medium]\").val(Cookies.get(\"utm_medium\") || \"Not Present\");\r\n                    $form.find(\"input[name=utm_source]\").val(Cookies.get(\"utm_source\") || \"Not Present\");\r\n                    $form.find(\"input[name=utm_term]\").val(Cookies.get(\"utm_term\") || \"Not Present\");\r\n                    $form.find(\"input[name=adgroup_id]\").val(Cookies.get(\"adgroupid\") || \"Not Present\");\r\n                    $form.find(\"input[name=extension_id]\").val(Cookies.get(\"extensionid\") || \"Not Present\");\r\n                    $form.find(\"input[name=matchtype]\").val(Cookies.get(\"matchtype\") || \"Not Present\");\r\n                    $form.find(\"input[name=network]\").val(Cookies.get(\"network\") || \"Not Present\");\r\n                    $form.find(\"input[name=bp_line_type]\").val(Cookies.get(\"bp_line_type\") || \"Unknown\");\r\n                    $form.find(\"input[name=bp_phone_status]\").val(Cookies.get(\"bp_phone_status\") || \"Unknown\");\r\n                    $form.find(\"input[name=fbclid]\").val(Cookies.get(\"fbclid\") || \"Not Present\");\r\n                    $form.find(\"input[name=leadsource]\").val(Cookies.get(\"leadsource\") || \"Not Present\");\r\n                    $form.find(\"input[name=ip]\").val(connectingIP);\r\n                    $form.find(\"input[name=browser_user_agent]\").val(browserName);\r\n                    $form.find(\"input[name=page_url__long_text_]\").val(currentPageURL);\r\n                    var phoneField = $form.find(\"input[name=phone]\");\r\n                    const phoneMasker = IMask(phoneField.get(0), {\r\n                        mask: \"+1 (000) 000-0000\",\r\n                        lazy: false,\r\n                        placeholder: \"_\"\r\n                    });\r\n\r\n                    \/*Floating Labels*\/\r\n                    var $input = $(\".hs-input\");\r\n                    $input\r\n                        .on(\"focus\", function() {\r\n                            $(this)\r\n                                .parent()\r\n                                .parent()\r\n                                .addClass(\"active\");\r\n                        })\r\n                        .blur();\r\n\r\n                    \/\/ move label if input is empty or not\r\n                    $input.focusout(function() {\r\n                        if (!$(this).val()) {\r\n                            $(this)\r\n                                .parent()\r\n                                .parent()\r\n                                .removeClass(\"active\");\r\n                        } else {\r\n                            $(this)\r\n                                .parent()\r\n                                .parent()\r\n                                .addClass(\"active\");\r\n                        }\r\n                    }).focusout();\r\n\r\n                                            $form.find(\"input[name=keyword]\").val(Cookies.get(\"keyword\") || \"Not Present\");\r\n                    \r\n                    var domain = window.location.hostname;\r\n                    var baseUrls = {\r\n                        \"www.exactdata.com\": {\r\n                            terms: \"https:\/\/www.exactdata.com\/info\/terms-of-use\/\",\r\n                            privacy: \"https:\/\/www.exactdata.com\/info\/privacy-policy\/\"\r\n                        },\r\n                        \"qa.exactdata.com\": {\r\n                            terms: \"https:\/\/qa.exactdata.com\/info\/terms-of-use\/\",\r\n                            privacy: \"https:\/\/qa.exactdata.com\/info\/privacy-policy\/\"\r\n                        }\r\n                    };\r\n                    var urls = baseUrls[domain];\r\n                    var disclaimer = document.createElement(\"div\");\r\n                    disclaimer.innerHTML = `<p class=\"verbiage\">By submitting this form you are agreeing to Exact Data\\'s <a target=\"_blank\" href=\"${urls.terms}\">Terms & Conditions<\/a>, <a target=\"_blank\" href=\"${urls.privacy}\">Privacy Policy<\/a>, and consent to our <span class=\"contact-policy-hover\">Contact Policy<span class=\"contact-policy-tooltip\">I consent to Data Axle and its subsidiaries and affiliates using my email and phone number for marketing and analytical purposes, including to contact me regarding Data Axle products.<\/span><\/span>. No credit card required.<\/p>`;\r\n                    var style = document.createElement(\"style\");\r\n                    style.textContent = `\r\n                    .verbiage {\r\n                        font-size: 12px;\r\n                        margin: 0;\r\n                        padding: 0;\r\n                        line-height: 15px;\r\n                        text-shadow: none;\r\n                        color: rgba(59, 59, 59, 0.5);\r\n                        text-align: left;\r\n                        margin-top: 15px;\r\n                    }\r\n                    .verbiage a {\r\n                        text-decoration: underline;\r\n                        color: #039fff !important;\r\n                    }\r\n                    .contact-policy-hover {\r\n                        position: relative;\r\n                        cursor: pointer;\r\n                        text-decoration: underline;\r\n                        color: #039fff;\r\n                    }\r\n                    .contact-policy-tooltip {\r\n                        display: none; \/* Initially hidden *\/\r\n                        border-radius: 5px;\r\n                        background-color: #221f20;\r\n                        font-size: .6875rem;\r\n                        width: 200px; \/* Allow width to fit content *\/\r\n                        padding: 10px;\r\n                        position: absolute;\r\n                        color: #fff;\r\n                        z-index: 99999999999;\r\n                    }\r\n                    .contact-policy-tooltip.visible {\r\n                        display: block;\r\n                        inset: auto 0px 100% auto;\r\n                    }`;\r\n\r\n                    disclaimer.appendChild(style);\r\n                    document.body.appendChild(disclaimer);\r\n\r\n                    var $submitButton = $form.find(\"input[type=submit]\");\r\n                    var originalSubmitText = $submitButton.val();\r\n\r\n                    var emailField = $form[0].querySelector(\"input[name='email']\");\r\n                    var phoneField = $form[0].querySelector(\"input[name='phone']\");\r\n                    var firstnameField = $form[0].querySelector(\"input[name='firstname']\");\r\n                    var lastnameField = $form[0].querySelector(\"input[name='lastname']\");\r\n                    var companyField = $form[0].querySelector(\"input[name='company']\");\r\n\r\n                    var $emailError = $('<div class=\"mktoCustomError\">Must be a valid email.<\/div>').insertAfter(emailField);\r\n                    var $phoneError = $('<div class=\"mktoCustomError\">Must be a valid phone number.<\/div>').insertAfter(phoneField);\r\n                    var $fnameError = $('<div class=\"mktoCustomError\">This field is required.<\/div>').insertAfter(firstnameField);\r\n                    var $lnameError = $('<div class=\"mktoCustomError\">This field is required.<\/div>').insertAfter(lastnameField);\r\n\r\n                    $emailError.hide();\r\n                    $phoneError.hide();\r\n                    $fnameError.hide();\r\n                    $lnameError.hide();\r\n\r\n                    function showSpinner() {\r\n                        $submitButton.prop('disabled', true);\r\n                        $submitButton.val('PROCESSING...');\r\n                    }\r\n\r\n                    function hideSpinner() {\r\n                        $submitButton.prop('disabled', false);\r\n                        $submitButton.val(originalSubmitText);\r\n                    }\r\n\r\n                    $form.on(\"mouseenter\", \".contact-policy-hover\", function(event) {\r\n                        event.stopPropagation();\r\n                        event.preventDefault();\r\n                        var tooltip = $(this).find(\".contact-policy-tooltip\");\r\n                        tooltip.addClass(\"visible\");\r\n\r\n                        \/\/ Calculate the tooltip position\r\n                        var tooltipRect = tooltip[0].getBoundingClientRect();\r\n                        \/\/ var hoverRect = $(this)[0].getBoundingClientRect();\r\n                        var viewportWidth = window.innerWidth;\r\n                        var viewportHeight = window.innerHeight;\r\n\r\n                        \/\/ Reset any custom positioning\r\n                        tooltip.css({\r\n                            \"left\": \"\",\r\n                            \"right\": \"\",\r\n                            \"top\": \"\",\r\n                            \"bottom\": \"\",\r\n                            \"transform\": \"\",\r\n                            \"inset\": \"\"\r\n                        });\r\n\r\n                        \/\/ Adjust position based on available space\r\n                        if (tooltipRect.width > viewportWidth) {\r\n                            tooltip.css({\r\n                                \"width\": \"90vw\",\r\n                                \"left\": \"5vw\",\r\n                                \"right\": \"auto\",\r\n                                \"transform\": \"none\"\r\n                            });\r\n                        } else if (tooltipRect.right > viewportWidth) {\r\n                            tooltip.css({\r\n                                \"left\": \"auto\",\r\n                                \"right\": \"0\",\r\n                            });\r\n                        } else if (tooltipRect.right < viewportWidth) {\r\n                            tooltip.css({\r\n                                \"left\": \"auto\",\r\n                                \"right\": \"auto\",\r\n                            });\r\n                        } else if (tooltipRect.left < 0) {\r\n                            tooltip.css({\r\n                                \"left\": \"0\",\r\n                                \"right\": \"auto\"\r\n                            });\r\n                        } else if (tooltipRect.left > 0) {\r\n                            tooltip.css({\r\n                                \"left\": \"0\",\r\n                                \"right\": \"auto\"\r\n                            });\r\n                        } else {\r\n                            tooltip.css({\r\n                                \"left\": \"50%\",\r\n                                \"right\": \"auto\",\r\n                                \"transform\": \"translateX(-50%)\"\r\n                            });\r\n                        }\r\n\r\n                        if (tooltipRect.height > viewportHeight) {\r\n                            tooltip.css({\r\n                                \"height\": \"90vh\",\r\n                                \"top\": \"5vh\",\r\n                                \"bottom\": \"auto\"\r\n                            });\r\n                        } else if (tooltipRect.bottom > viewportHeight) {\r\n                            tooltip.css({\r\n                                \"top\": \"auto\",\r\n                                \"bottom\": \"100%\"\r\n                            });\r\n                        } else if (tooltipRect.top < 0) {\r\n                            tooltip.css({\r\n                                \"top\": \"100%\",\r\n                                \"bottom\": \"auto\"\r\n                            });\r\n                        } else {\r\n                            tooltip.css({\r\n                                \"top\": \"auto\",\r\n                                \"bottom\": \"100%\"\r\n                            });\r\n                        }\r\n                    });\r\n\r\n                    $form.on(\"mouseleave\", \".contact-policy-hover\", function(event) {\r\n                        event.stopPropagation();\r\n                        event.preventDefault();\r\n                        var tooltip = $(this).find(\".contact-policy-tooltip\");\r\n                        tooltip.removeClass(\"visible\");\r\n                    });\r\n\r\n                    var submitButton = $form[0].querySelector(\"input[type=submit]\");\r\n                    if (submitButton) {\r\n                        submitButton.parentNode.insertBefore(disclaimer, submitButton.nextSibling);\r\n                    } else {\r\n                        console.error(\"Submit button not found.\");\r\n                    }\r\n\r\n                    $(firstnameField).on('input', function() {\r\n                        $fnameError.hide();\r\n                        firstnameField.classList.remove('invalid', 'error');\r\n                    });\r\n\r\n                    $(lastnameField).on('input', function() {\r\n                        $lnameError.hide();\r\n                        lastnameField.classList.remove('invalid', 'error');\r\n                    });\r\n\r\n                    $(emailField).on('input', function() {\r\n                        $emailError.hide();\r\n                        emailField.classList.remove('invalid', 'error');\r\n                    });\r\n\r\n                    $(phoneField).on('input', function() {\r\n                        $phoneError.hide();\r\n                        phoneField.classList.remove('invalid', 'error');\r\n                    });\r\n\r\n                    $form.on('click', '.hs-button', async function (e) {\r\n                        e.preventDefault(); \/\/ Prevent form submission until validation is done\r\n\r\n                        showSpinner();\r\n\r\n                        var emailValue = emailField.value;\r\n                        var phoneValue = phoneField.value;\r\n                        var firstValue = firstnameField.value;\r\n                        var lnameValue = lastnameField.value;\r\n                        var companyValue = (companyField && companyField.value.trim() !== \"\")\r\n                            ? companyField.value.trim()\r\n                            : (firstValue + \" \" + lnameValue);\r\n\r\n                        \/\/ set hbEntry cookie using js-cookie (same library used elsewhere)\r\n                        var hbEntry = {\r\n                            email: emailValue,\r\n                            phone: (phoneMasker && phoneMasker.unmaskedValue) ? phoneMasker.unmaskedValue : phoneValue,\r\n                            firstname: firstValue,\r\n                            lastname: lnameValue,\r\n                            company: companyValue\r\n                        };\r\n\r\n                        \/\/ 30 days expiry, domain exactdata.com, secure only on https\r\n                        Cookies.set('hbEntry', JSON.stringify(hbEntry), {\r\n                            domain: \"exactdata.com\",\r\n                            path: \"\/\",\r\n                            secure: (window.location.protocol === 'https:')\r\n                        });\r\n\r\n\r\n                        \/\/ console.log(emailValue,phoneValue);\r\n                        \/\/ console.log(phone_status,line_type);\r\n                        \/\/ console.log(hbEntry);\r\n\r\n                        \/\/ $(emailField).on('blur',function (e){\r\n                        \/\/     $(emailField).find('.emailvalid-error').remove();\r\n                        \/\/ });\r\n\r\n                        \/\/ if(typeof phone_status == 'undefined' || phone_status === 'Unknown'){\r\n                        \/\/     $phoneError.show();\r\n                        \/\/ }\r\n\r\n\r\n                        try {\r\n                            \/\/ Validate email and phone asynchronously\r\n                            \/\/Assign Heap SID\r\n                            const hsidVal      = await processHeapData();\r\n                            const isEmailValid = (emailValue.length > 0) ? await validateEmail(emailValue,emailField,$emailError) : false;\r\n                            const isPhoneValid = (phoneMasker.unmaskedValue.length > 0) ? await validatePhone(phoneValue,phoneMasker.unmaskedValue,phoneField,$phoneError) : false;\r\n                            const getRegistrationFlow = (isEmailValid && isPhoneValid) ? await validateGetRegistrationFlow(emailValue, phoneMasker.unmaskedValue) : false;\r\n                            const isSalesGenieUser = (isEmailValid) ? await validateSalesGenieUser(emailValue) : false; \r\n                            \/\/ Set Registration Flow hidden field value\r\n                                if (getRegistrationFlow) {\r\n                                    $form.find(\"input[name=user_registration_flow]\").val(getRegistrationFlow);\r\n                                    \/\/ console.log('Set registration_flow field value to', getRegistrationFlow);\r\n                                } else {\r\n                                    $form.find(\"input[name=user_registration_flow]\").val('');\r\n                                    \/\/ console.log('Set registration_flow field value to \" \"');\r\n                                }\r\n\r\n                                if (getRegistrationFlow !== 'ED') {\r\n                                    \/\/ Set SalesGenie user status hidden field value\r\n                                    if (isSalesGenieUser) {\r\n                                        $form.find(\"input[name=existing_user_flag]\").val('true');\r\n                                        \/\/ console.log('Set existing_user field value to \"true\"');\r\n                                    } else {\r\n                                        $form.find(\"input[name=existing_user_flag]\").val('false');\r\n                                        \/\/ console.log('Set existing_user field value to \"false\"');\r\n                                    }\r\n                                }\r\n                            \/\/ const salesforceToken = (!isSalesGenieUser) ? await getSalesforceAccessToken() : null;\r\n                            const getSalesforceData = (!isSalesGenieUser && isEmailValid) ? await validateSalesforceData(emailValue) : false;\r\n                            const isSendToSF   = (isEmailValid && isPhoneValid) ? await sendHsDataToSf($form,hsidVal) : false;\r\n                            const isFnameValid = (firstValue.length > 0) ? await validateName(firstnameField,$fnameError) : false;\r\n                            const isLnameValid = (lnameValue.length > 0) ? await validateName(lastnameField,$lnameError) : false;\r\n                            \/\/ console.log(isEmailValid , isPhoneValid, isSendToSF );\r\n                            \/\/ console.log('isSalesGenieUser:', isSalesGenieUser);\r\n\r\n                            if (isFnameValid && isLnameValid && isEmailValid && isPhoneValid) {\r\n                                \/\/ Both validations passed, proceed to submit the form\r\n                                console.log('Both email and phone are valid. Submitting the form...');\r\n                                hideSpinner();\r\n\r\n                                $form.find(\"input[name=bp_phone_status]\").val(phone_status);\r\n                                $form.find(\"input[name=bp_line_type]\").val(line_type);\r\n                                \/\/Heap Value update\r\n                                $form.find(\"input[name=heap_session_id]\").val(hsidVal);\r\n\r\n                                $emailError.hide();\r\n                                emailField.classList.remove('invalid', 'error');\r\n\r\n                                $phoneError.hide();\r\n                                phoneField.classList.remove('invalid', 'error');\r\n\r\n                                \/\/Generate JWT\r\n                                \/\/FName,LName,Emailid,Phoneno\r\n                                await getJwtData(firstValue,lnameValue,emailValue,phoneValue);\r\n\r\n                                $form.submit();\r\n                            } else {\r\n                                \/\/ Handle validation failure\r\n                                if (!isEmailValid) {\r\n                                    emailField.classList.add('invalid', 'error');\r\n                                    $emailError.show();\r\n                                }\r\n\r\n                                if (!isPhoneValid) {\r\n                                    phoneField.classList.add('invalid', 'error');\r\n                                    $phoneError.show();\r\n                                }\r\n\r\n                                if (!isFnameValid) {\r\n                                    firstnameField.classList.add('invalid', 'error');\r\n                                    $fnameError.show();\r\n                                }\r\n\r\n                                if (!isLnameValid) {\r\n                                    lastnameField.classList.add('invalid', 'error');\r\n                                    $lnameError.show();\r\n                                }\r\n\r\n                                \/\/ Hide loader or re-enable the submit button\r\n                                \/\/$('.quoteloader').css('display', 'none');\r\n                                hideSpinner();\r\n                            }\r\n\r\n                        } catch (error) {\r\n                            console.error('Error during validation:', error);\r\n                            \/\/ Handle any unexpected errors during validation\r\n                            \/\/$('.quoteloader').css('display', 'none');\r\n                            hideSpinner();\r\n                        }\r\n\r\n                    });\r\n                },\r\n                \/\/ onFormSubmitted: async function ($form, data){\r\n                \/\/     let sfdub = await sendHsDataToSf($form);\r\n                \/\/     console.log(sfdub);\r\n                \/\/ },\r\n\r\n            });\r\n\r\n            async function validateGetRegistrationFlow(email, phone) {\r\n                try {\r\n                    const response = await fetch(edinfo.ajaxurl, {\r\n                    method: 'POST',\r\n                    headers: { 'Content-Type': 'application\/x-www-form-urlencoded' },\r\n                    body: new URLSearchParams({\r\n                        action: 'get_registration_flow',\r\n                        email: email,\r\n                        phone: phone\r\n                    }),\r\n                    });\r\n\r\n                    const result = await response.json();\r\n\r\n                    if (result.success) {\r\n                    \/\/ console.log('Registration Flow Data:', result.data);\r\n                    return result.data.UserFlowType || false;\r\n                    } else {\r\n                    console.error('Error:', result.data?.message || 'Unknown error');\r\n                    return false;\r\n                    }\r\n\r\n                } catch (error) {\r\n                    console.error('AJAX error:', error);\r\n                    return false;\r\n                }\r\n            }\r\n\r\n            async function validateSalesGenieUser(email) {\r\n                try {\r\n                    let apiUrl=\"\";\r\n                    if (iusaEnvironment == \"TEST\") {\r\n                        apiUrl = `https:\/\/test-auth.salesgenie.com\/api\/v1\/Source\/GetProductListOfUser?username=${encodeURIComponent(email)}`;\r\n                    } else if (iusaEnvironment == \"PROD\") {\r\n                        apiUrl = `https:\/\/auth.salesgenie.com\/api\/v1\/Source\/GetProductListOfUser?username=${encodeURIComponent(email)}`;\r\n                    }\r\n\r\n                    const response = await fetch(apiUrl, {\r\n                        method: 'GET',\r\n                        headers: {\r\n                            'Content-Type': 'application\/json'\r\n                        }\r\n                    });\r\n\r\n                    if (!response.ok) return false;\r\n\r\n                    const data = await response.json();\r\n\r\n                    \/\/ If API returns false directly\r\n                    if (data === false) return false;\r\n\r\n                    \/\/ Check if it contains \"Salesgenie\": \"Salesgenie\"\r\n                    \/\/ return data.Salesgenie === \"Salesgenie\" || data.ExactData === \"ExactData\";\r\n                    return data.Salesgenie === \"Salesgenie\";\r\n\r\n                } catch (error) {\r\n                    console.error('SalesGenie API error:', error);\r\n                    return false;\r\n                }\r\n            }\r\n\r\n            async function validateSalesforceData(email) {\r\n                try {\r\n                    const response = await fetch(edinfo.ajaxurl, {\r\n                    method: 'POST',\r\n                    headers: { 'Content-Type': 'application\/x-www-form-urlencoded' },\r\n                    body: new URLSearchParams({\r\n                        action: 'get_salesforce_data',\r\n                        email: email\r\n                    }),\r\n                    });\r\n\r\n                    const result = await response.json();\r\n\r\n                    if (result.success) {\r\n                    \/\/ console.log('Salesforce Data:', result.data);\r\n                    return result.data.success && result.data.isContactExist;\r\n\r\n                    \/\/ return result.data;\r\n                    } else {\r\n                    console.error('Error:', result.data?.message || 'Unknown error');\r\n                    return null;\r\n                    }\r\n                } catch (error) {\r\n                    console.error('AJAX error:', error);\r\n                    return null;\r\n                }\r\n            }\r\n\r\n\r\n            \/\/ Helper functions to make API requests\r\n            async function validateEmail(email,emailField,$emailError) {\r\n                \/\/Set user email cookie\r\n                Cookies.set(\"userEmailAddress\", email, { domain: \"exactdata.com\", expires: 30, path: \"\/\" });\r\n                emailField.dispatchEvent(new Event('input', { bubbles: true }));\r\n\r\n                const hasInvalidClass = emailField.classList.contains('invalid');\r\n                const hasErrorClass = emailField.classList.contains('error');\r\n                if(hasInvalidClass || hasErrorClass){\r\n                    return false;\r\n                }\r\n\r\n                \/\/ Check for badwords\r\n                if (containsBadWords(email)) {\r\n                    emailField.classList.add('invalid', 'error');\r\n                    $emailError.show();\r\n                    return false;\r\n                }\r\n\r\n                \/\/ No badwords \u2192 valid\r\n                        $emailError.hide();\r\n                        emailField.classList.remove('invalid', 'error');\r\n                        return true;\r\n            }\r\n\r\n            async function validatePhone(phone,unmaskedPhone,phoneField,$phoneError) {\r\n                \/\/ console.log(phone.length,'<---phone');\r\n                \/\/ console.log(unmaskedPhone.length,'<---unmaskedPhone');\r\n                \/\/ console.log(unmaskedPhone);\r\n                \/\/ console.log(`${phone}_phone_status`);\r\n                \/\/ console.log(`${phone}_line_type`);\r\n                \/\/(192)847-8090 Found\r\n                \/\/(192)847-4090 \"The phone number must be in the format (192)847-4090.\"\r\n                \/\/ First, check if the phone number is in the cookie\r\n                phone_status = Cookies.get(`${phone}_phone_status`);\r\n                line_type = Cookies.get(`${phone}_line_type`);\r\n\r\n                var trimmedPhone = phone.replace(\/^\\+[0-9]\/, '');\r\n\r\n                console.log(phone_status,line_type,'<----');\r\n\r\n                const hasInvalidClassPhone = phoneField.classList.contains('invalid');\r\n                const hasErrorClassPhone = phoneField.classList.contains('error');\r\n                if(hasInvalidClassPhone || hasErrorClassPhone){\r\n                    return false;\r\n                }\r\n\r\n                \/\/const phoneFromCookie = Cookies.get(`${phone}_phone_status`);\r\n                \/\/ if (phoneFromCookie) {\r\n                \/\/     return true; \/\/ Skip validation if phone exists in the cookie\r\n                \/\/ }\r\n\r\n                if(typeof phone_status == 'undefined' || phone_status === 'Unknown'){\r\n                    \/\/ If not in the cookie, hit another DB API (assuming we have a custom API for this)\r\n                    const dbPhoneValidationResult = await checkPhoneInDatabase(phone,unmaskedPhone,trimmedPhone,$phoneError);\r\n                    if (dbPhoneValidationResult) {\r\n                        $phoneError.hide();\r\n                        phoneField.classList.remove('invalid','error');\r\n                        return true; \/\/ DB said valid\r\n                    }\r\n                    else{\r\n                        \/\/ If not in DB, check using the phone-validator API\r\n                        const url = `https:\/\/api.phone-validator.net\/api\/v2\/verify?PhoneNumber=${encodeURIComponent(phone)}&CountryCode=us&APIKey=pv-432c2ebbc71ef1f6bf017eeff8818eda`;\r\n                        try {\r\n                            $phoneError.hide();\r\n\r\n                            const response = await fetch(url);\r\n                            const dataByte = await response.json();\r\n                            console.log(dataByte,'apiii');\r\n                            if(dataByte.status === \"VALID_CONFIRMED\" || dataByte.status === \"VALID_UNCONFIRMED\"){\r\n                                phone_status = \"Valid\";\r\n                            }\r\n                            else if(dataByte.status === \"INVALID\"){\r\n                                phone_status = \"Invalid\";\r\n                            }\r\n                            line_type = (dataByte.linetype) ? dataByte.linetype : \"Unknown\";\r\n                            Cookies.set(`${phone}_phone_status`, phone_status , { domain: \"exactdata.com\", expires: 30, path: \"\/\" });\r\n                            Cookies.set(`${phone}_line_type`, line_type, { domain: \"exactdata.com\", expires: 30, path: \"\/\" });\r\n\r\n                            let saveDbResponse = await saveBytePlantDataToDB(trimmedPhone,dataByte);\r\n                            console.log(saveDbResponse,'API data saved in DB');\r\n\r\n                            \/\/ if(phoneStatusResponse.status === 'VALID_CONFIRMED' || phoneStatusResponse.status === 'VALID_UNCONFIRMED'){\r\n                            \/\/     return true;\r\n                            \/\/ }\r\n                            \/\/ else{\r\n                            \/\/     return false;\r\n                            \/\/ }\r\n                            \/\/ return true;\r\n                            \/\/ return true only if API determined it as Valid\r\n                            if (phone_status === \"Valid\") {\r\n                                $phoneError.hide();\r\n                                phoneField.classList.remove('invalid','error');\r\n                            return true;\r\n                            } else {\r\n                                phoneField.classList.add('invalid', 'error');\r\n                                $phoneError.show();\r\n                                return false;\r\n                            }\r\n\r\n                        } catch (error) {\r\n                            phoneField.classList.add('invalid', 'error');\r\n                            $phoneError.show();\r\n                            console.error('Error validating phone:', error);\r\n                            return false;\r\n                        }\r\n                    }\r\n\r\n\r\n                }\r\n                else if(phone_status){\r\n                    \/\/HIT COUNT API HERE\r\n                    $.ajax({\r\n                        type: 'POST',\r\n                        data: {\r\n                            phone: trimmedPhone,\r\n                        },\r\n                        url: `${edinfo.ed_api}\/hubspot-form-byte_count`,\r\n                        success: function(res) {\r\n                            console.log(res,'Hit Count');\r\n                            return res;\r\n                        },\r\n                        error: function(xhr, status, error) {\r\n                            console.log(error);\r\n                            $phoneError.show();\r\n                            return error;\r\n                        }\r\n                    });\r\n                    \/\/ return true; \/\/ Skip validation if phone exists in the cookie\r\n                    \/\/ use cached cookie value to decide validity\r\n                    if (phone_status === \"Valid\") {\r\n                        $phoneError.hide();\r\n                        phoneField.classList.remove('invalid','error');\r\n                        return true;\r\n                    } else {\r\n                        phoneField.classList.add('invalid','error');\r\n                        $phoneError.show();\r\n                        return false;\r\n                    }\r\n                }\r\n\r\n            }\r\n\r\n            async function saveBytePlantDataToDB(phonenum,apidata){\r\n                const dbentyres = await $.ajax({\r\n                    type: 'POST',\r\n                    data: {\r\n                        phone: phonenum,\r\n                        response: JSON.stringify(apidata),\r\n                        count: 1\r\n                    },\r\n                    url: `${edinfo.ed_api}\/hubspot-form-byte`,\r\n                    success: function(res) {\r\n                        return res;\r\n                    },\r\n                    error: function(xhr, status, error) {\r\n                        console.log(error);\r\n                        return error;\r\n                    }\r\n                });\r\n\r\n                \/\/ console.log(dbentyres,'DB Entry');\r\n                if(dbentyres){\r\n                    return true;\r\n                }\r\n                else {\r\n                    return false;\r\n                }\r\n            }\r\n\r\n            \/\/ Example function to simulate checking the phone number in a DB\r\n            async function checkPhoneInDatabase(phone,unmaskedPhone,trimmedPhone,$phoneError) {\r\n                \/\/ console.log(trimmedPhone);\r\n                const res = await jQuery.ajax({\r\n                    url: `${edinfo.ed_api}\/hubspot-form-byte-1`,\r\n                    type: \"POST\",\r\n                    data: {\r\n                        phone:trimmedPhone\r\n                    },\r\n                    success: function(result) {\r\n                        $phoneError.hide();\r\n                        return result;\r\n                    },\r\n                    error: function(xhr, status, error) {\r\n                        console.error(\"AJAX Error:\" + error);\r\n                        $phoneError.show();\r\n                        return error;\r\n                    }\r\n                });\r\n\r\n                if (res.data) {\r\n                    \/\/ console.log(JSON.parse(res.data.response));\r\n                    var phoneStatusResponse = JSON.parse(res.data.response);\r\n                    \/\/ phone_status = phoneStatusResponse.status;\r\n                    \/\/ Normalize DB status into \"Valid\" \/ \"Invalid\"\r\n                    if (phoneStatusResponse.status === \"VALID_CONFIRMED\" || phoneStatusResponse.status === \"VALID_UNCONFIRMED\" || phoneStatusResponse.status === \"Valid\") {\r\n                        phone_status = \"Valid\";\r\n                    } else {\r\n                        phone_status = \"Invalid\";\r\n                    }\r\n\r\n                    line_type = (phoneStatusResponse.linetype) ? phoneStatusResponse.linetype : \"Unknown\";\r\n                    Cookies.set(`${phone}_phone_status`, phone_status , { domain: \"exactdata.com\", expires: 30, path: \"\/\" });\r\n                    Cookies.set(`${phone}_line_type`, line_type, { domain: \"exactdata.com\", expires: 30, path: \"\/\" });\r\n\r\n                    \/\/Enable if you want to block Invalid number form submission saved in DB\r\n                    \/\/ if(phoneStatusResponse.status === 'VALID_CONFIRMED' || phoneStatusResponse.status === 'VALID_UNCONFIRMED'){\r\n                    \/\/     return true;\r\n                    \/\/ }\r\n                    \/\/ else{\r\n                    \/\/     return false;\r\n                    \/\/ }\r\n\r\n                    \/\/ return true;\r\n                    \/\/ Return true only when DB says Valid\r\n                    return (phone_status === \"Valid\");\r\n\r\n                } else {\r\n                    return false;\r\n                }\r\n            }\r\n\r\n            \/\/Send HubSpot Data to SalesForce\r\n            async function sendHsDataToSf($form,hsidVal){\r\n                \/\/Send Data to SalesForce start\r\n                let qparams = window.location.search.replace(\"?\",\"\").split(\"&\").reduce(function(p,e){\r\n                    var a = e.split(\"=\");\r\n                    p[ decodeURIComponent(a[0])] = decodeURIComponent(a[1]);\r\n                    return p;\r\n                },{});\r\n\r\n                let flag = Object.keys(qparams);\r\n                if(flag[0] !== \"\") {\r\n                    Cookies.set(\"_tracking_params\", JSON.stringify(qparams), { domain: \"exactdata.com\", expires: 30, path: \"\/\" });\r\n                }\r\n\r\n                let formData = $form.serializeArray().reduce(function(obj, item) {\r\n                    obj[item.name] = item.value;\r\n                    return obj;\r\n                }, {});\r\n\r\n                console.log(hsidVal,'<----hsidVal');\r\n                formData['heapsessionid'] = hsidVal;\r\n                \/\/ formData['user_registration_flow'] = $form.find(\"input[name=user_registration_flow]\").val();\r\n                \/\/ formData['existing_user_flag'] = $form.find(\"input[name=existing_user_flag]\").val();\r\n\r\n                const response = jQuery.ajax({\r\n                    url: edinfo.ajaxurl,\r\n                    type: \"POST\",\r\n                    data: {\r\n                        action: \"w2c_to_middleware_hb\",\r\n                        data: formData\r\n                    },\r\n                    xhr: function () {\r\n                        let xhr = new window.XMLHttpRequest();\r\n\r\n                        \/\/ Track when request is successfully sent\r\n                        xhr.upload.onloadstart = function () {\r\n                            console.log(\"sent...\");\r\n                        };\r\n\r\n                        \/\/return true;\r\n                        return xhr;\r\n                    },\r\n                    success: function(result) {\r\n                        return result;\r\n                    },\r\n                    error: function(xhr, status, error) {\r\n                        console.error(\"AJAX Error:\" + error);\r\n                        return error;\r\n                    }\r\n                });\r\n\r\n                \/\/ console.log(response);\r\n\r\n                if (response.sf_success) {\r\n                    return true;\r\n                } else {\r\n                    return false;\r\n                }\r\n\r\n            }\r\n\r\n            \/\/Create Info\r\n            async function getJwtData(FName,LName,Emailid,Phoneno){\r\n                \/\/ console.log(edinfo.ed_api+'\/api\/pi');\r\n                jQuery.ajax({\r\n                    url: edinfo.ed_api+'\/api\/pi',\r\n                    data: {first_name: FName, last_name: LName, email:Emailid, phone: Phoneno},\r\n                    type: 'post',\r\n                    success: function (data) {\r\n                        jwt = data;\r\n                        \/\/ console.log(data);\r\n                        \/\/ console.log(\"JWT=\"+data);\r\n\r\n                        \/\/jQuery.cookie('form_jwt', JSON.stringify(data), { domain: \"exactdata.com\", expires: 30, path: \"\/\" });\r\n                        \/\/Cookies.set('form_jwt', JSON.stringify(data), { domain: \"exactdata.com\", expires: 30, path: \"\/\" });\r\n                        \/\/$(BtnName).trigger('click', ['run']);\r\n                    }\r\n                });\r\n            }\r\n\r\n            \/**\r\n             * Heap SID Processor\r\n             * @returns {Promise<*|string>}\r\n             *\/\r\n            async function processHeapData() {\r\n                if (typeof window !== 'undefined' && typeof window.heap === 'object') {\r\n                    if (window.heap.loaded && typeof window.heap.getSessionId === 'function') {\r\n                        return window.heap.getSessionId();\r\n                    } else {\r\n                        return 'not available';\r\n                    }\r\n                } else {\r\n                    return 'Heap Undefined';\r\n                }\r\n            }\r\n\r\n            function containsBadWords(text) {\r\n                if (!text) return false;\r\n                const lower = text.toLowerCase();\r\n\r\n                return badWords.some(word => lower.includes(word.toLowerCase()));\r\n            }\r\n\r\n            async function validateName(field, $errorBox) {\r\n                const name = field.value.trim();\r\n\r\n                \/\/ Bad word check\r\n                if (containsBadWords(name)) {\r\n                    field.classList.add('invalid', 'error');\r\n                    $errorBox.text(\"Must be a valid name.\");\r\n                    $errorBox.show();\r\n                    return false;\r\n                }\r\n\r\n                \/\/ Valid\r\n                field.classList.remove('invalid', 'error');\r\n                $errorBox.hide();\r\n                return true;\r\n            }\r\n\r\n\r\n\r\n        <\/script>\r\n    <\/div>\r\n    [\/vc_column][vc_column width=&#8221;1\/12&#8243;][\/vc_column][vc_column width=&#8221;1\/2&#8243;][vc_column_text el_class=&#8221;whitetext&#8221; css=&#8221;.vc_custom_1708975264140{margin-bottom: 15px !important;}&#8221;]\r\n<h3>Start your account now to:<\/h3>\r\n[\/vc_column_text][vc_column_text el_class=&#8221;whitetext&#8221;]\r\n<ul>\r\n \t<li>Run real-time searches on 315 million consumers and\r\n15 million businesses<\/li>\r\n \t<li>Save your searches and purchase lists<\/li>\r\n \t<li>Get help from our experts via live chat, phone, or email<\/li>\r\n<\/ul>\r\n[\/vc_column_text][\/vc_column][\/vc_row][\/vc_section]","protected":false},"excerpt":{"rendered":"[vc_section css=&#8221;.vc_custom_1708642262759{padding-top: 50px !important;padding-bottom: 50px !important;background: #f9f9f9 url(https:\/\/www.exactdata.com\/info\/wp-content\/uploads\/2024\/02\/data-background-3.png?id=212) !important;background-position: center !important;background-repeat: no-repeat !important;background-size: cover !important;}&#8221;][vc_row][vc_column width=&#8221;1\/2&#8243;][vc_column_text] Enrich Your Campaigns With Data and Marketing Solutions [\/vc_column_text][vc_column_text]Exact Data is your source for both online and offline business and consumer behavioral data, specializing in postal, email, and telephone list solutions. Backed by fifty years of history, we also<a class=\"moretag\" href=\"https:\/\/www.exactdata.com\/info\/\">&#8230;Read More<\/a>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.8 (Yoast SEO v21.8.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Home - Exact Data Info<\/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.exactdata.com\/info\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Home - Exact Data Info\" \/>\n<meta property=\"og:description\" content=\"[vc_section css=&#8221;.vc_custom_1708642262759{padding-top: 50px !important;padding-bottom: 50px !important;background: #f9f9f9 url(https:\/\/www.exactdata.com\/info\/wp-content\/uploads\/2024\/02\/data-background-3.png?id=212) !important;background-position: center !important;background-repeat: no-repeat !important;background-size: cover !important;}&#8221;][vc_row][vc_column width=&#8221;1\/2&#8243;][vc_column_text] Enrich Your Campaigns With Data and Marketing Solutions [\/vc_column_text][vc_column_text]Exact Data is your source for both online and offline business and consumer behavioral data, specializing in postal, email, and telephone list solutions. Backed by fifty years of history, we also...Read More\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.exactdata.com\/info\/\" \/>\n<meta property=\"og:site_name\" content=\"Exact Data Info\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-10T01:43:16+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=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.exactdata.com\/info\/\",\"url\":\"https:\/\/www.exactdata.com\/info\/\",\"name\":\"Home - Exact Data Info\",\"isPartOf\":{\"@id\":\"https:\/\/www.exactdata.com\/info\/#website\"},\"datePublished\":\"2023-08-25T20:05:50+00:00\",\"dateModified\":\"2024-05-10T01:43:16+00:00\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.exactdata.com\/info\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.exactdata.com\/info\/#website\",\"url\":\"https:\/\/www.exactdata.com\/info\/\",\"name\":\"Exact Data Info\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.exactdata.com\/info\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Home - Exact Data Info","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.exactdata.com\/info\/","og_locale":"en_US","og_type":"article","og_title":"Home - Exact Data Info","og_description":"[vc_section css=&#8221;.vc_custom_1708642262759{padding-top: 50px !important;padding-bottom: 50px !important;background: #f9f9f9 url(https:\/\/www.exactdata.com\/info\/wp-content\/uploads\/2024\/02\/data-background-3.png?id=212) !important;background-position: center !important;background-repeat: no-repeat !important;background-size: cover !important;}&#8221;][vc_row][vc_column width=&#8221;1\/2&#8243;][vc_column_text] Enrich Your Campaigns With Data and Marketing Solutions [\/vc_column_text][vc_column_text]Exact Data is your source for both online and offline business and consumer behavioral data, specializing in postal, email, and telephone list solutions. Backed by fifty years of history, we also...Read More","og_url":"https:\/\/www.exactdata.com\/info\/","og_site_name":"Exact Data Info","article_modified_time":"2024-05-10T01:43:16+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.exactdata.com\/info\/","url":"https:\/\/www.exactdata.com\/info\/","name":"Home - Exact Data Info","isPartOf":{"@id":"https:\/\/www.exactdata.com\/info\/#website"},"datePublished":"2023-08-25T20:05:50+00:00","dateModified":"2024-05-10T01:43:16+00:00","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.exactdata.com\/info\/"]}]},{"@type":"WebSite","@id":"https:\/\/www.exactdata.com\/info\/#website","url":"https:\/\/www.exactdata.com\/info\/","name":"Exact Data Info","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.exactdata.com\/info\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/www.exactdata.com\/info\/wp-json\/wp\/v2\/pages\/8"}],"collection":[{"href":"https:\/\/www.exactdata.com\/info\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.exactdata.com\/info\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.exactdata.com\/info\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.exactdata.com\/info\/wp-json\/wp\/v2\/comments?post=8"}],"version-history":[{"count":60,"href":"https:\/\/www.exactdata.com\/info\/wp-json\/wp\/v2\/pages\/8\/revisions"}],"predecessor-version":[{"id":386,"href":"https:\/\/www.exactdata.com\/info\/wp-json\/wp\/v2\/pages\/8\/revisions\/386"}],"wp:attachment":[{"href":"https:\/\/www.exactdata.com\/info\/wp-json\/wp\/v2\/media?parent=8"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}