¿Sabías que muchos clientes finalizan sus compras como invitados y luego se olvidan de crear una cuenta? Esto hace que pierdas una oportunidad de fidelización, seguimiento del pedido y futuras ventas. En este artículo te muestro cómo solucionar esto de forma automática con un simple código que puedes copiar y pegar en tu web con WooCommerce.
Índice
¿Por qué es útil invitar al cliente a registrarse después de una compra?
En muchas tiendas online el registro obligatorio espanta a los compradores. Por eso, WooCommerce permite finalizar compras sin tener cuenta. Pero eso no significa que debamos renunciar a que esos clientes se registren.
Con este pequeño cambio, justo después de comprar, si el cliente no estaba registrado, podrá ver un mensaje con un formulario para crear su cuenta en segundos. Solo tiene que introducir una contraseña y ¡listo!:
- Tendrá acceso a su historial de pedidos.
- Podrá repetir pedidos fácilmente.
- Accederá a cupones, descargas o productos reservados para usuarios.
- Podrás hacer campañas de email marketing más segmentadas.
Ventajas para tu ecommerce
- Mejor experiencia de usuario: no se interrumpe la compra, pero se le invita de forma amable a registrarse.
- Aumento de registros: se crea la cuenta solo si el usuario lo desea.
- Acceso rápido al pedido: la cuenta queda vinculada al pedido ya realizado.
- Fácil implementación: no necesitas plugins pesados ni sistemas externos.
- Más opciones para remarketing y automatizaciones.
Añadir registro de usuario en la página de gracias

En este caso, si el cliente ha hecho la compra sin registrarse le saldrá un formulario en la página de gracias por tu compra o ThankYou para recordarle que se puede registrar solo poniendo su contraseña, ya que el resto de datos los tenemos. Si quieres la función de la imagen que te dejo arriba de estas líneas… Añade este código al functions.php de tu child theme o bien a tu plugin de funcionalidades como explico aquí.
// Mostrar formulario de registro arriba del todo si el usuario ha comprado como invitado
add_action('woocommerce_before_thankyou', 'mostrar_formulario_registro_si_invitado', 10, 1);
function mostrar_formulario_registro_si_invitado($order_id) {
if (is_user_logged_in()) return; // Ya está registrado
$order = wc_get_order($order_id);
if (!$order || $order->get_user_id()) return; // Ya tiene usuario
$email = $order->get_billing_email();
// Si ya hay un usuario registrado con ese email, no mostrar formulario
if (email_exists($email)) return;
// Mostrar formulario de registro
echo '<div class="woocommerce-message" style="margin-bottom:30px;">';
echo '<p><strong>¿Quieres guardar tus datos y tener acceso a tus pedidos futuros?</strong></p>';
echo '<p>Crea tu cuenta introduciendo una contraseña. Usaremos tu correo <strong>' . esc_html($email) . '</strong> para crearla.</p>';
echo '<form method="post" style="margin-top:15px;">';
echo '<label for="guest_password">Introduce una contraseña:</label><br>';
echo '<input type="password" name="guest_password" id="guest_password" required style="margin:5px 0;"><br>';
echo '<input type="hidden" name="guest_register_email" value="' . esc_attr($email) . '">';
echo '<input type="hidden" name="guest_register_order_id" value="' . esc_attr($order_id) . '">';
echo '<button type="submit" name="guest_register_submit" class="button">Crear cuenta</button>';
echo '</form>';
echo '</div>';
}
// Procesar creación de cuenta desde la página de gracias
add_action('template_redirect', 'procesar_registro_como_invitado');
function procesar_registro_como_invitado() {
if (!isset($_POST['guest_register_submit'])) return;
$email = sanitize_email($_POST['guest_register_email']);
$password = sanitize_text_field($_POST['guest_password']);
$order_id = absint($_POST['guest_register_order_id']);
// Validaciones básicas
if (email_exists($email) || empty($password) || empty($order_id)) {
wc_add_notice('No se pudo crear tu cuenta. Por favor, contacta con soporte.', 'error');
return;
}
$user_id = wp_create_user($email, $password, $email);
if (is_wp_error($user_id)) {
wc_add_notice('Error al crear tu cuenta: ' . $user_id->get_error_message(), 'error');
return;
}
// Asignar nombre y apellidos desde el pedido
$order = wc_get_order($order_id);
if ($order) {
update_user_meta($user_id, 'first_name', $order->get_billing_first_name());
update_user_meta($user_id, 'last_name', $order->get_billing_last_name());
$order->set_customer_id($user_id);
$order->save();
}
// Iniciar sesión automáticamente
wc_set_customer_auth_cookie($user_id);
wc_add_notice('¡Cuenta creada con éxito! Ahora tienes acceso a tus pedidos.', 'success');
// Redirigir a la cuenta
wp_safe_redirect(get_permalink(get_option('woocommerce_myaccount_page_id')));
exit;
}





Deja una respuesta