Documentation Charitable

Apprenez à tirer le meilleur parti de Charitable grâce à des instructions claires, étape par étape.

Changing Recurring Donation Amounts and Billing Periods

Prérequis :

  • Charitable Pro 1.8.16+
  • Charitable Recurring Donations 2.1.0+

A donor’s situation changes. Maybe next month is tight and they want to drop their $50 monthly gift to $25, or a matching grant came through and they’d like to bump up their annual donation. Before Charitable Recurring 2.1, the only way to handle that was to cancel the subscription and ask the donor to start a new one, which loses the payment history and risks the gift never coming back.

Now you can update an active recurring donation’s amount and billing period directly from your WordPress admin, and the change syncs to Stripe automatically. The same subscription stays in place, so the payment history is preserved and the donor keeps their original start date.

You can apply a change immediately, or send the donor a secure approval link first. Every change is written to your audit log, and changes you make in the Stripe Dashboard sync back to Charitable on their own.

The Recurring Donation edit screen with the Update Subscription action selected in the Donation Actions box

Quand l'utiliser

  • A donor asks to change their amount – update it in seconds instead of cancel-and-resubscribe.
  • A donor wants to switch from monthly to annual (or any other period) – change the billing period in place.
  • A change needs the donor’s sign-off – send an approval email and let the donor confirm before anything happens at Stripe.
  • Someone edited the subscription in the Stripe Dashboard – Charitable picks up the new amount and period automatically.
  • You need a record of who changed what – every update lands in Charitable’s logs with the old value, new value, and who made it.

Où le trouver

Open the recurring donation you want to change:

WordPress Admin > Donations > Recurring Donations > (click the donation)

In the Donation Actions box on the right, choose Update Subscription from the dropdown, then click the Update Subscription button.

The donation must use the Stripe gateway and be in Active status. Paused, cancelled, completed, and pending subscriptions can’t be edited, which keeps the donor from being surprised by an unexpected charge.

Updating a subscription

The Update Subscription window shows the current subscription at the top, then the fields you can change.

The Update Subscription window showing the current subscription, New Amount field, New Billing Period dropdown, update mode options, and donor notification checkbox

1. Set the new amount and/or period

  • New Amount – enter any value from 1.00 up to (in theory) 999999.99. Leave it unchanged to keep the current amount.
  • New Billing Period – choose from daily, weekly, monthly, quarterly, semiannually, or yearly. Leave it on the current period to keep it.

You can change one or both. The change takes effect on the donor’s next billing date; their current cycle finishes normally, and no proration is applied.

2. Choose how the change is applied

  • Apply immediately – the change is sent to Stripe right away.
  • Request donor approval – a pending change is stored and the donor receives an email with secure approve and deny links. Nothing changes at Stripe until they approve.

3. Decide whether to notify the donor

The Notify donor of this change checkbox is on by default. When checked, the donor receives a “Subscription Updated” email with the old and new amount or period. Uncheck it for back-office adjustments the donor doesn’t need to hear about.

When you click Update Subscription, you’ll see a success message and the donation total updates on the page.

The donor approval workflow

When you choose Request donor approval, the donor gets an email with two links: one to approve the change and one to deny it.

The donor approval email with Approve and Deny buttons

A few things worth knowing about how the approval links work:

  • Secure and donation-specific. Each link carries a signed token tied to that exact donation. A link for one donation can’t be used on another.
  • They expire. Approval links are valid for 7 days. After that, the link stops working and you’d need to re-issue the request.
  • One use only. Once the donor approves or denies, the link is spent. Clicking it again does nothing.
  • A new request replaces an old one. If you issue a second change while one is still pending, the newer request supersedes the older one and the old link stops working.

If the donor clicks Approve, the change is pushed to Stripe and the donation updates. If they click Deny, the subscription stays exactly as it was and the pending change is cleared.

Changes made in the Stripe Dashboard

