Laravel SMS Catcher: Local SMS Notification Dashboard | Mohamed Said       [Skip to content](#main)  [ ![](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MH.png) Mohamed SaidLaravel Backend Engineer ](https://www.msaied.com/public) - [Home](https://www.msaied.com/public)
- [Projects](https://www.msaied.com/public/projects)
- [Articles](https://www.msaied.com/public/articles)
- [Certificates](https://www.msaied.com/public/certificates)
- [About](https://www.msaied.com/public#about)

           [  Contact](https://www.msaied.com/public#contact) Menu 

Menu
----

Close 

 - [HomeStart here](https://www.msaied.com/public)
- [ProjectsCase studies](https://www.msaied.com/public/projects)
- [ArticlesEngineering notes](https://www.msaied.com/public/articles)
- [CertificatesCredentials](https://www.msaied.com/public/certificates)
- [AboutHow I work](https://www.msaied.com/public#about)
- [ContactGet in touch](https://www.msaied.com/public#contact)

  [Start a conversation](https://www.msaied.com/public#contact) [WhatsApp](https://wa.me/201094619204) [Email](mailto:hello@msaied.com) 

 1. [Home](https://www.msaied.com/public)
2. /
3. [Articles](https://www.msaied.com/public/articles)
4. /
5. [Laravel](https://www.msaied.com/public/articles?category=laravel)
6. /
7. Laravel SMS Catcher: A Local Dashboard for SMS Notifications

   [Laravel](https://www.msaied.com/public/articles?category=laravel) [Composer Pacakge](https://www.msaied.com/public/articles?category=composer-pacakge) 

 Laravel SMS Catcher: A Local Dashboard for SMS Notifications
=============================================================

 Laravel SMS Catcher is a local development package that intercepts outgoing SMS notifications and displays them in a visual dashboard — no database required, just a flat JSON file in your logs directory.

 ![](https://cdn.msaied.com/01M22N44A70A5MC2S599JP0MPH.webp) [Mohamed Said](https://www.msaied.com/public#person) Published 20 Jul 2026 · Updated 21 Jul 2026 · 3 min read

ShareCopy linkCopied

 ![Laravel SMS Catcher: A Local Dashboard for SMS Notifications](https://cdn.msaied.com/452/6cf05170f76a3b6c340dda18ee3bbc62.png) 

  On this page +1. [What Is Laravel SMS Catcher?](#what-is-laravel-sms-catcher)
2. [Installation](#installation)
3. [How It Works](#how-it-works)
4. [Dashboard Features](#dashboard-features)
5. [Phone-Style Previews](#phone-style-previews)
6. [Light and Dark Themes](#light-and-dark-themes)
7. [Inbox Management](#inbox-management)
8. [Environment Safety](#environment-safety)
9. [Configuration](#configuration)
10. [Key Takeaways](#key-takeaways)

 What Is Laravel SMS Catcher?
----------------------------

Laravel SMS Catcher is a local development helper by [Michal Skogemann](https://github.com/michal78) that captures outgoing SMS notifications before they reach a real carrier. Think of it as the SMS equivalent of Mailpit: instead of sending texts to actual phone numbers during development, the package intercepts them and displays the content in a clean visual dashboard.

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

Install the package as a development dependency via Composer:

```bash
composer require --dev michal78/laravel-sms-catcher

```

Once installed, the dashboard is immediately available at `/sms-catcher` whenever your app runs in the `local` environment or has debug mode enabled. No migrations, no extra services.

How It Works
------------

The package hooks into Laravel's notification system. When you dispatch a notification through the `sms` channel, SMS Catcher intercepts it by calling `toSms()` on your notification class. It then writes the sender, recipient, body, and timestamp to `storage/logs/sms-catcher.json`.

Using a flat JSON file has two practical benefits:

- **No database setup** — there are no tables or migrations to manage.
- **Git-friendly** — Laravel excludes `storage/logs` from version control by default, so test messages never end up in your repository.

For the package to capture a notification, your notification class must implement a `toSms()` method that returns a string, array, or an object containing the message body.

Dashboard Features
------------------

### Phone-Style Previews

Clicking a message in the sidebar opens a detail view with a phone-style mockup. A device selector dropdown lets you switch between screen widths to check how text wrapping, spacing, and line breaks render on different devices — useful for catching truncation issues before going to production.

### Light and Dark Themes

The dashboard ships with both light and dark themes, so it fits comfortably alongside whatever IDE or terminal setup you prefer.

### Inbox Management

You can clear individual messages or wipe the entire inbox directly from the dashboard, keeping your local log tidy during active development.

### Environment Safety

The dashboard is blocked on production environments by default. It only activates when the app is running in `local` mode or has debug mode turned on, reducing the risk of accidentally exposing it.

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

If the defaults don't suit your project, publish the configuration file:

```bash
php artisan vendor:publish --tag=sms-catcher-config

```

The resulting `config/sms-catcher.php` file exposes the following options:

- **`SMS_CATCHER_ENABLED`** — toggle the catcher via an environment variable.
- **`route.prefix`** — set a custom URL path for the dashboard.
- **`route.middleware`** — wrap the dashboard routes with your own middleware.
- **`storage_path`** — change where the JSON message file is written.

Key Takeaways
-------------

- Drop-in SMS interception for local Laravel development, similar to how Mailpit handles email.
- Stores messages in a flat JSON file — no migrations or database tables needed.
- Phone-style mockup with a device selector helps you verify message formatting across screen sizes.
- Production-safe by default; only active in `local` environment or debug mode.
- Fully configurable URL prefix, middleware, and storage path via a published config file.

You can inspect the source code, report issues, and read the full documentation on the [GitHub repository](https://github.com/michal78/laravel-sms-catcher).

---

*Source: [Laravel News — Laravel SMS Catcher: A Local Dashboard for SMS Notifications](https://laravel-news.com/laravel-sms-catcher-a-local-dashboard-for-sms-notifications)*

- [Laravel](https://www.msaied.com/public/articles?search=Laravel)
- [SMS](https://www.msaied.com/public/articles?search=SMS)
- [Local Development](https://www.msaied.com/public/articles?search=Local%20Development)
- [Notifications](https://www.msaied.com/public/articles?search=Notifications)
- [Composer Package](https://www.msaied.com/public/articles?search=Composer%20Package)

 Frequently asked questions 
---------------------------

  Does Laravel SMS Catcher require a database or migrations?No. The package stores all captured messages in a flat JSON file located at `storage/logs/sms-catcher.json`, so there are no database tables or migrations to set up.

   Will the SMS Catcher dashboard be accessible in production?No. By default the dashboard is blocked on production environments and only activates when the application runs in `local` mode or has debug mode enabled. You can also toggle it explicitly via the `SMS\_CATCHER\_ENABLED` environment variable.

   What does my notification class need to implement for SMS Catcher to work?Your notification class must have a `toSms()` method that returns a string, array, or an object containing the message body. The package calls this method to intercept the outgoing SMS.

   ![Mohamed Said](https://cdn.msaied.com/01M22N44A70A5MC2S599JP0MPH.webp)About the author
----------------

[Mohamed Said](https://www.msaied.com/public#person)Senior Backend Engineer specializing in Laravel, scalable SaaS platforms, APIs, and cloud infrastructure. I build secure, high-performance web applications that help businesses grow.

[About](https://www.msaied.com/public#about) [GitHub ↗](https://github.com/EG-Mohamed) [LinkedIn ↗](https://www.linkedin.com/in/msaiedm/) [WhatsApp ↗](https://wa.me/201094619204) [Email Address ↗](mailto:hello@msaied.com) [My CV ↗](https://drive.google.com/file/u/0/d/1MF20IPRJyzfy32mhEutjL5EpSls0w2Q8/view)  

   [Previous articleScaffold Laravel Packages with the `laravel package` Command in Installer v5.31.0](https://www.msaied.com/public/articles/scaffold-laravel-packages-with-the-laravel-package-command-in-installer-v5310) [Next articleLaravel + Python FastAPI: Image OCR Demo](https://www.msaied.com/public/articles/laravel-python-fastapi-image-ocr-demo)  

   On this page
-------------

1. [What Is Laravel SMS Catcher?](#what-is-laravel-sms-catcher)
2. [Installation](#installation)
3. [How It Works](#how-it-works)
4. [Dashboard Features](#dashboard-features)
5. [Phone-Style Previews](#phone-style-previews)
6. [Light and Dark Themes](#light-and-dark-themes)
7. [Inbox Management](#inbox-management)
8. [Environment Safety](#environment-safety)
9. [Configuration](#configuration)
10. [Key Takeaways](#key-takeaways)

 ###  Have a technical challenge?

 Tell me what you’re building. I reply within two working days.

[Start a conversation](https://www.msaied.com/public#contact) 

   Related articles
-----------------

 [ ![](https://cdn.msaied.com/740/cce86edc21eddcbdd2f2454fadaf9c70.png)  · 3 min read### The Pipeline Pattern in Laravel: Custom Pipelines Beyond Middleware

5 Oct 2026 ](https://www.msaied.com/public/articles/the-pipeline-pattern-in-laravel-custom-pipelines-beyond-middleware-1) [ ![](https://cdn.msaied.com/739/2d6897fdcdcf090613f96f72a64b8a78.png)  · 4 min read### MySQL Full-Text Search in Laravel: Indexes, Relevance Scoring, and Boolean Mode

4 Oct 2026 ](https://www.msaied.com/public/articles/mysql-full-text-search-in-laravel-indexes-relevance-scoring-and-boolean-mode) [ ![](https://cdn.msaied.com/738/073696a3fefe18bec825beec5ac658f5.png)  · 4 min read### Laravel Queue Rate-Limited Middleware: Throttling Jobs Without Losing Work

4 Oct 2026 ](https://www.msaied.com/public/articles/laravel-queue-rate-limited-middleware-throttling-jobs-without-losing-work) 

  Have a technical challenge?
----------------------------

Tell me what you’re building. I reply within two working days.

 [Discuss your project ↗](https://www.msaied.com/public#contact) 

  © 2026 Mohamed Said · Built with Laravel, meant to last.Senior Backend Engineer specializing in Laravel, scalable SaaS platforms, APIs, and cloud infrastructure. I build secure, high-performance web applications that help businesses grow.

 - [Home](https://www.msaied.com/public)
- [Articles](https://www.msaied.com/public/articles)
- [Certificates](https://www.msaied.com/public/certificates)
- [GitHub](https://github.com/EG-Mohamed)
- [LinkedIn](https://www.linkedin.com/in/msaiedm/)
- [WhatsApp](https://wa.me/201094619204)
- [Email Address](mailto:hello@msaied.com)
- [My CV](https://drive.google.com/file/u/0/d/1MF20IPRJyzfy32mhEutjL5EpSls0w2Q8/view)
- [Sitemap](https://www.msaied.com/public/sitemap.xml)
