Skip to main content
A post-purchase offer raises the order total after Upstack has already sent the Purchase event to your ad platforms. Upstack doesn’t send a second Purchase for the same order. It sends the extra amount as a separate upsell_purchase event.
This page explains how upsells are detected. For the event’s fields and destination names, see the upsell_purchase event reference. For the reporting measures, see Upsell Purchases.

Example

A customer checks out with a 60.00 USD order, then accepts a 24.00 USD post-purchase offer. The offer is added to the same order, which becomes 84.00 USD. Meta and TikTok receive one purchase worth 60.00 USD and one upsell worth 24.00 USD, so the order isn’t counted twice. In Upstack, the Shopify order shows the full 84.00 USD, because Upstack updates its copy of the order when Shopify reports a change.

How detection works

1

Upstack sends the Purchase

At checkout, Upstack sends purchase with the order total at that moment.
2

Shopify reports an order update

When the accepted offer is added to the existing order, Upstack receives an order update from Shopify for the same order ID.
3

Upstack checks the update

It treats the update as an upsell only when all of these are true:
  • The order has the tag AfterSell Upsell
  • The order was created in the last 2 hours
  • The order’s payment status is paid or pending
  • The new total is higher than the Purchase value Upstack already sent
4

Upstack sends upsell_purchase

The event’s value is the new total minus the original Purchase value. Its items are only the line items that weren’t in the original Purchase. Customer details and click IDs come from the original Purchase, so the platform can match it to the same person.
If any check fails, Upstack ignores the order update. Nothing extra is sent.

Where upsell_purchase goes

Meta needs each custom event approved before you can optimize on it. See How to approve Meta custom events. Sending upsellPurchase doesn’t change the Purchase event, so campaigns that optimize for Purchase need no changes.

What isn’t detected

  • Upsell apps that don’t tag the order AfterSell Upsell. If the app edits the order, Upstack sends no upsell event. If the app creates a new order instead, that order is sent as its own purchase.
  • A second upsell on the same order. Upstack sends at most one upsell_purchase per order. A second accepted offer raises the Shopify order total but isn’t sent to ad platforms.
  • Order edits after 2 hours. Updates to an order created more than 2 hours earlier aren’t checked for upsells.

See upsell revenue in reports

Shopify order measures, such as revenue and AOV, already include the upsell. Tracked-event measures keep it separate: Purchases Value holds the checkout amount and Upsell Purchase Value holds the add-ons. To see both together on a custom dashboard, build a custom measure:

Other orders kept out of ad platforms

Upsells aren’t the only orders Upstack holds back to avoid inflating Purchase counts. Subscription renewals are tracked as subscription_recurring_purchase and aren’t sent to ad platforms as purchases. They still count toward revenue in Upstack.

upsell_purchase event

Event reference for the upsell event Upstack generates.

Upsell Purchases metric

Count and value of upsell purchases in your reports.

Upstack-generated events

Every event Upstack creates for you, such as nc_purchase and all_purchase.

Install Upstack on Shopify

Upsell detection relies on the Upstack app receiving Shopify order updates.