If you (or a teammate) edit a subscription’s amount or billing period directly in the Stripe Dashboard, Charitable notices and updates the local donation to match. This happens through the Stripe webhook you already have configured, so there’s nothing extra to set up. It means the donation record in WordPress stays accurate no matter where the edit was made.

Reading the audit log

Every subscription change is recorded in your Charitable logs, whether it came from an admin update, a donor approval, or the Stripe Dashboard.

WordPress Admin > Charitable > Tools > Logs

The Charitable Tools Logs screen showing subscription update entries with old and new values

Each entry records the old value, the new value, who made the change, and when. You can filter by donation ID to see the full history of a single subscription.

The donor notification email

By default, donors receive a “Subscription Updated” email after a successful change, laying out what changed. You can customize or disable it from:

WordPress Admin > Charitable > Settings > Emails

The Charitable Emails settings showing the Subscription Updated and Subscription Change Request emails

Two emails relate to this feature:

  • Subscription Updated – sent to the donor after a change is applied. On by default.
  • Subscription Change Request – the approval-request email, sent when you choose “Request donor approval.”

Click either email to edit its subject, headline, and body, or to turn it off.

Conseils

  • Use Request donor approval for any change a donor didn’t explicitly ask for, so they always have the final say.
  • The donation’s Active status is required. If the Update Subscription option is missing or disabled, check the subscription status first.
  • Changes take effect on the next billing cycle, not immediately, so the donor is never double-charged in the current period.

Référence du développeur

The full update path is built on hooks, so you can intercept, extend, or react to subscription changes.

Filtres

FiltreDéfautObjectif
charitable_process_subscription_update_stripearray( 'success' => false, 'message' => ... )Implemented by Charitable Pro 1.8.16+. Receives the recurring donation and the proposed changes, pushes them to Stripe, and returns a result array. Both the admin update endpoint and the donor approval handler call it.
charitable_recurring_confirmation_page_colorsbrand colorsColors for the donor-facing approve/deny confirmation page.
charitable_recurring_confirmation_page_headingper-action headingThe heading shown on the confirmation page.
charitable_recurring_confirmation_page_messageper-action messageThe body message on the confirmation page.
charitable_recurring_confirmation_page_buttonreturn-home buttonThe button shown on the confirmation page.
charitable_recurring_confirmation_page_htmlemptyReturn custom HTML to replace the entire confirmation page.

Actions

ActionArgumentsWhen it fires
charitable_recurring_subscription_updated$donation, $changes, $old_valuesAfter a successful update. Triggers the “Subscription Updated” donor email when that email is enabled.
charitable_recurring_subscription_change_requested$donation, $pending_data, $raw_tokenWhen an admin requests donor approval. Triggers the approval-request email.
charitable_stripe_subscription_details_changed$subscription, $stripe_objectFired by Pro’s webhook processor on a Stripe customer.subscription.updated event. The reverse-sync listener reads the new amount and period off the Stripe object.

Helper functions and classes

  • charitable_recurring_update_local_subscription( $donation, $changes ) – updates local meta only. Handles single-campaign and multi-campaign proportional distribution of a new amount.
  • Charitable_Recurring_Subscription_Change_Handler::process_approval() – handles the donor’s approve click (?donation_id=X&token=Y&action=approve).
  • Charitable_Recurring_Subscription_Change_Handler::process_denial() – handles the deny path.
  • Charitable_Recurring_Subscription_Change_Handler::cleanup_expired_pending_changes() – removes expired pending-change records (runs on a scheduled event).
  • Charitable_Gateway_Stripe_AM::$period_map – static array mapping each Charitable period to a Stripe interval and interval_count.
  • Charitable_Gateway_Stripe_AM::update_subscription( $result, $donation, $changes ) – the method behind the filter; mints a Stripe Plan for the new args and swaps the subscription’s item to it with proration disabled.

Period mapping

The amount and period you set map to Stripe’s billing model like this:

