Laravel 5.3 Send Notification to Users without an account

I found your post looking for the same thing but answered it myself.

You need to use Notifiable; on the Invite model.

You then import use Illuminate\Notifications\Notifiable; and should be able to use ->notify on the Invite model.

$invite = Invite::create([
    'name' => $request->get('name'),
    'email' => $request->get('email'),
    'token' => str_random(60),
]);

$invite->notify(new UserInvite());

That is how I handle sending the notification :)

You can then pass through $invite and use that within the notification template.


Some alternative solution could be to just new up a user model and set the email attribute without saving it. The instance can now be notified.

I don't see this as the correct approach for this particular case, but for the questions written and since this thread provides some different ways to notify a non-existing user I thought I would write it here.

$invitedUser = new User;
$invitedUser->email = '[email protected]';
$invitedUser->notify(new InvitationNotification());

Beware, that this solution may cause problems when queueing notification (because it doesn't reference a specific user id).

In Laravel >=5.5 it is possible to make an "on-demand notification", which covers this exact case, where you want to notify a non-existing user.

Example from the docs:

Notification::route('mail', '[email protected]')
        ->route('nexmo', '5555555555')
        ->notify(new InvoicePaid($invoice));

This will send the notification to the email address, and that approach can be queued etc.

The docs: https://laravel.com/docs/5.5/notifications#on-demand-notifications


Notifications are meant to be sent to a notifiable object. You don’t “notify” an invitation.

If all you’re wanting to do is email someone that they’ve been invited to use an application, then just send an email to that email address. Notifications aren’t appropriate in this instance.