# Put a signed URL in an email

> temporarySignedRoute belongs in the mail. The Vue page opens after the signed middleware passes.

- URL: https://laravel-vuejs.space/laravel-signed-email-link-vue
- Author: Anass Ez-zouaine (https://laravel-vuejs.space/author/anass-ez-zouaine)
- Published: 2026-10-11
- Topics: Laravel, VueJs

People searching “Laravel signed URL email” build the link in Vue and hope the email client keeps it. Build it in PHP. The [Fortify guide](https://laravel-vuejs.space/laravel-fortify-vue) already does this for password reset. A custom mail uses the same middleware.

> **TL;DR**
>
> -   temporarySignedRoute belongs in the mail.
> -   The Vue page opens after the signed middleware passes.
> -   Do not sign the URL for a year.
> -   Do not log the full URL.
>
> **Who it's for:** Laravel + Vue developers
>
> **Applies to:** Laravel 13 · Vue 3

## The fix

```php
$url = URL::temporarySignedRoute(
    'posts.review',
    now()->addDays(3),
    ['post' => $post->id],
);
```

Mail that string. The route is:

```php
Route::get('/posts/{post}/review', [PostController::class, 'review'])
    ->middleware('signed')
    ->name('posts.review');
```

An edited query string fails the signature and Laravel returns 403. The controller can render an Inertia page after that. The link in the email is a normal `<a href>`. It is not an Inertia `<Link>`, because a mail client is not your app.

## What to avoid

> **Gotcha**
>
> Do not sign the URL for a year. Three days is a decision you can defend. Do not log the full URL. It is the credential.

## FAQ

**Q: How do I put a signed URL in an email?**

temporarySignedRoute belongs in the mail. The Vue page opens after the signed middleware passes.

**Q: What goes wrong with Laravel signed URL email?**

Many developers build the link in Vue and hope the email client keeps it. Do not sign the URL for a year.
