Hey,
You can simply create a custom ajax request to save email address on Next button click by adding custom javascript file in checkout_index_index.xml
Thank You!
Hello @thaiahoygmed08
To save the email in the quote_address table right after the customer clicks the "Next" button during the checkout process in Magento 2
Create a Custom Module
Declare the Module
Create the following directory structure:
app/code/Vendor/Module
Then, create the registration.php file:
<?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'Vendor_Module', __DIR__ );
And create the module.xml file:
<?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="Vendor_Module" setup_version="1.0.0"/> </config>
Create the events.xml file to declare the event you want to observe:
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd"> <event name="checkout_controller_onepage_save_shipping_method"> <observer name="vendor_module_save_email_to_quote_address" instance="Vendor\Module\Observer\SaveEmailToQuoteAddress"/> </event> </config>
Implement the Observer
Create the Observer class to handle the event:
<?php namespace Vendor\Module\Observer; use Magento\Framework\Event\Observer; use Magento\Framework\Event\ObserverInterface; use Magento\Quote\Model\QuoteRepository; use Magento\Checkout\Model\Session as CheckoutSession; class SaveEmailToQuoteAddress implements ObserverInterface { protected $quoteRepository; protected $checkoutSession; public function __construct( QuoteRepository $quoteRepository, CheckoutSession $checkoutSession ) { $this->quoteRepository = $quoteRepository; $this->checkoutSession = $checkoutSession; } public function execute(Observer $observer) { $quote = $this->checkoutSession->getQuote(); $email = $quote->getCustomerEmail(); if ($email) { foreach ($quote->getAllAddresses() as $address) { if ($address->getAddressType() == \Magento\Quote\Model\Quote\Address::ADDRESS_TYPE_SHIPPING) { $address->setEmail($email); } } $this->quoteRepository->save($quote); } return $this; } }
Run all Magento Standard Commands
Hope it helps !
If you find our reply helpful, please give us kudos.
A Leading Magento Development Agency That Delivers Powerful Results, Innovation, and Secure Digital Transformation.
WebDesk Solution Support Team
Get a Free Quote | | Adobe Commerce Partner | Hire Us | Call Us 877.536.3789
Thank You,
WebDesk Solution Support Team
Get a Free Quote | Email | Adobe Commerce Partner | Hire Us | Call Us 877.536.3789
Location: 150 King St. W. Toronto, ON M5H 1J9