Subscribing to a list
On this page:
- Specifying first name and last name
- Adding regular attributes
- Adding extra attributes
- Checking if someone is subscribed
- Getting the status of a subscriber
- Getting all list subscribers
- Skipping opt in when subscribing
- Skipping sending a welcome mail
This is the easiest way to subscribe to a list:
$emailList->subscribe('john@example.com');
Alternatively you can create a subscriber via the Subscriber
model.
Subscriber::createWithEmail('john@example.com')->subscribeTo($emailList);
Specifying first name and last name
There are attributes named first_name
and last_name
on the Subscriber
model itself. When subscribing you can fill them by passing a second argument to subscribe
.
$subscriber = $emailList->subscribe('john@example.com', [ 'first_name' => 'John', 'last_name' => 'Doe' ]);
Alternatively you can create a subscriber with attributes via the Subscriber
model.
Subscriber::createWithEmail('john@example.com') ->withAttributes([ 'first_name' => 'John', 'last_name' => 'Doe' ]) ->subscribeTo($emailList);
Adding regular attributes
If you need more attributes on a subscriber you can create a migration that adds a field.
Schema::table('mailcoach_subscribers', function (Blueprint $table) { $table->string('job_title')->nullable(); });
To fill the field just add a key to the second array passed to subscribe
.
$subscriber = $emailList->subscribe('john@example.com', ['job_title' => 'Developer']); $subscriber->job_title; // returns 'Developer'
Adding extra attributes
The email_list_subscribers
table has an json field called extra_attributes
. You can use this field to add unstructured data to a subscriber.
When subscribing pass unstructured data as the value of the extra_attributes
key . This data will be saved in extra_attributes
.
$subscriber = $emailList->subscribe('john@example.com', [ 'extra_attributes' => [ 'key 1' => 'value 1', 'key 2' => 'value 2', ], ]); $subscriber->extra_attributes->get('key 1'); // returns 'value 1'; $subscriber->extra_attributes->get('key 2'); // returns 'value 2';
You can read more on extra attributes in this section of the docs.
Checking if someone is subscribed
You can check if a given email is subscribed to an email list.
$emailList->isSubscribed('john@example.com'); // returns a boolean
You can use a subscriber to check to if it is subscribed.
$subscriber->isSubscribed() // returns a boolean;
Getting the status of a subscriber
To get the status of a subscriber
$subscriber->status;
This property can contain three possible values:
-
unconfirmed
: when the list uses double opt-in and the confirmation link wasn’t clicked yet -
subscribed
: when the subscriber is subscribed. -
unsubscribed
: when the subscriber was unsubscribed.
Getting all list subscribers
To get all subscribers of an email list you can use the emailList
you can call subscribers
on an email list.
$subscribers = $emailList->subscribers; // returns all subscribers
To get the email address of a subscriber call email
on a subscriber.
$email = $subscribers->first()->email;
Calling subscribers
on an email list will only return subscribers that have a subscription with a subscribed
status. Subscribers that have unsubscribed or are still unconfirmed (when using double opt-in) will not be returned.
To return all subscribers, including all unconfirmed and unsubscribed ones, use allSubscribers
.
$allSubscribers = $emailList->allSubscribers;
Skipping opt in when subscribing
If double opt-in is enabled on a list, then subscribeTo
won’t result in an immediate subscription. Instead, the user must first confirm, by clicking a link in a mail, before their subscription to the new list is completed.
To immediately confirm someone, and skipping sending the confirmation mail, use subscribeSkippingConfirmation
:
$emailList->subscribeskippingConfirmation('john@example.com');
Alternatively you can use this syntax:
Subscriber::createWithEmail('john@example.com') ->skipConfirmation() ->subscribeTo($emailList);
Skipping sending a welcome mail
If your list is configured to send a welcome mail, you can skip sending a welcome mail for a particular subscriber.
Subscriber::createWithEmail('john@example.com') ->doNotSendWelcomeMail() ->subscribeTo($emailList);