Charitable periodStripe intervalinterval_count
dayday1
weekweek1
monthmonth1
quartermonth3
semiannualmonth6
yearyear1

Approval token

The approval link uses an HMAC-SHA256 token bound to the donation ID, the time the change was proposed, and a one-time 32-character secret. Tokens expire after 7 days. A repeated-attempt counter is stored in the charitable_sub_token_attempts_{donation_id} transient, and the pending-change record is deleted on approve or deny so a link can’t be replayed.

Exemples de personnalisation

Add a custom log line whenever a subscription is updated:

add_action( 'charitable_recurring_subscription_updated', function ( $donation, $changes, $old_values ) {
    error_log( sprintf(
        'Subscription #%d updated: %s',
        $donation->ID,
        wp_json_encode( $changes )
    ) );
}, 10, 3 );

Notify your team in Slack when a donor approval is requested:

add_action( 'charitable_recurring_subscription_change_requested', function ( $donation, $pending_data, $raw_token ) {
    my_slack_notify( sprintf(
        'Approval requested for recurring donation #%d',
        $donation->ID
    ) );
}, 10, 3 );

Brand the donor confirmation page:

add_filter( 'charitable_recurring_confirmation_page_colors', function ( $colors ) {
    $colors['primary'] = '#16a34a';
    return $colors;
} );

Connexes

Vous avez encore des questions ? Nous sommes là pour vous aider !

Dernière modification :

Quoi de neuf dans Charitable

Voir les dernières mises à jour
🔔 Abonnez-vous pour recevoir nos dernières mises à jour
📧 Abonnez-vous aux e-mails

Abonnement par e-mail

Rejoignez notre newsletter

Nous ne vous enverrons pas de spam. Nous envoyons un e-mail uniquement lorsque nous pensons qu'il vous sera réellement utile. Désabonnez-vous à tout moment !

Nouveau Paiements

⚡ Unlock India-Based Donations: Meet Charitable’s Native Razorpay Integration

Trying to collect donations in India? Charitable’s native Razorpay integration features:

⚡ Instant UPI Integration: Accept fast, local donations directly inside your form via apps like PhonePe, Google Pay, Paytm, and BHIM without sending donors away from your site.

📲 Auto-Generated Campaign QRs: Instantly render scannable QR codes encoding a UPI deep link directly on your public campaign pages and sidebars for an effortless “scan-to-give” experience.

💰 Dual Local & Global Reach: Headline your campaigns in INR while seamlessly accepting major international currencies like USD, EUR, GBP, and CAD to maximize global support.

🔁 Seamless Recurring Giving: Fully integrates with the Charitable Recurring addon to manage automatic monthly subscriptions directly through Razorpay without extra code.

↩️ Automatic Two-Way Sync: Keep your books perfectly clean with two-way refund syncing—issue a refund inside WordPress or your Razorpay dashboard and both sides update automatically.

🔒 Webhook-Verified Security: Automatically protect your donation records using HMAC-signed webhook verification to ensure every status update represents real money cleared on the rails.

Visitez cette page pour en savoir plus.

Intégration Nouveau

🎉 New Built-in PushEngage Integration

Struggling with falling email open rates and rising ad costs just to keep your supporters engaged? Charitable’s built-in PushEngage integration features:

🔔 Zero-Fee Direct Messaging: Deliver crisp, instant pop-up notifications straight to your donors’ desktops and mobile devices.

⏱️ Four Smart Automated Triggers: Automatically send updates for immediate donation thank yous, full-list campaign launches, urgent “ending soon” alerts, and goal milestone celebrations.

📈 Group Momentum Broadcasts: Turn private milestones into public wins by automatically broadcasting alerts to your entire subscriber list the moment a campaign hits 50%, 75%, or 100% of its goal.

📊 Automatic Analytics Tracking: Monitor exactly where your incoming notification traffic is coming from with built-in attribution that requires zero complex configuration.

Visitez cette page pour en savoir plus.

