Documentación de Charitable

Aprende a sacar el máximo partido a Charitable con instrucciones claras y paso a paso.

Donation Fields API

The Donation Fields API is provides a powerful, flexible way to add, remove and edit your donation fields.

What are donation fields?

Donation fields are any bits of information about a donation that are available for you to use. As an example, here are some of the fields available by default:

  • first_name – Get the first name of the donor.
  • last_name – Get the last name of the donor.
  • amount_formatted – Get the donation amount, formatted according to your site’s currency settings (e.g. $50.00).
  • date – The date that the donation was made.
  • gateway_label – The payment method the donor used.

How do I get the value for a particular donation field?

You can get the value of any donation field through the donation’s Charitable_Donation object.

The first step is to get a Charitable_Donation object:

$donation_id = 123; // Replace with your Donation's ID.
$donation    = charitable_get_donation( $donation_id );

Next, you can get the field’s value by calling get() on the object, as you can see in the examples below:

$first_name = $donation->get( 'first_name' );
$date       = $donation->get( 'date' );
$gateway    = $donation->get( 'gateway_label' );

To put it all together:

$donation_id = 123;
$donation    = charitable_get_donation( $donation_id );
$first_name  = $donation->get( 'first_name' );

How do I add a new field to my donation form?

Adding a new field is a two-step process.

First, you will create a new Charitable_Donation_Field object which will define your field’s parameters: its label, the type of value it stored, how it should be included in the donation form (if at all), whether it should be added to the Donations export file, and more.

Next, you add this field to the Charitable_Donation_Field_Registry class, which provides a way to store and retrieve donation fields.

Let’s see how this works in an example:

/**
 * Create a callback function on the `init` hook, where we
 * can register our donation field.
 */
add_action( 'init', function() {

    /* Create the `Charitable_Donation_Field` object. */
    $field = new Charitable_Donation_Field(
        'my_custom_field',
        array(
            'label'          => __( 'My Custom Field' ),
            'data_type'      => 'meta', 
            'donation_form'  => array(
                'type'       => 'text',
                'required'   => false,
                'show_after' => 'phone',
            ), 
            'admin_form'     => true,
            'show_in_meta'   => true,
            'show_in_export' => true,
            'email_tag'      => array(
                'description' => __( 'The custom field value' ),
            ),
        )
    );

    /* Get the `Charitable_Donation_Field_Registry` instance. */
    $fields = charitable()->donation_fields();

    /* Add the new field. */
    $fields->register_field( $field );
} );

In the example above, we have created a new field with a key of my_custom_field. Here’s what its defined parameters mean:

  • Its label is “My Custom Field”. This is what will be used in the donation form, in the admin donation details area and in the donations export as the column header.
  • Its data type is meta. This means that it will be stored as a meta field specific to that donation.
  • It is set up to be shown in the donation form, right after the phone field. It’s an optional field.
  • It will also be added to the admin donation form.
  • When viewing the details for the donation, you will be able to see what the donor entered for this field in the “Donation Details” section.
  • When you download a donations export, a new “My Custom Field” column will be added, showing what donors entered for this field.
  • A new email tag has been created for this field, so you can easily include it in donation-specific emails, like the Donation Receipt (for donors), or the Donation Notification (for administrators).

This is a relatively simple example, but it achieves a lot. Click here for a more detailed breakdown of all the available parameters when creating Charitable_Donation_Field objects.

How do I change an existing donation field?

To change an existing donation field, you first retrieve the field from the Charitable_Donation_Field_Registry, and then update the field value.

To update the field value, we can call set() on the field, or use the magic setter.

/**
 * Create a callback function on the `init` hook, where we
 * can start changing the donation field.
 */
add_action( 'init', function() {

    /* Get the Donation Field Registry object. */
    $fields = charitable()->donation_fields();

    /* Get the field we want to change. */
    $field  = $fields->get_field( 'phone' );
    
    /**
     * Change #1: Make it a required field (uses set()).
     * Change #2: Change the label (uses magic setter).
     */
    $field->set( 'donation_form', 'required', true );
    $field->label = 'Phone Number';
} );

For more information about how to update field arguments, see the detailed reference for those class methods:

How do I add a field to a specific campaign’s donation form?

If you want a new or existing field to only show for certain campaigns, you can do this by adding a new function which controls whether the field shows in the donation form.

