Support Center
On this page
Installation
Easy Upsell has two parts: the admin app (where you manage offers) and the theme extension (what your customers see). Setup takes about two minutes.
Step 1 — Install the app
Find Easy Upsell in the Shopify App Store and click Add app. Shopify's OAuth flow will ask you to grant the required permissions.
Easy Upsell needs access to your products and the ability to create automatic discounts at checkout. Click Install app to confirm.
After install you'll land on the Easy Upsell dashboard inside Shopify Admin. You're ready to create your first offer.
Step 2 — Enable the theme extension
The upsell surfaces are delivered via a Shopify theme extension. Enable it once and the modal goes live automatically. The cart widget and product widget require adding Theme Editor blocks — see Theme Editor Blocks below.
In Shopify Admin, navigate to Online Store → Themes and click Customize on your active theme.
Click the puzzle-piece icon in the left sidebar to open App embeds.
Find Easy Upsell Modal and toggle it ON.
Click Save in the top-right corner. The extension is now live — no further configuration required.
Creating Offers
From the Easy Upsell dashboard, click Create offer and fill in the following fields:
The product that, when added to cart (modal) or already in the cart (cart & product widgets), activates the upsell. Only one active offer per trigger product is allowed.
The product you want to recommend. This is what appears in the modal or widget.
Choose a discount type:
- Percentage — e.g., 20% off the upsell product
- Fixed amount — e.g., $5 off the upsell product
- Free shipping — waive shipping on the order
- None — show at full price
Discounts are applied automatically at checkout by Shopify — no coupon codes needed.
Only show the upsell when the cart total reaches a certain amount (in dollars). Leave blank to always show.
Choose where the upsell appears:
- Modal — popup after the trigger product is added to cart
- Cart page widget — inline suggestion on the cart page
- Both — modal on add-to-cart and also the cart page widget
The product page widget always appears when any offer matches the current product, regardless of this setting.
Click Save. The offer is active immediately. Test it on your storefront by adding the trigger product to your cart.
Managing offers
- Toggle on/off: Pause any offer without deleting it from the offers list.
- One active offer per trigger: Each trigger product can only have one active offer at a time. Deactivate the existing one before creating another for the same trigger.
- Edit: Click any offer row to update the upsell product, discount, location, or status inline.
- Delete: Permanent. If no other active offers use discounts, the automatic discount is removed from Shopify automatically.
Where Upsells Appear
Easy Upsell shows offers in up to three places on your storefront. The modal activates automatically once the theme extension is enabled. The cart widget and product widget require placing a block in the Theme Editor — this gives you full control over where they appear.
Modal popup
Slides in right after a customer adds the trigger product to cart. Supports variant selection and shows the discounted price alongside the original.
Cart page widget
Inline suggestions on the cart page (/cart) based on what's in the cart. Requires placing the Easy Upsell – Cart block in the Theme Editor.
Product page widget
"Pairs well with" suggestion shown on the trigger product's page. Requires placing the Easy Upsell – Product block in the Theme Editor.
Already in cart
All three surfaces check whether the upsell product is already in the cart. If it is, the button shows "Already added" (disabled) instead of the normal add button — so customers are never prompted to add something twice. On the cart page, this updates in real time as items are added or removed without a page reload.
On the cart page, offer button states update in real time as items are added or removed without a page reload.
Theme Editor Blocks
Both the cart widget and the product widget are placed via the Theme Editor. Neither widget appears automatically — you must add each block once to activate it. This gives you full control over where each widget appears on the page.
Cart page widget Required
The cart widget only appears when this block is added. Complete these steps once — you do not need to repeat them per offer.
Open Online Store → Themes → Customize in Shopify Admin, then use the page selector at the top to switch the preview to the Cart template.
In the left sidebar, find the cart section, click Add block, and choose Easy Upsell – Cart from the list.
Drag the block to the position you want, then click Save in the top-right corner. The cart widget is now live.
Product page widget Required
The product widget only appears when this block is added. Complete these steps once — it will then appear on every product page that has an active offer.
Open Online Store → Themes → Customize in Shopify Admin, then use the page selector at the top to switch the preview to a Product template.
In the left sidebar, find the product section — for example, Product information — click Add block, and choose Easy Upsell – Product.
Place the block below the add-to-cart button or anywhere within the product section, then click Save in the top-right corner. The product widget is now live.
Customizing Appearance
Modal settings Pro
Open Online Store → Themes → Customize → App embeds → Easy Upsell Modal:
- Enable / Disable — toggle all upsell surfaces on or off without uninstalling
- Modal delay — milliseconds before the modal appears (0–2000ms) Free
- Modal title — heading shown at the top (default: "Complete your order")
- Accept button text — label on the add button (default: "Add to cart")
- Decline button text — label on the dismiss button (default: "No thanks")
- Button, overlay, badge, and text colors
- Corner radius — roundness of the modal card (0–24px)
- Max width (desktop) — maximum modal width on large screens (360–640px). Mobile is always full-width.
Cart widget settings Free
Open the Theme Editor on the Cart page and click the Easy Upsell – Cart block:
- Heading text (default: "You might also like")
- Button text, added text, already-in-cart text
- Background, text, border, button, and badge colors
Product widget settings Free
Open the Theme Editor on a Product page and click the Easy Upsell – Product block:
- Button text, added text, already-in-cart text
- Background, text, border, and button colors
Widget settings (colors, labels, etc.) are configured in the Theme Editor when the block is placed. Both the cart widget and product widget must be added as Theme Editor blocks — neither auto-injects.
Live modal preview
Inside the Theme Editor, a Preview Modal button appears fixed in the top-right corner of the storefront preview. Click it to open or close the modal with a sample product — no need to add anything to cart. This lets you see styling changes in real time. The preview button is only visible inside the Theme Editor and never appears to customers.
How It Works
Modal flow
The theme extension detects the cart add event, whether via a standard form or an Ajax request.
A fast API call checks for an active offer for that product. Results are cached for 5 seconds to keep your storefront fast.
If an offer is found and the upsell product is not already in cart, the modal slides in showing the product image, name, and pricing.
Accepting silently adds the upsell product to cart and updates the cart icon. Declining closes the modal — the original product is already in the cart either way.
If a discount was set, Shopify applies it automatically to the upsell line item at checkout. No coupon code required. The discount is only applied if the trigger product is still in the cart at checkout — if it was removed before completing the purchase, the upsell discount is automatically revoked.
Cart & product widget flow
When a customer visits the cart page or a product page, the widgets (placed via the Theme Editor) load the current cart contents and fetch relevant offers. Matching offers appear as card-style suggestions with product image, price, discount badge, and an add button. If the upsell product is already in the cart, the button shows "Already added" and is disabled — no duplicate adds possible.
Language Support
Easy Upsell automatically detects your store's active language and displays the upsell modal and widgets in the correct language.
Supported languages:
- English (default)
- Spanish — automatically used when the store locale is set to any Spanish variant (es, es-ES, es-MX, etc.)
No configuration needed. Language detection is fully automatic based on the Shopify store locale.
Custom text for the modal (title, button labels) can be set per-plan in the Theme Editor App embeds settings.
Storefront URL Sync
Go to Easy Upsell → Settings and click Sync URL. That's it — the button updates the URL your storefront uses to communicate with the app.
When should you use Sync URL?
- Widgets were working and suddenly stopped — the stored URL may have become stale after a redeploy or plan change.
- You reinstalled the app — reinstalling goes through OAuth again and resets the metafield, but Sync URL forces an immediate update.
- You migrated your app to a new server or domain — any time the app's URL changes, re-sync so the widgets point to the right place.
- Settings page shows a URL that doesn't match your current app URL — the URL displayed in Settings is what's currently saved; if it's wrong, click Sync URL to overwrite it.
- After a fresh install and the modal never appeared — OAuth sets the URL automatically, but an explicit sync guarantees it.
Why does this happen?
Easy Upsell stores the app's URL in a private Shopify metafield on your shop (easy_upsell.app_url). The theme extension reads this metafield at page load to know where to send requests. Normally this is set automatically during OAuth (installation). In rare cases — server migrations, reinstalls, or Shopify OAuth edge cases — the metafield can point to an old or incorrect URL, causing all three widgets to silently return no offers.
Troubleshooting
Check these in order:
- The theme extension is enabled in Online Store → Themes → Customize → App embeds.
- You clicked Save in the Theme Editor after enabling it.
- At least one offer is active in the Easy Upsell dashboard with display location set to Modal or Both.
- You're adding the correct trigger product to cart (not the upsell product).
- Open your browser's DevTools → Console while adding to cart and look for errors from Easy Upsell.
- Go to Settings → Sync URL to re-link the app URL. This is often the fix when everything else looks correct. See Storefront URL Sync.
- Confirm the theme extension is enabled in Online Store → Themes → Customize → App embeds.
- For the cart widget: the Easy Upsell – Cart block must be added to the Cart page in the Theme Editor — it does not appear automatically. See Theme Editor Blocks.
- For the product widget: the Easy Upsell – Product block must be added to the Product page in the Theme Editor. Visit the trigger product's page (not the upsell product).
- Make sure at least one offer is active with a display location matching the widget you're testing (Cart, Both, etc.).
- Go to Settings → Sync URL and click Sync URL — a stale app URL is the most common cause of silent widget failures. See Storefront URL Sync.
- Check the Network tab in DevTools for the
/api/upsell/cartor/api/upsell/checkrequest — verify it returns offers. - If a minimum cart value is set on the offer, make sure the cart total meets it.
- The discount is applied by a Shopify Function. Make sure the offer was saved with a discount value greater than 0.
- The upsell item must have been added via Easy Upsell — manually added items won't carry the discount.
- The trigger product must still be in the cart at checkout. If the customer removed the trigger product after accepting the upsell, the discount is intentionally not applied.
- If the discount was deleted from Shopify Admin manually, Easy Upsell will recreate it automatically next time the Offers page loads.
- Easy Upsell updates the cart icon automatically after an upsell is accepted. It supports Dawn, Prestige, Turbo, and most standard Shopify themes.
- If it's not updating, open DevTools → Elements and locate your theme's cart count element. Contact us with your store URL if you're on a heavily customized theme — we'll add compatibility.
The check uses the numeric product ID from /cart.js. Open the Network tab in DevTools, check the /cart.js response, and confirm items[].product_id values. If the state seems stuck, a hard refresh (Cmd+Shift+R / Ctrl+Shift+R) usually resolves it.
Each trigger product can only have one active offer at a time. Go to the existing offer, set it to Inactive, then create the new one.
- Check that the upsell product is in stock and published in your store.
- Open DevTools → Network and look for a failed
/cart/add.jsrequest after clicking accept. - Verify the product has at least one available variant.
When Easy Upsell is uninstalled, all your offers and the associated automatic discount are automatically removed from Shopify. Your store returns to its original state. Store data is fully deleted from our servers within 30 days.
Billing
How billing works
Easy Upsell is billed through Shopify's standard billing system. All charges appear on your Shopify invoice — there are no external payment methods or separate subscriptions.
Common billing questions
- Where do I see my charges? — In Shopify Admin, go to Settings → Billing. Easy Upsell charges appear under "App charges".
- How do I cancel? — Uninstall Easy Upsell from Settings → Apps. Billing stops immediately upon uninstall.
- Will I be charged after uninstalling? — No. Shopify prorates charges to the day of uninstall.
- Can I get a refund? — Refund requests are handled case by case. Contact us with your store URL and the reason.
For any billing issue not listed here, contact us at ismaeljarias@gmail.com with your store URL.
Contact Support
Send us an email and we'll get back to you within 48 business hours (Monday–Friday).
To help us resolve your issue faster, please include:
- Your Shopify store URL (e.g.,
yourstore.myshopify.com) - A short description of the issue
- Screenshots or screen recordings if applicable
- Browser and device (e.g., Chrome on Mac, Safari on iPhone)
For urgent issues affecting your live store, write URGENT in the subject line.