@extends('layouts.admin') @section('title', 'Abandonment settings') @section('content') @php $steps = old('steps') ? collect(old('steps'))->mapWithKeys(fn ($s, $i) => [$i + 1 => array_merge($settings['steps'][$i + 1], ['enabled' => false, 'show_products' => false, 'discount_enabled' => false], $s)])->all() : $settings['steps']; $value = fn (string $key) => old($key, $settings[$key]); @endphp Abandoned checkouts @if(session('status'))
{{ session('status') }}
@endif @if($errors->any())
{{ $errors->first() }}
@endif
@csrf @method('PUT')

Automatic recovery emails

When on, reminder emails are sent on schedule without anyone clicking a button. Admins can still send any email manually.

@foreach([ ['Active checkouts', number_format($stats['open'])], ['Emails sent', number_format($stats['emails_sent'])], ['Recovered', number_format($stats['recovered'])], ['Recovery rate', number_format($stats['recovery_rate'], 1).'%'], ] as [$statLabel, $statValue])
{{ $statLabel }} {{ $statValue }}
@endforeach

Abandonment rules

Email sequence

Up to {{ \App\Domain\CartCheckout\Services\AbandonmentSettingsService::MAX_STEPS }} emails. Each delay is counted from the moment the checkout was abandoned.

@foreach($steps as $number => $step) @php $index = $number - 1; @endphp
any()) open @endif data-abandon-step> {{ $number }} {{ $step['subject'] }} {{ $step['enabled'] ? 'Sends '.$service->delayLabel($step).' after abandonment' : 'Off' }} @if($step['discount_enabled']) · includes {{ app(\App\Domain\CartCheckout\Services\AbandonedCheckoutService::class)->discountSummary($step['discount_type'], (float) $step['discount_value']) }} code @endif
Send after abandonment
Email format
@foreach(\App\Domain\CartCheckout\Services\AbandonmentSettingsService::FORMATS as $format => $formatLabel) @endforeach
Full HTML email
Paste a complete email (tables and inline styles work best in every inbox). This replaces the built-in design entirely. Use the text and HTML block placeholders on the right; a stop-reminders link is added if you leave out {unsubscribe_url}. Scripts and forms are removed.

Each customer gets their own single-use code, applied automatically when they click the button.

Preview shows your unsaved edits. Test emails use the saved version.
@endforeach

Email branding

The sending address comes from the "Abandoned checkout" purpose under Settings → Email & SMTP.

@foreach(array_keys($steps) as $number) @endforeach
@endsection