Skip to main content
Kartik Singh
AboutWorkLinkedIn ↗Behance ↗
Kartik Singh
Kartik Singh © 2026
Privacy
Kartik Singh © 2026Privacy
All work
Project Funnel One-Click Upsells·Behavioural Design

Same offer, same price, right moment.

Acceptance from 18% to 31% by asking three seconds later.

← fullscreen felt pushy to 8 of 10 people
Project Funnel One-Click Upsells — product interface
Role
Product Designer
Team
Team of 6
Timeline
7 Months
Type
Full-time

At a glance

8 min read

Problem
WooCommerce stores showed static thank-you pages while customers had payment saved and intent still active.
Insight
Upsell acceptance is a timing and framing problem, not a product or pricing one. 3-second delay + “Complete Your Order” framing = 31% acceptance.
Result
31% acceptance in final usability testing, 15-20% typical AOV lift in production, 4-minute setup vs 45+ minutes for competitors.

30,000+

Active installs (suite, WordPress.org)

31%

Peak acceptance in 50-user testing

15–20%

Typical AOV lift in production

“

Same customer. Same offer. Same design. Acceptance swung from 18% to 31% based on one variable: when we asked. The problem was never what to offer. It was when.

Imagine you have just paid. Your card details are still on screen, the order is going through, and you are waiting for the one thing you actually want: confirmation that it worked.

Instead a full-screen offer drops in front of you. Eight of the ten people I tested that on used the same word, pushy, and six were hunting for the skip button before they had read a single line.

◆

The Decision I'm Most Proud Of

Legal review cost four points of acceptance. We kept the disclosure: 27% with full transparency beats 31% with a trust risk.

We built a one-click upsell system that hit 31% acceptance. Then legal review required explicit charge disclosure before any one-click purchase.

Initial button: "Add to Order" Required: "Add to Order, $29.99" with microcopy "Your saved payment method will be charged."

Acceptance rate dropped 4% (31% to 27%). We kept the disclosure.

27% with full transparency is better than 31% with a legal and trust risk. These are customers' credit cards. They deserve to know what they're agreeing to before they tap. A designer who optimises conversion at the expense of user trust isn't doing their job. They're doing the job wrong.

Senior designers hold positions that aren't always the most commercially expedient. This was one of those moments.

Upsell offer card showing product recommendation and one-click purchase

Here's how we got there.

◆

The Opportunity Nobody Was Taking

In the WooCommerce store sample reviewed, 94% showed a static thank-you page. Nobody had combined one-click purchase, real targeting and sub-5-minute setup.

The 30 seconds after a customer completes a purchase are unlike any other moment in e-commerce. Payment is saved. Intent is high. Positive commitment mode. The reference ranges used in the project put post-purchase upsell acceptance at 10-20%, several times higher than cold traffic conversion (1-3%) or promotional email conversion (1-2%).

In the WooCommerce store sample reviewed for this project, 94% were showing customers nothing but a static thank-you page. The original sample size was not retained in this portfolio record, so this describes the audited sample rather than the whole WooCommerce market.

The market had three options, all flawed.

  • Plugin A: Required customers to re-enter payment info, conversion dropped to ~8%, defeating the purpose
  • Plugin B: Genuinely one-click, but showed random offers with zero targeting logic
  • Plugin C: Smart targeting, but 45-minute setup, most merchants never activated it

Nobody had combined true one-click purchase + relevant targeting + sub-5-minute setup. That was the gap.

◆

The Central Hypothesis

Acceptance is a timing and framing problem, not a product or pricing one. Both halves were tested before any design work began.

Post-purchase upsell acceptance is not primarily a product or pricing problem. It is a timing and framing problem.

I built this hypothesis before any design work began, then structured the entire project around testing it.

The timing test: I showed 30 shoppers the same upsell offer, identical product, price, and design, at different points after a completed purchase. Participants were recruited via UserTesting (screener: purchased online in the last 7 days).

When shownAcceptance rateWhat customers said
0–30 seconds18%"I just spent $80. Now you want more? I'm done."
3 seconds31%"Oh, this would actually go perfectly with what I bought."
5+ seconds19%"I'd already moved on mentally."

Same customer. Same offer. Same design. The difference was entirely when.

The framing test: During beta, I ran framing tests with 50 participants across two rounds of 25 to validate before committing to the copy direction.

FramingAcceptance
"Complete Your Order"31%
"You Might Also Like"24%
"Don't Miss This Deal"18%

13 percentage points from word choice alone. Copy is not decoration in behavioural design. It is the mechanism.

