Documentación de Charitable

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

DonationGuard: Real-Time Bot Attack Protection for Donation Forms

Requires: Charitable Pro 1.8.16+

Note: DonationGuard is currently in beta in 1.8.16.

DonationGuard is a real-time bot-attack detection layer for your donation forms. It watches submissions for the patterns coordinated attackers leave behind — abnormally fast form fills, runs of failed cards from rotating IPs, donor-to-view ratios that no human browsing rhythm produces — opens severity-tiered Attack Records when it sees them, and alerts you the moment a campaign starts taking fire.

Características clave

  • Monitor every donation submission in real time for five distinct attack signals
  • Score activity against a learned baseline of your site’s normal donation traffic
  • Open a structured “attack record” so you can review and bulk-act on suspicious donations
  • Alert the site admin by email, admin-bar warning, and an in-plugin notification
  • Apply a one-click “Recommended Settings” preset that turns on Honeypot, Time Trap, and Rate Limit modules
  • Block repeat offenders by email address with a configurable threshold and lookback window
  • Store IP addresses as one-way hashes for GDPR-friendly attack logging
  • Auto-clean closed attack records after a retention window you choose

Why Use DonationGuard?

Card-testing bots target nonprofits because donation forms are public, free to submit, and instantly tell the attacker whether a stolen card works. A single bot run can post hundreds of declined transactions in minutes, inflate your gateway fees, and trigger fraud reviews from your processor. DonationGuard watches for those patterns automatically and lets you respond in seconds, instead of finding out from Stripe a day later.

Requirements

  • Charitable Pro 1.8.16 or later
  • An active Charitable Pro license (required for the Quick Protection preset, which enables Spam Blocker modules)
  • WordPress 6.0 or later

Empezar

Activation

  1. In your WordPress admin, go to Charitable > Settings.
  2. Click the Security tab.
  3. Click the DonationGuard sub-tab.
  4. Check Enable and click Save Changes.

DonationGuard begins monitoring on the next donation submission. The detector throttles to one full cycle per 60 seconds, so a single spike of activity is consolidated into one attack record rather than dozens of duplicates.

DonationGuard Settings

One-Click Recommended Settings

Inside the DonationGuard tab you will see a Quick Protection card with an Apply Recommended Settings button. Clicking it enables three Spam Blocker modules with sensible defaults:

  • Honeypot — adds an invisible field that real donors never fill in
  • Time Trap — rejects submissions that arrive faster than a human could type
  • Rate Limit — caps submissions from a single visitor to 10 per window

These modules require an active Pro license. If your license is inactive, the button is replaced with an Activate License link.

Configuration Options

Core Detection Parameters

ParameterTipoPredeterminadoDescription
EnablecheckboxOffMaster switch for DonationGuard.
Detection SensitivityselectNormalLow, Normal, or High. Higher catches more attacks but may flag legitimate fundraising spikes.
Additional Alert Recipientemail(empty)Optional second email that critical alerts are BCCed to in addition to the site admin.
Send ‘All Clear’ EmailcheckboxOffSend a follow-up email when an attack ends.
Attack Record RetentionselectForeverAuto-delete closed and dismissed attack records older than 30 days, 90 days, 1 year, or never.
Hash IP Addresses (Privacy Mode)checkboxOffStore one-way hashes instead of plain IPs. Disables the one-click blacklist add from Attack Review.

Repeat-Attempter Block Parameters

The Repeat-Attempter Block stops card-testing floods that come from a single email address without false-positiving real donors who simply had card trouble.

ParameterTipoPredeterminadoDescription
Enable Repeat-Attempter BlockcheckboxOffBlock submissions from an email with multiple non-successful donations and no successful history.
Block After Failed Attemptsnumber2Block once this many non-successful donations (pending, failed, cancelled) accumulate. Recommended: 2 or 3.
Lookback Windowselect24 HoursOnly attempts within this window count. Choices: 1 hour, 6 hours, 24 hours, 7 days, 30 days, Forever.
Action on MatchradioBlockBlock stops the donation. Log only records the match in Tools > Logs but lets the donation through.
Error Messagetext(default)Shown to the donor when blocked. Leave blank to use the built-in message.

Quick Protection Preset

ModulePredeterminadoWhat It Does
HoneypotOffAdds an invisible form field that bots fill in but humans cannot see.
Time TrapOffRejects submissions that arrive in less than the configured minimum seconds.
Rate LimitOffCaps the number of submissions a single visitor can make per window (default: 10).