Nouveau Sécurité

💂‍♂️ DonationGuard nouveau 🛡️ Protège automatiquement vos dons !

Vous craignez les attaques de test de cartes ou les bots de spam qui inondent vos formulaires de don, mais vous ne voulez pas gâcher l'expérience de don pour vos vrais supporters ? Les fonctionnalités DonationGuard de Charitable :

🛡️ Détection de bots en temps réel : surveille activement chaque soumission de don pour cinq signaux d'attaque distincts sans ralentir vos donateurs humains.

📊 Score de trafic intelligent : évalue instantanément l'activité par rapport à une base de référence apprise des rythmes de don normaux de votre site pour détecter les tests de cartes sournois et lents.

🚨 Alertes par niveaux de gravité : ouvre immédiatement des « enregistrements d'attaques » structurés et vous informe par e-mail et alertes d'administration dès qu'une campagne commence à être attaquée.

🎯 Défense en un clic : déployez une sécurité instantanée en utilisant le préréglage « Paramètres recommandés » pour activer simultanément les modules Honeypot, Time Trap et Rate Limit.

🚫 Listes de blocage automatisées : arrêtez définitivement les récidivistes en bloquant automatiquement les adresses e-mail suspectes en fonction de vos règles personnalisées.

Visitez cette page pour en savoir plus.

GiveWP Migrations Nouveau

🧤 Service de migration White Glove pour GiveWP

Vous envisagez de passer de GiveWP à Charitable pour votre plateforme de collecte de fonds, mais vous ne voulez pas risquer de perdre vos données ni gérer vous-même une configuration technique complexe ? Le service de migration "White Glove" de Charitable comprend :

👥 Cartographie parfaite des donateurs : transférez en toute sécurité toute votre base de données de supporters sans aucune perte de données.

📊 Historique financier complet : préservez méticuleusement chaque transaction historique pour des rapports continus et précis.

🔄 Dons récurrents transparents : transférez en toute sécurité les abonnements récurrents actifs sans perturber vos revenus entrants ni obliger vos donateurs à mettre à jour leurs informations.

💳 Aucune interruption de passerelle : continuez à utiliser Stripe, PayPal ou tout autre processeur compatible avec GiveWP que vous utilisez déjà.

🚀 Configuration technique experte : détendez-vous pendant que notre équipe s'occupe du travail le plus difficile pour installer et configurer vos formulaires — de plus, les utilisateurs éligibles reçoivent une année complète de Charitable Pro gratuitement.

Visitez cette page pour en savoir plus.

automatisation Amélioration

📢 Alerte nouvelle fonctionnalité : Automation Connect 2.0 est là ! 🚀

Vous envisagez de connecter vos données de collecte de fonds à des outils comme Mailchimp, Slack ou Google Sheets, mais vous ne voulez pas engager un développeur ou écrire du code personnalisé ? Le nouvel add-on d'automatisation de Charitable propose :

⚡ 17 déclencheurs d'événements : déclenchez instantanément des webhooks pour le premier don d'un donateur, les paiements de renouvellement ou les étapes importantes de la campagne atteintes.

🎯 Logique conditionnelle intelligente : utilisez une logique ET/OU puissante sur 11 champs pour n'envoyer des données que lorsqu'elles répondent à vos critères exacts, comme les inscriptions à la newsletter.

📊 Contrôle personnalisé de la charge utile : choisissez parmi plus de 80 champs de données propres sur les métadonnées du donateur, du don et de la campagne afin que vos applications obtiennent exactement ce dont elles ont besoin.

🚀 Modèles de plateforme pré-intégrés : évitez la configuration à partir de zéro avec des modèles prêts à l'emploi pour Zapier, Make.com, n8n, HubSpot et Slack.

🛡️ Outils de développement fiables : alimentez vos flux de travail avec des charges utiles signées HMAC-SHA256, des filtres WordPress complets et des journaux de nouvelles tentatives automatiques.