Hogyan ne küldj rossz levelet rossz embernek
Az e-mail kampányoknál nem a küldés a nehéz, hanem az, hogy ne küldjek rossz levelet rossz embernek. A kampányrendszeremben ezért a kód nagy része védekezés.
Egy döntési pont
Minden ajánló egyetlen helyen megy át. Ez a hely nem az első elutasítási okot adja vissza, hanem az összeset. Így egy előnézetben pontosan látom, miért marad le valaki a listáról.
public function evaluate(User $user, string $channel, ?CarbonInterface $now = null): PolicyDecision
{
$now = ($now ?? Carbon::now())->copy();
$reasons = []; // collect ALL reasons, not just the first, so a preview can explain every skip
if (! (bool) $this->cfg('enabled', false)) {
$reasons[] = 'kill_switch_off';
}
if ($user->is_banned || $user->deleted_at) {
$reasons[] = 'account_blocked';
}
if ($channel === self::CHANNEL_EMAIL) {
if (! (bool) $user->is_subscribed) {
$reasons[] = 'no_marketing_consent';
}
if ($this->emailSuppressed(trim((string) $user->email))) {
$reasons[] = 'email_suppressed';
}
} elseif ($channel === self::CHANNEL_PUSH) {
if ($this->isQuietHour($now)) {
$reasons[] = 'quiet_hours';
}
}
// ... weekly cap from the shared marketing ledger, then the holdout control group
}
Kivonat valódi kódból, anonimizálva.
A védelmi rétegek
- Kapcsoló minden kampányhoz, alapból kikapcsolva.
- Próbafuttatás küldés nélkül.
- Címzett-korlát egy futásra.
- Várakozási idő ugyanannak a címzettnek.
- Tiltólista és hozzájárulás-ellenőrzés.
- Közös heti keret, és csendes órák a push értesítésnél.
Kontrollcsoport
A kampány hatását kontrollcsoporttal mérem: a kontrollcsoport kiszámolt ajánlót kap, de nem kapja meg a levelet. A különbség mutatja meg, hogy a küldés mit hozott.
Hasonló problémán dolgozol?
Ha elakadtál, vagy átnéztetnéd a megoldásodat, írj, szívesen megnézem.
Írok neked →További cikkek
Nagy fájlok feltöltése megszakadás nélkül Laravelben
Hogyan oldottam meg a nagy videók feltöltését úgy, hogy egy megszakadt kérés ne vigye el az egész feltöltést.
Elolvasom →Legacy rendszer újraírása működés közben
Hogyan cserélek le egy régi rendszert úgy, hogy a felhasználók közben dolgozhatnak: azonos viselkedés, eltérések listája, naplózás.
Elolvasom →