How Detection Works

DonationGuard runs a detection cycle each time a donation enters pending status (via the charitable_donation_pending_recorded action), throttled to one cycle per 60 seconds. Each cycle:

  1. Computes five signals against a learned per-hour baseline of your normal traffic.
  2. Combines those deviations into a single weighted score.
  3. Maps the score to a tier: Warning or Critical.
  4. Opens a new attack record, escalates an existing one, or closes a quiet attack.
  5. Dispatches notifications subject to a 4-hour cooldown and a 6-emails-per-day cap.

The Five Signals

SignalWhat It Watches
Pending RateVolume of pending donations in the recent window vs. the baseline for this hour.
RatioRatio of pending to successful donations.
IP FanoutDistinct IP addresses submitting in the window. A high count from many IPs is a classic botnet signal.
Decline RateShare of gateway declines in the window. Card-testing produces a decline burst.
TimingTime-to-submit pattern. Bots tend to submit far faster than humans.

Until your site has collected enough donation history to learn its own baseline, DonationGuard falls back to a safe static default (“warmup mode”).

Reviewing Attacks

When DonationGuard opens an attack, you have several ways to see and act on it.

Admin Bar and Banner

Open attacks surface as a warning in the WordPress admin bar and an inline banner on the Charitable dashboard. Click either to jump to the Attack Review screen.

Attack Review Screen

Located at Charitable > Tools > Logs > Attack Reviews. The screen lists open attacks with severity tier, signal breakdown, donation count, and time opened. Click into an attack to see every suspicious donation grouped together, with bulk actions to mark them as spam, cancel them, or dismiss false positives.

Email Alerts

Critical alerts go to the site admin and to the optional Additional Alert Recipient address. Each email includes the severity, the top signals that triggered it, the donation count, and a direct link to the Attack Review screen. Email volume is rate limited to one every 4 hours and 6 per day so an extended attack does not bury your inbox.

Personalización

Filter the Alert Recipient List

add_filter( 'charitable_bot_email_recipients', function ( $recipients ) {
    $recipients[] = '[email protected]';
    return $recipients;
} );

Adjust Signal Weights

add_filter( 'charitable_bot_signal_weights', function ( $weights ) {
    $weights['ip_fanout'] = 2.0;
    return $weights;
} );

Disable the Feature for a Specific Environment

add_filter( 'charitable_bot_protection_enabled', '__return_false' );

Solución de problemas

Recommended Settings button is greyed out or replaced by an Activate License link

The Quick Protection preset toggles Spam Blocker modules that require an active Pro license. Visit Charitable > Settings > Licensesand activate your license, then return to the DonationGuard tab.

No attack records are opening despite suspicious activity

Confirm that Enable is checked under Settings > Security > DonationGuard. The detector also requires that the master kill-switch filter charitable_bot_protection_enabled returns true. The first 14 days of detection use a static baseline (warmup), which is intentionally conservative.

Repeat-Attempter Block is flagging legitimate donors

Switch Action on Match to Log only (dry-run) for a week. Matches will appear in Tools > Logs filtered by source DonationGuard so you can review without blocking real donations. Lengthen the Lookback Window or raise Block After Failed Attempts if you see false positives.

Email alerts stopped arriving during an active attack

DonationGuard enforces a 4-hour cooldown between alert emails and a hard cap of 6 emails per day per site. Banner, admin-bar, and in-plugin notifications continue to update in real time even when email is throttled.

Privacy team is asking about IP storage

Turn on Hash IP Addresses (Privacy Mode) under the DonationGuard tab. IPs in attack records will be stored as one-way hashes. The one-click “blacklist this IP” action on the Attack Review screen is disabled in this mode.

Misc Notes.

Note: Activation of DonationGuard will automatically activate Usage Tracking. While no new information is sent as the result of this action, and no changes to how privacy is maintained, the data will allow DonationGuard to be improved in future updates.

What gets protected

DonationGuard inspects every donation form submission against a rolling set of behavioral signals (timing, decline rate, IP fanout, ratio, pending rate) and computes a severity score. When the score crosses a threshold, an Attack Record is opened. As more submissions arrive matching the same pattern, the record escalates from Warning to Critical. When activity dies down, the record auto-closes; you can also Dismiss false positives manually.

