Weave Code
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

Laravel Mailcoach Sendinblue Setup Laravel Package

spatie/laravel-mailcoach-sendinblue-setup

Add-on for spatie/laravel-mailcoach that prepares a Sendinblue account for use with Mailcoach, enabling campaign sending and feedback processing through Sendinblue. Documentation available on the Mailcoach site.

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Setup Steps

  1. Installation

    composer require spatie/laravel-mailcoach-sendinblue-setup
    

    Publish the config file:

    php artisan vendor:publish --provider="Spatie\MailcoachSendinblueSetup\MailcoachSendinblueSetupServiceProvider" --tag="mailcoach-sendinblue-setup-config"
    
  2. Configuration Edit .env with your Sendinblue API credentials:

    MAILCOACH_SENDINBLUE_API_KEY=your_sendinblue_api_key
    MAILCOACH_SENDINBLUE_CONTACT_LIST_ID=your_contact_list_id
    
  3. First Use Case Use the MailcoachSendinblueSetup facade to create a Sendinblue contact list (if needed) and sync it with Mailcoach:

    use Spatie\MailcoachSendinblueSetup\Facades\MailcoachSendinblueSetup;
    
    MailcoachSendinblueSetup::syncContactList();
    

Implementation Patterns

Workflows

  1. Syncing Contact Lists Periodically sync Mailcoach subscribers with Sendinblue:

    // Run via cron or manually
    MailcoachSendinblueSetup::syncContactList();
    
  2. Handling Feedback Process email opens/clicks from Sendinblue webhooks:

    // Define a webhook route in `routes/web.php`
    Route::post('/sendinblue/webhook', [MailcoachSendinblueSetupController::class, 'handleWebhook']);
    
  3. Campaign Tracking Use Mailcoach’s built-in tracking with Sendinblue’s API:

    $campaign = Mailcoach::campaigns()->find($id);
    $campaign->trackOpens(); // Uses Sendinblue's API under the hood
    

Integration Tips

  • Leverage Mailcoach Events Listen to Mailcoach\Events\CampaignSent to trigger syncs:

    Mailcoach::campaigns()->sent(function ($campaign) {
        MailcoachSendinblueSetup::syncContactList();
    });
    
  • Batch Processing For large lists, use chunking:

    MailcoachSendinblueSetup::syncContactList(100); // Sync 100 records at a time
    
  • Webhook Validation Validate Sendinblue webhook signatures in your controller:

    public function handleWebhook(Request $request)
    {
        if (!MailcoachSendinblueSetup::validateWebhook($request)) {
            abort(403);
        }
        // Process feedback
    }
    

Gotchas and Tips

Pitfalls

  1. API Rate Limits Sendinblue’s API has rate limits (e.g., 100 requests/minute). Use batch processing to avoid hitting limits:

    MailcoachSendinblueSetup::syncContactList(50); // Adjust batch size
    
  2. Webhook Delays Sendinblue webhooks may arrive out of order or with delays. Use a queue for processing:

    MailcoachSendinblueSetup::processFeedback($data)->onQueue('mailcoach');
    
  3. Duplicate Contacts Ensure email addresses are deduplicated before syncing:

    MailcoachSendinblueSetup::syncContactList(true); // Force deduplication
    
  4. Missing Config Forgetting to publish the config or set .env values will cause silent failures. Verify:

    php artisan config:clear
    

Debugging

  • Enable Logging Add to config/mailcoach-sendinblue-setup.php:

    'log' => env('MAILCOACH_SENDINBLUE_LOG', false),
    

    Check logs in storage/logs/laravel.log.

  • Webhook Testing Use Sendinblue’s sandbox mode for testing:

    MAILCOACH_SENDINBLUE_SANDBOX=true
    

Extension Points

  1. Custom Contact Attributes Extend the sync to include custom fields:

    MailcoachSendinblueSetup::extendContactSync(function ($subscriber) {
        return ['custom_field' => $subscriber->custom_attribute];
    });
    
  2. Feedback Processing Override feedback handling:

    MailcoachSendinblueSetup::extendFeedbackProcessing(function ($feedback) {
        // Custom logic for opens/clicks
    });
    
  3. Contact List Filtering Filter subscribers before syncing:

    MailcoachSendinblueSetup::extendContactFilter(function ($subscriber) {
        return $subscriber->active; // Only sync active subscribers
    });
    
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.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
milesj/emojibase
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport