How to auto log-in users that click on links in your email campaigns

Use the PHP code snippet below to auto-login users who click on links in your email campaigns.

This is useful, for example, when sending an abandoned cart email series or custom magic login links.

<?php
add_filter( 'noptin_actions_page_template', 'noptin_custom_code_autologin_user', 0 );
function noptin_custom_code_autologin_user( $template ) {
	$handler = noptin()->actions_page;

	// Check if a guest has clicked a link in a previous email.
	if ( 'email_click' === $handler->get_request_action() && 0 === get_current_user_id() ) {

		// Decode the recipient details.
		$recipient = $handler->get_request_recipient();

		// If we have a user id, log them in.
		if ( ! empty( $recipient['email'] ) ) {
			$user = get_user_by( 'email', $recipient['email'] );
		}

		if ( empty( $user ) && ! empty( $recipient['uid'] ) ) {
			$user = get_user_by( 'id', $recipient['uid'] );
		}

		if ( ! empty( $user ) ) {
			wp_set_current_user( $user->ID );
			wp_set_auth_cookie( $user->ID, true );
			do_action( 'wp_login', $user->user_login, $user );
		}
	}

	return $template;
}

Tip: Add this code snippet to your theme’s functions.php file or use the code snippets plugin.

Code Explanation

  • Line 2: Registers a filter hook that’s called whenever someone opens the Noptin actions page.
  • Line 7: Ensures the current action is a click event and that the user who took the action is not logged in.
  • Line 10: Decodes the current recipient details.
  • Line 21: Logs in the current recipient if their details match an existing user.

Related Guides