# Form
## Backend
I form possono avere:
- nome
- action url
- attributi (json?)
- ogni attributo può avere:
- label
- nome (generato automaticamente come suggerimento)
- tipologia (text, date, checkbox)
- obbligatorio si/no
Gli attributi sono ordinati in base al json. la UX in React prende questo array e ricostruisce le varie input per la modifica.
Una volta creato il form, sarà selezionabile in fase di creazione advertorial.
## Interfaccia creazione advertorial
L’interfaccia va modificata per supportare sia la funzionalità di form, sia quella di iframe.
La creazione advertorial dovrà mostrare una scelta di questo tipo:

Quando si interagisce con le due input o la select, cambia anche la checkbox. Così si può scegliere il comportamento dell’advertorial.
Se scelgono “Form”, dovranno esserci anche due nuovi campi:
- Titolo thank you page
- Mini-testo thank you page
(La thank you può essere un semplice messaggio da inserire sotto al form o un overlay full-screen con il testo al centro)
Con questa interfaccia si sceglie quindi la destinazione e il comportamento dell’advertorial.
## Comportamento in editor
### Se scelgo Landing Page:
- Quando inserirò l’elemento link, sarà già un tracked link
- Ho a disposizione la spunta per disattivare il tracking su ogni link a mia scelta
### Se scelgo Iframe:
- Quando inserirò l’elemento link, non avrò l’opzione tracked
- Al suo posto, avrò una checkbox “scrollTo iframe” come default
- Quando la disattivo, compare la input per l’url
### Se scelgo Forms:
- Quando userò l’elemento link, non ci sarà l’opzione tracked
- Al suo posto, checkbox “scrollTo Form” come default
- Quando la disattivo, compare l’input per l’URL
Principalmente va modificato l’elemento link e le regex backend per supportare questa cosa, potrebbe essere lungo ma bisogna verificare.
Supponendo che tutto ciò sia fatto, possiamo:
- Creare dei form
- Selezionarli come destinazione advertorial
- Trascinare l’elemento “Form” che si auto-genera in base al form creato via backend
- Scegliere dei temi/colori per il form
- Magari inserire qui direttamente nell’editor la thank you page, con un pulsante “Edit Thank You” per farla comparire on top di tutto il contenuto dell’advertorial nella sezione di editor modifica. (Come se aprisse il modal da un bottone dell’editor)
- Salvare l’advertorial
- Utilizzare il form appena creato
## Salvare i dati su Prelanderly
In fase di creazione form, c’è una spunta “Save Leads on Prelanderly”.
Se questa spunta è disattivata, il campo action URL è obbligatorio, altrimenti è opzionale.
Se attivo la spunta e inserisco un action_url, deve inviare due richieste POST verso due endpoint diversi.
Se attivo solo la spunta, allora salverò solo su Prelanderly (con funzionalità di Export).
## Statistiche conversioni
Possiamo inserire un valore in $ per ogni conversione del form.
In base a questo, possiamo “immaginarci” quanto ha guadagnato l’affiliato, senza togliere i tassi di annullamento dei network etc.
Quindi, quando avviene una submit di un form, l’endpoint che salva la risposta al form (se la spunta è attiva), si occupa anche di cercare il click_id dell’utente tra i cookie, segnando in database una conversione “non confermata”.
Non appena arriva un post back (se configurato) con quel click_id, la conversione viene confermata.
Questo serve per dividere le conversioni effettive che arrivano attraverso il network e le conversioni tracciate attraverso l’utilizzo del form.
Es.: il network annulla qualche conversione per fake
Es. 2: problema di comunicazione via api, dati persi dal network
## Cap
L’url non è più salvato staticamente nella pagina, ma viene salvato un codice che viene poi sostituito con un url scelto via backend.
Potrebbe essere lungo modificare e fare questa parte in fase di compilazione advertorial.
L’utente al posto di scegliere un solo URL in fase di creazione form, ne può scegliere più di uno, senza limiti.
Gli URL possono avere un CAP, quindi se per esempio il cap è 50, dopo 50 conversioni la campagna è “full” e non vengono più accettate nuove conversioni.
Quindi, facciamo mettere più url, facciamo impostare i vari cap e l’algoritmo saprà quando fare il cambio di URL.
Ci possono essere anche URL non cappate, quindi una checkbox che indica il fatto che ci sia un cap e questa checkbox attiva la mini-input accanto per inserire il numero del cap.
Il sistema permette di inserire più url, scegliere i cap, e con un pulsante apposito ordinarli.
per rendere tutto semplice potremmo poi inserire un URL di fallback, quando tutti i cap si erodono, manda sempre lì le conversioni
per complicare le cose invece, potremmo inserire anche più url di fallback, che fungono come gli a/b test per distribuire le conversioni si url differenti
Sarebbe anche carino supportare le conversioni contemporanee, quindi io acquisisco un dato da un singolo form, ma posso inviarlo a più destinazioni contemporaneamente, quindi un’opzione radio che indica: invio distribuito oppure invio simultaneo.
## Formato dati diverso
Un problema potrebbe essere che ogni url differente ha bisogno di un formato dati diverso
Se io faccio un form con 3 parametri:
- first_name
- last_name
- email
Magari il primo URL ha bisogno dei dati in questo formato:
- name
- email
Il terzo magari ha bisogno di:
- name
- surname
- email
- is_adult (magari questo parametro vogliono impostarlo sempre a true)
Per supportare questa cosa dovremmo far creare un modello dati complesso con le regole alle persone, per ogni singolo link inserito.