---
title: "How do I test a pre-order before going live?"
description: "Place a test pre-order with Shopify Payments test mode, check the order, emails and holds, test a balance charge and a cancellation, then clean up."
url: "https://smart-preorder.com/help/preorders/test-a-preorder"
updated: "2026-11-02"
product: "SMART Preorder & Back in stock"
section: "Help center / Pre-orders"
---


# How do I test a pre-order before going live?

Turn on Shopify Payments test mode, activate a campaign on one product, check its product page, then check out with Shopify's test card. Within a minute the order should be on the app's **Orders** tab with the "Pre-order" tag, and the confirmation email should arrive. For a deposit campaign, click **Collect balance** on the order to test the balance charge.

## 1. Prepare

1. Turn on Shopify Payments test mode: in Shopify admin go to **Settings > Payments**, click **Manage** in the Shopify Payments section, select **Enable test mode** and save ([Shopify Help Center](https://help.shopify.com/en/manual/payments/shopify-payments/testing-shopify-payments)). Shopify needs Shopify Payments set up and a paid plan for this, and while test mode is on, customers can't place real orders.
2. Pick one product to test with. For **When the product is out of stock**, make sure Track quantity is on and set one variant's stock to 0.
3. Create the campaign (see [Set up a pre-order campaign](https://smart-preorder.com/help/preorders/set-up-a-preorder-campaign)) and click **Activate**. If the app embed is off, the activation dialog walks you through turning it on.

## 2. Check the product page

- Open the product in your store, ideally in a private window. The sold-out variant should show the Pre-order button with your text (default "Pre-order now") and the delivery message under it. A deposit campaign also shows the payment line, such as "Pay $50.00 now, $50.00 due Dec 1, 2026".
- Buy it now and express checkout buttons are hidden on that variant. That's expected.
- An in-stock variant on a "When the product is out of stock" campaign still shows Add to cart. Also expected.
- After your first activation, the app asks **Do you see the Pre-order button?** If you don't, **No, get help** opens a support chat, and [Pre-order button not showing](https://smart-preorder.com/help/preorders/preorder-button-not-showing) has the checklist.

## 3. Place the order

1. Add the variant to the cart. The cart shows the purchase option name (default "Pre-order") and the line "Delivery: ...".
2. Go through the regular checkout. Pay with the test card 4242 4242 4242 4242, any future expiry date, any 3-digit security code and a name of at least two words. Test purchases must be worth more than the equivalent of $1 USD.
3. For a deposit, checkout shows what's due today and when the rest will be charged.

## 4. Check what happened

| Where | What you should see |
| --- | --- |
| Shopify order | The "Pre-order" tag (seconds after the order is created). A deposit order shows a payment still pending. On an **On hold** campaign, the pre-order items are on hold. |
| App > Pre-orders > Orders | The order, usually within a minute, with its payment status (**Paid** or **Balance due**). |
| The checkout email inbox | The **Pre-order confirmation**, if it's on, with the delivery and payment details. |
| App > Pre-orders > Campaigns | The campaign's **Units** count went up. |

## 5. Test the balance and a cancellation

- **Balance:** open the order in the app and click **Collect balance**. Shopify charges the saved test card and shows the order as paid right away. The app shows **Charging** until its next check, within 15 minutes, then **Paid**. To test the automatic charge instead, use **Change balance date** to move it to tomorrow and check the order the next afternoon.
- **A failed balance** can't be simulated: Shopify Payments test mode checks the card at checkout, so a declining test card is refused there. [How balance charges work](https://smart-preorder.com/help/preorders/how-balance-charges-work) explains what happens on a real failure.
- **Cancellation:** cancel the order in Shopify admin, or as the customer use **Cancel pre-order** in the customer account or the cancel link in the confirmation email. The app marks the order **Cancelled** within seconds and won't charge a balance.

## 6. Test the emails

On each email's page in **Settings > Pre-order emails**, **Send test email** sends a copy with sample data to your store's own email address, up to 10 a day. To see a real shipping update, place a test order with your own email address and send the update from the order page.

## 7. Clean up

- Turn Shopify Payments test mode off, so real payments are captured again.
- Cancel the test orders. Don't fulfill them: Shopify charges you for any shipping labels you buy.
- Deactivate or delete the test campaign. The app puts the variants' Continue selling setting back.
- Set the test variant's stock back to its real number.

> **Things that look broken but aren't** Pre-orders don't work through Shop Pay, Apple Pay or Google Pay, cart permalinks, draft orders or Shopify POS ([Shopify developer docs](https://shopify.dev/docs/apps/build/purchase-options/deferred)). Test through the product page and the regular checkout.

**Try it on your store** Install SMART Preorder & Back in stock for free and place a test pre-order in a few minutes. [Install SMART Preorder & Back in stock on the Shopify App Store](https://apps.shopify.com/smart-preorder-back-in-stock).

## Frequently asked questions

### Can I test a deposit without a real charge?

Yes, with Shopify Payments in test mode and the test card 4242 4242 4242 4242. The deposit and the balance you collect are simulated; no money moves.

### The test order isn't on the Orders tab. Why?

It wasn't bought as a pre-order: the app embed was off, the item was added from somewhere that skipped the Pre-order button, or the variant wasn't in a live campaign. Check that the cart showed the purchase option name before checkout, and see [Pre-order button not showing](https://smart-preorder.com/help/preorders/preorder-button-not-showing).