The 1.8.16 feature ships with three layers that work independently:

LayerWhat it doesWhere it lives
DonationGuard detectorPassive, signal-based scoring. Opens Attack Records, sends email alerts, optionally blocks the repeat-attempter pattern.Settings > Security > DonationGuard
Form-field modulesActive per-submission defenses: Honeypot (decoy field bots fill) and Time Trap (rejects sub-2-second submits).Settings > Security > Forms & Campaigns
Cloudflare Turnstile + setup wizardA free, no-friction captcha alternative to reCAPTCHA. A 3-step inline wizard helps you get a key and paste it in.Settings > Security > Captcha

Finding it

WhatWhere
Attack history (the running record of detected attacks)Charitable > Tools > Logs > Bot Events
DonationGuard settings (detection sensitivity, alerts, repeat-attempter rule)Charitable > Settings > Security > DonationGuard
Honeypot + Time Trap togglesCharitable > Settings > Security > Forms & Campaigns
Cloudflare Turnstile setup wizardCharitable > Settings > Security > Captcha (when Turnstile is the selected provider)

Attack History

The Bot Events sub-tab under Tools > Logs is where every detected attack lands. Each row is one Attack Record:

ColumnaWhat it shows
EstadoOpen (currently active), Closed (activity died down — DonationGuard closed it automatically), or Dismissed (you marked it as a false positive).
StartedWhen the first qualifying submission landed.
DurationHow long the burst lasted from first to last matching submission, or (ongoing) if still open.
Peak SeverityThe highest score the record reached during its run. Critical or Warning, with a numeric score (e.g. Critical (0.9)).
Donations FlaggedNumber of form submissions tied to this attack pattern.
AccionesA View Detail link to the per-record drill-in.

Below the table, the Clear History button removes closed and dismissed records but leaves open attacks in place (so you can’t accidentally hide an active incident from your own view).

Honeypot and Time Trap

DonationGuard works with two new no-friction form modules ship in 1.8.16, both under Settings > Security > Forms & Campaigns:

The Forms & Campaigns sub-tab showing Math Validation, Honeypot, and Time Trap toggles plus Default Minimum Donation.

Honeypot

A hidden decoy field is injected into every donation form. Real humans never see it (it’s a <input type="hidden">). Naive bots auto-fill anything that looks like a URL or website input — when the field comes back populated, the submission is silently rejected.

  • Setting: Honeypot — a single on/off toggle.
  • Donor experience: zero. No captcha, no math problem, no friction.
  • What it catches: dumb form-spam bots that fill every field on a form. Doesn’t catch sophisticated bots that target Charitable specifically.
  • Recommended: always on. Costs nothing, catches a meaningful chunk of low-effort abuse.

Time Trap

Rejects donation form submissions completed in less than 2 seconds. Donors don’t fill out a multi-field form that fast; bots do.

  • Setting: Time Trap — a single on/off toggle.
  • Donor experience: zero. Real humans take 8–60 seconds to fill the form even if they’re fast.
  • What it catches: scripted submitters that POST directly to the form endpoint without rendering the page first. Good complement to Honeypot.
  • Recommended: always on.

Math Validation (older but still here)

A pre-existing module, kept for completeness on this tab: adds a random math problem (8 - 5 = ?) to the donation form that donors must answer correctly to submit. More friction than Honeypot or Time Trap; turn this on only if you’re getting through bots that defeat the no-friction layers.

Consejos

  • Dry-run before blocking. When you first enable Repeat-Attempter Block, set Action on Match to Log only (dry-run) for a week. Watch the matches under Tools > Logs. If they’re all real attackers, flip to Block. If you see legitimate donors, raise the threshold or lookback window first.
  • Privacy Mode trade-off. Hash IP Addresses makes Attack Records GDPR-friendlier but disables one-click blacklist-add. If you don’t blacklist by IP anyway, leave it on.
  • Quick Protection is one click. If you’re not sure where to start, hit Apply Recommended Settings on the DonationGuard panel — it enables Honeypot, Time Trap, and Rate Limiting in one shot.
  • An open attack record is more useful than a closed one. Don’t dismiss-as-false-positive in the heat of an incident. Leave it open until the burst is over so you can drill in, gather IP/email patterns, and only then make calls about whether it was real.
  • The ‘All Clear’ email is the calmest signal. Watching active incidents tick down to closed is more reassuring than tracking ongoing alerts. Turn this on.

