> For the complete documentation index, see [llms.txt](https://docs.shoplift.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.shoplift.ai/analyze/does-a-b-testing-affect-my-ads.md).

# Does A/B testing affect my ads?

It's one of the most common questions Shoplift gets from agencies and merchants: "I launched a test and my ROAS dropped. Is Shoplift causing this?"

The short answer: a properly configured same-URL on-site test does not damage your ad campaigns. The longer answer is worth understanding, because some test setups genuinely do interact with ad platforms in ways that move your numbers. Knowing the difference helps you avoid the setups that cause real problems.

{% hint style="info" %}
**ROAS** (return on ad spend) is revenue divided by ad spend. When people say a test "hurt ROAS," they usually mean revenue or conversion rate dipped, spend went up, or both.
{% endhint %}

### What's actually happening

Meta, Google, and other ad platforms optimize delivery based on signals they can see: your ad creative, your destination URL, your bid strategy, and the conversion events flowing back through your pixel. When those signals change, delivery changes.

A same-URL on-site test, the kind Shoplift runs, is invisible to Meta's delivery system. The visitor clicks your ad and lands on the same URL they always land on. Shoplift assigns them to your original (the version visitors see without changes) or to a variant, then serves the matching version at that same URL using Shopify's native [`?view=` parameter](https://shopify.dev/docs/storefronts/themes/architecture/templates/alternate-templates). Meta sees one ad pointing at one destination. Nothing in its auction changes.

There is one real mechanism worth knowing about. If your variant converts at a lower rate than your original during the test window, your blended CVR (the combined conversion rate Meta sees across both versions) dips slightly. Meta's estimated action rate ticks down, which can nudge CPM up. This is real, but it hits both arms of the test equally, so the comparison between your original and variant stays clean. Your absolute customer acquisition cost (CAC) in the ad account may shift slightly during a test. Your test result is still valid.

{% hint style="info" %}
**CVR** = conversion rate.&#x20;

**CPM** = cost per 1,000 impressions.&#x20;

**CAC** = customer acquisition cost (spend divided by orders).
{% endhint %}

This phenomenon, where test cells differ in ways ad platforms can see and delivery diverges as a result, is documented in research co-authored by Meta researchers (Burtch et al., 2025). Their finding: when all test cells share the same ad, destination URL, audience, and bid strategy, there's no evidence of delivery imbalance. Same-URL on-site tests are exactly that case.

### The setups that actually cause problems

Most ad-and-testing friction comes from a handful of avoidable structural mistakes.

**Changing your ad URL mid-test.** Meta uses your destination URL as part of its optimization signal. If you change the URL a running ad points to, even to promote a winning variant, you trigger a learning phase reset. The *learning phase* is the period when Meta re-optimizes delivery for an ad set, and it needs roughly 50 optimization events per ad set per week to exit. A URL change starts that clock over. The fix: point your ads at a stable canonical URL (the single, permanent web address for a page) and let Shoplift serve the variant underneath.

**Using redirect-based testing tools.** Some tools work by redirecting visitors from one URL to another after the click. This creates two destination URLs, two conversion signals, and two delivery paths, which is the divergent delivery pattern the research flags as problematic. It also adds a redirect step that slows page load and can look like cloaking to Meta's review systems. Shoplift keeps visitors on the same canonical URL and serves the variant with Shopify's `?view=` parameter, so the destination your ad points to never changes.

{% hint style="info" %}
Shoplift does offer a [URL redirect test](/test/url-testing/overview.md) for cases where you deliberately want to compare two separate URLs, such as two different landing pages. For pages that receive significant paid traffic, a [template test](/test/template-testing/overview.md) or [theme test](/test/theme-testing/overview.md) is the better choice, because it keeps your ad's destination URL stable.
{% endhint %}

**Running tests as separate ad sets inside Meta's own A/B tool.** When you split a campaign into multiple ad sets to test landing pages, each ad set enters the learning phase from scratch and the audience gets fragmented. This is a well-documented cause of CPM spikes, separate from anything happening on your site.

**Splitting ad spend across variants manually.** If you're running ads to a tested page and also creating separate campaigns for each variant, you're introducing delivery divergence at the campaign level. Keep one campaign, one ad set, one URL. Shoplift manages the on-site split.

### What Shoplift does and doesn't touch

A common concern is that Shoplift somehow interferes with ad attribution. It doesn't.

Shoplift does not modify UTM parameters or Facebook and Google click IDs. When a visitor arrives from an ad with `utm_source=facebook` attached, that parameter stays intact regardless of which variant they're assigned to. The `?view=` parameter Shoplift uses to serve a variant is added alongside existing tracking parameters and never overwrites them.

Shoplift's impact on page speed is minimal. Shoplift loads as a lightweight script in your theme's `<head>` and typically finishes its work in under 100 milliseconds, so visitors see a single fast page at a stable URL.

<figure><img src="/files/lDydONhe3yAueTrXNNxn" alt=""><figcaption></figcaption></figure>

### The flicker connection

If you've ever worried about testing tools slowing your site or causing flicker (that visible flash where the original page appears for a split second before the variant loads), this is worth understanding.

That flash isn't only a bad visitor experience. It can quietly degrade the page-experience signals ad platforms use to evaluate your destination, which can raise your CPCs (cost per click) and CPMs over time.

Shoplift prevents the flash with its anti-flicker system. When a visitor arrives, Shoplift briefly hides the page while it determines which version to show, then reveals the correct version. This hide-and-reveal step usually finishes in under 100 milliseconds, so the visitor sees one clean page at a single URL.&#x20;

Anti-flicker applies to template tests, theme tests, and URL redirect tests. It is not used for JS API tests, which modify page content in place without a redirect, so there is no flash to prevent.

{% hint style="info" %}
Anti-flicker only works when Shoplift's script sits in your theme's `<head>` and loads synchronously. If a theme update moves the script or loads it with `defer` or `async`, visitors may start seeing a flash. See [How anti-flicker works](/analyze/tracking/anti-flicker.md) if you notice flashing after a theme change.
{% endhint %}

### Bid strategy during a test

You don't need a special bid strategy to run a Shoplift test. Your existing setup is fine in most cases.

That said, if you're running a high-velocity testing program and want predictable daily traffic pacing, cost cap and bid cap strategies reduce day-to-day CPA variance compared with Meta's default Lowest Cost (Highest Volume) bidding. The tradeoff: more stable CPA but more variable spend. This is a stability choice, not a workaround. Meta's default bidding works fine for most merchants running on-site tests.

What matters more than bid strategy is keeping your ad configuration stable during a test. Don't change creatives, audiences, or destination URLs while a test is running. Changes to any of those signals can reset Meta's learning phase whether or not a test is active.

### Best practices checklist

Before you launch a test on a page that receives significant paid traffic:

* Point ads at a stable canonical URL. Don't change it mid-test.
* Use template or theme tests, not separate landing page URLs for each variant.
* Keep your ad configuration stable. No creative, audience, or bid strategy changes while the test runs.
* Allow enough time. Aim for at least 14 days and enough traffic to reach statistical significance (the point where a result is unlikely to be due to chance) before reading results.
* Don't run the test as separate ad sets inside Meta's own A/B tool. Let Shoplift manage the on-site split and keep your ad structure intact.
* If you're doing contribution profit analysis by variant, a 50/50 traffic split means roughly a 50/50 ad spend split. For a more precise breakdown, use Shoplift's channel-level report or your [GA4 integration](/integrate/ga4-beta.md).

### FAQ

Click a question to expand the answer.

<details>

<summary>Will running A/B tests hurt my Meta algorithm?</summary>

A properly configured same-URL on-site test does not cause Meta to penalize your campaign structurally. The cases that genuinely interact poorly with Meta's delivery (redirect-based tests, split-URL tests, and tests run as separate ad sets inside Meta) are avoidable, and Shoplift's approach sidesteps them by keeping your ad on one stable URL.

</details>

<details>

<summary>Does Shoplift affect my ad attribution?</summary>

No. Shoplift does not modify UTM parameters or click IDs. The \`?view=\` parameter used to serve a variant is added alongside your existing tracking parameters and does not overwrite them.

</details>

<details>

<summary>My ROAS moved after I launched a test. Is that the test?</summary>

Possibly, but not in the way most people assume. If your variant converts at a lower rate than your original, the blended CVR Meta sees dips, which can nudge CPM up slightly. This effect is symmetric. Both variants absorb it equally, so your test comparison stays valid. Your absolute CAC may shift during the test window, and that's normal. Remember that CAC is spend divided by orders, so even a small CVR drop raises CAC mechanically, even when ad cost is flat.

</details>

<details>

<summary>Will Meta disapprove my ads because of A/B testing?</summary>

Rarely, and almost never for same-URL on-site tests. The risk is higher with redirect-based tools, or when creative and landing page diverge significantly between variants. With Shoplift, the canonical URL your ad points to stays stable throughout the test, which is what Meta's policies expect.

</details>

<details>

<summary>My campaign keeps re-entering the learning phase during tests. What's happening?</summary>

A same-URL Shoplift test doesn't reset Meta's learning phase, because none of the signals Meta tracks (destination URL, creative, audience, bid strategy) change. If you're seeing repeated learning phase resets, check whether ad configurations or destination URLs were changed while the test was running. That's the most common cause.

</details>

<details>

<summary>Should I split my ad spend evenly across variants?</summary>

If you're running a 50/50 traffic split, you can attribute ad spend roughly 50/50 to each variant. For a more precise number, use Shoplift's channel-level breakdown in the test report, or set up the GA4 integration to see paid traffic split by variant.

</details>

<details>

<summary>Can I run ads and tests at the same time from day one?</summary>

Yes. The cleanest setup is stable ad campaigns pointing at a canonical URL, with a Shoplift template or theme test running underneath. No special configuration needed.

</details>

### Still need help?

Please contact [Shoplift support](/support/get-help.md) if you're seeing unexpected results in your ad account during a test.
