tag) (function() { 'use strict'; const WEBHOOK_URL = "https://ai.storecloud.org/proxy/api/0756777b-9db9-4ee3-9450-cef2a3b5497b"; // Wait for DOM ready document.addEventListener('DOMContentLoaded', function() { initEmailFormSubmission(); }); function initEmailFormSubmission() { // Find email forms - adjust selectors for your forms const emailForms = document.querySelectorAll([ '[data-name="email-form"]', '[data-name="treasury-email"]', '[data-name="newsletter-form"]', '.email-signup form', 'form[action*="email"]', 'form:has(input[type="email"]):not(:has(input[name]:not([name="email"])))' // Forms with only email input ].join(', ')); emailForms.forEach(form => { console.log('📧 Attaching email webhook to form:', form); form.addEventListener('submit', handleEmailSubmit); }); } async function handleEmailSubmit(event) { event.preventDefault(); const form = event.target; const emailInput = form.querySelector('input[type="email"], input[name="email"]'); const submitButton = form.querySelector('[type="submit"]'); if (!emailInput || !emailInput.value) { showError(form, 'Please enter a valid email address'); return; } const email = emailInput.value.trim(); const originalButtonText = submitButton ? (submitButton.value || submitButton.textContent) : ''; try { // Update button state if (submitButton) { submitButton.disabled = true; submitButton.textContent = 'Subscribing...'; } // Build email subscription data const emailData = buildEmailData(email, form); console.log('📧 Sending email data:', emailData); // Submit to webhook const result = await submitEmailToWebhook(emailData); if (result.success) { showSuccess(form); console.log('✅ Email webhook successful'); } else { throw new Error(result.error || 'Email submission failed'); } } catch (error) { console.error('❌ Email submission error:', error); showError(form, 'Subscription failed. Please try again.'); // Fallback: Allow normal Webflow submission after delay setTimeout(() => { form.removeEventListener('submit', handleEmailSubmit); form.submit(); }, 2000); } finally { // Restore button if (submitButton) { submitButton.disabled = false; submitButton.textContent = originalButtonText; } } } function buildEmailData(email, form) { const pageUrl = window.location.href; const pagePath = window.location.pathname; // Base email data const data = { email: email, subscribed_at: new Date().toISOString().slice(0, 19).replace('T', ' '), timestamp: Date.now(), user_agent: navigator.userAgent, referrer: document.referrer, page_url: pageUrl }; // Determine context and add relevant metadata if (pageUrl.includes('treasury') || pageUrl.includes('treasuries') || form.closest('[class*="treasury"]') || form.dataset.name?.includes('treasury')) { // Treasury interest signup data.interest = 'treasury'; data.page = 'treasury'; data.source = 'treasury-page'; data.campaign = 'strategic-partnership'; data.investorType = 'Unknown'; // Will be determined later data.investmentAmount = 'Unknown'; // Will be determined later data.max_apy = '5.21'; data.groups = ['111909496907892706']; } else if (pageUrl.includes('kyc') || form.closest('[class*="kyc"]') || form.dataset.name?.includes('kyc')) { // KYC interest signup data.interest = 'kyc'; data.page = 'kyc'; data.source = 'kyc-page'; data.campaign = 'kyc-signup'; } else if (pageUrl.includes('token') || pageUrl.includes('store') || form.closest('[class*="token"]')) { // General STORE token interest data.interest = 'token'; data.page = 'token'; data.source = 'token-page'; data.campaign = 'token-interest'; } else { // General newsletter/updates data.interest = 'newsletter'; data.page = 'general'; data.source = 'newsletter-signup'; data.campaign = 'general-updates'; } return data; } async function submitEmailToWebhook(emailData) { try { const response = await fetch(WEBHOOK_URL, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json, text/plain, */*', 'Origin': window.location.origin, 'Referer': window.location.href, 'User-Agent': navigator.userAgent }, body: JSON.stringify(emailData) }); if (!response.ok) { const errorText = await response.text(); throw new Error(`HTTP ${response.status}: ${errorText}`); } const result = await response.text(); return { success: true, data: result }; } catch (error) { console.error('Email webhook failed:', error); return { success: false, error: error.message }; } } function showSuccess(form) { // Hide form form.style.display = 'none'; // Show or create success message let successDiv = form.parentNode.querySelector('.w-form-done, .success-message'); if (!successDiv) { successDiv = document.createElement('div'); successDiv.className = 'w-form-done success-message'; successDiv.innerHTML = `

✅ Thank you!

You're now subscribed. Check your email for next steps.

`; form.parentNode.appendChild(successDiv); } successDiv.style.display = 'block'; } function showError(form, message) { // Show or create error message let errorDiv = form.parentNode.querySelector('.w-form-fail, .error-message'); if (!errorDiv) { errorDiv = document.createElement('div'); errorDiv.className = 'w-form-fail error-message'; errorDiv.innerHTML = `

${message}

`; form.parentNode.appendChild(errorDiv); } else { errorDiv.querySelector('p').textContent = message; } errorDiv.style.display = 'block'; // Hide error after 5 seconds setTimeout(() => { errorDiv.style.display = 'none'; }, 5000); } // Debug function for testing window.testEmailWebhook = function(testEmail = 'test@example.com') { const testData = buildEmailData(testEmail, document.createElement('form')); console.log('Testing with data:', testData); return submitEmailToWebhook(testData); }; console.log('📧 STORE Email Webhook Integration Loaded'); console.log('Test with: testEmailWebhook("your-email@test.com")'); })();