If you are adding a new field, you will first to create the donation field, so follow those steps first.

Now you can hide the field you registered from all donation forms other than the one you want it to show on:

add_filter( 'charitable_donation_form_user_fields', function( $fields, $form ) {

    /* If the field doesn't exist, stop right here. */
    if ( ! array_key_exists( 'my_custom_field', $fields ) ) {
        return $fields;
    }

    /* Match any campaign that DOESN'T have a slug of 'special-campaign' */
    if ( 'special-campaign' !== $form->get_campaign()->post_name ) {    
        unset( $fields['my_custom_field'] );
    }
    
    return $fields;
}, 10, 2 );

What’s happening here?

  • We only want the my_custom_field field to show on the campaign with a slug of ‘special-campaign’.
  • The field will show in all campaigns by default, so our code checks if the campaign doesn’t have a slug of ‘special-campaign’ and then removes it.

You can change the condition under which the field is shown. For example, you can change the field to only show for campaigns in a certain category, or for campaigns that have a specific parent campaign (i.e. fundraisers for one of your peer-to-peer fundraising campaigns).

How do I change a donation field for a particular campaign?

The approach used above to show a field on a particular campaign can be adapted to change a donation field for a particular campaign.

For example, if you only want to accept donations from donors in a specific country for a certain campaign, you can achieve that with the following code:

add_filter( 'charitable_donation_form_user_fields', function( $fields, $form ) {
    /* If a country field doesn't exist, stop right here. */
    if ( ! array_key_exists( 'country', $fields ) ) {
        return $fields;
    }

    if ( 'south-africa-only' === $form->get_campaign()->post_name ) {
        $fields['country']['options'] = array(
            'ZA' => 'South Africa',
        );
    }	

    return $fields;

}, 10, 2 );

This code will make it so that the campaign with a slug of ‘south-africa-only’ will only display South Africa as a valid country option.

How do I make a donation field show based on user input?

The previous two examples showed how to add / change donation fields based on the donation form’s campaign. But what if you want to show or hide a field based on user input?

Handling this requires a different approach, using Javascript. If you are a confident developer, you can add this through a new Javascript file, but in the example below we will use the wp_add_inline_script function to add our custom Javascript without needing to create, register and enqueue a new script.

In the example below, we are only showing our custom field, my_custom_field, when the donor is from the United States:

add_action( 'wp_enqueue_scripts', function() {
    wp_add_inline_script( 'charitable-script', "
        jQuery('body').on('charitable:form:loaded', (event, donationForm) => {
            var countryField = donationForm.get_input('country');
            function toggleCustomField() {
                donationForm.get_input('my_custom_field').parent().toggle('US' === countryField.val());
            }
            countryField.on('change', toggleCustomField).trigger('change');
        });
    " );
} );

Full list of default donation fields

The following fields are added by Charitable and its extensions:

ClaveDescription
donation_idThe donation ID
first_nameThe donor’s first name.
last_nameThe donor’s last name.
donorThe donor’s full name.
emailThe donor’s email address.
donor_addressThe donor’s full address, formatted.
addressThe donor’s first address field.
address_2The donor’s second address field.
cityThe donor’s city.
stateThe donor’s state.
postcodeThe donor’s postcode.
countryThe donor’s country.
phoneThe donor’s phone number.
campaignsThe campaign that received the donation.
campaign_categories_listThe categories that the campaign is in.
amount_formattedThe donation amount, formatted according to your currency settings.
fechaThe date of the donation.
timeThe time the donation was made.
statusThe donation status. This returns the raw value of post_status.
status_labelThe donation status as a more readable label.
donation_gatewayThe payment gateway used for the donation.
gateway_labelThe payment gateway as a reader-friendly string.
donation_keyThe unique donation key.
gateway_transaction_idThe transaction ID for the donation in the payment gateway that was used (i.e. PayPal, Stripe).
test_modeWhether the donation was made in test mode.
donation_summaryA readable summary of the donation, listing the campaign receiving the donation & the amount donated.
contact_consentWhether the donor gave their consent to be contacted.
cover_feesWhether the donor covered fees.
Added by Fee Relief.
fee_amountThe amount of processing fees paid by the donor.
Added by Fee Relief.
fee_amount_formattedThe amount of processing fees paid by the donor, formatted according to your currency settings.
Added by Fee Relief.
total_donation_with_feesThe total donation amount including processing fees.
Added by Fee Relief.
total_donation_with_fees_formattedThe total donation amount including processing fees, formatted according to your currency settings.
Added by Fee Relief.
consent_to_trackWhether the donor has given permission to have their newsletter activity tracked (opens, clicks). This only applies if you are using Campaign Monitor.
Added by Newsletter Connect.
anonymous_donationWhether the donor chose to remain anonymous.
Added by Anonymous Donations.
donor_commentThe comment left by the donor.
Added by Donor Comments.
giftaidWhether the donor claimed Gift Aid.
Added by Gift Aid.
giftaid_declarationThe declaration the donor agreed to when they claimed Gift Aid.
Added by Gift Aid.
titleThe donor’s title (Mr, Mrs, Ms, etc.).
Added by Gift Aid.
address_3The third line in the donor’s address.
Added by Gift Aid.

¿Todavía tienes preguntas? ¡Estamos aquí para ayudarte!

Última modificación:

Novedades en Benéfico

Ver las últimas actualizaciones
🔔 Suscríbete para recibir nuestras últimas actualizaciones
📧 Suscribirse a correos electrónicos

Suscripción por correo electrónico

Únete a nuestro boletín

No te enviaremos spam. Solo enviamos un correo electrónico cuando creemos que realmente te ayudará. ¡Date de baja en cualquier momento!

GiveWP Migraciones Nuevo

Servicio de Migración "White Glove" para GiveWP

¿Estás pensando en cambiar tu plataforma de recaudación de fondos de GiveWP a Charitable, pero no quieres arriesgarte a perder tus datos ni a encargarte tú mismo de una configuración técnica compleja? El Servicio de Migración "White Glove" de Charitable incluye:

👥 Mapeo impecable de donantes: Transfiere de forma segura toda tu base de datos de colaboradores sin pérdida de datos.

📊 Historial financiero completo: Conserva meticulosamente cada transacción histórica para una presentación de informes continua y precisa.

🔄 Donaciones recurrentes sin interrupciones: Transfiere de forma segura las suscripciones activas sin interrumpir tus ingresos ni requerir que tus donantes actualicen su información.

💳 Cero interrupciones en la pasarela de pago: Sigue usando Stripe, PayPal o cualquier otro procesador compatible con GiveWP que ya te guste.

🚀 Configuración técnica experta: Relájate mientras nuestro equipo se encarga de la instalación y configuración de tus formularios. Además, los usuarios que cumplan los requisitos obtendrán un año completo de Charitable Pro gratis.

Visita esta página para obtener más información.

automatización Mejora

📢 Alerta de nueva función: ¡Automation Connect 2.0 ya está aquí! 🚀

¿Estás pensando en conectar tus datos de recaudación de fondos con herramientas como Mailchimp, Slack o Google Sheets, pero no quieres contratar a un desarrollador ni escribir código personalizado? El nuevo complemento de automatización de Charitable incluye:

⚡ 17 disparadores de eventos: Activa instantáneamente webhooks para el primer donativo de un donante, pagos de renovación o hitos de campaña alcanzados.

🎯 Lógica condicional inteligente: Utiliza una potente lógica AND/OR en 11 campos para enviar datos solo cuando cumplan tus criterios exactos, como las suscripciones al boletín.

📊 Control de carga útil personalizado: Selecciona entre más de 80 campos de datos limpios de metadatos de donantes, donaciones y campañas para que tus aplicaciones obtengan exactamente lo que necesitan.

🚀 Plantillas de plataforma preconstruidas: Evita la configuración desde cero con plantillas listas para usar para Zapier, Make.com, n8n, HubSpot y Slack.

🛡️ Herramientas de desarrollador fiables: Potencia tus flujos de trabajo con cargas útiles firmadas HMAC-SHA256, filtros completos de WordPress y registros de reintentos automáticos.

automatización Mejora

🔌 Charitable se une a Zapier: Conecta con más de 7000 aplicaciones y automatiza tu recaudación de fondos

¿Cansado de copiar manualmente los datos de las donaciones en hojas de contabilidad o de rastrear las nuevas suscripciones de donantes? Pon tus tareas administrativas en piloto automático. Charitable ya está oficialmente en Zapier, lo que te proporciona una forma potente y sin código para conectar tu recaudación de fondos directamente con el resto de tus herramientas favoritas.

Cada donación, suscripción de donante e hito de campaña ahora puede activar un flujo de trabajo automatizado sin problemas.

Novedades:

♾️ Conecta con más de 7000 aplicaciones: Une tus campañas de Charitable con software cotidiano como Google Sheets, QuickBooks, Slack, Mailchimp, HubSpot, Notion, Airtable y miles más.

⚡ 12 potentes disparadores: Crea flujos de trabajo profundos utilizando disparadores de automatización inteligentes que cubren todo el ciclo de vida de la donación, incluyendo Nueva Donación, Nuevo Donante, Suscripción Cancelada y Objetivo de Campaña Alcanzado.

📋 Plantillas de acciones preconstruidas: Empieza en tres minutos o menos con nuestras combinaciones de plantillas prefabricadas, como registrar automáticamente nuevas donaciones directamente en una Hoja de Cálculo de Google o enviar correos electrónicos personalizados de bienvenida a donantes a través de Gmail.

🚫 No se necesita código: No se requieren webhooks complejos ni scripts PHP personalizados. Simplemente elige tu disparador, selecciona tu aplicación, mapea tus campos y deja que Zapier se encargue del trabajo pesado.

¿Listo para ahorrar horas de tiempo administrativo? ¡Consigue Charitable Pro con el complemento Automation Connect hoy mismo y lanza tu primer Zap!

Mejora Pagos

🚀 Presentamos PayPal Commerce: Una conexión, seis formas de donar

Los donantes esperan opciones de pago modernas y flexibles cuando apoyan una causa. Si no ven su método preferido en su formulario de donación, a menudo desaparecen sin decir nada. Con PayPal Commerce, estamos brindando una experiencia de pago completamente modernizada directamente a sus campañas.

Disfrute de una única integración que mejora sus formularios, hace que las donaciones sean fluidas y le ayuda a capturar cada donación.

Novedades:

🔌 Conexión con un clic: omita las complicadas claves API y los documentos para desarrolladores. Simplemente haga clic en "Conectar con PayPal", inicie sesión en su cuenta comercial y su formulario moderno estará activo en menos de cinco minutos.

💳 Seis formas de donar: brinde a sus seguidores acceso instantáneo al saldo de PayPal, Venmo (EE. UU.), financiación "Paga más tarde", las principales tarjetas de crédito/débito, Apple Pay (Safari) y Google Pay (Chrome), todo desde el mismo formulario.

🔄 Donaciones recurrentes flexibles: admite completamente las donaciones mensuales. Elija entre la API de suscripciones de PayPal (gestionada automáticamente por PayPal) o Vault + Cron (gestionada de forma segura en su sitio).

💬 Recuperación de errores amigable: no más alertas confusas del navegador. Si se rechaza un pago, los donantes ven mensajes sencillos y en línea que los guían sobre cómo solucionar el problema y completar su donación.

¿Listo para PayPal, modernizado? Actualice a Charitable Pro 1.8.15+ (o Charitable Lite 1.8.11+) y conecte su cuenta hoy mismo.

Campañas Nuevo

⏳ Cuenta atrás de la campaña: genere urgencia y aumente las donaciones

¡La urgencia es una de las herramientas más poderosas en la recaudación de fondos! Conozca Campaign Countdown, un temporizador en vivo y en tiempo real diseñado para convertir la procrastinación en generosidad inmediata.

animación de cuenta atrás de campaña

Novedades:

⏱️ Urgencia en vivo y en tiempo real: rastree bellamente días, horas, minutos y segundos hasta la fecha límite de su campaña con cuentas atrás visuales que se actualizan en vivo.

🎨 Adaptado a su estilo: elija entre mosaicos con borde "Boxed" o una pantalla "Inline" limpia y de una sola línea. Adapte su tema al instante con controles de fuente y color profundo.

🛠️ Colóquelo en cualquier lugar: inserte la cuenta atrás donde desee utilizando el campo Campaign Builder, un bloque Gutenberg dedicado o un simple shortcode.

🚨 Acciones inteligentes de caducidad: control total sobre el estado final: elija reemplazar automáticamente el temporizador con un mensaje personalizado, congelarlo en cero y más.