Drupal-8-user-register-hook ✪

Use this to add custom fields or validation logic (e.g., matching a secondary database). 💻 Code Example: hook_user_presave

For cleaner, decoupled code, consider Symfony Event Subscribers if you are using the Hook Event Dispatcher module.

use Drupal\user\UserInterface; /** * Implements hook_ENTITY_TYPE_presave() for user entities. */ function my_module_user_presave(UserInterface $user) { // Check if this is a new user registration if ($user->isNew()) { // Perform custom logic, e.g., set a field value $user->set('field_welcome_status', 'Pending'); } } Use code with caution. Copied to clipboard 🎯 Key Considerations drupal-8-user-register-hook

This is the standard approach to identify a vs. an existing user being updated.

Inside presave , always call $user->isNew() to ensure your code only runs during initial registration rather than every time a profile is updated. Use this to add custom fields or validation logic (e

If you need to stop registration based on custom business logic (e.g., checking an external blacklist), use a custom validation handler via hook_form_alter .

Best for modifying data (e.g., adding a default role) before it hits the database. Runs after the user is created. Inside presave , always call $user->isNew() to ensure

The most effective way to intercept or modify user data during registration is through the following hooks: Usage Note Runs before the user is saved.