[FEAT] Standardizzazione lead form — allineamento a TRPG Agile
MktgLeadController.php: - Endpoint POST /api/mktg-lead/submit (standard condiviso TRPG/NIS2) - Proxy a mktg.agile.software/api/webhook/leads con X-Webhook-Key server-side - Payload standard: name, email, phone, company, product_interest, source, notes - source: "nis2-landing" per tracciamento CRM - Fallback email a info@agile.software se webhook non raggiungibile - Rate limit 3/10min per IP, supporto campi IT e EN index.html — form allineato a TRPG: - Aggiunto: telefono (opzionale) - Aggiunto: tipo utilizzo (select 6 opzioni) - N° dipendenti: fasce standardizzate (<50/50-249/250-999/1000+) - Aggiunto: interesse (info/demo/accesso/integrazione B2B) - Endpoint aggiornato a /api/mktg-lead/submit - Payload mappato su campi standard EN + source: "nis2-landing" Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
c4c34aeed1
commit
b1dcd4cbd7
+39
-22
@@ -972,26 +972,40 @@
|
||||
<input type="text" name="azienda" placeholder="Nome azienda o studio" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Ruolo <span>*</span></label>
|
||||
<select name="ruolo" required>
|
||||
<option value="">Seleziona il tuo ruolo...</option>
|
||||
<option value="Responsabile Compliance / CISO">Responsabile Compliance / CISO</option>
|
||||
<option value="IT Manager / Responsabile Sicurezza">IT Manager / Responsabile Sicurezza</option>
|
||||
<option value="Consulente Cybersecurity / MSSP">Consulente Cybersecurity / MSSP</option>
|
||||
<label>Telefono</label>
|
||||
<input type="tel" name="telefono" placeholder="+39 02 123456">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Tipo di utilizzo <span>*</span></label>
|
||||
<select name="tipo" required>
|
||||
<option value="">Seleziona...</option>
|
||||
<option value="Azienda soggetta NIS2">Azienda soggetta NIS2</option>
|
||||
<option value="Consulente / CISO esterno">Consulente / CISO esterno</option>
|
||||
<option value="MSSP / Managed Security Provider">MSSP / Managed Security Provider</option>
|
||||
<option value="IT Manager / Responsabile sicurezza">IT Manager / Responsabile sicurezza</option>
|
||||
<option value="DPO / Legale / Compliance">DPO / Legale / Compliance</option>
|
||||
<option value="Direzione / CEO / CTO">Direzione / CEO / CTO</option>
|
||||
<option value="DPO / Legale">DPO / Legale</option>
|
||||
<option value="Altra figura">Altra figura</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>N° dipendenti</label>
|
||||
<select name="n_dipendenti">
|
||||
<option value="">Seleziona...</option>
|
||||
<option value="<50"><50</option>
|
||||
<option value="50-249">50–249</option>
|
||||
<option value="250-999">250–999</option>
|
||||
<option value="1000+">1000+</option>
|
||||
<option value="Studio multi-cliente">Studio multi-cliente</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group full">
|
||||
<label>Dimensioni azienda</label>
|
||||
<select name="dimensioni">
|
||||
<label>Cosa ti interessa? <span>*</span></label>
|
||||
<select name="interesse" required>
|
||||
<option value="">Seleziona...</option>
|
||||
<option value="Micro (<10 dipendenti)">Micro (<10 dipendenti)</option>
|
||||
<option value="Piccola (10-49 dipendenti)">Piccola (10–49 dipendenti)</option>
|
||||
<option value="Media (50-249 dipendenti)">Media (50–249 dipendenti)</option>
|
||||
<option value="Grande (250+ dipendenti)">Grande (250+ dipendenti)</option>
|
||||
<option value="Studio / Consulente multi-cliente">Studio / Consulente multi-cliente</option>
|
||||
<option value="Informazioni generali">Informazioni generali sul prodotto</option>
|
||||
<option value="Demo guidata">Demo guidata con un consulente</option>
|
||||
<option value="Accesso immediato">Accesso immediato alla piattaforma</option>
|
||||
<option value="Integrazione B2B">Integrazione B2B / API per il mio sistema</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group full">
|
||||
@@ -1073,16 +1087,19 @@ document.getElementById('inviteForm').addEventListener('submit', async function(
|
||||
btn.innerHTML = '<i class="fa-solid fa-spinner fa-spin"></i> Invio in corso...';
|
||||
|
||||
const data = {
|
||||
nome: form.nome.value.trim(),
|
||||
email: form.email.value.trim(),
|
||||
azienda: form.azienda.value.trim(),
|
||||
ruolo: form.ruolo.value,
|
||||
dimensioni: form.dimensioni.value,
|
||||
messaggio: form.messaggio.value.trim()
|
||||
name: form.nome.value.trim(),
|
||||
email: form.email.value.trim(),
|
||||
phone: form.telefono.value.trim(),
|
||||
company: form.azienda.value.trim(),
|
||||
tipo: form.tipo.value,
|
||||
size: form.n_dipendenti.value,
|
||||
product_interest: form.interesse.value,
|
||||
source: 'nis2-landing',
|
||||
notes: form.messaggio.value.trim()
|
||||
};
|
||||
|
||||
try {
|
||||
const res = await fetch('/api/contact/request-invite', {
|
||||
const res = await fetch('/api/mktg-lead/submit', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(data)
|
||||
|
||||
Reference in New Issue
Block a user