Marketing workspace with clearer audiences, delivery and results
The Marketing workspace now presents each module as part of one lifecycle: audience, message, destination, and measurement. The workspace home shows every primary tool and highlights operational work such as pending reviews, active automations, and unsent campaigns.
The Marketing workspace now presents each module as part of one lifecycle: audience, message, destination, and measurement. The workspace home shows every primary tool and highlights operational work such as pending reviews, active automations, and unsent campaigns.
## Flash sales
- Offer setup now separates the discount, eligible products, public banner, offer description, and call-to-action.
- Client announcements can use email, SMS, both, or no message.
- Audience selection supports all opted-in clients, signup-date cohorts, age ranges, and explicitly selected clients. A live preview shows the number that can actually receive each channel after consent, preferences, contact availability, and suppression checks.
- Product selection only controls where the discount applies; it does not silently become a marketing audience filter.
- Announcements are stored as campaigns, providing the same delivery and engagement reporting as other campaigns.
- Every announcement links to `/offer/{sale-id}`. The landing page shows scheduled, active, and ended states; eligible products; before/after prices; the promo code; and purchase links with the promo preserved.
- Overlapping active sale windows are rejected to avoid ambiguous pricing banners.
## Campaign delivery
- “Save & Send Now” now creates and dispatches the campaign instead of leaving a draft behind.
- Email and SMS have separate copy, previews, merge-tag handling, and SMS segment/cost estimates.
- Scheduled venue campaigns are drained by the shared five-minute cron dispatcher.
- Campaign dispatch atomically claims a campaign before delivery, preventing concurrent workers from sending it twice.
## Reviews and testimonials
- Real class and appointment reviews are visible and can be published or unpublished from Marketing.
- Testimonials remain a separate moderation surface.
- Review Request Activity explains that one row represents one successful channel delivery. It identifies email, SMS, push, in-app, legacy milestone prompts, app surface, delivery date, and whether a review was submitted.
- The page summarizes the current automatic request rules and links directly to Feedback settings and the provider delivery log.
## Loyalty and challenges
- Manual point adjustments use a venue-scoped client search instead of pasted UUIDs. The server revalidates active venue membership and requires an audit note.
- Top-earner aggregation now reads the points value in one query.
- The Loyalty page links to the existing earning-rule and tier configuration.
- Challenge creation now exposes the existing challenge engine's format, progress target, visibility, teams, photo/before-and-after requirements, and completion badge fields.
- Challenge updates and deletes are validated and explicitly scoped to the active organization.
## Business app
- Staff with the right Marketing permissions can open a Marketing hub from More, check current activity, create and stop flash sales, and review request-delivery activity without returning to a desktop.
- Selected clients can be carried directly from the client list into a targeted flash-sale audience.
- The app explains what will be published, who is eligible to receive a message, which channels will be used, and where the offer link opens before anything is sent.Workshop schedules now stay consistent after checkout expiry and catalog edits
Expired workshop checkout attempts now clear themselves automatically, so an abandoned payment step no longer leaves a misleading pending order in the venue's records. This cleanup does not create a charge or booking, and completed payments keep using the existing fulfillment and refund safeguards.