Passa al contenuto principale

Custom Field

I custom field consentono alle organizzazioni di estendere le entità di Riseact con campi personalizzati, senza modificare lo schema di base. Possono essere usati per raccogliere informazioni aggiuntive sui sostenitori o sulle donazioni, e possono essere esposti nel form di donazione direttamente dalla configurazione della campagna.

Concetti chiave

I custom field si basano su due oggetti distinti:

  • CustomFieldDefinition — La definizione del campo: nome, tipo, opzioni. È uno schema condiviso a livello di organizzazione per una specifica entità.
  • CustomField — Il valore effettivo salvato su una specifica istanza di sostenitore o donazione.

Entità supportate

I custom field possono essere definiti per due entità:

ValoreDescrizione
supporterCampi aggiuntivi sul profilo del sostenitore
donationCampi aggiuntivi su una donazione

Tipi di campo

TipoDescrizione
textTesto libero
booleanValore vero/falso
selectSelezione da un elenco di opzioni predefinite

Chiave del campo (key)

La chiave (key) è un identificatore univoco per il campo all'interno di un'organizzazione e di un'entità. Viene generata automaticamente dal nome del campo al momento della creazione (slugificando il nome, es. "Data di nascita""data-di-nascita"). Se la chiave generata è già in uso, viene aggiunto un suffisso numerico incrementale (es. "data-di-nascita-2").

La chiave è immutabile dopo la creazione e viene usata per referenziare il campo nelle configurazioni di campagna e nei payload dei checkout.

Integrazione con le campagne

I custom field di tipo supporter possono essere inclusi nella configurazione di una campagna tramite i campi shown_fields e required_fields, usando la chiave del campo. In questo modo il campo comparirà nel form di donazione della campagna:

  • shown_fields — Il campo è visibile nel form
  • required_fields — Il campo è visibile e obbligatorio

Quando si elimina una definizione di custom field, la chiave viene automaticamente rimossa da tutte le configurazioni di campagna che la referenziano.

Archivio e cancellazione

Le definizioni di custom field non vengono cancellate fisicamente: vengono archiviate (archived: true). I valori già salvati sui sostenitori e sulle donazioni rimangono invariati. I campi archiviati non vengono restituiti dalle query di default (a meno che non si filtri esplicitamente con archived: true).

Checkout

Durante un checkout, i valori dei custom field raccolti nel form vengono salvati nei campi supporter_custom_fields e donation_custom_fields del checkout (come JSON), prima ancora che il sostenitore o la donazione vengano creati. Questo garantisce che i dati non vadano persi anche in caso di checkout non completato.

API GraphQL

Query

Lista definizioni:

query {
customfieldDefinitions(filters: { entity: supporter }) {
id
name
key
type
options
position
archived
}
}

Singola definizione:

query {
customfieldDefinition(id: 1) {
id
name
key
type
}
}

Mutations

Crea una definizione:

mutation {
customfieldDefinitionCreate(data: {
entity: supporter,
name: "Professione",
description: "Professione del sostenitore",
type: text
}) {
customFieldDefinition {
id
key
}
userErrors {
field
message
}
}
}

Crea un campo di tipo select:

mutation {
customfieldDefinitionCreate(data: {
entity: donation,
name: "Destinazione fondi",
description: null,
type: select,
options: ["Progetto A", "Progetto B", "Progetto C"]
}) {
customFieldDefinition {
id
key
options
}
userErrors {
field
message
}
}
}

Aggiorna una definizione:

mutation {
customfieldDefinitionUpdate(id: 1, data: {
name: "Professione aggiornata",
position: 2
}) {
customFieldDefinition {
id
name
}
userErrors {
field
message
}
}
}

Archivia (elimina) una definizione:

mutation {
customfieldDefinitionDelete(id: 1) {
customFieldDefinition {
id
archived
}
userErrors {
field
message
}
}
}