---
title: Hooks
description: "## Magic Login – Action Hooks | Hook Name | Summary | Since | File | Parameters | | --- | --- | --- | --- | --- | | `magic_login_form` | Fires following the 'email' field in the login…"
url: "https://handyplugins.co/docs/magic-login-hooks-doc/"
updated: "2025-05-10"
category: Magic Login Pro
---

# Hooks

## Magic Login – Action Hooks

| Hook Name | Summary | Since | File | Parameters |
| --- | --- | --- | --- | --- |
| `magic_login_form` | Fires following the 'email' field in the login form. | 1.0 | `./includes/shortcode.php` | *None* |
| `magic_login_pro_updated` | Fires after plugin update. | 2.1 | `./includes/classes/Install.php` | *None* |
| `magic_login_invalid_code` | Fires when the code login is invalid | 2.4 | `./includes/classes/CodeLogin.php` | *None* |
| `magic_login_code_login` | Apply login action | 2.4 | `./includes/classes/CodeLogin.php` | *None* |
| `magic_login_code_form` | Fires following the 'code' field in the login form. | 2.4 | `./includes/classes/CodeLogin.php` | *None* |
| `magic_login_send_login_sms` | Send login SMS | 2.4 | `./includes/classes/SmsService.php` | `$user_id` *int* – User ID |
| `magic_login_settings_imported` | Action after settings are imported. | 2.5 | `./includes/classes/Tools.php` | `$imported` *array* – The imported settings array. |
| `magic_login_fluent_crm_before_create_login_link` | Fires before creating Magic Login link for FluentCRM subscriber. | 2.4 | `./includes/classes/Integrations/FluentCRM.php` | `$user` *object* – WP_User object.`$subscriber->email` *mixed* – - |
| `magic_login_before_woocommerce_login_form` | Fires before the WooCommerce login form. | 2.4 | `./includes/classes/Integrations/WooCommerce.php` | *None* |
| `magic_login_after_woocommerce_login_form` | Fires after the WooCommerce login form. | 2.4 | `./includes/classes/Integrations/WooCommerce.php` | *None* |
| `magic_login_handle_login_request` | Fires before handling the login request | - | `./includes/classes/LoginManager.php` | *None* |
| `magic_login_invalid_user` | Fires when the user is not found. | - | `./includes/classes/LoginManager.php` | *None* |
| `magic_login_invalid_token` | Fires when the token is invalid. | - | `./includes/classes/LoginManager.php` | *None* |
| `magic_login_before_login` | Fires before the user is logged in. | - | `./includes/classes/LoginManager.php` | `$user` *\WP_User* – The WP_User object.`$current_token` *array* – The current token data. |
| `magic_login_logged_in` | Fires after the user is logged in. | - | `./includes/classes/LoginManager.php` | `$user` *\WP_User* – The WP_User object.`$current_token` *array* – The current token data. |
| `wp_login` | Fires after the user is logged in as standard WordPress action. | - | `./includes/classes/LoginManager.php` | `$user->user_login` *mixed* – -`$user` *\WP_User* – The WP_User object. |
| `magic_login_form` | Fires following the 'email' field in the login form. | 1.0 | `./includes/classes/LoginManager.php` | *None* |
| `magic_login_send_login_link` | Fires before sending the login link email. | - | `./includes/classes/LoginManager.php` | `$user` *\WP_User* – The user object. |
| `post_paddlepress_plugin_updater_setup` | Fires after the $paddlepress_plugin_data is setup. | 1.0 | `./includes/classes/Updater.php` | `$paddlepress_plugin_data` *array* – Array of plugin data. |
| `in_plugin_update_message-{$file}` | show update nofication row -- needed for multisite subsites, because WP won't tell you otherwise! | - | `./includes/classes/Updater.php` | `$plugin` *array* – An array of plugin data.`$version_info` *mixed* – - |
| `magic_login_registration_form_start` | Fires at the start of the registration form | 2.2 | `./includes/classes/Registration.php` | *None* |
| `magic_login_registration_form_middle` | Fires in the middle of the registration form | 2.2 | `./includes/classes/Registration.php` | *None* |
| `magic_login_registration_form_before_submit` | Fires before the submit button in the registration form | 2.2 | `./includes/classes/Registration.php` | *None* |
| `magic_login_registration_before_process` | Fires before processing the registration form | - | `./includes/classes/Registration.php` | `$is_ajax` *bool* – Is the request AJAX?`$user_data['first_name']` *mixed* – -`$user_data['last_name']` *mixed* – -`$user_data['email']` *mixed* – -`$terms` *bool* – Terms accepted`$user_data[PHONE_NUMBER_META]` *mixed* – - |
| `magic_login_registration_before_user_create` | Fires before user creation | 2.2 | `./includes/classes/Registration.php` | `$userdata` *array* – User data. |
| `magic_login_registration_after_user_create` | Fires after user creation | 2.2 | `./includes/classes/Registration.php` | `$user_id` *int* – User ID.`$userdata` *array* – User data. |
| `magic_login_form` | Fires following the 'log' field in the magic login form. | - | `./includes/block.php` | *None* |
| `magic_login_invalid_ip` | Fires when the IP address is invalid | - | `./includes/security.php` | *None* |
| `magic_login_pro_loaded` | Fire an action after the magic login core is loaded. | - | `./includes/core.php` | *None* |
| `magic_login_pro_init` | Fire an action after the magic login core is initialized. | - | `./includes/core.php` | *None* |

