Magento 2 Events and Observers

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

  1. Run: php bin/magento setup:upgrade
  2. Run: php bin/magento cache:flush
  3. 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