Developer reference

Almacenamiento

WhereWhat
Post type charitable_bot_atkEach attack record is a post of this type. Statuses are publish (open), cb_bot_closed, cb_bot_dismissed.
Post meta _charitable_bot_attack_severityNumeric severity score (0.0 — 1.0+) for an attack at peak.
Post meta _charitable_bot_attack_severity_tierString: warning or critical.
Post meta _charitable_bot_attack_signals_at_peakJSON snapshot of the five signal values at the moment severity peaked.
Post meta _charitable_bot_attack_donation_idsJSON array of donation post IDs flagged by this attack.
Option charitable_bot_protection_settingsInternal mirror of the DonationGuard settings that the detector hot path reads directly (no setting round-trip to charitable_settings).

Acciones

AcciónWhen it fires
charitable_bot_attack_openedA new attack record is opened. Receives $post_id, $tier.
charitable_bot_attack_escalatedAn existing record’s tier changes upward (warning → critical). Receives $post_id, $previous_tier, $new_tier.
charitable_bot_attack_closedA record is auto-closed because activity died down. Receives $post_id, $reason.

Signal extension

The five built-in signals live in includes/pro/bot-protection/class-charitable-bot-signal-*.php. Each implements a common interface (compute a deviation factor for the current submission). Add a custom signal by extending Charitable_Bot_Signal_Abstract and registering it through the charitable_bot_signals filter — your signal will be evaluated on every submission and rolled into the scorer alongside the built-ins.

Custom error messages

The Repeat-Attempter Block error message is filterable per donor — useful if you want different copy for different campaigns:

add_filter( 'charitable_bot_repeat_attempter_block_message', function( $message, $email, $campaign_id ) {
    if ( $campaign_id === 123 ) {
        return 'Your donation could not be processed. Please contact our support team.';
    }
    return $message;
}, 10, 3 );

Customization examples

Disable DonationGuard alerts entirely (keep detection, suppress emails):

add_filter( 'charitable_bot_attack_should_send_alert', '__return_false' );

Lower the open-record severity threshold (more sensitive — open records on lower-score events):

add_filter( 'charitable_bot_scorer_open_threshold', function( $threshold ) {
    return 0.5; // Default is around 0.6.
} );

Auto-dismiss attacks below a score:

add_action( 'charitable_bot_attack_opened', function( $post_id, $tier ) {
    $score = (float) get_post_meta( $post_id, '_charitable_bot_attack_severity', true );
    if ( $score < 0.65 ) {
        wp_update_post( array( 'ID' => $post_id, 'post_status' => 'cb_bot_dismissed' ) );
    }
}, 10, 2 );

Route critical alerts to a Slack webhook:

add_action( 'charitable_bot_attack_opened', function( $post_id, $tier ) {
    if ( 'critical' !== $tier ) {
        return;
    }
    $score = get_post_meta( $post_id, '_charitable_bot_attack_severity', true );
    wp_remote_post( SLACK_WEBHOOK_URL, array(
        'body' => json_encode( array(
            'text' => sprintf( 'DonationGuard: CRITICAL attack opened (#%d, score %.2f)', $post_id, $score ),
        ) ),
    ) );
}, 10, 2 );

Relacionado


¿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!

💂‍♂️ New DonationGuard 🛡️ Automatically Protects Your Donations!

Worried about card testing attacks or spam bots flooding your donation forms, but don’t want to ruin the giving experience for your real supporters? Charitable’s DonationGuard features:

🛡️ Real-Time Bot Detection: Actively monitors every donation submission for five distinct attack signals without slowing down your human donors.

📊 Smart Traffic Scoring: Instantly evaluates activity against a learned baseline of your site’s normal donation rhythms to catch sneaky, slow-drip card testing.

🚨 Severity-Tiered Alerts: Immediately opens structured “Attack Records” and notifies you via email and admin alerts the moment a campaign starts taking fire.

🎯 Single-Click Defense: Deploy instant security using the “Recommended Settings” preset to turn on Honeypot, Time Trap, and Rate Limit modules all at once.

🚫 Automated Blocklists: Permanently stop repeat offenders by automatically blocking suspicious email addresses based on your customized rules.

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

GiveWP Migraciones Nuevo

🧤 White Glove Migration Service for 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.