Preview and QA campaigns
Preview lets you see a campaign variation on your live site before visitors do, without being assigned or counted in the results. Combined with the ply_debug and ply_disable URL parameters, it's how you check that a test looks right, runs on the right pages, and tracks correctly before you start it.
Available on: all platforms. Theme, template and price previews are Shopify only.
How preview works
- You open a preview link from the campaign editor. It's your page URL with ?ply_preview_campaign=<campaignId>.<variationId> added.
- Personizely loads only that campaign and variation. The target, schedule and traffic allocation are ignored, so you can preview drafts and campaigns aimed at audiences you aren't part of.
- Nothing is recorded. Previews don't assign you, don't count as views and don't affect results.
- The preview follows you around the site. Links you click keep the preview parameter, so you can browse from page to page and add to cart.
Preview shows the last saved version of the campaign. Save before you preview.
Preview each campaign type
Type | How to preview | What you'll see |
|---|---|---|
Content | In the visual editor, click Preview on the live site, then pick the page and variation | The variation's changes on that page. The page must be one the campaign runs on |
Product price (experiments and personalizations) | Preview on the variation | Rewritten prices, outlined in red so you can see what changed. Checkout prices change only once the campaign is running |
URL split | No preview. A split URL campaign is a redirect, so visit the variation's URL directly | The variation's destination page |
Theme | Preview in the variation's menu | Shopify's own theme preview of the variation theme |
Template | Preview on the variation, then pick a product, collection, page or article | That item rendered with the variation template |
Shipping | No preview. Check rates at checkout once the campaign is running, ideally on a development store or with a QA target (below) | |
Full stack | No preview link. Test your code paths directly, or use a QA target (below) | |
When you need to test the real experience (assignment, redirects, tracking, checkout), use a QA target.
Test the real experience with a QA target
A preview never records anything, so it can't show that views and conversions are tracked. To test end to end:
- Create a target that only you match, for example a Query string filter for qa=1. The query string filter remembers parameters seen earlier in the visitor's history, so you keep matching on later pages.
- Set it as the campaign's target (or the variation's target for a personalization) and start the campaign.
- Visit your site with ?qa=1 in a private window. You're assigned like a real visitor. Open more private windows to land in other arms.
- Check the view in the report, place a test order if needed, and check the conversion.
- Switch the target to your real audience, and reset the campaign's statistics before launch so QA data doesn't count. See Report filters, outliers and resetting stats.
After launch, you can keep your team's own visits out of the results by excluding your office IP addresses with Traffic filtering and bots. Campaigns don't run for excluded visitors, so do this after QA.
Debugging parameters
Parameter | What it does |
|---|---|
ply_preview_campaign=<campaignId>.<variationId> | Shows that variation, ignoring target, schedule and allocation. Nothing is recorded |
ply_debug=1 | Logs what Personizely does in the browser console: which campaigns ran, which variation was shown, and why a campaign didn't run (page not matching, target not matching, outside traffic allocation). Set a cookie named ply_debug to keep logging on every page |
ply_disable=1 | Turns Personizely off for that page view, so you can see your original site. It applies only to the URL it's on |
QA checklist
Before you start a test:
- Every variation renders correctly on desktop and mobile, on every page the campaign runs on.
- The original is untouched where it should be: check the control with ?ply_disable=1, and pages outside the campaign.
- The campaign runs where you expect. With ?ply_debug=1, check that the campaign runs on the intended pages and is skipped elsewhere.
- No flicker. Load the page on a slow connection and check that the original doesn't flash before the variation. If it does, see Performance and flicker.
- Goals fire. At least one goal is set, the primary goal is the one you'll judge the test on, and a test conversion shows up (use a QA target).
- Single-page apps and dynamic content. On sites that change pages without reloading, or that re-render elements (cart drawers, filters), check that changes reapply after the content changes.
- No overlapping tests. Other campaigns on the same pages either change different elements or are in the same Campaign groups (mutually exclusive tests).
- Settings are final. Split, traffic allocation, target and targeting mode are set the way you want them for the whole test. Changing them mid-test can bias results. See How visitors are assigned to variations.
For price tests, also go through the Price test QA checklist (Shopify), which covers collection pages, cart and checkout.
Behavior details and limitations
- Preview runs only the previewed campaign. Other campaigns and widgets don't run during a preview, so the page may look different from what a real visitor sees when several campaigns or widgets overlap.
- Preview ignores targeting. It shows the variation even if you don't match the target. To check that the target itself works, use ply_debug or a QA target.
- Price previews don't change checkout. The checkout price only changes for a running campaign. Test checkout prices with a QA target.
- Theme previews use Shopify's preview session. While previewing a theme, Shopify keeps showing that theme until you leave the preview.
- ply_disable is per URL. It isn't remembered, so add it again on each page you check.
Troubleshooting
- The preview shows the original page → the page isn't one the campaign runs on, the campaign isn't saved, or the variation has no changes for that page. Pick the page from Preview on the live site.
- The preview shows an older version → save the campaign and reload the preview.
- The campaign doesn't run for real visitors, but preview works → preview skips target, schedule and allocation. Open the page with ?ply_debug=1 and read the reason in the console.
- Nothing happens with any parameter → the Personizely snippet isn't installed on that page. See Verify and troubleshoot your installation.
Related
- Campaigns