## Magic Login – Filter Hooks

| Hook Name | Summary | Since | File | Parameters |
| --- | --- | --- | --- | --- |
| `magic_login_shortcode_form_action` | Filter the form action URL for the login shortcode. | - | `./includes/shortcode.php` | `''` *mixed* – - |
| `magic_login_pre_process_code_login_request` | Pre process code login request | 2.4 | `./includes/classes/CodeLogin.php` | `null` *mixed* – - |
| `magic_login_pre_code_login` | Pre authenticate code login | 2.4 | `./includes/classes/CodeLogin.php` | `true` *mixed* – -`$user` *object* – User object`$token` *string* – Token |
| `magic_login_get_user_by_phone_number_args` | Filters the arguments used to get the user by phone number | 2.4 | `./includes/classes/SmsService.php` | `[ 'meta_key' => PHONE_NUMBER_META, // phpcs:ignore 'meta_value' => sanitize_phone_number($phone_number), // phpcs:ignore 'number' => 1, ]` *mixed* – -`$phone_number` *string* – Phone number |
| `magic_login_user_phone_number` | Get the user phone number | 2.4 | `./includes/classes/SmsService.php` | `$phone_number` *mixed* – -`$user_id` *int* – User ID |
| `magic_login_sms_login_message` | Filter the SMS login message | 2.4 | `./includes/classes/SmsService.php` | `$message` *string* – SMS login message |
| `magic_login_sms_placeholders` | Filter the SMS placeholders | 2.4 | `./includes/classes/SmsService.php` | `$placeholders` *array* – Placeholders`$user_id` *int* – User ID |
| `magic_login_export_settings` | Filter the export settings. | 2.5 | `./includes/classes/Tools.php` | `$export` *array* – The export settings array. |
| `magic_login_import_settings` | Filter the import settings. | 2.5 | `./includes/classes/Tools.php` | `$imported` *array* – The import settings array. |
| `magic_login_fluent_crm_create_login_link` | Filter the Magic Login link for FluentCRM subscriber. | 2.4 | `./includes/classes/Integrations/FluentCRM.php` | `$login_link` *string* – Magic Login link.`$user` *object* – WP_User object.`$subscriber->email` *mixed* – - |
| `magic_login_edd_title` | Filter the title of the Magic Login form. | - | `./includes/classes/Integrations/EDD.php` | `esc_html__('Quick Login with Magic Link', 'magic-login')` *mixed* – - |
| `magic_login_edd_shortcode` | Filter the shortcode for the Magic Login form. | - | `./includes/classes/Integrations/EDD.php` | `' Please enter your username or email address. You will receive an email message to log in. '` *mixed* – - |
| `magic_login_hide_on_woocommerce_login_form` | Filter the title of the Magic Login form on WooCommerce login form. | - | `./includes/classes/Integrations/WooCommerce.php` | `true` *mixed* – - |
| `magic_login_shortcode_content_on_woocommerce_login_form` | Filter the shortcode content of the Magic Login form on WooCommerce login form. | - | `./includes/classes/Integrations/WooCommerce.php` | `' Please enter your username or email address. You will receive an email message to log in. '` *mixed* – - |
| `magic_login_woo_customer_login_title` | Filter the title of the Magic Login form on WooCommerce My Account page. | - | `./includes/classes/Integrations/WooCommerce.php` | `esc_html__('Quick Login with Magic Link', 'magic-login')` *mixed* – - |
| `magic_login_woo_customer_login_shortcode` | Filter the shortcode for the Magic Login form on WooCommerce My Account page. | - | `./includes/classes/Integrations/WooCommerce.php` | `' Please enter your username or email address. You will receive an email message to log in. '` *mixed* – - |
| `magic_login_replace_magic_link_in_wp_mail` | Filter magic_login_replace_magic_link_in_wp_mail | 2.0.0 | `./includes/classes/LoginManager.php` | `true` *mixed* – -`$atts` *array* – wp_mail args`$user` *\WP_User* – user object |
| `magic_login_replace_magic_link_in_wp_mail_message` | Filter magic login replace | 2.0.0 | `./includes/classes/LoginManager.php` | `$magic_link` *string* – login link`$atts` *array* – wp_mail args |
| `magic_login_replace_magic_login_qr_in_wp_mail_message` | Filter qr image source for wp_mail integration {{MAGIC_LOGIN_QR}} | 2.5 | `./includes/classes/LoginManager.php` | `$qr_src` *string* – qr image source`$magic_link` *string* – magic link`$atts` *array* – wp_mail args`$user` *\WP_User* – user object |
| `magic_login_replace_magic_login_qr_img_in_wp_mail_message` | Filter qr image tag for wp_mail integration {{MAGIC_LOGIN_QR_IMG}} | 2.5 | `./includes/classes/LoginManager.php` | `$qr_img_tag` *string* – qr image tag`$magic_link` *string* – magic link`$atts` *array* – wp_mail args`$user` *\WP_User* – user object |
| `magic_login_add_auto_login_link` | Filter auto login link | 1.6.0 | `./includes/classes/LoginManager.php` | `true` *mixed* – -`$atts` *array* – wp_mail args`$user` *\WP_User* – user object |
| `magic_login_auto_login_link_message` | Filter login message | 1.6 | `./includes/classes/LoginManager.php` | `$login_message` *string* – Appended message for the login`$link` *string* – Login URL`$user` *\WP_User* – User Object |
| `magic_login_auto_login_link_email_message` | Filter email message | 1.6 | `./includes/classes/LoginManager.php` | `$email_message` *string* – Email message`$message` *string* – Email content before appending login link`$login_message` *string* – Login message`$args` *array* – WP Mail args`$link` *string* – Login URL`$user` *\WP_User* – User Object |
| `magic_login_auto_login_excluded_subjects` | Exclude some of the emails Copy emails as is, for covering in translated versions | - | `./includes/classes/LoginManager.php` | `[__('[%s] New Admin Email Address'), __('[%s] Network Admin Email Change Request'), __('[%s] Admin Email Changed'), __('[%s] Notice of Network Admin Email Change'), __('[%s] Login Details'), __('[%s] Password Reset'), __('[%s] Password Changed'), __('[%s] Email Change Request'), __('Your login confirmation code')]` *mixed* – - |
| `magic_login_auto_login_link_excluded` | Filter if auto login link is excluded for given mail | 1.6 | `./includes/classes/LoginManager.php` | `$is_excluded` *bool* – whether the email is excluded or not`$args` *array* – wp_mail args |
| `magic_login_error_message` | Filter the error message | - | `./includes/classes/LoginManager.php` | `$error` *string* – Default error message.`'invalid_user'` *mixed* – - |
| `magic_login_invalid_token_error_message` | Filter the error message for invalid token. | - | `./includes/classes/LoginManager.php` | `$error` *string* – Default error message. |
| `magic_login_error_message` | Filter the error message for invalid token. | - | `./includes/classes/LoginManager.php` | `$error` *string* – Default error message.`'invalid_token'` *mixed* – - |
| `login_redirect` | Filter the redirect URL. | - | `./includes/classes/LoginManager.php` | `$redirect_to` *string* – The redirect URL.`$requested_redirect_to` *string* – The requested redirect URL.`$user` *\WP_User* – The WP_User object. |
| `magic_login_redirect` | Filter the redirect URL for Magic Login. | - | `./includes/classes/LoginManager.php` | `$redirect_to` *string* – The redirect URL.`$user` *\WP_User* – The WP_User object. * * @return string The modified redirect URL. |
| `magic_login_info_message` | Filter the info message | - | `./includes/classes/LoginManager.php` | `$response['info']` *mixed* – -`$args` *array* – Arguments passed to the function. |
| `magic_login_process_login_request_result` | Filter the result of the login process | 2.4 | `./includes/classes/LoginManager.php` | `$response` *array* – Result of the login process`$args` *array* – Arguments passed to the function |
| `magic_login_before_login_form_redirect` | - | - | `./includes/classes/LoginManager.php` | `null` *mixed* – - |
| `magic_login_pre_process_login_request` | Fires before processing the login request | - | `./includes/classes/LoginManager.php` | `null` *mixed* – - |
| `magic_login_pre_send_login_link` | Apply pre-send link filter. Useful for preventing sending the login link. | - | `./includes/classes/LoginManager.php` | `null` *mixed* – -`$user` *\WP_User* – - |
| `magic_login_missing_user_error_message` | Filter the error message when user is missing | 2.4 | `./includes/classes/LoginManager.php` | `$error_message` *mixed* – -`$error_code` *mixed* – -`$args` *mixed* – - |
| `magic_login_email_content` | Filter the email content | - | `./includes/classes/LoginManager.php` | `$login_email` *string* – Email content`$placeholder_values` *array* – Placeholder values |
| `magic_login_email_subject` | Filter the email subject | - | `./includes/classes/LoginManager.php` | `$email_subject` *string* – Email subject`$placeholder_values` *array* – Placeholder values |
| `magic_login_email_headers` | Filter the email headers | - | `./includes/classes/LoginManager.php` | `array('Content-Type: text/html; charset=UTF-8')` *mixed* – - |
| `magic_login_qr_url` | Filter the URL before encoding it into a QR code. | 2.5 | `./includes/classes/QR.php` | `$url` *string* – The URL to encode in the QR code. |
| `magic_login_qr_type` | Filter the type of output (e.g., png or svg). | - | `./includes/classes/QR.php` | `$type` *string* – The type of image to generate ('png' or 'svg'). |
| `magic_login_qr_options` | Filter the options used for QR generation. | 2.5 | `./includes/classes/QR.php` | `[ 'encoding' => new Encoding('UTF-8'), 'eccLevel' => new ErrorCorrectionLevelLow(), 'size' => $scale * 50, // scale = 5 → 250px 'margin' => 10, ]` *mixed* – - |
| `magic_login_qr_image_src` | Filter the final QR image source URL (after encoding). | 2.5 | `./includes/classes/QR.php` | `home_url('/magic-login-qr?url=' . $encoded)` *mixed* – -`$url` *mixed* – - |
| `magic_login_qr_img_args` | Filter the QR code <img> tag attributes before rendering. | 2.5 | `./includes/classes/QR.php` | `$args` *array* – { Arguments for customizing the QR image tag. @type string $class CSS class. @type string $alt Alternative text. @type int $width Image width. }`$url` *string* – The login URL being encoded. |
| `magic_login_qr_mime_type` | Allow filtering the final MIME type. | 2.5 | `./includes/classes/QR.php` | `$mime` *string* – The MIME type of the image.`$type` *string* – The type of image (e.g., 'png', 'svg'). |
| `magic_login_recaptcha_attributes` | Filter the ReCaptcha attributes before rendering. | - | `./includes/classes/ReCaptchaService.php` | `$default_attributes` *array* – Default attributes for the ReCaptcha.`$this->type` *mixed* – - |
| `magic_login_recaptcha_attributes` | Render the ReCaptcha | - | `./includes/classes/ReCaptchaService.php` | `$default_attributes` *mixed* – -`$this->type` *mixed* – - |
| `paddlepress_api_request_verify_ssl` | Returns if the SSL of the store should be verified. | 1.0 | `./includes/classes/Updater.php` | `true` *mixed* – -`$this` *mixed* – - |
| `magic_login_registration_form_shortcode_atts` | Filter registration form attributes | 2.2 | `./includes/classes/Registration.php` | `$atts` *array* – Shortcode attributes |
| `magic_login_registration_form_validation_rules` | Filter validation rules for registration form | 2.2 | `./includes/classes/Registration.php` | `$validation_rules` *array* – Validation rules |
| `magic_login_registration_redirect_url` | Filter registration redirection URL | 2.5 | `./includes/classes/Registration.php` | `$redirect_url` *string* – Redirection URL`$user_id` *int* – User ID`$userdata` *array* – User data |
| `magic_login_registration_success_message` | Filter registration success message | 2.2 | `./includes/classes/Registration.php` | `$success_message` *string* – Success message`$user_id` *int* – User ID`$userdata` *array* – User data |
| `magic_login_registration_allowed_domains` | Filter allowed domains for registration | 2.4 | `./includes/classes/Registration.php` | `$allowed_domains` *array* – Allowed domains |
| `magic_login_registration_user_data` | Filter user data before registration | 2.2 | `./includes/classes/Registration.php` | `$userdata` *array* – User data |
| `magic_login_registration_send_email` | Filter whether to send registration email | 2.2 | `./includes/classes/Registration.php` | `$settings['registration']['send_email']` *mixed* – -`$user_id` *int* – User ID.`$userdata` *array* – User data. |
| `magic_login_registration_email_subject` | Filter registration email subject and content | 2.2 | `./includes/classes/Registration.php` | `$settings['registration']['email_subject']` *mixed* – -`$user_id` *int* – User ID`$userdata` *array* – User data |
| `magic_login_registration_email_content` | Filter registration email content | 2.2 | `./includes/classes/Registration.php` | `$settings['registration']['email_content']` *mixed* – -`$user_id` *int* – User ID`$userdata` *array* – User data |
| `magic_login_email_headers` | Filter email headers | - | `./includes/classes/Registration.php` | `array('Content-Type: text/html; charset=UTF-8')` *mixed* – - |
| `magic_login_registration_is_domain_allowed` | Filter to override domain restriction logic dynamically. | 2.4 | `./includes/classes/Registration.php` | `$is_allowed` *bool* – Whether the email domain is allowed.`$email` *string* – The user's email address.`$allowed_domains` *array* – List of allowed domains. |
| `magic_login_sms_providers` | Filter SMS providers | 2.4 | `./includes/classes/Services/SmsProviderFactory.php` | `['twilio' => TwilioSmsProvider::class]` *mixed* – - |
| `magic_login_twilio_sms_options` | Filter Twilio SMS options | 2.4.2 | `./includes/classes/Services/TwilioSmsProvider.php` | `['from' => $this->from, 'body' => $message]` *mixed* – - |
| `magic_login_admin_menu_cap` | * Filter the capability required to access the Magic Login Pro settings page. | - | `./includes/admin/dashboard.php` | `'manage_options'` *mixed* – - |
| `magic_login_login_block_form_action` | Filter the form action URL for the login block. | - | `./includes/block.php` | `''` *mixed* – - |
| `magic_login_create_user_token` | Filter the token | 2.4 | `./includes/utils.php` | `$new_token` *string* – New token`$user->ID` *mixed* – -`$context` *string* – Context |
| `magic_login_create_login_link` | Filter the login URL | 2.4 | `./includes/utils.php` | `$login_url` *string* – Login URL`$user` *object* – WP_User object`$context` *string* – Context`$redirect_to` *string* – Redirect URL |
| `magic_login_client_ip` | `HTTP_X_FORWARDED_FOR` removed in 1.5 Filters the ip address | 1.5 | `./includes/utils.php` | `$_SERVER['REMOTE_ADDR']` *mixed* – - |
| `magic_login_get_wp_login_url` | Filter the login URL for magic login | 2.3.5 | `./includes/utils.php` | `$url` *string* – site login url. |
| `magic_login_user_tokens` | Filter user tokens | 2.1 | `./includes/utils.php` | `$tokens` *array* – User tokens.`$user_id` *int* – User ID.`$clear_expired` *bool* – Whether to clear expired tokens or not. |
| `magic_login_license_key` | Filter the license key | - | `./includes/utils.php` | `get_option(LICENSE_KEY_OPTION)` *mixed* – - |
| `magic_login_current_user_can_control_user` | Filter the capability check for user profile | - | `./includes/utils.php` | `$status` *bool* – Status |
| `magic_login_email_placeholders` | Filter the email placeholders | 2.4.2 | `./includes/utils.php` | `$placeholders` *array* – Placeholders`$user->ID` *mixed* – - |
| `magic_login_token_ttl_by_user` | Filter the token TTL by user | 2.2 | `./includes/utils.php` | `$ttl` *int* – TTL in minutes`$user_id` *int* – User ID |
| `magic_login_allowed_domains` | Filter allowed domains for login | 2.5 | `./includes/security.php` | `$allowed_domains` *array* – Allowed domains |
| `plugin_locale` | Registers the default textdomain. | - | `./includes/core.php` | `get_locale()` *mixed* – -`'magic-login'` *mixed* – - |
