PHPackages                             sammyjo20/wagonwheel - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Mail &amp; Notifications](/categories/mail)
4. /
5. sammyjo20/wagonwheel

AbandonedArchivedLibrary[Mail &amp; Notifications](/categories/mail)

sammyjo20/wagonwheel
====================

Offer an online version of your Laravel emails to users.

2.0.1(5y ago)2475.3k6[1 PRs](https://github.com/Sammyjo20/Wagonwheel/pulls)MITPHPPHP ^7.3|^8.0

Since Oct 8Pushed 3y ago6 watchersCompare

[ Source](https://github.com/Sammyjo20/Wagonwheel)[ Packagist](https://packagist.org/packages/sammyjo20/wagonwheel)[ GitHub Sponsors](https://github.com/Sammyjo20)[ RSS](/packages/sammyjo20-wagonwheel/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (9)Dependencies (11)Versions (13)Used By (0)

⚠️ 07/08/2022 This project has officially been abandoned
========================================================

[](#️-07082022-this-project-has-officially-been-abandoned)

Thank you everyone for downloading Wagonwheel, however I am going to be formally abandoning the project.

 [![Wagonwheel](https://camo.githubusercontent.com/5cacc8608b2c099cbb2988656e0408dc07a3a0013cbf6c358142639e005b1f4c/68747470733a2f2f73616d63617272652e6465762f696d616765732f77772d6578616d706c652e706e67)](https://camo.githubusercontent.com/5cacc8608b2c099cbb2988656e0408dc07a3a0013cbf6c358142639e005b1f4c/68747470733a2f2f73616d63617272652e6465762f696d616765732f77772d6578616d706c652e706e67)

> This is was a collaborative project with [Ryan Chandler](https://github.com/ryangjchandler). Please consider supporting him for the hard work he put into this package!

> Help support the maintenance of this package by [buying me a coffee](https://ko-fi.com/sammyjo20).

Wagonwheel
==========

[](#wagonwheel)

**Offer an online version of your Laravel emails to users.**

[![Latest Stable Version](https://camo.githubusercontent.com/23ab0b214a9416d36d9973ccc34d9c31b8544b1f63a2c1d4abc46c4e20d8a650/68747470733a2f2f706f7365722e707567782e6f72672f73616d6d796a6f32302f7761676f6e776865656c2f76)](//packagist.org/packages/sammyjo20/wagonwheel) [![Total Downloads](https://camo.githubusercontent.com/dbf4bc09d4bd94598bdc76b8c58985d11f21847e3b7bc69541704cd0d3f83771/68747470733a2f2f706f7365722e707567782e6f72672f73616d6d796a6f32302f7761676f6e776865656c2f646f776e6c6f616473)](//packagist.org/packages/sammyjo20/wagonwheel) [![License](https://camo.githubusercontent.com/46de160e5ce8604236b8b2ec05c2ebd8b370dc5c0625bb18aaaa71fa6d559580/68747470733a2f2f706f7365722e707567782e6f72672f73616d6d796a6f32302f7761676f6e776865656c2f6c6963656e7365)](//packagist.org/packages/sammyjo20/wagonwheel)

- Uses Laravel's built-in temporary signed URLs to create the URL for the online version. This means it's secured by your app's encryption key, as well as making it difficult to guess.
- Highly customisable.
- Easy to install.
- Supports Laravel 8

Installation
------------

[](#installation)

1. Install Wagonwheel using composer with the command below:

```
composer require sammyjo20/wagonwheel
```

2. Publish the migrations

```
php artisan vendor:publish --tag=wagonwheel-migrations
```

3. Run the migrations

```
php artisan migrate
```

4. Add the "SaveForOnlineViewing" trait to **any** of your Mailables.

```
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Sammyjo20\Wagonwheel\Concerns\SaveForOnlineViewing;

class BookingConfirmed extends Mailable
{
    use Queueable, SerializesModels, SaveForOnlineViewing;

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->subject('Booking Confirmed 🎉')
            ->markdown('emails.bookings.confirmed');
    }
}
```

Configuration
-------------

[](#configuration)

If you would like to customise how Wagonwheel works. Run the following command to publish Wagonwheel's configuration file.

```
php artisan vendor:publish --tag=wagonwheel-config
```

*component\_placement* - This configuration variable defines if the banner should be rendered at the start of the email content or at the end of the email content. The available values are **start** and **end**.

*message\_expires\_in\_days* - This configuration variable defines how long Wagonwheel should keep the online version of an email in days. If you would like the online version of your emails to never expire, set this to 0. **The default is 30 days**.

Customisation
-------------

[](#customisation)

If you would like to customise how the banner looks inside the email, just publish Wagonwheel's views with the following command.

```
php artisan vendor:publish --tag=wagonwheel-views
```

Testing
-------

[](#testing)

Run all tests

```
composer test

```

Run a specific test

```
composer test-f [name of test method]

```

Thanks
------

[](#thanks)

- Ryan Chandler (@ryangjchandler) helped out massively with some great code improvements and overall making Wagonwheel better!
- Gareth Thompson (@cssgareth) helped out with coming up with a cool name!

###  Health Score

38

—

LowBetter than 85% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity35

Limited adoption so far

Community18

Small or concentrated contributor base

Maturity66

Established project with proven stability

 Bus Factor1

Top contributor holds 84.4% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~16 days

Recently: every ~31 days

Total

9

Last Release

1917d ago

Major Versions

1.2.1 → 2.0.02020-11-28

PHP version history (2 changes)v1.0.0PHP ^7.3

2.0.1PHP ^7.3|^8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/de41c8bfde9d0edb25da9fdc159283fe9442e3dc9b651ee9aa7ded8384e5629d?d=identicon)[SamCarre](/maintainers/SamCarre)

---

Top Contributors

[![Sammyjo20](https://avatars.githubusercontent.com/u/29132017?v=4)](https://github.com/Sammyjo20 "Sammyjo20 (65 commits)")[![Jhnbrn90](https://avatars.githubusercontent.com/u/24190396?v=4)](https://github.com/Jhnbrn90 "Jhnbrn90 (5 commits)")[![michaelbonner](https://avatars.githubusercontent.com/u/1122945?v=4)](https://github.com/michaelbonner "michaelbonner (4 commits)")[![joseborges](https://avatars.githubusercontent.com/u/7250506?v=4)](https://github.com/joseborges "joseborges (2 commits)")[![Simon-BEE](https://avatars.githubusercontent.com/u/48557087?v=4)](https://github.com/Simon-BEE "Simon-BEE (1 commits)")

---

Tags

emailhacktoberfestlaravellaravel-frameworklaravel-package

###  Code Quality

TestsPHPUnit

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/sammyjo20-wagonwheel/health.svg)

```
[![Health](https://phpackages.com/badges/sammyjo20-wagonwheel/health.svg)](https://phpackages.com/packages/sammyjo20-wagonwheel)
```

###  Alternatives

[laravel/cashier

Laravel Cashier provides an expressive, fluent interface to Stripe's subscription billing services.

2.5k25.9M107](/packages/laravel-cashier)[laravel/pulse

Laravel Pulse is a real-time application performance monitoring tool and dashboard for your Laravel application.

1.7k12.1M99](/packages/laravel-pulse)[roots/acorn

Framework for Roots WordPress projects built with Laravel components.

9682.1M97](/packages/roots-acorn)[fumeapp/modeltyper

Generate TypeScript interfaces from Laravel Models

196277.9k](/packages/fumeapp-modeltyper)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

245.2k](/packages/aedart-athenaeum)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
