NIE EXPERTS SPAIN

Tally Forms Reference

System Documentation · Node Agency

02 · Tally forms reference

Verified live 2026-06-30. Two published forms feed the pipeline. Fase-1 collects per-person contacts after checkout; Fase-2 is the EX-18 questionnaire. (A third form zxLpXM "NIE correzione" exists, 0 submissions.)

Form Tally ID Role Keys on Submits to
Fase-1 "Form Iniziale" LZk4ov post-checkout contact collection order_id + people/priority_count/tier (URL params) W02 webhook
Fase-2 "Questionario" aQvplB EX-18 data (anagrafici, indirizzo, arrivo) token + email (URL params) W03 webhook

Fase-1 — LZk4ov (single page, conditional hide-logic)

Renders up to 4 "Persona" blocks; extra personas hidden by the people URL param. Gmail-rule warning disables submit. No page breaks. Hidden / URL params: order_id (passthrough) · people (1/2/3; 4 shows all) · priority_count (hides priority question when IS 0) · tier (hides priority question when CONTAINS concierge). Per persona (x4): Nome completo (text) · Gmail — deve finire con @gmail.com (email; if not gmail -> warning + disable submit) · Numero WhatsApp (phone, intl, default IT) · Situazione (choice) · Urgenza reale (choice). Closing: A chi spetta l'appuntamento prioritario? (checkboxes Persona 1-4; hidden when priority_count IS 0 OR tier CONTAINS concierge) · language question (fully hidden/dead) · Consenso WhatsApp (checkbox, required). Enums (map to backend, W02 parser): Situazione = Studente / Lavoratore / In cerca di Lavoro / Altro; Urgenza = Entro 7 giorni / Entro 2 settimane / Entro 1 mese / Mi sto portando avanti. Known issues (AUDIT-FINDINGS H2/H4): required-flags inconsistent across personas (P3 name/email optional, P4 phone optional); Gmail rule differs (gmail.com on P1/P4 vs @gmail.com on P2/P3); language question orphaned.

Fase-2 — aQvplB (6 pages, no conditional logic)

On completion redirects to wa.me/34670557796. Hidden params: token, email. Page 1 Intro. Page 2 Situazione: Qual è la tua situazione attuale in Spagna? (choice, required): Studente / Lavoratore con contratto o pre-contratto già firmato dal datore di lavoro / Sono in cerca di lavoro / Altro. Page 3 Dati anagrafici: Numero del documento d'identità (text, req, max 20) · Numero di NIE bianco (opzionale) (min5/max20) · Nome (req, max50) · Cognome (req, max20) · Secondo cognome (opzionale) (max20) · Sesso (dropdown Uomo/Donna, req) · Data di nascita (date, req) · Città di nascita (req, max40) · Paese di nascita (req, max30, default Italia) · Nazionalità (req, max30, default Italiano) · Primo nome del padre (opt, max30) · Primo nome della madre (opt, max30). Page 4 Indirizzo: Via e numero civico (req, max60) · Città (req) · Codice postale (req, no validation) · Provincia (req). Page 5 Contatto & arrivo: Numero di telefono (phone, req, intl/IT) · Quando sei arrivato in Spagna? (date, req). Page 6 Consenso: GDPR checkbox (required). Thank-you: "Richiesta inviata!" + PDF-by-email + guide notice + WhatsApp CTA -> wa.me/34670557796 (agent name "Milene"). Situazione enum (W03 parser): Studente / Lavoratore con contratto o pre-contratto già firmato dal datore di lavoro / Sono in cerca di lavoro / Altro. Known issues (AUDIT-FINDINGS H3/H5): Codice postale/Città/Provincia unvalidated; situazione enum differs from Fase-1 (parsed separately, fragile); Sesso binary only.

Automation note — filling Fase-2 programmatically

Fase-2 date fields are uncontrolled React inputs (defaultValue + popup). Value injection and even real keystrokes set the visible text but not React state (validation reads empty -> "Inserisci un valore"). The reliable path is invoking the field's React onChange handler directly. Relevant only for automated E2E testing — see 08-e2e-test-guide.md.