Upsell performance dashboard showing order, revenue and upsell metrics
◆

What Existing Products Got Wrong

500 Hotjar sessions and 30 interviews with customers who declined: predatory framing, irrelevance, and payment friction.

Reviewing 500 post-purchase sessions on Hotjar and interviewing 30 customers who declined upsell offers, the failures had three consistent causes.

Predatory framing destroyed trust. Competitor upsells appeared immediately after payment on full-screen blocking pages: "WAIT! EXCLUSIVE OFFER, LAST CHANCE BEFORE IT EXPIRES!"

"This feels like a bait-and-switch. I just paid. Now they're trapping me with another offer."

Irrelevance made offers invisible. Most plugins showed bestsellers regardless of what was in the cart. A yoga mat buyer seeing a jump rope isn't a recommendation. It's noise that signals "we don't know anything about you."

Friction collapsed conversion. One-click: 10-20% acceptance. Re-entry of payment required: 3-6%. Same product, same timing, 3-4x difference. Any friction at this moment breaks the psychological window.

Best-in-class examples told the opposite story. Amazon's "Frequently bought together" uses co-purchase data and informational framing. Dollar Shave Club's "Complete your kit" positions additions as finishing something. Both feel like help, not sales. That distinction drove every design decision.

FunnelKit Cart's own feature set: slide-out cart, upsells, rewards and express checkout bundled together
Targeting rules configuration showing product-specific and category-based rules
◆

Testing the Hypothesis

Fullscreen read as pushy. Embedded went invisible. A sequential reveal at 3 seconds hit 31% acceptance and 94% visibility.

Test 1: Fullscreen takeover

After checkout: full-screen offer page. Clear hierarchy. Prominent CTA.

10 customers. 8 of 10: "pushy." 6 of 10 were scanning for a skip button before reading the offer.

❌ Killed it. 8 of 10 read it as pushy before reading the offer.

Finding: fullscreen pages trigger a defence response. Anything blocking order confirmation reads as threatening, not helpful. The timing hypothesis was right, but this delivery method activated the wrong psychological state regardless of timing.

Illustrative reconstruction of dynamic upsell paths branching after a customer accepts or declines

Test 2: Embedded in the thank-you page

Offer below order confirmation. Non-blocking. No interruption.

Better reception, but 5 of 8 missed the offer entirely.

❌ Killed it. Non-intrusive turned out to mean invisible: 5 of 8 missed it entirely.

Finding: prominence competes with confirmation. Subtle enough not to compete = invisible. I needed something that waited for the right moment rather than existing statically on the page.

Test 3: Sequential reveal at 3 seconds

The thank-you page loads normally. Order fully confirmed. After 3 seconds, when the timing data showed customers shift from closing to validation mode, a card slides in from the right edge:

"Complete Your Order" "Customers who bought [product] also loved:" [Product image, Title, Price] [Add to Order, $29.99] / [No thanks]

Why slide-in from the right: Matches notification behaviour users already know. Non-blocking. Spatially dismissible. Consistent with the Sliding Cart's drawer pattern, customers in the FunnelKit ecosystem already had this mental model.

✅ Shipped it. 50-user test of the final design: 31% acceptance, 94% offer visibility.

The offer step inside the funnel: template, product and settings in one place
◆

Design Principles That Guided Every Decision

Well-timed, honest, easy to decline, familiar — with five targeting rules hidden behind a five-question setup form.

04. Design principles

Not just "show an offer"

Make it well-timed. Make it honest. Make it easy to decline.

Well-timed

Wait for the order to land before asking for anything else.

Honest

Real price, real product, no invented scarcity.

Easy to decline

Declining takes one tap and never hides the confirmation.

Familiar

Behaves like a notification people already know how to dismiss.

Relevance over volume. Five targeting rules, derived from co-purchase pattern analysis cross-referenced with a merchant survey: genuine strategies already in use, not designer assumptions:

The five targeting rules and where they came from
  • Product-specific (yoga mat to yoga blocks): Most common pattern in both data and merchant behaviour
  • Category-based (coffee to brewing equipment): Merchants called these "natural product families"
  • Cart value targeting (orders over $100 to premium upgrade): Higher-value orders showed different co-purchase patterns in the data
  • Customer history (first purchase vs. repeat): Repeat customers bought differently, less price-sensitive, more likely to try new product lines
  • Bundle pricing (complete the kit, save 15%): Merchants using manual bundles consistently reported higher post-purchase satisfaction

Merchants configure this through a five-question setup form. The conditional logic underneath is complex. That's the point.

Bonus offer page: built visually in Elementor, dynamic customer name and live pricing, no code required

