norea / bagisto-announce
Coming-soon product status, "notify me" subscriptions and a release-newsletter manager for Bagisto.
Requires
- php: ^8.1
README
Coming-soon product status, "notify me" subscriptions, and an admin release-newsletter manager for Bagisto 2.x.
Turn any product into an announcement ("coming soon"): the storefront shows a Notify me form instead of the price/buy button, e-mails are collected per product, and from Admin → Marketing → Announcements you compose and send a release newsletter to the people who subscribed — only to those you haven't notified yet.
- Coming-soon flag — a boolean
coming_soonproduct attribute (created automatically, sits next to Featured in the product settings). - Notify-me capture — a public, rate-limited endpoint stores subscriber e-mails per product.
- Newsletter manager — cards per announced product with subscriber counts; a modal to compose/edit the subject & body and send.
- Queued sending — mails go out through Laravel's queue in batches; each recipient is marked sent so re-sends never duplicate.
- Subscriber editor — click the count to open the list (date, e-mail, editable Sent flag); unchecking returns an address to "new" for the next send.
- i18n — English, Ukrainian, Polish, Russian included; fully translatable.
License: MIT.
Screenshots
Admin → Marketing → Announcements — every coming-soon product with its subscriber counts:
| Compose & send a release newsletter | Storefront — "notify me" |
|---|---|
![]() |
![]() |
Requirements
- Bagisto 2.x (Laravel 11/12, PHP 8.1+)
- A running queue worker (sending is queued):
php artisan queue:work
Installation
Install via Composer:
composer require norea/bagisto-announce
Or pin the major version:
composer require norea/bagisto-announce:^1.0
Run the migrations (creates the subscriber/campaign tables and the coming_soon attribute):
php artisan migrate
Optionally publish the config:
php artisan vendor:publish --tag=announce-config
Clear caches so the new menu item and routes are picked up:
php artisan optimize:clear
Storefront integration (one include)
The admin side works out of the box. To show the Notify me form on the product page, add this include where the buy button is — in a theme override of
packages/Webkul/Shop/src/Resources/views/products/view.blade.php (or your theme's copy):
{{-- Shows a "Coming soon — notify me" box; renders nothing for normal products --}} @include('announce::shop.notify', ['product' => $product])
To also hide the price / add-to-cart for announced products, wrap those blocks:
@if (! $product->coming_soon) {{-- existing price + add-to-cart / buy-now markup --}} @endif
That's it — the partial includes its own JavaScript and posts to the package's
CSRF-exempt, rate-limited announce/notify endpoint.
Optional: badge on catalog cards
If you expose the attribute in your product API resource
('coming_soon' => (bool) $this->coming_soon), you can show a "Coming soon"
badge on listing cards and hide their add-to-cart button with a simple
v-if="! product.coming_soon" in the card component.
Usage
- Edit a product → in the settings turn on Coming soon, save.
- The product page shows the Notify me form; visitors subscribe.
- Go to Admin → Marketing → Announcements. Each announced product shows how many subscribed and how many are new.
- Click Compose newsletter, edit subject/body, Send — it queues and mails only the new subscribers, then marks them sent.
- Click the subscriber count to view/edit the list; uncheck Sent to include someone again next time. Save to apply.
- When the product actually launches, turn Coming soon off — it becomes a normal, purchasable product.
Configuration
config/announce.php:
| Key | Default | Description |
|---|---|---|
attribute_code |
coming_soon |
Boolean product attribute that flags an announcement. |
chunk_size |
50 |
Recipients processed per batch when a campaign runs. |
How it stores data
announce_subscribers—product_id,email,locale,notified_at.announce_campaigns— one row per send:subject,body,total_recipients,sent_count,status.
License
MIT © zilber-llm


