Case Study Shopify · Conversion systems

A real post-purchase order without a second checkout.

An e-commerce software company wanted Shopify merchants to customize checkout, accept two payment providers and make a post-purchase offer that did not ask the buyer to enter payment or address details again. Mark Philippe Mirasol built the PHP and Laravel app across two consecutive contracts and 1,193 tracked hours.

Client
Anonymized e-commerce software company
Engagement
September 2019 – February 2021
Contracts
2 consecutive
Tracked time
1,193 hours
Status
Both contracts rated 5.0
An e-commerce product manager reviewing a mobile checkout and post-purchase offer
Shopify Checkout & Upsell: A Shopify app made post-purchase upsells one click across 1,193 hours of delivery.
By the numbers
1,193Tracked hours
17 monthsContinuous engagement
2Consecutive contracts
5.0Both client ratings

A checkout defect costs orders, and a second checkout loses the upsell.

The app had to alter Shopify's hosted checkout, support payment capture through PayPal and Stripe, and turn an accepted post-purchase offer into a real order.

The usual upsell path creates friction: the customer is asked to check out again, re-enter payment details or repeat address information. The work also sat on Shopify's most conversion-sensitive surface, where production behavior cannot be faithfully rehearsed in a local mock.

The accepted offer was assembled server-side from the original order.

Mark built the Shopify application in PHP and Laravel, with an API backend documented for the client's own team.

  • Checkout behavior changed on the hosted surface and was verified against real sessions
  • PayPal and Stripe gave merchants a choice of payment provider
  • Post-purchase upsell and downsell offers used a one-click acceptance path
  • The new order was assembled from the original line items, billing and shipping addresses

The customer accepted the offer once; the server created the resulting order without asking for the same information again.

One conversion-sensitive surface, backed by a continuous seventeen-month build.

Engineering note

The upsell only stayed one click because the server reconstructed the accepted order from trusted data already captured at checkout. The buyer did not repeat the transaction, and the app did not depend on a fragile browser-only state.

Mark Philippe Mirasol Project partner · the build

Two contracts ran back to back for seventeen months.

The first contract closed and the second opened on the same day, creating one continuous 1,193-hour engagement.

Both contracts ended at five stars, both received written reviews, and the client endorsed the work as collaborative and committed to quality.

Published Upwork review

“Mark has been amazing to work with! A true expert in his field. Highly recommended for anyone considering working with him.”

PHP Laravel Shopify PayPal Stripe Documented API
Role
Checkout, payments & application backend
Partner
Mark Philippe Mirasol
Model
Long-term app development
Status
Delivered · two 5.0 contracts
Project partner Mark Philippe Mirasol

Building a conversion-critical product? See fixed-price builds, embedded engineering, or how to vet a software team.

Next / Your build

Taking on new builds

Have something in mind?

Tell us what you're making. We reply within one business day, and you get a fixed price and a date in writing before any code.