Disable Welcome Email When Creating New Customers in Magento 2
- Vishal Kothale
- eCommerce Talk
- Jan 20, 2026
- Reading time: 7 minutes

Magento 2 can automatically send a welcome email when a new customer account is created. That’s great for normal storefront signups, but it can be a problem when you create customers from the Admin panel during migration, bulk onboarding, or B2B account setup.
Quick answer: To disable the Magento 2 welcome email only when a customer is created from Admin,
add an adminhtml-scoped plugin on Magento\Customer\Model\EmailNotification::newAccount() and skip calling the original method.
This prevents Admin-created customers from receiving the default welcome email, while storefront registrations can continue sending emails normally.
Why you may want to disable Admin-created welcome emails
Here are the most common cases where disabling the welcome email (only for Admin-created accounts) makes sense:
- Platform migration or customer import: You’re moving from another platform and recreating customers in Magento 2.
- B2B onboarding: Your team creates accounts manually and sends credentials via a separate process.
- External engagement tools: You already send onboarding emails via Klaviyo, Mailchimp, HubSpot, etc.
- Compliance and customer experience: Avoid duplicate or confusing “welcome back” emails (common for EU/DACH stores during migrations).
Magento doesn’t provide a clean “disable welcome email for Admin-created customers only” toggle. The safest approach is a small, scoped customization that applies only in the Admin area.
Disable welcome email after creating a new customer from Admin in Magento 2
Goal: Stop the welcome email when an Admin user creates a customer at Customers → All Customers → Add New Customer. Storefront signups remain unchanged.
Prerequisites:
- Magento 2 code access (app/code)
- Ability to run CLI commands (
bin/magento)
Step 1: Create the module skeleton
Create these files and folders:
app/code/MageSpark/DisableAdminNotification/registration.php
app/code/MageSpark/DisableAdminNotification/etc/module.xml
app/code/MageSpark/DisableAdminNotification/etc/adminhtml/di.xml
app/code/MageSpark/DisableAdminNotification/Plugin/DisableAdminWelcomeEmail.php
registration.php
<?php
use Magento\Framework\Component\ComponentRegistrar;
ComponentRegistrar::register(
ComponentRegistrar::MODULE,
'MageSpark_DisableAdminNotification',
__DIR__
);
etc/module.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="MageSpark_DisableAdminNotification" setup_version="1.0.0"/>
</config>
Step 2: Add an adminhtml-scoped plugin (di.xml)
Create di.xml at:
app/code/MageSpark/DisableAdminNotification/etc/adminhtml/di.xml
<?xml version="1.0" encoding="utf-8"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Customer\Model\EmailNotification">
<plugin name="magespark-disable-admin-welcome-email"
type="MageSpark\DisableAdminNotification\Plugin\DisableAdminWelcomeEmail"
sortOrder="10"/>
</type>
</config>
Why adminhtml? Because Magento loads this DI config only in the Admin area, so the change applies only when an Admin user creates customers.
Step 3: Create the plugin to skip the welcome email call
Create the plugin file at:
app/code/MageSpark/DisableAdminNotification/Plugin/DisableAdminWelcomeEmail.php
<?php
declare(strict_types=1);
namespace MageSpark\DisableAdminNotification\Plugin;
use Magento\Customer\Api\Data\CustomerInterface;
use Magento\Customer\Model\EmailNotification;
class DisableAdminWelcomeEmail
{
/**
* Disable welcome email when customer is created from Admin.
*
* Note: This plugin is registered under etc/adminhtml/di.xml,
* so it runs only in the Admin area.
*
* @param EmailNotification $subject
* @param \Closure $proceed
* @param CustomerInterface $customer
* @param string $type
* @param string $backUrl
* @param int|string|null $storeId
* @param int|string|null $sendemailStoreId
* @return void|null
*/
public function aroundNewAccount(
EmailNotification $subject,
\Closure $proceed,
CustomerInterface $customer,
string $type = '',
string $backUrl = '',
$storeId = null,
$sendemailStoreId = null
) {
// Skip sending welcome email for Admin-created customers
// by NOT calling $proceed(...)
return null;
}
}
Result: When you create a customer from Admin, Magento will no longer send the default welcome email for that action.
Step 4: Deploy and flush cache
bin/magento setup:upgrade
bin/magento cache:flush
Important notes (so you don’t get surprised later)
- This disables only Admin-triggered welcome emails. Storefront registrations will still send emails (as they should for normal onboarding).
- Imports via CLI/integrations may not count as “adminhtml”. If you import customers via scripts, API, or cron, Magento might not be in the Admin area scope. In that case, you may need a different scope strategy (global plugin with conditional checks).
- This targets the welcome email on new account creation. If you also want to disable other customer emails (confirmation, password reset, etc.), handle them separately to avoid breaking important flows.
FAQ
Can I disable the welcome email from Magento Admin settings?
Magento lets you change templates, but it doesn’t offer a reliable “disable only for Admin-created customers” switch. A scoped plugin is the cleanest approach.
Will this affect customers who register on the storefront?
No. Because the plugin is registered under etc/adminhtml, it applies only in the Admin area.
What if I want to disable welcome emails for imports too?
If your customers are created via CLI/API/import tools, the Admin scope may not apply. In that case, use a global plugin and add a condition (for example, check area code, request context, or an “import mode” flag).
Need help tailoring this to your Magento 2 setup (migration, B2B onboarding, or custom email flows)? Drop a comment or contact the MageSpark team and we’ll point you to the cleanest approach for your stack.
