Real-World Example
Maya selects the Pending Member Follow-Up template, chooses a group of pending creditor members, and schedules a weekly campaign. If the team needs the email to go now, she runs it immediately after confirming the group has matching profiles.
The portal should create campaign tracking and process profile emails in background jobs.
Visual Flow
Schedule Rules
- One-time campaigns can be scheduled for a future date.
- Daily, weekly, and monthly campaigns require an end date.
- Weekly campaigns require a day of week.
- Monthly campaigns require a day of month.
- Immediate campaigns create tracking and queue delivery right away.
Campaign Actions
How It Should Work
- It should require an existing template and group owned by the logged-in EcoMail Hub user.
- It should prevent campaigns to empty groups.
- It should allow re-running only when the campaign is eligible.
- It should queue campaign delivery instead of sending all emails from the form request.
How It Should Not Work
- It should not send to creditor profiles outside the selected group criteria.
- It should not let users edit or delete another user’s campaign.
- It should not allow a recurring campaign without the needed schedule details.
Developer Notes
- The scheduled command
run:eco-mail-hub-campaigns runs daily at 17:30.
- Delivery chunks creditor profiles in batches of 500 and then dispatches individual message jobs.
- Email sends attach EcoMail Hub tracking metadata for SendGrid callbacks.
app/Livewire/ConsumerResponseManager/Communications/Campaign/IndexPage.php
app/Livewire/ConsumerResponseManager/Communications/Campaign/ListView.php
app/Livewire/ConsumerResponseManager/Forms/Communications/EcoMailHubCampaignForm.php
app/Console/Commands/RunEcoMailHubCampaignCommand.php
app/Jobs/ProcessEcoMailHubCampaignCreditorProfilesJob.php
app/Jobs/SendEcoMailHubCampaignEmailJob.php
app/Jobs/SendSingleEcoMailHubCampaignMessageJob.php
Last modified on May 26, 2026