# Il file formspree.json

> Formspree Docs · Usare la CLI · 14 luglio 2023

Il file `formspree.json` è dove puoi creare e configurare i moduli per un sito web. Ad esempio, puoi creare moduli di iscrizione per una lista Mailchimp, o moduli di contatto che ti inviano un'email quando vengono inviati. Il file `formspree.json` viene usato dalla Formspree CLI durante il deployment dei tuoi moduli sui server di Formspree.

## Configurazione del modulo

I moduli accettano i seguenti parametri di configurazione:

| Proprietà | Tipo | Predefinito | Descrizione |
| --- | --- | --- | --- |
| `name` |  String |   |  Il nome del modulo (obbligatorio) |
| `actions` |  Array |  `[]` |  Un Array di [azioni](#h_01EJPVWA6TJM62HSQ6ED53JYGE) da eseguire dopo l'invio |
| `fields` |  Object |  `{}` |  Metadati opzionali sui [campi del modulo](#field-rules) |
| `captcha` |  Object |  `{}` |  Impostazioni captcha opzionali. |

L'oggetto **Captcha** dovrebbe seguire questo formato:

```javascript
"captcha": {
    "type": "recaptcha",                  // Required
    "recaptchaSecret": "my-secret"        // Optional
}
```

**Esempio** Ecco un esempio di file `formspree.json`:

```javascript
{
  "forms": {
    "contact": {
      "name": "Contact Form",
      "captcha": {
        "type": "recaptcha",
        "recaptchaSecret": "my-secret"
      },
      "fields": {
        "email": { "type": "email", "required": true },
        "message": { "type": "text", "required": true }
      },
      "actions": [
        { "type": "email", "to": "john@example.com" }
      ]
    }
  }
}
```

## Azioni post-invio

I moduli accettano un array di azioni da eseguire dopo l'invio. Abbiamo alcune azioni integrate e un elenco crescente di integrazioni con altre app:

| App | Tipo | Descrizione |
| --- | --- | --- |
|   |  `email` |  Invia un'email di notifica. [Leggi di più](/articles/using-the-cli/send-a-notification-email/) |
|   |  `autoresponse` |  Invia una risposta a chi ha effettuato l'invio. [Leggi di più](/articles/using-the-cli/send-a-confirmation-email/) |
|   |  `webhook` |  Invia un webhook a un determinato url. [Leggi di più](/articles/using-the-cli/send-a-webhook/) |
| `mailchimp` |  `addOrUpdateContact` |  Crea abbonati in Mailchimp. [Leggi di più](/articles/using-the-cli/add-subscribers-to-a-mailchimp-list/) |
| `mailerlite` |  `addSubscriber` |  Aggiungi abbonati a MailerLite. [Leggi di più](/articles/using-the-cli/add-subscribers-to-mailerlite/) |
| `convertkit` |  `applyTags` |  Crea abbonati e applica tag in ConvertKit. [Leggi di più](/articles/using-the-cli/add-subscribers-to-convertkit/) |
| `hubspot` |  `createContact` |  Crea contatti in Hubspot. [Leggi di più](/articles/using-the-cli/create-leads-and-contacts-in-hubspot-using-the-formspree-cli/) |
| `freshdesk` |  `createSupportTicket` |  Crea ticket in Freshdesk. [Leggi di più](/articles/using-the-cli/create-support-tickets-in-freshdesk/) |
| `zendesk` |  `createSupportTicket` |  Crea ticket in Zendesk. [Leggi di più](/articles/using-the-cli/create-support-tickets-in-zendesk/) |
| `airtable` |  `sendToTable` |  Aggiungi righe in Airtable. [Leggi di più](/articles/using-the-cli/send-submissions-to-airtable/) |
| `trello` |  `createCard` |  Crea schede in Trello. [Leggi di più](/articles/using-the-cli/create-cards-in-trello/) |
| `discord` |  `sendMessage` |  Invia messaggi a Discord. [Leggi di più](/articles/using-the-cli/use-discord-to-receive-messages/) |
| `gorgias` | `createSupportTicket` |  Crea ticket in Gorgias. [Leggi di più](/articles/using-the-cli/create-support-tickets-in-gorgias/) |

Ecco un esempio di file `formspree.json` con un'azione Mailchimp:

```javascript
{
  "forms": {
    "contact": {
      "name": "Contact Form",
      "actions": [
        {
          "app": "mailchimp",
          "type": "addOrUpdateContact",
          "audience": "8djs8fg8d",
          "apiKey": "$MAILCHIMP_APIKEY"
        }
      ]
    }
  }
}
```

## Regole dei campi

Puoi facoltativamente configurare quali campi sono consentiti, il tipo che dovrebbero avere e varie regole di validazione per essi.  
  
**Nota:** Per impostazione predefinita, Formspree accetterà qualsiasi campo tu passi dal lato client. Tuttavia, definire qui i tuoi campi ti consente di aggiungere validazioni (come contrassegnare un campo come obbligatorio) e dare loro nomi facili da comprendere.  
  
Gli oggetti campo possono contenere le seguenti proprietà:

| Chiave | Tipo | Descrizione |
| --- | --- | --- |
| `required` |  Boolean | Specifica se il campo è obbligatorio |
| `type` |  String | Il tipo del campo. Uno tra `text`, `email`, `numeric`, `datetime-local`, `url` o `file`. |
| `min` |  Number or String | Specifica il valore minimo. Può essere usato con i tipi `numeric`, `datetime-local` o `file`. Tieni presente che dovresti specificare il tipo del campo, altrimenti questa regola non verrà applicata. |
| `max` |  Number or String | Specifica il valore massimo. Può essere usato con i tipi `numeric`, `datetime-local` o `file`. Tieni presente che dovresti specificare il tipo del campo, altrimenti questa regola non verrà applicata. |
| `minlength` |  Number | Specifica il valore minimo. Può essere usato con i tipi `text`, `url` o `email`. Tieni presente che dovresti specificare il tipo del campo, altrimenti questa regola non verrà applicata. |
| `maxlength` |  Number | Specifica il valore massimo. Può essere usato con i tipi `text`, `url` o `email`. Tieni presente che dovresti specificare il tipo del campo, altrimenti questa regola non verrà applicata. |
| `accept` |  String list | Specifica i tipi di contenuto file validi. Il valore dovrebbe essere un elenco di stringhe con [tipi MIME validi](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types). Tieni presente che dovresti impostare la chiave type come `file`, altrimenti questa regola non verrà applicata. |

**Note:  
**Il tipo `datetime-local` accetta formati ISO. Il formato predefinito è `yyyy-mm-dd hh:mm:ss`. Questo tipo accetta anche solo date, ad esempio `yyyy-mm-dd`. Per maggiori informazioni, consulta [questo](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/datetime-local).

I valori `min` e `max` per i tipi `file` sono le dimensioni minima e massima del file in MiB.

**Esempio**

```javascript
{
  "forms": {
    "contact": {
      "name": "Contact Form",
      "fields": {
        "email": {
          "type": "email",
          "required": true
        },
        "birthdate": {
          "type": "datetime",
          "required": true,
          "min": "2002-09-21 13:13:00"        /* also accept dates */
        },
        "document": {
          "type": "file",
          "contentType": ["application/pdf"],  /* please use valid MIME Types */
          "min": 10                            /* MiB */
        }
      }
    }
  }
}
```
