You need to initialize the object, Magento\Newsletter\Model\SubscriberFactory to add a subscriber. You can also add the subscriber by any email.
Follow example below to set magento 2 subscriber programmatically
/** * @var \Magento\Newsletter\Model\SubscriberFactory */ protected $subscriberFactory; public function __construct( ... \Magento\Newsletter\Model\SubscriberFactory $subscriberFactory, ... ) { ... $this->subscriberFactory = $subscriberFactory; ... } public function execute() { $email = 'example@gmail.com'; $this->subscriberFactory->create()->subscribe($email); // Subscribes by email // Load email and update status $subscriber = $this->subscriber->create()->loadByEmail($email); $subscriber->setStatus(\Magento\Newsletter\Model\Subscriber::STATUS_UNSUBSCRIBED); $subscriber->save(); }
- \Magento\Newsletter\Model\Subscriber::STATUS_SUBSCRIBED: User has confirmed and subscriber to the newsletter
- \Magento\Newsletter\Model\Subscriber::STATUS_NOT_ACTIVE: User subscriber to the newsletter but waiting for confirmation to activate the subscription
- \Magento\Newsletter\Model\Subscriber::STATUS_UNSUBSCRIBED: User may or may not have confirmed his email address but is certainly not subscribed to the newsletter
- \Magento\Newsletter\Model\Subscriber::STATUS_UNCONFIRMED: User has subscribed to the newsletter but does not need to confirm the email address
This article introduces how to add a subscriber programmatically by email in Magento 2 and change subscriber status. We are here to help when you have questions on any steps, don’t hesitate to contact us.
Lucy Pham
Marketing Manager