Hook for Auto-Renew Payment being made

Is there a hook for when an Auto-Renew Payment is actually made? In our current case, it would be from PayPal when PayPal charges the member for another term. I assume this would be triggered via an IPN when the card is charged for the auto-renew.

personally I’d try looking at the hooks in turn. If you can ssh into the server you can find all the hooks by going to the wp-content/plugins folder and running

grep -ER _paypal_notify_ s2member* |sort|grep do_action|less

which for me produces

grep -ER _paypal_notify_ s2member* |sort|grep do_action
s2member/src/includes/classes/paypal-notify-in-billing-agreement-signup.inc.php:                                                                do_action("ws_plugin__s2member_during_paypal_notify_after_billing_agreement_signup", get_defined_vars ());
s2member/src/includes/classes/paypal-notify-in-billing-agreement-signup.inc.php:                                                                do_action("ws_plugin__s2member_during_paypal_notify_before_billing_agreement_signup", get_defined_vars ());
s2member/src/includes/classes/paypal-notify-in-billing-agreement-signup.inc.php:                                                                                do_action("ws_plugin__s2member_during_paypal_notify_during_billing_agreement_signup", get_defined_vars ());
s2member/src/includes/classes/paypal-notify-in-cart.inc.php:                                                            do_action("ws_plugin__s2member_during_paypal_notify_after_cart", get_defined_vars ());
s2member/src/includes/classes/paypal-notify-in-cart.inc.php:                                                            do_action("ws_plugin__s2member_during_paypal_notify_before_cart", get_defined_vars ());
s2member/src/includes/classes/paypal-notify-in-cart.inc.php:                                                                            do_action("ws_plugin__s2member_during_paypal_notify_during_cart", get_defined_vars ());
s2member/src/includes/classes/paypal-notify-in-express-checkout.inc.php:                                                                do_action("ws_plugin__s2member_during_paypal_notify_after_express_checkout", get_defined_vars ());
s2member/src/includes/classes/paypal-notify-in-express-checkout.inc.php:                                                                do_action("ws_plugin__s2member_during_paypal_notify_before_express_checkout", get_defined_vars ());
s2member/src/includes/classes/paypal-notify-in-express-checkout.inc.php:                                                                                do_action("ws_plugin__s2member_during_paypal_notify_during_express_checkout", get_defined_vars ());
s2member/src/includes/classes/paypal-notify-in-rec-profile-creation-w-level.inc.php:                                                            do_action("ws_plugin__s2member_during_paypal_notify_after_recurring_payment_profile_created", get_defined_vars ());
s2member/src/includes/classes/paypal-notify-in-rec-profile-creation-w-level.inc.php:                                                            do_action("ws_plugin__s2member_during_paypal_notify_before_recurring_payment_profile_created", get_defined_vars ());
s2member/src/includes/classes/paypal-notify-in-rec-profile-creation-w-level.inc.php:                                                                            do_action("ws_plugin__s2member_during_paypal_notify_during_recurring_payment_profile_created", get_defined_vars ());
s2member/src/includes/classes/paypal-notify-in-send-money.inc.php:                                                              do_action("ws_plugin__s2member_during_paypal_notify_after_send_money", get_defined_vars ());
s2member/src/includes/classes/paypal-notify-in-send-money.inc.php:                                                              do_action("ws_plugin__s2member_during_paypal_notify_before_send_money", get_defined_vars ());
s2member/src/includes/classes/paypal-notify-in-send-money.inc.php:                                                                              do_action("ws_plugin__s2member_during_paypal_notify_during_send_money", get_defined_vars ());
s2member/src/includes/classes/paypal-notify-in-sp-refund-reversal.inc.php:                              do_action('ws_plugin__s2member_during_paypal_notify_after_sp_refund_reversal', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-sp-refund-reversal.inc.php:                              do_action('ws_plugin__s2member_during_paypal_notify_before_sp_refund_reversal', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-sp-refund-reversal.inc.php:                                      do_action('ws_plugin__s2member_during_paypal_notify_during_sp_refund_reversal', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-subscr-modify-w-level.inc.php:                           do_action('ws_plugin__s2member_during_paypal_notify_after_subscr_modify', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-subscr-modify-w-level.inc.php:                           do_action('ws_plugin__s2member_during_paypal_notify_before_subscr_modify', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-subscr-modify-w-level.inc.php:                                                   do_action('ws_plugin__s2member_during_paypal_notify_during_before_subscr_modify', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-subscr-modify-w-level.inc.php:                                                   do_action('ws_plugin__s2member_during_paypal_notify_during_subscr_modify', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-subscr-or-rp-cancellation-w-level.inc.php:                                                               do_action("ws_plugin__s2member_during_paypal_notify_after_subscr_cancel", get_defined_vars ());
s2member/src/includes/classes/paypal-notify-in-subscr-or-rp-cancellation-w-level.inc.php:                                                               do_action("ws_plugin__s2member_during_paypal_notify_before_subscr_cancel", get_defined_vars ());
s2member/src/includes/classes/paypal-notify-in-subscr-or-rp-cancellation-w-level.inc.php:                                                                                                                               do_action("ws_plugin__s2member_during_paypal_notify_during_subscr_cancel", get_defined_vars ());
s2member/src/includes/classes/paypal-notify-in-subscr-or-rp-eots-w-level.inc.php:                               do_action('ws_plugin__s2member_during_paypal_notify_after_subscr_eot', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-subscr-or-rp-eots-w-level.inc.php:                               do_action('ws_plugin__s2member_during_paypal_notify_before_subscr_eot', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-subscr-or-rp-eots-w-level.inc.php:                                                                               do_action('ws_plugin__s2member_during_paypal_notify_during_subscr_eot_before_delete', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-subscr-or-rp-eots-w-level.inc.php:                                                                               do_action('ws_plugin__s2member_during_paypal_notify_during_subscr_eot_before_demote', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-subscr-or-rp-eots-w-level.inc.php:                                                               do_action('ws_plugin__s2member_during_paypal_notify_during_subscr_eot_delayed', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-subscr-or-rp-eots-w-level.inc.php:                                                                               do_action('ws_plugin__s2member_during_paypal_notify_during_subscr_eot_delete', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-subscr-or-rp-eots-w-level.inc.php:                                                                               do_action('ws_plugin__s2member_during_paypal_notify_during_subscr_eot_demote', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-subscr-or-rp-eots-w-level.inc.php:                                                                       do_action('ws_plugin__s2member_during_paypal_notify_during_subscr_eot_disabled', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-subscr-or-rp-eots-w-level.inc.php:                                                                       do_action('ws_plugin__s2member_during_paypal_notify_during_subscr_eot', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-subscr-or-rp-eots-w-level.inc.php:                                               do_action('ws_plugin__s2member_during_paypal_notify_during_subscr_eot_refund_reversal', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-subscr-or-rp-payment-failed-w-level.inc.php:                                                             do_action("ws_plugin__s2member_during_paypal_notify_after_subscr_failed", get_defined_vars ());
s2member/src/includes/classes/paypal-notify-in-subscr-or-rp-payment-failed-w-level.inc.php:                                                             do_action("ws_plugin__s2member_during_paypal_notify_before_subscr_failed", get_defined_vars ());
s2member/src/includes/classes/paypal-notify-in-subscr-or-rp-payment-failed-w-level.inc.php:                                                                             do_action("ws_plugin__s2member_during_paypal_notify_during_subscr_failed", get_defined_vars ());
s2member/src/includes/classes/paypal-notify-in-subscr-or-rp-payment-w-level.inc.php:                            do_action('ws_plugin__s2member_during_paypal_notify_after_subscr_payment', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-subscr-or-rp-payment-w-level.inc.php:                            do_action('ws_plugin__s2member_during_paypal_notify_before_subscr_payment', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-subscr-or-rp-payment-w-level.inc.php:                                            do_action('ws_plugin__s2member_during_paypal_notify_during_subscr_payment', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-subscr-or-wa-w-level.inc.php:                            do_action('ws_plugin__s2member_during_paypal_notify_after_subscr_signup', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-subscr-or-wa-w-level.inc.php:                                            do_action('ws_plugin__s2member_during_paypal_notify_after_subscr_signup_wo_update_vars', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-subscr-or-wa-w-level.inc.php:                                            do_action('ws_plugin__s2member_during_paypal_notify_after_subscr_signup_w_update_vars', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-subscr-or-wa-w-level.inc.php:                            do_action('ws_plugin__s2member_during_paypal_notify_before_subscr_signup', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-subscr-or-wa-w-level.inc.php:                                            do_action('ws_plugin__s2member_during_paypal_notify_before_subscr_signup_wo_update_vars', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-subscr-or-wa-w-level.inc.php:                                            do_action('ws_plugin__s2member_during_paypal_notify_before_subscr_signup_w_update_vars', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-subscr-or-wa-w-level.inc.php:                                                            do_action('ws_plugin__s2member_during_paypal_notify_during_before_subscr_signup_w_update_vars', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-subscr-or-wa-w-level.inc.php:                                            do_action('ws_plugin__s2member_during_paypal_notify_during_subscr_or_wa_payment', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-subscr-or-wa-w-level.inc.php:                                                    do_action('ws_plugin__s2member_during_paypal_notify_during_subscr_signup_wo_update_vars', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-subscr-or-wa-w-level.inc.php:                                                            do_action('ws_plugin__s2member_during_paypal_notify_during_subscr_signup_w_update_vars', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-virtual-terminal.inc.php:                                                                do_action("ws_plugin__s2member_during_paypal_notify_after_virtual_terminal", get_defined_vars ());
s2member/src/includes/classes/paypal-notify-in-virtual-terminal.inc.php:                                                                do_action("ws_plugin__s2member_during_paypal_notify_before_virtual_terminal", get_defined_vars ());
s2member/src/includes/classes/paypal-notify-in-virtual-terminal.inc.php:                                                                                do_action("ws_plugin__s2member_during_paypal_notify_during_virtual_terminal", get_defined_vars ());
s2member/src/includes/classes/paypal-notify-in-wa-ccaps-wo-level.inc.php:                               do_action('ws_plugin__s2member_during_paypal_notify_after_new_ccaps', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-wa-ccaps-wo-level.inc.php:                               do_action('ws_plugin__s2member_during_paypal_notify_before_new_ccaps', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-wa-ccaps-wo-level.inc.php:                                                               do_action('ws_plugin__s2member_during_paypal_notify_during_before_new_ccaps', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-wa-ccaps-wo-level.inc.php:                                                               do_action('ws_plugin__s2member_during_paypal_notify_during_new_ccaps', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-web-accept-sp.inc.php:                           do_action('ws_plugin__s2member_during_paypal_notify_after_sp_access', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-web-accept-sp.inc.php:                           do_action('ws_plugin__s2member_during_paypal_notify_before_sp_access', get_defined_vars());
s2member/src/includes/classes/paypal-notify-in-web-accept-sp.inc.php:                                           do_action('ws_plugin__s2member_during_paypal_notify_during_sp_access', get_defined_vars());

Then I’d examin each file in turn looking for the one you need.

FYI the individual files listed above are

s2member/src/includes/classes/paypal-notify-in-billing-agreement-signup.inc.php:
s2member/src/includes/classes/paypal-notify-in-cart.inc.php:
s2member/src/includes/classes/paypal-notify-in-express-checkout.inc.php:
s2member/src/includes/classes/paypal-notify-in-rec-profile-creation-w-level.inc.php:
s2member/src/includes/classes/paypal-notify-in-send-money.inc.php:
s2member/src/includes/classes/paypal-notify-in-sp-refund-reversal.inc.php:
s2member/src/includes/classes/paypal-notify-in-subscr-modify-w-level.inc.php:
s2member/src/includes/classes/paypal-notify-in-subscr-or-rp-cancellation-w-level.inc.php:
s2member/src/includes/classes/paypal-notify-in-subscr-or-rp-eots-w-level.inc.php:
s2member/src/includes/classes/paypal-notify-in-subscr-or-rp-payment-failed-w-level.inc.php
s2member/src/includes/classes/paypal-notify-in-subscr-or-rp-payment-w-level.inc.php:
s2member/src/includes/classes/paypal-notify-in-subscr-or-wa-w-level.inc.php:
s2member/src/includes/classes/paypal-notify-in-virtual-terminal.inc.php:
s2member/src/includes/classes/paypal-notify-in-wa-ccaps-wo-level.inc.php:
s2member/src/includes/classes/paypal-notify-in-web-accept-sp.inc.php:
1 Like

Thanks, but I have already grepped the actual hook, I am just hoping someone has experience that can narrow it down to one or a few hooks and the essential data fields.

1 Like

if you find the hook you need please do post a quick update here for future readers.

HNY2026!

                  🎈

Sonja, would the payment notification work for you in this case? Wp Admin > s2Member > API / Notifications > Payment

Around that notification’s code, there’s the ws_plugin__s2member_during_paypal_notify_during_subscr_payment action hook in src/includes/classes/paypal-notify-in-subscr-or-rp-payment-w-level.inc.php.

See also ws_plugin__s2member_during_paypal_notify_during_subscr_or_wa_payment in src/includes/classes/paypal-notify-in-subscr-or-wa-w-level.inc.php.

:slight_smile:

Possibly. I am coding a test. Will let you know.

2 Likes