One downsell maximum, tested, not assumed. When a customer declines, one lower-priced alternative appears. Beta data: 18% of declines accepted the downsell. I tested two downsells in sequence with a 20-user subset. At the second offer: 94% "No thanks" rate, and 7 of 20 expressed annoyance unprompted. "Now I feel like I'm being nagged." The trust cost exceeded the revenue value. Maximum one downsell is a rule grounded in testing, not instinct.

Iterative beta loop. 200 merchants over 8 weeks. Each wave of feedback produced a direct design response.

What each wave of beta feedback changed
  • Weeks 1-2: "I don't know which products to offer" to pre-configured offer templates
  • Weeks 3-4: "I want to test offers" to built-in A/B testing with auto-winner declaration
  • Weeks 5-6: "Mobile offers feel cramped" to redesigned for 85% screen width, larger touch targets
Illustrative reconstruction of an A/B test where traffic splits between two variants and conversion decides the winner
◆

Merchant Results

Production settles below lab numbers, as it always does. 15–20% AOV lift at a 16% acceptance rate.

Production acceptance settled below the lab result. At the observed 16% production rate, an illustrative store with 500 monthly orders would see: 80 acceptances × $14.50 average = $1,160/month, or $13,920/year. This is a scenario calculation, not a promised store outcome.

Cart Upsell dashboard, sample-data state: the view every merchant sees before their first real conversion
Same dashboard, alternate resolution: metrics stay legible from onboarding tooltip to full dataset
◆

Customer Behaviour Data

Five production A/B tests across thousands of orders. Every relative pattern from the lab held at scale.

Production A/B
Five offer variables, acceptance rate by variant
Winning variantAlternative
0%Scale: 100%
Complementary vs. similar productsComplementary
Winning variant
19%
Alternative
12%
Bundled vs. individual itemsBundled
Winning variant
21%
Alternative
16%
Discounted vs. full-priceDiscounted
Winning variant
18%
Alternative
14%
Image offers vs. text-onlyImage
Winning variant
17%
Alternative
10%
3-second delay vs. immediate3 seconds
Winning variant
18%
Alternative
13%

Acceptance rate per variant, measured in production across thousands of orders. The label on the right names the winning variant.

Five offer variables, acceptance rate by variant
MeasureWinning variantAlternative
Complementary vs. similar products19%12%
Bundled vs. individual items21%16%
Discounted vs. full-price18%14%
Image offers vs. text-only17%10%
3-second delay vs. immediate18%13%

Production rates run below the 50-user lab numbers, as they always do, but the relative pattern held at scale across thousands of real-world tests: timing and framing decide outcomes, not product or price.

Offer builder detail: Design, Product and Settings tabs for a single funnel step
Upsell analytics in the merchant dashboard: performance, popular offers, and reward conversions at a glance
◆

Where I Was Wrong

International merchants were invisible to me, scheduling was core rather than edge, and I measured conversion instead of trust.

Read the post-launch lessons

International merchants were invisible to me. 23% of installations came from outside US/UK/Australia. USD hardcoded in templates. "Complete Your Order" translates awkwardly in several languages. Two tiers of experience: the merchants I'd imagined, and everyone else.

Time-based scheduling was core, not edge case. 34% of post-launch merchants requested seasonal offer scheduling. Promotions are how merchants think about their business. I'd categorised something central as niche. (Shipped post-launch.)

I measured conversion, not long-term trust. V2 hypothesis: 4+ upsell acceptances per customer may correlate with measurable churn. If the data confirms it, the design response is a per-customer frequency cap: protect the merchant's brand relationship, not just their short-term revenue.

30,000+

Active installs (suite, WordPress.org)

31%

Peak acceptance in 50-user testing

15–20%

Typical AOV lift in production

4 min

Setup time (vs. 45+ competitors)

4.9 / 5

Rating, 1,000+ reviews

More projects

Project Funnel Automations

Project Funnel Automations

88% non-adoption → 4:47 setup time. Making email automation actually usable.

View project
Project Funnel Sliding Cart

Project Funnel Sliding Cart

+16% average order value. Without touching checkout.

View project
Subscriptions

Subscriptions

Subscription setup: 6 hours → 4 minutes. Closing the gap between merchant language and plugin architecture.

View project
Shasta Cloud

Shasta Cloud

AP deployment: 30 min → 10 min. One dashboard to replace 4–20 vendor tools.

View project
AI-Friendly Design System

AI-Friendly Design System

Internal design-to-code validation score from 35% to 80% by making design systems machine-readable.

View project