Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Wagonwheel Laravel Package

sammyjo20/wagonwheel

Wagonwheel is an open-source Laravel package by Sammy Jo that provides a clean, developer-friendly API for adding practical functionality to Laravel applications. It installs easily, follows Laravel conventions, and helps keep your codebase simple and maintainable.

View on GitHub
Deep Wiki
Context7

☸️ Offer an online version of your Laravel emails to users.

Frequently asked questions about Wagonwheel
What does the Wagonwheel package actually do in a Laravel application?
Wagonwheel hooks into Laravel's mail pipeline, persists the fully rendered HTML body of each outgoing email, and exposes a route keyed by a unique identifier so a recipient can open a view-this-email-in-your-browser link. It is effectively a storage-and-retrieval shim around Laravel's Mail subsystem. It does not replace your mailer, Blade templates, or transport. Integration is usually a trait, a published config, and a Blade helper in your email template.
Is sammyjo20/wagonwheel still maintained, and which Laravel versions does it support?
No, the repository has been archived since 2021 and receives no security patches, feature work, or issue triage. It targets Laravel 6 to 8 era applications and has no official Laravel 10 or 11 support. On a modern PHP 8.2+ stack you will hit Composer constraint conflicts, so real adoption means forking the code and owning it.
How do I install Wagonwheel in a Laravel app?
Install it with Composer, publish the config and migration, then register the trait or listener and add the view-in-browser link to your email Blade template. A spike typically takes a few days. Productionizing it with tests, retention rules, and access controls takes one to two sprints, and you should expect to patch version constraints first on any modern Laravel version.
How does Wagonwheel generate the view-this-email-in-your-browser link?
It captures the rendered HTML at the mail-send boundary through a MessageSending listener or similar decorator, stores that HTML alongside a unique identifier, and exposes a route that resolves the identifier and returns the stored content. The link is a plain public HTTP endpoint by design. How safe it is depends entirely on the entropy of that identifier, which you should verify in the source before relying on it.
Are Wagonwheel email URLs secure, or can anyone guess them?
That depends on the identifier implementation: signed URLs and UUIDs are impractical to guess, while incrementing IDs or short tokens make stored emails enumerable. The package exposes a public endpoint, so any authentication middleware or URL signing has to be added or confirmed in the code. Audit the route, the token generation, and any expiration logic before exposing it on a production domain.
Does Wagonwheel work with Laravel 10 or Laravel 11?
Not officially. There is no Laravel 10 or 11 support in the archived package and no PHP 8.2+ compatibility work. To use it you would fork the repository, raise the Composer version constraints, and patch anything that broke in the mail pipeline since Laravel 8.
What data does Wagonwheel store in the database, and is that a privacy risk?
It stores the fully rendered email body, which can include password reset links, invoices, personal data, and sometimes one-time tokens. That turns an ephemeral message into persistent, classified data that your security and legal teams will want governed. Add an expires_at column or a pruning job, restrict database access, and avoid archiving emails containing sensitive tokens where possible.
Can storing emails slow down or break mail sending in Laravel?
If persistence runs synchronously inside a MessageSending listener and the database write throws, mail delivery can fail or degrade. A decorative view-in-browser feature should never be able to block a transactional notification. The usual fix is a queued listener, a try/catch around the write, or an after-commit dispatch so archiving failures are isolated from sending.
Are there alternatives to Wagonwheel for hosting an online version of Laravel emails?
Many email service providers such as SES, SendGrid, Postmark, and Mailgun already archive or host emails and may offer a hosted view, so check whether you would be duplicating existing functionality first. Laravel itself does not ship a browser-view feature. If you need one, a small native implementation is roughly 200 to 400 lines and avoids taking on abandoned code.
Should I fork Wagonwheel or build my own email archive feature?
Building in-house is usually the better path: register a queued MessageSending listener, store the rendered HTML in an email_archive table with a uuid, mailable, created_at, and expires_at, and expose the route behind signed middleware. Forking Wagonwheel costs roughly one to two weeks plus indefinite ownership of the code. Treat the package as a reference implementation unless you specifically want its existing structure.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core
nodisrupt/laravel-agent
sierratecnologia/media-manager