Troubleshooting
Troubleshooting
No expiry email arrives
Check the following in this order:
- Global Email notifications are enabled.
- At least one valid recipient address is configured.
- The product has a date of expiration and its Active and Notify via email switches are enabled.
- The selected pre-expiry period has actually been reached. For a deactivation email, the date must be reached and Automatic deactivation must be enabled.
- The scheduled task has run and Messenger has consumed the queued message.
- Shopware mail delivery is working.
Check var/log/steelcode_expiration_date.log, Shopware mail logs, and failed Messenger messages. A successfully sent period is recorded to prevent duplicate emails; change the expiration date or use another eligible period when testing again.
The wrong discount is shown
Product rules override global rules. Among active rules, the closest period applies: at five days remaining, a 7-day rule is used before 14-day or one-month rules. Clear caches after a configuration change.
A product was not deactivated
Confirm that the date is reached, the expiry record is active, Automatic deactivation is enabled, and Shopware scheduled tasks are running. Run bin/console steelcode:expiration-date:process to test immediately.
Storefront prices look stale
The task invalidates products at discount transitions. If you manually change expiry data or configuration, clear the cache and reload the page. Also confirm that the product is active for expiration handling and that the configured rule period has started.
The expiration indicator is missing
The product needs an expiration date, Active, and Preview on storefront. Listing indicators also require Show expiration date in product listings; cart and checkout indicators require Show expiration date in cart and checkout. The product detail card does not depend on those two global display switches.
A global discount is not used
Global rules are used only when the product has no active product-specific discount rules. Remove or deactivate the product rules if the global fallback should apply.