[{"data":1,"prerenderedAt":517},["ShallowReactive",2],{"blog-ab-testing-ad-campaigns-en":3,"blog-ad-banners-en":490},{"id":4,"title":5,"excerpt":6,"content":7,"coverImage":431,"meta":440,"site":444,"status":465,"slug":466,"author":467,"category":475,"publishDate":484,"featured":41,"updatedAt":485,"createdAt":486,"contentHtml":487,"previewUrl":488,"localeSlugs":489},780,"A/B Testing Ad Campaigns: Isolate Levers That Move CPA (2026)","A/B testing ad campaigns done right: isolate one lever, fair traffic splits, conversion sample floors, and pre-written rules so you scale CPA/ROAS—not vanity CTR.",{"root":8},{"children":9,"direction":19,"format":15,"indent":13,"type":430,"version":18},[10,22,29,46,50,54,120,131,135,182,186,190,216,220,312,320,324,356,360,382,386,390,394,399,403,407,411,415,422,426],{"children":11,"direction":19,"format":15,"indent":13,"type":20,"version":18,"tag":21},[12],{"detail":13,"format":13,"mode":14,"style":15,"text":16,"type":17,"version":18},0,"normal","","What A/B testing ad campaigns actually means","text",1,null,"heading","h2",{"children":23,"direction":19,"format":15,"indent":13,"type":28,"version":18,"textFormat":18,"textStyle":15},[24,26],{"detail":13,"format":18,"mode":14,"style":15,"text":25,"type":17,"version":18},"A/B testing ad campaigns",{"detail":13,"format":13,"mode":14,"style":15,"text":27,"type":17,"version":18}," is a controlled comparison of two (or more) campaign setups so you can attribute a change in CPA, ROAS, or volume to one deliberate difference—not to auction noise, seasonality, or a creative that happened to win for a week. It is not “launch five ads and keep the one with the highest CTR.”","paragraph",{"children":30,"direction":19,"format":15,"indent":13,"type":28,"version":18,"textFormat":13,"textStyle":15},[31,33,44],{"detail":13,"format":13,"mode":14,"style":15,"text":32,"type":17,"version":18},"Use this page as an operating guide: what to isolate, how to structure Meta/Google/TikTok tests without wrecking learning, how long to run them, and when a split test is the wrong tool (and ",{"children":34,"direction":19,"format":15,"indent":13,"type":37,"version":38,"fields":39,"id":43},[35],{"detail":13,"format":13,"mode":14,"style":15,"text":36,"type":17,"version":18},"incrementality testing for ads","link",3,{"linkType":40,"newTab":41,"url":42},"custom",false,"https://deepclick.com/resources/blog/incrementality-testing-for-ads/","6aec015e1236eb00c88283a3",{"detail":13,"format":13,"mode":14,"style":15,"text":45,"type":17,"version":18}," is the right one).",{"children":47,"direction":19,"format":15,"indent":13,"type":20,"version":18,"tag":21},[48],{"detail":13,"format":13,"mode":14,"style":15,"text":49,"type":17,"version":18},"Isolate one variable per A/B test",{"children":51,"direction":19,"format":15,"indent":13,"type":28,"version":18,"textFormat":13,"textStyle":15},[52],{"detail":13,"format":13,"mode":14,"style":15,"text":53,"type":17,"version":18},"Every useful campaign A/B test has a single primary lever:",{"children":55,"direction":19,"format":15,"indent":13,"type":117,"version":18,"listType":118,"start":18,"tag":119},[56,63,70,76,92],{"children":57,"direction":19,"format":15,"indent":13,"type":62,"version":18,"value":18},[58,60],{"detail":13,"format":18,"mode":14,"style":15,"text":59,"type":17,"version":18},"Creative",{"detail":13,"format":13,"mode":14,"style":15,"text":61,"type":17,"version":18},": hook, format, length, or offer framing—with targeting and bid held constant.","listitem",{"children":64,"direction":19,"format":15,"indent":13,"type":62,"version":18,"value":69},[65,67],{"detail":13,"format":18,"mode":14,"style":15,"text":66,"type":17,"version":18},"Audience / signal",{"detail":13,"format":13,"mode":14,"style":15,"text":68,"type":17,"version":18},": lookalike seed, interest stack, or first-party segment—same creatives and budget rules.",2,{"children":71,"direction":19,"format":15,"indent":13,"type":62,"version":18,"value":38},[72,74],{"detail":13,"format":18,"mode":14,"style":15,"text":73,"type":17,"version":18},"Bid / goal",{"detail":13,"format":13,"mode":14,"style":15,"text":75,"type":17,"version":18},": cost cap vs highest volume, or optimize for purchase vs add-to-cart.",{"children":77,"direction":19,"format":15,"indent":13,"type":62,"version":18,"value":91},[78,80,82,89],{"detail":13,"format":18,"mode":14,"style":15,"text":79,"type":17,"version":18},"Structure",{"detail":13,"format":13,"mode":14,"style":15,"text":81,"type":17,"version":18},": one campaign vs many ad sets—see ",{"children":83,"direction":19,"format":15,"indent":13,"type":37,"version":38,"fields":86,"id":88},[84],{"detail":13,"format":13,"mode":14,"style":15,"text":85,"type":17,"version":18},"Facebook Ads account structure",{"linkType":40,"newTab":41,"url":87},"https://deepclick.com/resources/blog/facebook-ads-account-structure/","6aec015e1236eb00c88283a4",{"detail":13,"format":13,"mode":14,"style":15,"text":90,"type":17,"version":18}," before you “test” a reorg that also changes learning pools.",4,{"children":93,"direction":19,"format":15,"indent":13,"type":62,"version":18,"value":116},[94,96,98,105,107,114],{"detail":13,"format":18,"mode":14,"style":15,"text":95,"type":17,"version":18},"Landing / deep link path",{"detail":13,"format":13,"mode":14,"style":15,"text":97,"type":17,"version":18},": only if the ad and auction stay identical; otherwise you are mixing media and page tests. Pair with ",{"children":99,"direction":19,"format":15,"indent":13,"type":37,"version":38,"fields":102,"id":104},[100],{"detail":13,"format":13,"mode":14,"style":15,"text":101,"type":17,"version":18},"mobile deep linking",{"linkType":40,"newTab":41,"url":103},"https://deepclick.com/resources/blog/mobile-deep-linking-guide/","6aec015e1236eb00c88283a5",{"detail":13,"format":13,"mode":14,"style":15,"text":106,"type":17,"version":18}," and ",{"children":108,"direction":19,"format":15,"indent":13,"type":37,"version":38,"fields":111,"id":113},[109],{"detail":13,"format":13,"mode":14,"style":15,"text":110,"type":17,"version":18},"link tracking for ad campaigns",{"linkType":40,"newTab":41,"url":112},"https://deepclick.com/resources/blog/link-tracking-for-ad-campaigns-2026/","6aec015e1236eb00c88283a6",{"detail":13,"format":13,"mode":14,"style":15,"text":115,"type":17,"version":18}," so UTMs and destinations stay unambiguous.",5,"list","bullet","ul",{"children":121,"direction":19,"format":15,"indent":13,"type":28,"version":18,"textFormat":13,"textStyle":15},[122,124,126,128,129],{"detail":13,"format":13,"mode":14,"style":15,"text":123,"type":17,"version":18},"If you change creative ",{"detail":13,"format":69,"mode":14,"style":15,"text":125,"type":17,"version":18},"and",{"detail":13,"format":13,"mode":14,"style":15,"text":127,"type":17,"version":18}," audience ",{"detail":13,"format":69,"mode":14,"style":15,"text":125,"type":17,"version":18},{"detail":13,"format":13,"mode":14,"style":15,"text":130,"type":17,"version":18}," bid in one “test,” you learn nothing you can scale.",{"children":132,"direction":19,"format":15,"indent":13,"type":20,"version":18,"tag":21},[133],{"detail":13,"format":13,"mode":14,"style":15,"text":134,"type":17,"version":18},"How to structure the test (without poisoning learning)",{"children":136,"direction":19,"format":15,"indent":13,"type":117,"version":18,"listType":180,"start":18,"tag":181},[137,147,153,168,174],{"children":138,"direction":19,"format":15,"indent":13,"type":62,"version":18,"value":18},[139,141,143,145],{"detail":13,"format":18,"mode":14,"style":15,"text":140,"type":17,"version":18},"Write the decision rule first",{"detail":13,"format":13,"mode":14,"style":15,"text":142,"type":17,"version":18},": e.g. “Winner must beat control CPA by ≥15% at ≥95% confidence ",{"detail":13,"format":69,"mode":14,"style":15,"text":144,"type":17,"version":18},"or",{"detail":13,"format":13,"mode":14,"style":15,"text":146,"type":17,"version":18}," clear a fixed conversion count floor.” No rule → you will pick the pretty CTR.",{"children":148,"direction":19,"format":15,"indent":13,"type":62,"version":18,"value":69},[149,151],{"detail":13,"format":18,"mode":14,"style":15,"text":150,"type":17,"version":18},"Split traffic fairly",{"detail":13,"format":13,"mode":14,"style":15,"text":152,"type":17,"version":18},": same geo, schedule, and placement inventory when possible. Prefer platform native A/B (Meta Experiments, Google Experiments) over manual “two campaigns with equal budget” when the platform randomizes users.",{"children":154,"direction":19,"format":15,"indent":13,"type":62,"version":18,"value":38},[155,157,159,166],{"detail":13,"format":18,"mode":14,"style":15,"text":156,"type":17,"version":18},"Match spend and time windows",{"detail":13,"format":13,"mode":14,"style":15,"text":158,"type":17,"version":18},": stop reading mid-day spikes. Align attribution windows with how you judge ",{"children":160,"direction":19,"format":15,"indent":13,"type":37,"version":38,"fields":163,"id":165},[161],{"detail":13,"format":13,"mode":14,"style":15,"text":162,"type":17,"version":18},"performance marketing KPIs",{"linkType":40,"newTab":41,"url":164},"https://deepclick.com/resources/blog/performance-marketing-kpis/","6aec015e1236eb00c88283a7",{"detail":13,"format":13,"mode":14,"style":15,"text":167,"type":17,"version":18},".",{"children":169,"direction":19,"format":15,"indent":13,"type":62,"version":18,"value":91},[170,172],{"detail":13,"format":18,"mode":14,"style":15,"text":171,"type":17,"version":18},"Keep tracking identical",{"detail":13,"format":13,"mode":14,"style":15,"text":173,"type":17,"version":18},": same pixel/CAPI events, same exclusion windows, same UTM taxonomy. Broken tracking masquerades as a “losing” variant.",{"children":175,"direction":19,"format":15,"indent":13,"type":62,"version":18,"value":116},[176,178],{"detail":13,"format":18,"mode":14,"style":15,"text":177,"type":17,"version":18},"Do not edit mid-flight",{"detail":13,"format":13,"mode":14,"style":15,"text":179,"type":17,"version":18},": renaming ads, swapping headlines, or changing caps mid-test resets comparability.","number","ol",{"children":183,"direction":19,"format":15,"indent":13,"type":28,"version":18,"textFormat":13,"textStyle":15},[184],{"detail":13,"format":13,"mode":14,"style":15,"text":185,"type":17,"version":18},"For page-level copy and layout experiments, keep them separate from campaign A/B—use your landing-page test playbook rather than stuffing page changes into a media experiment.",{"children":187,"direction":19,"format":15,"indent":13,"type":20,"version":18,"tag":21},[188],{"detail":13,"format":13,"mode":14,"style":15,"text":189,"type":17,"version":18},"Sample size and runtime (practical floors)",{"children":191,"direction":19,"format":15,"indent":13,"type":117,"version":18,"listType":118,"start":18,"tag":119},[192,198,204,210],{"children":193,"direction":19,"format":15,"indent":13,"type":62,"version":18,"value":18},[194,196],{"detail":13,"format":18,"mode":14,"style":15,"text":195,"type":17,"version":18},"Conversions, not clicks",{"detail":13,"format":13,"mode":14,"style":15,"text":197,"type":17,"version":18},": decide sample on the KPI you will scale (purchases, qualified leads), not CTR.",{"children":199,"direction":19,"format":15,"indent":13,"type":62,"version":18,"value":69},[200,202],{"detail":13,"format":18,"mode":14,"style":15,"text":201,"type":17,"version":18},"Minimum per arm",{"detail":13,"format":13,"mode":14,"style":15,"text":203,"type":17,"version":18},": rough floor is dozens of conversions per variant for directional calls; hundreds when stakes are high or effect sizes are small.",{"children":205,"direction":19,"format":15,"indent":13,"type":62,"version":18,"value":38},[206,208],{"detail":13,"format":18,"mode":14,"style":15,"text":207,"type":17,"version":18},"Runtime",{"detail":13,"format":13,"mode":14,"style":15,"text":209,"type":17,"version":18},": at least one full weekly cycle for most DTC/app accounts; longer when your sales cycle or learning phase is slow.",{"children":211,"direction":19,"format":15,"indent":13,"type":62,"version":18,"value":91},[212,214],{"detail":13,"format":18,"mode":14,"style":15,"text":213,"type":17,"version":18},"Power matters",{"detail":13,"format":13,"mode":14,"style":15,"text":215,"type":17,"version":18},": a 3% lift needs far more data than a 25% lift. If you cannot afford the sample, run a bigger, bolder hypothesis—or skip the test.",{"children":217,"direction":19,"format":15,"indent":13,"type":20,"version":18,"tag":21},[218],{"detail":13,"format":13,"mode":14,"style":15,"text":219,"type":17,"version":18},"Decision rules that survive a board review",{"children":221,"direction":19,"format":15,"indent":13,"type":311,"version":18},[222,238,252,266,280],{"children":223,"direction":19,"format":15,"indent":13,"type":237,"version":18},[224,231],{"children":225,"direction":19,"format":15,"indent":13,"type":230,"version":18,"backgroundColor":19,"colSpan":18,"headerState":18,"rowSpan":18},[226],{"children":227,"direction":19,"format":15,"indent":13,"type":28,"version":18,"textFormat":13,"textStyle":15},[228],{"detail":13,"format":13,"mode":14,"style":15,"text":229,"type":17,"version":18}," Result pattern ","tablecell",{"children":232,"direction":19,"format":15,"indent":13,"type":230,"version":18,"backgroundColor":19,"colSpan":18,"headerState":18,"rowSpan":18},[233],{"children":234,"direction":19,"format":15,"indent":13,"type":28,"version":18,"textFormat":13,"textStyle":15},[235],{"detail":13,"format":13,"mode":14,"style":15,"text":236,"type":17,"version":18}," Action ","tablerow",{"children":239,"direction":19,"format":15,"indent":13,"type":237,"version":18},[240,246],{"children":241,"direction":19,"format":15,"indent":13,"type":230,"version":18,"backgroundColor":19,"colSpan":18,"headerState":13,"rowSpan":18},[242],{"children":243,"direction":19,"format":15,"indent":13,"type":28,"version":18,"textFormat":13,"textStyle":15},[244],{"detail":13,"format":13,"mode":14,"style":15,"text":245,"type":17,"version":18}," Clear win on primary KPI + stable quality (refunds, retention, lead accept) ",{"children":247,"direction":19,"format":15,"indent":13,"type":230,"version":18,"backgroundColor":19,"colSpan":18,"headerState":13,"rowSpan":18},[248],{"children":249,"direction":19,"format":15,"indent":13,"type":28,"version":18,"textFormat":13,"textStyle":15},[250],{"detail":13,"format":13,"mode":14,"style":15,"text":251,"type":17,"version":18}," Scale winner gradually; keep a holdout if spend is large ",{"children":253,"direction":19,"format":15,"indent":13,"type":237,"version":18},[254,260],{"children":255,"direction":19,"format":15,"indent":13,"type":230,"version":18,"backgroundColor":19,"colSpan":18,"headerState":13,"rowSpan":18},[256],{"children":257,"direction":19,"format":15,"indent":13,"type":28,"version":18,"textFormat":13,"textStyle":15},[258],{"detail":13,"format":13,"mode":14,"style":15,"text":259,"type":17,"version":18}," Win on CTR/CPC only, flat or worse CPA/ROAS ",{"children":261,"direction":19,"format":15,"indent":13,"type":230,"version":18,"backgroundColor":19,"colSpan":18,"headerState":13,"rowSpan":18},[262],{"children":263,"direction":19,"format":15,"indent":13,"type":28,"version":18,"textFormat":13,"textStyle":15},[264],{"detail":13,"format":13,"mode":14,"style":15,"text":265,"type":17,"version":18}," Discard or rewrite—the auction liked the ad, the business did not ",{"children":267,"direction":19,"format":15,"indent":13,"type":237,"version":18},[268,274],{"children":269,"direction":19,"format":15,"indent":13,"type":230,"version":18,"backgroundColor":19,"colSpan":18,"headerState":13,"rowSpan":18},[270],{"children":271,"direction":19,"format":15,"indent":13,"type":28,"version":18,"textFormat":13,"textStyle":15},[272],{"detail":13,"format":13,"mode":14,"style":15,"text":273,"type":17,"version":18}," Tie within your decision margin ",{"children":275,"direction":19,"format":15,"indent":13,"type":230,"version":18,"backgroundColor":19,"colSpan":18,"headerState":13,"rowSpan":18},[276],{"children":277,"direction":19,"format":15,"indent":13,"type":28,"version":18,"textFormat":13,"textStyle":15},[278],{"detail":13,"format":13,"mode":14,"style":15,"text":279,"type":17,"version":18}," Keep control; ship a stronger hypothesis next ",{"children":281,"direction":19,"format":15,"indent":13,"type":237,"version":18},[282,288],{"children":283,"direction":19,"format":15,"indent":13,"type":230,"version":18,"backgroundColor":19,"colSpan":18,"headerState":13,"rowSpan":18},[284],{"children":285,"direction":19,"format":15,"indent":13,"type":28,"version":18,"textFormat":13,"textStyle":15},[286],{"detail":13,"format":13,"mode":14,"style":15,"text":287,"type":17,"version":18}," Win with worse compliance / reject risk ",{"children":289,"direction":19,"format":15,"indent":13,"type":230,"version":18,"backgroundColor":19,"colSpan":18,"headerState":13,"rowSpan":18},[290],{"children":291,"direction":19,"format":15,"indent":13,"type":28,"version":18,"textFormat":13,"textStyle":15},[292,294,301,302,309],{"detail":13,"format":13,"mode":14,"style":15,"text":293,"type":17,"version":18}," Do not scale—see ",{"children":295,"direction":19,"format":15,"indent":13,"type":37,"version":38,"fields":298,"id":300},[296],{"detail":13,"format":13,"mode":14,"style":15,"text":297,"type":17,"version":18},"ad compliance routing",{"linkType":40,"newTab":41,"url":299},"https://deepclick.com/resources/blog/ad-compliance-traffic-routing-overseas/","6aec015e1236eb00c88283a8",{"detail":13,"format":13,"mode":14,"style":15,"text":106,"type":17,"version":18},{"children":303,"direction":19,"format":15,"indent":13,"type":37,"version":38,"fields":306,"id":308},[304],{"detail":13,"format":13,"mode":14,"style":15,"text":305,"type":17,"version":18},"Facebook ad rejected fixes",{"linkType":40,"newTab":41,"url":307},"https://deepclick.com/resources/blog/facebook-ad-rejected-how-to-fix/","6aec015e1236eb00c88283a9",{"detail":13,"format":13,"mode":14,"style":15,"text":310,"type":17,"version":18}," ","table",{"children":313,"direction":19,"format":15,"indent":13,"type":28,"version":18,"textFormat":13,"textStyle":15},[314,316,318],{"detail":13,"format":13,"mode":14,"style":15,"text":315,"type":17,"version":18},"Always read ",{"detail":13,"format":18,"mode":14,"style":15,"text":317,"type":17,"version":18},"marginal",{"detail":13,"format":13,"mode":14,"style":15,"text":319,"type":17,"version":18}," return: a variant that wins at $200/day may lose when you 5× budget into colder inventory.",{"children":321,"direction":19,"format":15,"indent":13,"type":20,"version":18,"tag":21},[322],{"detail":13,"format":13,"mode":14,"style":15,"text":323,"type":17,"version":18},"Common failure modes in A/B testing ad campaigns",{"children":325,"direction":19,"format":15,"indent":13,"type":117,"version":18,"listType":118,"start":18,"tag":119},[326,332,338,344,350],{"children":327,"direction":19,"format":15,"indent":13,"type":62,"version":18,"value":18},[328,330],{"detail":13,"format":18,"mode":14,"style":15,"text":329,"type":17,"version":18},"Peeking daily",{"detail":13,"format":13,"mode":14,"style":15,"text":331,"type":17,"version":18}," and stopping early when one arm looks ahead.",{"children":333,"direction":19,"format":15,"indent":13,"type":62,"version":18,"value":69},[334,336],{"detail":13,"format":18,"mode":14,"style":15,"text":335,"type":17,"version":18},"Unequal learning",{"detail":13,"format":13,"mode":14,"style":15,"text":337,"type":17,"version":18},": one arm inherits historical pixel/event density; the other starts cold.",{"children":339,"direction":19,"format":15,"indent":13,"type":62,"version":18,"value":38},[340,342],{"detail":13,"format":18,"mode":14,"style":15,"text":341,"type":17,"version":18},"Contamination",{"detail":13,"format":13,"mode":14,"style":15,"text":343,"type":17,"version":18},": retargeting pools, brand search lift, or overlapping audiences bleed across arms.",{"children":345,"direction":19,"format":15,"indent":13,"type":62,"version":18,"value":91},[346,348],{"detail":13,"format":18,"mode":14,"style":15,"text":347,"type":17,"version":18},"Metric shopping",{"detail":13,"format":13,"mode":14,"style":15,"text":349,"type":17,"version":18},": switching the “primary KPI” after seeing results.",{"children":351,"direction":19,"format":15,"indent":13,"type":62,"version":18,"value":116},[352,354],{"detail":13,"format":18,"mode":14,"style":15,"text":353,"type":17,"version":18},"Confusing A/B with incrementality",{"detail":13,"format":13,"mode":14,"style":15,"text":355,"type":17,"version":18},": platform ROAS wins can still be non-incremental—escalate to holdouts when the question is “does this spend create net-new outcomes?”",{"children":357,"direction":19,"format":15,"indent":13,"type":20,"version":18,"tag":21},[358],{"detail":13,"format":13,"mode":14,"style":15,"text":359,"type":17,"version":18},"A one-week operating loop",{"children":361,"direction":19,"format":15,"indent":13,"type":117,"version":18,"listType":180,"start":18,"tag":181},[362,366,370,374,378],{"children":363,"direction":19,"format":15,"indent":13,"type":62,"version":18,"value":18},[364],{"detail":13,"format":13,"mode":14,"style":15,"text":365,"type":17,"version":18},"Monday: pick one hypothesis tied to a money KPI.",{"children":367,"direction":19,"format":15,"indent":13,"type":62,"version":18,"value":69},[368],{"detail":13,"format":13,"mode":14,"style":15,"text":369,"type":17,"version":18},"Build two arms that differ only on that hypothesis; freeze everything else.",{"children":371,"direction":19,"format":15,"indent":13,"type":62,"version":18,"value":38},[372],{"detail":13,"format":13,"mode":14,"style":15,"text":373,"type":17,"version":18},"Run through the planned sample/time floor—no mid-week creative “tweaks.”",{"children":375,"direction":19,"format":15,"indent":13,"type":62,"version":18,"value":91},[376],{"detail":13,"format":13,"mode":14,"style":15,"text":377,"type":17,"version":18},"Friday: score against the pre-written rule; document winner, loser, and next hypothesis.",{"children":379,"direction":19,"format":15,"indent":13,"type":62,"version":18,"value":116},[380],{"detail":13,"format":13,"mode":14,"style":15,"text":381,"type":17,"version":18},"Archive the setup (budgets, IDs, UTMs) so the next test is comparable.",{"children":383,"direction":19,"format":15,"indent":13,"type":20,"version":18,"tag":21},[384],{"detail":13,"format":13,"mode":14,"style":15,"text":385,"type":17,"version":18},"Bottom line",{"children":387,"direction":19,"format":15,"indent":13,"type":28,"version":18,"textFormat":13,"textStyle":15},[388],{"detail":13,"format":13,"mode":14,"style":15,"text":389,"type":17,"version":18},"A/B testing ad campaigns works when you isolate one lever, pre-commit the decision rule, and judge on business KPIs—not vanity engagement. Treat platform split tests as the default for media levers, keep landing experiments separate, and graduate to incrementality designs when “which ad won” is no longer the question that moves budget.",{"children":391,"direction":19,"format":15,"indent":13,"type":20,"version":18,"tag":21},[392],{"detail":13,"format":13,"mode":14,"style":15,"text":393,"type":17,"version":18},"FAQ",{"children":395,"direction":19,"format":15,"indent":13,"type":20,"version":18,"tag":398},[396],{"detail":13,"format":13,"mode":14,"style":15,"text":397,"type":17,"version":18},"How many variables should an ad campaign A/B test change?","h3",{"children":400,"direction":19,"format":15,"indent":13,"type":28,"version":18,"textFormat":13,"textStyle":15},[401],{"detail":13,"format":13,"mode":14,"style":15,"text":402,"type":17,"version":18},"One primary variable. Secondary differences (tiny budget rounding, delivery timing) should be minimized so the result is actionable.",{"children":404,"direction":19,"format":15,"indent":13,"type":20,"version":18,"tag":398},[405],{"detail":13,"format":13,"mode":14,"style":15,"text":406,"type":17,"version":18},"Is CTR a valid primary metric for A/B testing ad campaigns?",{"children":408,"direction":19,"format":15,"indent":13,"type":28,"version":18,"textFormat":13,"textStyle":15},[409],{"detail":13,"format":13,"mode":14,"style":15,"text":410,"type":17,"version":18},"Rarely. Use CTR as a diagnostic. Primary metrics should be CPA, ROAS, contribution after ads, or qualified pipeline—whatever finance will accept.",{"children":412,"direction":19,"format":15,"indent":13,"type":20,"version":18,"tag":398},[413],{"detail":13,"format":13,"mode":14,"style":15,"text":414,"type":17,"version":18},"How long should I run an A/B test on ads?",{"children":416,"direction":19,"format":15,"indent":13,"type":28,"version":18,"textFormat":13,"textStyle":15},[417,419,420],{"detail":13,"format":13,"mode":14,"style":15,"text":418,"type":17,"version":18},"Until you hit the pre-set conversion floor ",{"detail":13,"format":69,"mode":14,"style":15,"text":125,"type":17,"version":18},{"detail":13,"format":13,"mode":14,"style":15,"text":421,"type":17,"version":18}," cover at least one weekly demand cycle, unless the platform experiment tool declares a winner earlier under a power setting you accept.",{"children":423,"direction":19,"format":15,"indent":13,"type":20,"version":18,"tag":398},[424],{"detail":13,"format":13,"mode":14,"style":15,"text":425,"type":17,"version":18},"When should I use incrementality instead of A/B?",{"children":427,"direction":19,"format":15,"indent":13,"type":28,"version":18,"textFormat":13,"textStyle":15},[428],{"detail":13,"format":13,"mode":14,"style":15,"text":429,"type":17,"version":18},"When you need causal lift versus holdout (geo, user, or PSA-style), especially before large scale-ups where platform attribution is noisy.","root",{"id":432,"alt":433,"updatedAt":434,"createdAt":434,"url":435,"thumbnailURL":19,"filename":436,"mimeType":437,"filesize":438,"width":439,"height":439},1293,"muvloom inspiration r26b-46","2026-10-20T10:06:33.957Z","https://cms-r2.deepclick.com/r26b-46-25cb62d727af.jpg","r26b-46-25cb62d727af.jpg","image/jpeg",460301,1254,{"title":441,"description":442,"image":443},"A/B Testing Ad Campaigns: CPA Levers (2026)","Run A/B testing ad campaigns with one isolated lever, platform experiments, conversion sample floors, and pre-written decision rules that beat vanity CTR every time.",{"id":432,"alt":433,"updatedAt":434,"createdAt":434,"url":435,"thumbnailURL":19,"filename":436,"mimeType":437,"filesize":438,"width":439,"height":439},{"id":18,"key":445,"name":446,"prodHost":447,"testHost":448,"blogPath":449,"docPath":450,"zhPrefix":451,"deployHookTest":452,"deployHookProd":453,"brandAuthor":454,"brandKit":458,"enabled":462,"updatedAt":463,"createdAt":464},"deepclick","DeepClick","https://deepclick.com","https://www-test-deepclick.qiliangjia.one","/resources/blog/{slug}","/docs/{slug}","/zh-CN","https://api.cloudflare.com/client/v4/pages/webhooks/deploy_hooks/60a9adef-153b-4c89-8d07-7118e91e9522","https://api.cloudflare.com/client/v4/pages/webhooks/deploy_hooks/05323321-f694-4ce8-a5af-173c507b8bae",{"id":69,"name":446,"avatar":455,"updatedAt":456,"createdAt":457},25,"2026-04-22T08:09:35.299Z","2026-04-22T06:42:49.116Z",{"logoLight":19,"logoDark":19,"primaryColor":459,"accentColor":460,"tagline":461,"wechatName":19,"xhsHandle":19,"wechatQr":19},"#1a73e8","#ff6600","一次点击，多重价值",true,"2026-08-25T06:40:57.663Z","2026-07-14T06:26:38.962Z","published","ab-testing-ad-campaigns",{"id":69,"name":446,"avatar":468,"updatedAt":456,"createdAt":457},{"id":455,"alt":446,"updatedAt":469,"createdAt":469,"url":470,"thumbnailURL":19,"filename":471,"mimeType":472,"filesize":473,"width":474,"height":474},"2026-04-22T08:09:22.606Z","https://cms-r2.deepclick.com/头像-白.png","头像-白.png","image/png",26626,1024,{"id":476,"site":477,"titleZh":479,"titleEn":480,"slug":481,"order":116,"updatedAt":482,"createdAt":483},7,{"id":18,"key":445,"name":446,"prodHost":447,"testHost":448,"blogPath":449,"docPath":450,"zhPrefix":451,"deployHookTest":452,"deployHookProd":453,"brandAuthor":69,"brandKit":478,"enabled":462,"updatedAt":463,"createdAt":464},{"logoLight":19,"logoDark":19,"primaryColor":459,"accentColor":460,"tagline":461,"wechatName":19,"xhsHandle":19,"wechatQr":19},"技术导航","Tech Guides","tech-guides","2026-04-27T08:37:10.576Z","2026-04-23T02:59:13.436Z","2026-11-05T04:09:22.082Z","2026-11-05T04:09:23.492Z","2026-11-05T04:09:04.904Z","\u003Cdiv class=\"payload-richtext\">\u003Ch2>What A/B testing ad campaigns actually means\u003C/h2>\u003Cp>\u003Cstrong>A/B testing ad campaigns\u003C/strong> is a controlled comparison of two (or more) campaign setups so you can attribute a change in CPA, ROAS, or volume to one deliberate difference—not to auction noise, seasonality, or a creative that happened to win for a week. It is not “launch five ads and keep the one with the highest CTR.”\u003C/p>\u003Cp>Use this page as an operating guide: what to isolate, how to structure Meta/Google/TikTok tests without wrecking learning, how long to run them, and when a split test is the wrong tool (and \u003Ca href=\"https://deepclick.com/resources/blog/incrementality-testing-for-ads/\">incrementality testing for ads\u003C/a> is the right one).\u003C/p>\u003Ch2>Isolate one variable per A/B test\u003C/h2>\u003Cp>Every useful campaign A/B test has a single primary lever:\u003C/p>\u003Cul class=\"list-bullet\">\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"1\"\n        >\u003Cstrong>Creative\u003C/strong>: hook, format, length, or offer framing—with targeting and bid held constant.\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"2\"\n        >\u003Cstrong>Audience / signal\u003C/strong>: lookalike seed, interest stack, or first-party segment—same creatives and budget rules.\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"3\"\n        >\u003Cstrong>Bid / goal\u003C/strong>: cost cap vs highest volume, or optimize for purchase vs add-to-cart.\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"4\"\n        >\u003Cstrong>Structure\u003C/strong>: one campaign vs many ad sets—see \u003Ca href=\"https://deepclick.com/resources/blog/facebook-ads-account-structure/\">Facebook Ads account structure\u003C/a> before you “test” a reorg that also changes learning pools.\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"5\"\n        >\u003Cstrong>Landing / deep link path\u003C/strong>: only if the ad and auction stay identical; otherwise you are mixing media and page tests. Pair with \u003Ca href=\"https://deepclick.com/resources/blog/mobile-deep-linking-guide/\">mobile deep linking\u003C/a> and \u003Ca href=\"https://deepclick.com/resources/blog/link-tracking-for-ad-campaigns-2026/\">link tracking for ad campaigns\u003C/a> so UTMs and destinations stay unambiguous.\u003C/li>\u003C/ul>\u003Cp>If you change creative \u003Cem>and\u003C/em> audience \u003Cem>and\u003C/em> bid in one “test,” you learn nothing you can scale.\u003C/p>\u003Ch2>How to structure the test (without poisoning learning)\u003C/h2>\u003Col class=\"list-number\">\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"1\"\n        >\u003Cstrong>Write the decision rule first\u003C/strong>: e.g. “Winner must beat control CPA by ≥15% at ≥95% confidence \u003Cem>or\u003C/em> clear a fixed conversion count floor.” No rule → you will pick the pretty CTR.\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"2\"\n        >\u003Cstrong>Split traffic fairly\u003C/strong>: same geo, schedule, and placement inventory when possible. Prefer platform native A/B (Meta Experiments, Google Experiments) over manual “two campaigns with equal budget” when the platform randomizes users.\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"3\"\n        >\u003Cstrong>Match spend and time windows\u003C/strong>: stop reading mid-day spikes. Align attribution windows with how you judge \u003Ca href=\"https://deepclick.com/resources/blog/performance-marketing-kpis/\">performance marketing KPIs\u003C/a>.\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"4\"\n        >\u003Cstrong>Keep tracking identical\u003C/strong>: same pixel/CAPI events, same exclusion windows, same UTM taxonomy. Broken tracking masquerades as a “losing” variant.\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"5\"\n        >\u003Cstrong>Do not edit mid-flight\u003C/strong>: renaming ads, swapping headlines, or changing caps mid-test resets comparability.\u003C/li>\u003C/ol>\u003Cp>For page-level copy and layout experiments, keep them separate from campaign A/B—use your landing-page test playbook rather than stuffing page changes into a media experiment.\u003C/p>\u003Ch2>Sample size and runtime (practical floors)\u003C/h2>\u003Cul class=\"list-bullet\">\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"1\"\n        >\u003Cstrong>Conversions, not clicks\u003C/strong>: decide sample on the KPI you will scale (purchases, qualified leads), not CTR.\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"2\"\n        >\u003Cstrong>Minimum per arm\u003C/strong>: rough floor is dozens of conversions per variant for directional calls; hundreds when stakes are high or effect sizes are small.\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"3\"\n        >\u003Cstrong>Runtime\u003C/strong>: at least one full weekly cycle for most DTC/app accounts; longer when your sales cycle or learning phase is slow.\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"4\"\n        >\u003Cstrong>Power matters\u003C/strong>: a 3% lift needs far more data than a 25% lift. If you cannot afford the sample, run a bigger, bolder hypothesis—or skip the test.\u003C/li>\u003C/ul>\u003Ch2>Decision rules that survive a board review\u003C/h2>\u003Cdiv class=\"lexical-table-container\">\n        \u003Ctable class=\"lexical-table\" style=\"border-collapse: collapse;\">\n          \u003Ctbody>\u003Ctr class=\"lexical-table-row\">\n        \u003Cth\n        class=\"lexical-table-cell lexical-table-cell-header-1\"\n        \n        \n        style=\"border: 1px solid #ccc; padding: 8px;\"\n      >\n        \u003Cp> Result pattern \u003C/p>\n      \u003C/th>\n    \u003Cth\n        class=\"lexical-table-cell lexical-table-cell-header-1\"\n        \n        \n        style=\"border: 1px solid #ccc; padding: 8px;\"\n      >\n        \u003Cp> Action \u003C/p>\n      \u003C/th>\n    \n      \u003C/tr>\u003Ctr class=\"lexical-table-row\">\n        \u003Ctd\n        class=\"lexical-table-cell lexical-table-cell-header-0\"\n        \n        \n        style=\"border: 1px solid #ccc; padding: 8px;\"\n      >\n        \u003Cp> Clear win on primary KPI + stable quality (refunds, retention, lead accept) \u003C/p>\n      \u003C/td>\n    \u003Ctd\n        class=\"lexical-table-cell lexical-table-cell-header-0\"\n        \n        \n        style=\"border: 1px solid #ccc; padding: 8px;\"\n      >\n        \u003Cp> Scale winner gradually; keep a holdout if spend is large \u003C/p>\n      \u003C/td>\n    \n      \u003C/tr>\u003Ctr class=\"lexical-table-row\">\n        \u003Ctd\n        class=\"lexical-table-cell lexical-table-cell-header-0\"\n        \n        \n        style=\"border: 1px solid #ccc; padding: 8px;\"\n      >\n        \u003Cp> Win on CTR/CPC only, flat or worse CPA/ROAS \u003C/p>\n      \u003C/td>\n    \u003Ctd\n        class=\"lexical-table-cell lexical-table-cell-header-0\"\n        \n        \n        style=\"border: 1px solid #ccc; padding: 8px;\"\n      >\n        \u003Cp> Discard or rewrite—the auction liked the ad, the business did not \u003C/p>\n      \u003C/td>\n    \n      \u003C/tr>\u003Ctr class=\"lexical-table-row\">\n        \u003Ctd\n        class=\"lexical-table-cell lexical-table-cell-header-0\"\n        \n        \n        style=\"border: 1px solid #ccc; padding: 8px;\"\n      >\n        \u003Cp> Tie within your decision margin \u003C/p>\n      \u003C/td>\n    \u003Ctd\n        class=\"lexical-table-cell lexical-table-cell-header-0\"\n        \n        \n        style=\"border: 1px solid #ccc; padding: 8px;\"\n      >\n        \u003Cp> Keep control; ship a stronger hypothesis next \u003C/p>\n      \u003C/td>\n    \n      \u003C/tr>\u003Ctr class=\"lexical-table-row\">\n        \u003Ctd\n        class=\"lexical-table-cell lexical-table-cell-header-0\"\n        \n        \n        style=\"border: 1px solid #ccc; padding: 8px;\"\n      >\n        \u003Cp> Win with worse compliance / reject risk \u003C/p>\n      \u003C/td>\n    \u003Ctd\n        class=\"lexical-table-cell lexical-table-cell-header-0\"\n        \n        \n        style=\"border: 1px solid #ccc; padding: 8px;\"\n      >\n        \u003Cp> Do not scale—see \u003Ca href=\"https://deepclick.com/resources/blog/ad-compliance-traffic-routing-overseas/\">ad compliance routing\u003C/a> and \u003Ca href=\"https://deepclick.com/resources/blog/facebook-ad-rejected-how-to-fix/\">Facebook ad rejected fixes\u003C/a> \u003C/p>\n      \u003C/td>\n    \n      \u003C/tr>\u003C/tbody>\n        \u003C/table>\n      \u003C/div>\u003Cp>Always read \u003Cstrong>marginal\u003C/strong> return: a variant that wins at $200/day may lose when you 5× budget into colder inventory.\u003C/p>\u003Ch2>Common failure modes in A/B testing ad campaigns\u003C/h2>\u003Cul class=\"list-bullet\">\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"1\"\n        >\u003Cstrong>Peeking daily\u003C/strong> and stopping early when one arm looks ahead.\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"2\"\n        >\u003Cstrong>Unequal learning\u003C/strong>: one arm inherits historical pixel/event density; the other starts cold.\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"3\"\n        >\u003Cstrong>Contamination\u003C/strong>: retargeting pools, brand search lift, or overlapping audiences bleed across arms.\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"4\"\n        >\u003Cstrong>Metric shopping\u003C/strong>: switching the “primary KPI” after seeing results.\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"5\"\n        >\u003Cstrong>Confusing A/B with incrementality\u003C/strong>: platform ROAS wins can still be non-incremental—escalate to holdouts when the question is “does this spend create net-new outcomes?”\u003C/li>\u003C/ul>\u003Ch2>A one-week operating loop\u003C/h2>\u003Col class=\"list-number\">\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"1\"\n        >Monday: pick one hypothesis tied to a money KPI.\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"2\"\n        >Build two arms that differ only on that hypothesis; freeze everything else.\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"3\"\n        >Run through the planned sample/time floor—no mid-week creative “tweaks.”\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"4\"\n        >Friday: score against the pre-written rule; document winner, loser, and next hypothesis.\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"5\"\n        >Archive the setup (budgets, IDs, UTMs) so the next test is comparable.\u003C/li>\u003C/ol>\u003Ch2>Bottom line\u003C/h2>\u003Cp>A/B testing ad campaigns works when you isolate one lever, pre-commit the decision rule, and judge on business KPIs—not vanity engagement. Treat platform split tests as the default for media levers, keep landing experiments separate, and graduate to incrementality designs when “which ad won” is no longer the question that moves budget.\u003C/p>\u003Ch2>FAQ\u003C/h2>\u003Ch3>How many variables should an ad campaign A/B test change?\u003C/h3>\u003Cp>One primary variable. Secondary differences (tiny budget rounding, delivery timing) should be minimized so the result is actionable.\u003C/p>\u003Ch3>Is CTR a valid primary metric for A/B testing ad campaigns?\u003C/h3>\u003Cp>Rarely. Use CTR as a diagnostic. Primary metrics should be CPA, ROAS, contribution after ads, or qualified pipeline—whatever finance will accept.\u003C/p>\u003Ch3>How long should I run an A/B test on ads?\u003C/h3>\u003Cp>Until you hit the pre-set conversion floor \u003Cem>and\u003C/em> cover at least one weekly demand cycle, unless the platform experiment tool declares a winner earlier under a power setting you accept.\u003C/p>\u003Ch3>When should I use incrementality instead of A/B?\u003C/h3>\u003Cp>When you need causal lift versus holdout (geo, user, or PSA-style), especially before large scale-ups where platform attribution is noisy.\u003C/p>\u003C/div>","https://deepclick.com/resources/blog/ab-testing-ad-campaigns",{"zh-CN":466,"en":466},[491],{"id":38,"title":492,"site":493,"image":495,"mobileImage":504,"targetUrl":512,"enabled":462,"postDateFrom":513,"postDateTo":514,"updatedAt":515,"createdAt":516},"2026.10.20 Jakarta summit (deepclick)",{"id":18,"key":445,"name":446,"prodHost":447,"testHost":448,"blogPath":449,"docPath":450,"zhPrefix":451,"deployHookTest":452,"deployHookProd":453,"brandAuthor":69,"brandKit":494,"enabled":462,"updatedAt":463,"createdAt":464},{"logoLight":19,"logoDark":19,"primaryColor":459,"accentColor":460,"tagline":461,"wechatName":19,"xhsHandle":19,"wechatQr":19},{"id":496,"alt":497,"updatedAt":498,"createdAt":498,"url":499,"thumbnailURL":19,"filename":500,"mimeType":472,"filesize":501,"width":502,"height":503},1068,"TrafficTalking Jakarta summit 2026.10.20 (en)","2026-09-04T10:44:12.868Z","https://cms-r2.deepclick.com/traffictalking-jakarta-banner-en-9f7ee22f6562.png","traffictalking-jakarta-banner-en-9f7ee22f6562.png",1565832,2000,400,{"id":505,"alt":506,"updatedAt":507,"createdAt":507,"url":508,"thumbnailURL":19,"filename":509,"mimeType":472,"filesize":510,"width":511,"height":503},1070,"TrafficTalking Jakarta summit 2026.10.20 (mobile-en)","2026-09-04T10:44:23.791Z","https://cms-r2.deepclick.com/traffictalking-jakarta-banner-mobile-en-3ef8e652bbac.png","traffictalking-jakarta-banner-mobile-en-3ef8e652bbac.png",580158,1200,"https://luma.com/g4tnhetc","2026-09-03T00:00:00.000Z","2026-10-04T00:00:00.000Z","2026-09-22T01:42:15.402Z","2026-09-04T10:45:03.031Z",1793933219609]