Magento 2 Events and Observers let you hook into Magento’s execution flow without modifying core code. This allows developers to perform actions when specific events happen, making the system highly extensible.
—
🔄 What are Events and Observers?
- Events: Actions that happen during Magento’s execution (e.g., customer login).
- Observers: Classes that listen to events and respond with custom logic.
—
📍 Common Use Cases
- Send an email after order placement
- Log data on customer login
- Modify product data before save
—
🔧 Create a Custom Observer
Step 1: Declare Events in events.xml
—
Step 2: Create the Observer Class
<?php
namespace Vendor\Module\Observer;
use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;
class CustomerLoginObserver implements ObserverInterface
{
public function execute(Observer $observer)
{
$customer = $observer->getEvent()->getCustomer();
// Custom logic here
// Example: Log customer email
$writer = new \Zend_Log_Writer_Stream(BP . '/var/log/customer_login.log');
$logger = new \Zend_Log();
$logger->addWriter($writer);
$logger->info('Customer Logged In: ' . $customer->getEmail());
}
}
—
Step 3: Enable & Test
- Run:
php bin/magento setup:upgrade - Run:
php bin/magento cache:flush - Log in as a customer and check
var/log/customer_login.log
—
🧩 Popular Magento Events
| Event | Description |
|---|---|
customer_login |
Customer successfully logs in |
sales_order_place_after |
After order is placed |
catalog_product_save_before |
Before product is saved |
—
✅ Best Practices
- Use observers only when no plugin or DI method fits
- Use unique observer names
- Keep observer logic simple and efficient
—
🧠 Summary
- Events let you hook into Magento without overriding
- Observers respond to specific events with custom logic
- Easy to extend Magento functionality safely