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à:
| Valore | Descrizione |
|---|---|
supporter | Campi aggiuntivi sul profilo del sostenitore |
donation | Campi aggiuntivi su una donazione |
Tipi di campo
| Tipo | Descrizione |
|---|---|
text | Testo libero |
boolean | Valore vero/falso |
select | Selezione 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 formrequired_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
}
}
}