Appearance
Sending Campaigns
Learn how to send one-off campaigns to specific contacts and manage pending sends.
One-Off Campaign Sending
One-off campaigns let you send messages to contacts you select manually. This is useful for:
- Seasonal promotions
- Service reminders
- Re-engagement campaigns
- Announcements to specific customer segments
How to Send a Campaign
- Navigate to Marketing > Campaigns
- Open a one-off campaign (must be in Active status)
- Click the Send Campaign button
- Select recipients from your contact list
- Click Send to queue the messages
Filter Contacts
Use the search and filter options in the contact picker to find specific contacts quickly. You can filter by tags, last service date, or other criteria.
What Happens After Sending
When you click Send, the following happens:
- Batch Created - A batch record is created to track this send
- Messages Queued - Individual messages are scheduled for each recipient
- Review Window - Messages wait in queue during the cancel window (default 5 minutes)
- Sending Begins - Messages are sent in batches at your configured rate
Cancel Window
Before messages start sending, you have a brief window to cancel if needed. This gives you time to:
- Review the recipient list
- Catch any mistakes
- Stop the send if something looks wrong
The cancel window duration is configurable in Settings > Campaigns.
Viewing Pending Sends
While messages are queued, you can see:
- Total Recipients - Number of contacts receiving the campaign
- Scheduled - Messages waiting to be sent
- Sent - Messages already sent
- Failed - Messages that couldn't be delivered
Batch Processing
To protect your sender reputation and avoid overwhelming mail servers, messages are sent in batches:
| Setting | Description | Default |
|---|---|---|
| Batch Size | Messages sent per cycle | 10 |
| Batch Delay | Wait time between batches | 60 sec |
| Cancel Window | Time before first batch starts | 5 min |
Configure these settings in Settings > Campaigns.
Message Status Tracking
Each message goes through these statuses:
| Status | Description |
|---|---|
| Scheduled | Queued and waiting to send |
| Sending | Currently being sent |
| Sent | Successfully sent to mail server |
| Delivered | Confirmed delivered (when available) |
| Opened | Recipient opened the email (email only) |
| Clicked | Recipient clicked a link (email only) |
| Failed | Could not be delivered |
Consent Requirements
Messages are only sent to contacts who have given consent:
- Email: Requires
marketing_email_consent = granted - SMS: Requires
marketing_sms_consent = granted
Contacts without consent are automatically skipped and marked as suppressed.
Re-sending to Same Contacts
You can send the same campaign to the same contacts multiple times. Each send creates a new batch, allowing you to:
- Send seasonal reminders annually
- Run monthly promotions
- Re-engage inactive customers periodically
Avoid Over-messaging
Be mindful of how often you contact customers. Too many messages can lead to unsubscribes and damage your brand reputation.
Troubleshooting
"No eligible recipients" error
This means all selected contacts were filtered out due to:
- Missing consent
- Invalid email/phone
- Already received this campaign recently (deduplication)
Messages stuck in "Scheduled"
Check that:
- The queue worker is running (
php artisan queue:listen) - The scheduler is running (
php artisan schedule:work) - The cancel window hasn't expired yet
High failure rate
Common causes:
- Invalid email addresses
- Phone numbers in wrong format
- Mail server configuration issues
Check the email logs in Communication > Email Logs for specific error messages.
