Developer

Checkout-block experiments

Launch checkout message tests on Shopify Plus after setup and a QA checkout.

Checkout message tests change content in the Apex block in Shopify checkout. The old checkout mode is retired; add a checkout message to a test's arm instead. Existing retired tests stay read-only history and cannot resume. Authored targeting must omit surface and checkoutBlock; arm mutations still use action: "checkoutBlock".

Before launch

  1. Connect the store's Shopify app. Checkout messages require Shopify Plus (including eligible development stores). Apex checks the current plan before launch.
  2. Have your Apex contact add the Checkout extension tests add-on and turn on checkout tests for the store.
  3. Add the Apex Checkout Experiment block in the Shopify checkout editor, normally at the information step. Apex cannot see placement directly, so an unplaced block appears as a missing QA checkout. If the store offers Shop Pay, turn on "Include block in Shop Pay" for the block.
  4. Add the message directly to an arm, outside URL blocks. A checkout message cannot share a test with a post-purchase offer.
  5. Keep the test in production or the store's active environment, and keep the store's checkout messages within the content budget.
  6. Open each message arm's QA link and go to a real checkout. A new test needs a QA checkout within 30 days for every message arm, including a control with its own message. Changing the message or assignment epoch requires another QA checkout. A test that already ran can resume with an older matching receipt.
  7. Mark QA done and launch once the remaining launch checks pass. If Apex is retrying a checkout update, wait and try again.

Combined storefront and checkout tests

A test can change the storefront and show a checkout message together. These tests count visitors on the storefront. Newly published and freshly built configs include the storefront change only while Apex can confirm the checkout message is live at checkout.

When the message stops, Apex stops serving the storefront change through the same channels it uses for a paused test. Pages already open, browser and edge caches, and customer edge Workers can keep it until they refresh. When the test also changes price, shipping or offers, Apex removes it from checkout pricing the same way it does for a paused test, within about a minute, so carts that already received the change lose it too.

The results API reports, per version, how many checkout starts showed the message (checkout_health). It flags partial_treatment.material when many did not. The result then mixes the full change with the storefront change alone, which can point the other way.

Checkout messages cannot state a price, discount or amount yet. Apex refuses money amounts both when saving and at launch. Remove the amount and run the message's QA checkout again.

After launch

Apex confirms the message at Shopify. Until then the status says "Apex has not confirmed this checkout message at checkout yet". Apex keeps checking and pauses a test whose message it cannot confirm within 30 minutes. Fix the reason and resume the test.

While Apex is stopped or checkout tests are off, Apex turns the checkout message off and holds confirmation once Shopify shows it is off. It shows again when Apex starts or checkout tests are on. A running test cannot gain or change a checkout message: pause it first, change the message, run its QA checkout and resume.

Launch warnings

  • A primary goal that happens before checkout exposure can prevent automatic stopping from deciding the test. A revenue goal avoids this.
  • Other checkout tests share the placement. A shopper in both sees both messages, one under the other. Pause one if shoppers should see only one.
  • A percentage may state a discount. Remove it if it does; ordinary percentages such as "100 % recyclable" can launch as is.
  • If your store uses Shop Pay, turn on Include block in Shop Pay for the Apex block in the checkout editor, or Shop Pay buyers will not see the message.
  • If Apex is stopped for the store, ask your Apex contact to start it so the checkout message can show.

Data and API

Checkout message content is stored on variation records and served through the Shopify extension. APIs under /api/experiments/[id] and /api/variations/[varId] use the same save guards. For checkout-only tests, checkout exposure and Shopify revenue events supply the measurement; combined tests are measured from storefront exposure. Previewing content alone does not prove delivery or attribution.