Release 2.8.0 aligns promotion dates with the store timezone and adds admin tools to prevent scheduling mistakes.
Store timezone (2.8.0)
- Campaign start/end dates interpreted with
wp_timezone()(no implicit UTC). - Warning in Settings → Global Rules when WP timezone is UTC/unset on a live (non-staging) site.
- On sale badge fix: product is on sale only when the promo is active and community price is below regular.
Operational detail: Chapter 2 §2.12.
Promotion schedule panel (2.8.0)
- Metabox panel with live status (Scheduled / Live / Ended).
- Store timezone times + UTC reference; AJAX preview while editing dates.
- Site timezone hint on Start/End fields.
Details: Chapter 3 §3.6.
Fixes included (2.7.6–2.7.9)
- Campaign archive after state machine + backfill when date meta was already cleared.
- “Incomplete Configuration” notice excludes final campaign states.
- Coupon expiry in My Rewards/orders; campaign result email with My Rewards link for registered customers.
My Rewards — estimated reward date (2.8.0)
- Pending compensation on paid orders: reward type + estimated date (Safety Guard or Action Scheduler).
- Italic disclaimer for possible delays (checks, gateway, manual review).
- Campaign status fix: real end time (no longer end-of-day 23:59:59).
- Guard-period email uses the same helper.
- ETA refinement:
wccp_process_promotion_endjob priority; guard = 0 no sliding “now + 1h” estimate.
FAQ: Chapter 9 §9.11 · Merchant: Chapter 2 §2.13.
Outcome Messaging — campaign result callouts (2.8.0)
When a campaign closes without issuing rewards, customers now receive a contextual callout (in My Rewards, on the Order page, and in the result email) explaining exactly what happened — replacing the generic «❌ Threshold not met» message.
- ❌ Community target not reached — shows how many copies were missing from the minimum threshold, with an invitation to share the product link in future campaigns.
- ❌ Price already optimal — the order was already at the maximum tier price: a refund would be zero anyway. No negative economic impact.
- ❌ Campaign closed early — the campaign was manually closed by the admin before its natural expiry.
- ⛔ Order excluded — the order does not participate in the refund for a specific reason (e.g. unpaid, cancelled, partial refund). The callout shows the exact reason. Excluded orders do not receive the campaign result email.
Each callout includes campaign data (final sales count, minimum threshold, active tier) and a contextual CTA. The Partner programme suggestion appears only when the Referral system is active.
Details: Chapter 9 §9.11.