Abandoned Cart

Отмечает простаивающие корзины Payload как брошенные, отправляет серию писем для возврата и атрибутирует восстановленные заказы.

Сообщество 1 4/нед MIT v1.0.1

Установка

pnpm add payload-abandoned-cart

Описание

Плагин расширяет `@payloadcms/plugin-ecommerce` и добавляет поля с эндпоинтами вместо замены коллекций. На корзинах, которые простаивают дольше `idleMinutes` (по умолчанию 60, отсчёт по `updatedAt`), фиксируется `abandonedAt` вместе с `recoveryToken` и `recoveryTokenExpiresAt`. Затем запускается серия писем для возврата покупателя, а заказ, оформленный после перехода по ссылке восстановления, помечается как спасённый. Ссылка ведёт на эндпоинт, который проверяет токен и делает редирект на storefront, передавая cart id и secret. Гость может продолжить корзину, а не начинать заново. Разметка и отправка писем выполняются одним проходом через `POST /abandoned-cart/sweep` (доступен по bearer secret или для авторизованного пользователя), поэтому достаточно направить на него cron-задачу. Те же функции экспортируются для вызова из своего кода: `runAbandonedCartSweep`, `markAbandonedCarts`, `sendRecoveryEmails`, `recoverCart`. Внешний планировщик не нужен. Своей библиотеки для почты тоже нет, всё отправляется через `payload.sendEmail` с тем email-адаптером, который уже настроен в проекте. Серия восстановления описывается шагами. У каждого шага есть `delayMinutes`, отсчитываемый от `abandonedAt`, а не от предыдущего письма, поэтому расписание остаётся читаемым при добавлении или удалении шагов. Шаблон шага это либо строка с плейсхолдерами `{{placeholder}}`, либо функция, принимающая контекст: `cartID`, `itemCount`, `subtotalFormatted`, `recoveryURL`, `step` и остальное. По умолчанию два текстовых письма: через 60 и 1440 минут. Время жизни токена `tokenTtlHours` (по умолчанию 336), окно атрибуции `attributionWindowHours` (по умолчанию 168), порог простоя `idleMinutes` (по умолчанию 60) и лимиты `markLimit` (200) и `sendLimit` (100) настраиваются. Опция `disabled` останавливает разметку, отправку и атрибуцию, не трогая поля, поэтому схема базы не меняется. Плагин нужно подключать после `ecommercePlugin`, так как он расширяет коллекции, объявленные в `@payloadcms/plugin-ecommerce`. Для отправки письма нужен адрес: сначала читается поле `customerEmail` в корзине, а если его нет, берётся адрес из связанной записи клиента. Гостевая корзина требует, чтобы storefront зафиксировал адрес в начале оформления заказа. Атрибуция заказов использует хуки `afterChange` и `req.context`, чтобы связать корзину и заказ, созданные в одном запросе, так как сам заказ не хранит ссылку на корзину. Если коллекция заказов не задана, восстановленные продажи всё равно отмечаются на корзине, но не на заказе. У плагина нет runtime-зависимостей и admin-компонентов. Peer-зависимости: `payload >=3.50 <4`, `node >=20`.

О пакете

Имя пакета
payload-abandoned-cart
Последняя версия
1.0.1
Размер
53 кБ
Лицензия
MIT
Загрузок в неделю
4
Последняя публикация
21 авг. 2026 г.

Ещё от Poseidonas

Профиль автора

Barcodes

Добавляет штрихкоды Code 128, EAN-13 и QR в коллекции товаров Payload с печатью этикеток и опциональными кнопками в админке.

AI Manager

Плагин Payload для автогенерации товарных описаний, заголовков, атрибутов и переводов через Claude, ChatGPT, Gemini или Kimi с пропуском уже сгенерированного контента.

EU VAT

Рассчитывает НДС ЕС для магазинов на Payload и записывает разбивку по каждому заказу: ставки, реверсивный заряд, проверку VIES и отчёт OSS.

Stock Reservation

Проверяет наличие варианта и цену до оплаты, резервирует остатки до подтверждения и закрывает пробелы чекаута в официальном плагине Payload ecommerce.

Stock Alerts

Отправляет письмо при падении остатков товара или варианта ниже порога, с поддержкой бэкордера и публичным полем статуса.

Shipping Rates

Добавляет зоны доставки, расчет стоимости и endpoint для quoted в магазинах на @payloadcms/plugin-ecommerce.