From advanced discounting to global offer management

Postscript 2025 |New Capabilities + Platform Foundation
Senior Product Designer on the App Systems team
Summary
Sep - Oct 2025
One-liner
I led the design of Postscript’s first advanced offer creation experience (Buy X Get Y, stacking rules, subscription logic, and cashback) and laid the foundation for centralized global offer management that enables reusable offers and visibility across campaigns and automations.
Outcome
  • Shipped: Advanced offer creation modal plus unique code support for Shopper, addressing churn risk for 12 high-GMV merchants representing $869M in cumulative GMV and $1.3M in annual net revenue.
  • Validated and scoped: Offer management table direction.
  • Defined: Full Fondue integration concepts.
My role
As the sole designer on a cross-functional team. I owned the end-to-end: framing → systems design → interaction design → validation. I partnered closely with the PM to define the scope and the path to v1.
Context
Offers powered campaigns, automations, keyword replies, pop-ups, and AI experiences (Shopper), but Postscript could not support the promotional complexity high-GMV merchants needed.
Twelve high-value merchants flagged this as critical. Shipping before Black Friday/Cyber Monday (BFCM) was essential to retaining Postscript’s most valuable merchants.
Key gaps:
  • Capability: Offer creation was limited to basic, single-use discount codes.
  • Platform: Offers were created inside individual messages, with no global visibility or source of truth.
Problem
Complex promotions are limited in two ways
Marketers couldn’t execute sophisticated promotional strategy at scale inside Postscript. This showed up in two ways:
Offer creation was too basic
Merchants needed capabilities that are standard in Shopify: Buy X Get Y, Offer stacking, Subscription vs one-time logic, Cashback (Fondue), and Offer tiering (explored; de-scoped for v1 due to complexity).
Without these, merchants were either simplifying their strategies to fit Postscript’s limitations or moving work to third-party tools like Monocle.
Existing offer creation
Unable to manage offers globally
Offers lived inside individual messages, with no global view. Updating an offer meant editing every instance where it appeared.
Without a global framework, this also blocked Shopper, Postscript’s SMS AI agent, which needed visibility into available offers to choose the right one during subscriber conversations.
Design approach
Expand the capability + Establish the platform
This initiative had two layers: advanced discounting, which unlocked Buy X Get Y, offer stacking, subscription logic, and cashback, and centralized offer management, which created a global offer framework and migrated offers from message-level creation to a centralized model.
Constraints
  • Modal was the only viable format. Offer creation had to be fetched dynamically by FlowBuilder, Segments, Campaigns, and Popups. A full-page experience would have broken the integration points across the product.
  • Shopper needed this fast. Postscript’s SMS AI agent was blocked until the new modal shipped. It couldn't generate unique codes per subscriber without it.
  • Shifting business strategy. The offer roadmap changed repeatedly due to team shifts and  business changes. That uncertainty made it difficult to design with confidence for what the system would need to support long-term.
Advanced discounting
Design the capability surface
I translated Shopify discount concepts into a Postscript-native offer creation experience. I partnered closely with product and engineering to ensure the UI accurately reflected the underlying Shopify GraphQL capabilities.
New: Buy X Get Y
Fast path for common cases + Progressive complexity
The core challenge was adding power without slowing basic discount creation. I kept a fast path for common cases, and used progressive disclosure by grouping advanced options into a dedicated section.
Pushed back on the basic versus advanced split: We considered using a lightweight default modal for discount creation and a separate “advanced” configuration page for more complex setups. I recommended against this because we didn’t yet have a centralized offers surface where that page could live. More importantly, stacking rules and subscription logic are standard parts of Shopify’s discount configuration, so separating them into a different experience felt risky.
Simple discount creation and advanced settings
Consistent IA
Consistent information architecture across offer types: Same layout and grouping patterns reduce cognitive load.
Initial screen groupings
As new offer types were added, including cashback, the selection screen grew. Without structure, the longer list would have felt overwhelming and harder to scan. I introduced groupings, with “Most Popular” at the top for common use cases and “More ways to reward” below for less frequent types.
Design iterations highlights
1. I tested multiple structures
I explored a multi-step stepper modal and a dedicated Shopify-like page, then landed on a long, no-step modal built from card-based sections. This kept the experience integrated, helped chunk advanced settings, and preserved a fast path.
Key tradeoff: The stepper reduced overwhelm but made the flow feel longer and introduced a non-standard modal pattern for Postscript. The page approach improved clarity but risked feeling disconnected when users create offers mid-workflow.
2. Iterated on Buy X Get Y based on user feedback.
This was the most complex offer type, and it took several iterations to arrive at a clean solution. After research, I renamed it from Gift with Purchase to Buy X Get Y, a more inclusive label that matches Shopify’s standard terminology and more clearly describes the configurations it supports. Merchants already knew Shopify’s language, which reduced the learning curve.
Centralized offer management
Establish the platform layer
In parallel, I shaped the system-level direction for moving from message-level offers to a global model. Research with five customers showed that a full reporting dashboard was not a day-to-day need. Based on this, we scoped the design to:
Global table with key information
A global table with core attributes (name, type, applies to, stacking, used, sent) and actions to create, edit, clone, and delete.
Shift based on research: My PM and I decided to skipped a “phase 1 view-only table” because customers did not find it valuable. We prioritized shipping a global version with meaningful controls.
Offer management
Unique code visibility JTBD
The core JTBD were seeing where an offer was used across campaigns, popups, and messages, and diagnosing unique code issues by finding a specific code, checking its status, and identifying the instance it was tied to; as a result, I prioritized search and filters over showing a fully populated view by default.
JTBD: View offer used in and unique code (diagnostic workflow)
Fondue x Postscript Integration
Setting the vision
Beyond what shipped, I created concept explorations showing what it would look like to bring Fondue fully into Postscript, cashback creation, all settings, and the full Fondue app experience native to Postscript.
Integration discussions had been abstract and inconclusive for months. These concepts gave engineering a concrete view of where cashback creation would live, how settings would be organized, and what the navigation model could look like. That clarity unlocked more specific technical conversations about feasibility, backend requirements, and what we could ship quickly. The team left energized and aligned in a way the prior strategy conversations had not.
See more example of the vision here
Impact 🎉
Launched
  • Shipped a new offer creation modal with advanced discounting ahead of BFCM, reducing churn risk for 12 high-GMV merchants representing $869M in cumulative GMV and $1.3M in annual net revenue.
  • Unlocked Shopper capability enabling per-subscriber unique codes (not just static codes) and offer awareness via the global object foundation.
Defined and validated foundation
  • Validated the offer management table design with users, and used research findings to refine the scope.
  • Shared Fondue x Postscript vision concepts that accelerated technical alignment and energized the team.
Execution ended due to an org restructure (RIF)
Reflection
The biggest lesson was balancing speed with reversibility. When the path ahead was unclear, I tried to make choices that were easy to extend or adjust later, while staying concrete enough for engineering to ship confidently on a tight deadline.
If I could do one thing differently: push for the user research on the offer management table earlier. Having that data sooner would have helped us skip phase 1 from the start rather than discovering it wasn't useful partway through.