Shopifys native Buy X Get Y rabat begrænser hvor mange produkter du kan markere som berettigede, en grænse bredt rapporteret af forhandlere og Shopify-support som 100 produkter, og den gælder et fast antal gange pr. ordre snarere end at gentage når indkøbsvognen vokser. Den kombination er hvorfor du ikke kan køre en sande store-wide 3-for-2 på et katalog med flere hundrede varer, og hvorfor en kunde der køber ni berettigede produkter ikke automatisk får tre gratis. For at køre store-wide eller gentagende Buy X Get Y har du brug for en rabat bygget på Shopify Functions, som ikke har sådan en produktgrænse og kan påny gælde tilbuddet hver gang buy mængden mødes.
Denne guide forklarer hvordan native Buy X Get Y virker, præcis hvor det stopper (produktgrænsen, no-repeat adfærden, cheapest-item nuancen, og hvordan varianter tælles), hvorfor disse grænser eksisterer, de workarounds forhandlere griber til og hvorfor draft orders og duplicate collections lydløst bryder koder, analytics og accelereret checkout, og Functions-baseret måden at køre 3-for-2 og buy-6-get-2 på hele dit katalog.
Har Shopifys Buy X Get Y en produktgrænse?
Ja. Når du bygger et Buy X Get Y rabat i Shopify admin, vælger du hvilke produkter eller kollektioner kunden skal købe og hvilke de får rabat på. At tilføje disse berettigede varer én efter én løber ind i et loft. Forhandlere på Shopify forums rapporterer at builder holder op med at lade dem tilføje produkter når de når 100, og Shopify-support har bekræftet samme grænse i disse tråde. I en bredt læst Shopify Partner tråd med titlen"Leder efter en Workaround til Shopifys 100 produktgrænse for Buy X Get Y", en forhandler der prøver at køre en simpel 3-for-2 på et stort katalog bliver fortalt der er en hård 100-produkts grænse og at ingen native indstilling fjerner det.
En hurtig note om præcision. Shopifys offentlige developer dokumentation beskriverBuy X Get Y rabat objekterog deres adfærd, men det trykte ikke et nøjagtigt "100" i API referencen. Så behandl 100 som den bredt rapporteret native grænse som forhandlere og Shopify-support citerer i Help Center og community, snarere end et tal hugget i platformen kontakt. Den praktiske konsekvens ændres ikke: native Buy X Get Y er ikke designet til at dække et helt stort katalog, og når du passerer grænsen kan du ikke tilføje flere berettigede produkter.
Grænsen bider hardest på præcis de butikker der ønsker denne promotion mest. En 400-SKU tøjmærke der kører "buy any 3, billigste gratis" kan ikke vælge hvert produkt. En hjemmeboligforretning med 600 varer kan ikke sætte sit fulde range i en mix-and-match 3-for-2. Du ender enten med at begrænse promotionen til et arbitrært 100 varer eller dele den op i flere rabatter, hver med sin egen berettigelsesliste, som er skrøbelig og let at få forkert.
BILLEDE PLADSHOLDER (Billede 1): 100-produkts muren
Foreslået visual: Et rent 16:9 diagram på hvid baggrund. Et stort produktgitter med små vare tiles fader fra solid violet (de første 100, mærket "berettiget") til falmede tiles (mærket "kan ikke tilføjes"), med en fed guldlinje markeret "100-produkts grænse" der adskiller dem. En lille tæller i hjørnet læser "100 / 400 produkter." Fladt vector stil, brand farver violet og guld, sans-serif labels, ingen fotografi.
Hvordan virker native Buy X Get Y egentlig?
Buy X Get Y, nogle gange kaldt BXGY eller BOGO, er en af Shopifys built-in rabattyper. Det belønner en kunde med rabatteret eller gratis varer når de køber en kvalificerende mængde af andre varer. Det er en produkt-klasse rabat, hvilket betyder at det reducerer prisen på specifikke cart linjer snarere end ordresubtotalen eller forsendelse.
"Kunden køber" og "kunden får" halvdelene
Hvert Buy X Get Y rabat har to halvdele. "Kunden køber" siden sætter triggeren: en minimum mængde (eller et minimum forbrug) af produkter eller kollektioner du vælger. "Kunden får" siden sætter belønningen: en mængde produkter eller kollektioner der bliver gratis eller rabatteret med en procent eller fast beløb. ShopifysBuy X Get Y create mutationviser præcis disse felter,customerBuysogcustomerGets, og varerne på hver side kan være produkter eller kollektioner. Et klassisk setup er buy 2 fra en kollektion, get 1 fra samme kollektion gratis, som producerer det kendte "buy 2, get 1" tilbud.
Cheapest-item nuancen
For en "3-for-2" stil promotion, intentionen er at det billigste af de tre kvalificerende varer bliver gratis. Native Buy X Get Y kan gøre "get" varen gratis, men det har ikke en dedikeret "altid rabatteret det billigste berettigede element i indkøbsvognen" mode som forhandlere ofte antager. Når buy og get lister overlapper (kunden køber fra og får fra samme kollektion), gælder Shopify rabatten til den lavere prissatte kvalificerende linje, som tilnærmer billigste-gratis for et enkelt sæt. Problemet starter når indkøbsvognen holder mere end ét sæt, fordi tilbuddet holder ikke op med at finde og frigøre det næste billigste element når mængderne vokser. Det er repeat problemet, dækket nedenfor.
Hvordan varianter tælles
Buy X Get Y virker på produkt- og variant niveau, som er en styrke og en fælde. Du kan inkludere specifikke varianter, som er hvad en forhandler ønsker når kun nogle størelser eller farver skal kvalificere sig. Men berettigelse er stadig en endelig liste af produkter eller kollektioner, så en butik der ønsker "enhver variant af ethvert produkt, blande og match" løber lige tilbage i produktgrænsen. Du kan ikke udtrykke "hele kataloget, alle varianter, buy any 3" som en single native regel når kataloget overskrider grænsen.
Hvorfor kan native Buy X Get Y ikke gentage?
Dette er den anden mur, og for mange butikker er det værre end produktgrænsen. Native Buy X Get Y gælder et begrænset antal gange pr. ordre snarere end påny gælde for hvert kvalificerende sæt i indkøbsvognen. Shopifys egen create mutation inkluderer etusesPerOrderLimitfelt, og det dokumenterede eksempel sætter det til1, betyder at rabatten tildeles én gang for den ordre. Der er ingen native toggle der siger "påny gæld dette tilbud automatisk hver gang kunden køber et andet kvalificerende sæt."
Spil det ud. Du kører "buy 6, get 2 gratis." En kunde tilføjer 12 kvalificerende varer til deres indkøbsvogn, klart to fulde sæt. De forventer 4 gratis varer. Native Buy X Get Y giver dem 2, fordi tilbuddet fyrede én gang og stoppede. Det samme ting bryder en store-wide 3-for-2: en kunde med 9 berettigede varer i indkøbsvognen skal få 3 gratis (tre sæt af tre), men native rabat frigør kun én vare. Forhandlerens promo plakat siger én ting og checkout gør en anden, som udhuler tillid og genererer support billetter.
Forhandlere beskriver at ville præcis dette mønster i forums: "buy 6 get 2 gratis, buy 9 get 3 gratis," et forhold der skalerer med indkøbsvogn mængde. Native Buy X Get Y blev ikke bygget til at genberegne pr. sæt, så tilbuddet enten underleverer eller tvinger forhandleren til at begrænse promotionen på måder kunderne finder forvirrende.
Hvorfor eksisterer 100-produkts grænsen?
Grænsen er ikke arbitrær grusomhed. Native rabatter lagrer deres berettigelse som en eksplicit liste af produkt eller kollektion rettigheder knyttet til rabat rekordet, og Shopify holder den liste afgrænset så rabatten holder sig hurtig at evaluere på hvert indkøbsvogn og ved checkout. En rabat der skulle scanne en ubegrænset liste af tusinder af specifikke produkter på hvert indkøbsvogn opdatering ville være langsommere og sværere at holde konsistent på tværs af indkøbsvognside, checkout og accelererede checkouts. Afgrænsning af berettigelseslisten holder native rabatter forudsigelige.
Designvalget der fjerner loftet er at holde op med at lagre en gigantisk liste af individuelle produkter og i stedet evaluere berettigelse med logik ved runtime. Det er præcis hvad Shopify Functions gør. I stedet for "her er 400 specifikke produkt IDs," kan en Function fortælles "enhver vare der bærer denne tag" eller "enhver vare i denne kollektion" og beslutte, vare for vare, når indkøbsvognen beregnes, om hver linje kvalificerer sig. Fordi reglen er logik snarere end en lagret liste, holder katalogstørrelse op med at spille nogen rolle. Dette er samme arkitektur Shopify selv peger forhandlere mod for rabat adfærd native builder ikke kan udtrykke.
BILLEDE PLADSHOLDER (Billede 2): Listebased kontra logik-baseret berettigelse
Foreslået visual: Et 16:9 split-panel illustration. Venstre panel mærket "Native: lagret liste" viser et rabat record der holder en fast stak af 100 produktkort med en rød "fuld" stempel. Højre panel mærket "Functions: en regel" viser en single regel chip der læser "tag = sale" med en pil der faner ud til et ubegrænset produktgitter, alle tjekket grønt. En center divider. Brand farver violet og guld, fladt vector stil, ingen fotografi.
Hvilke workarounds prøver forhandlere, og hvorfor bryder de?
Fordi native Buy X Get Y falder kortfattet, griber butikker til hacks. Hver udveksler grænsen for et anderledes, normalt værre, problem.
Dupletter rabatter, én pr. 100 produkter
Det åbenlyse træk er at dele kataloget op i stykker af 100 og lave en separate Buy X Get Y rabat for hver stykke. Det virker nogenlunde indtil du tænker på indkøbsvognen. En kunde der køber to berettigede varer der tilfældigvis falder i forskellige stykker triggerer ikke noget enkelt rabats buy mængde, så promotionen fejler stille for blandet indkøbsvogne. Du multiplicerer også din vedligeholdelse: hvert nyt produkt skal arkiveres i det rigtige stykke, og Shopify begrænser hvor mange aktive rabatter du kan køre. Denne tilgang kæmper promotionens hele pointe, som er at lade kunder blande og match frit på tværs af rækken.
Draft orders med manuelle rabatter
Et almindeligt forslag er at bygge ordren som en draft i admin, anvend rabatten manuelt, og send kunden en faktura. Dette fjerner virkeligt produktgrænsen, men det bryder tingene der gør en butikfront virker. En draft-order flow er ikke normal checkout: den tillader ikke kunden at påny gælde deres egne rabat koder, den kører ikke gennem standard analytics samme måde, og det omgår accelererede checkouts helt. Shop Pay, Apple Pay og Google Pay købere ser aldrig en hand-built draft order, så dine hurtigst-konverterings kunder kan ikke bruge tilbuddet overhovedet. Draft orders er fint for det sjældne telefonale. De er ikke en mekanisme for at køre en self-serve promotion i skala.
Fake bundle produkt tricket
For gentagende sæt prissætning, laver nogle forhandlere et single fake produkt prissat til sæt totalen, for eksempel en "3 for 2 bundle" produkt på prisen af to varer, og gemmer de rigtige produkter. Dette ødelægger inventar (bundle SKU er dekobl fra rigtig stock), ødelægger merchandising (kunder kan ikke browse og vælge frit), og ødelægger rapportering (salg ruller op under fake SKU). Det kan også ikke udtrykke "enhver 3 fra denne stor range," som er fleksibiliteten en mix-and-match 3-for-2 skal give.
Mønsteret på tværs af alle tre: hver workaround udveksler en ren, self-serve, checkout-native promotion for noget manuelt, skrøbeligt eller usynligt for de købere der konverterer bedst. Ingen af dem genopretter hvad forhandlere egentlig ønsker, som er native Buy X Get Y adfærd uden grænsen og med korrekt repeat logik.
Hvordan køres store-wide, gentagende Buy X Get Y med Shopify Functions
Den holdbare løsning er en rabat bygget på Shopify Functions, samme server-side engine Shopify bruger til at lade apps customize rabat logik. Et Functions-baseret Buy X Get Y løser begge mure på én gang.
Først, berettigelse bliver en regel i stedet for en liste. Du scope tilbuddet efter tag eller efter kollektion, og Function'en evaluerer hvert indkøbsvogn linje mod den regel ved beregning tid. Der er ingen 100-produkt berettigelsesliste at fylde, så et 400-produkt eller 4,000-produkt katalog behandles samme måde. Nye produkter der matcher tagget opt-in automatisk det øjeblik du tilføjer dem, uden rabat at re-edit.
Anden, tilbuddet kan gentage. En Function kan påny gælde buy-to-get forholdet for hvert kvalificerende sæt i indkøbsvognen, så "buy 3, get 1 gratis" bliver 2 gratis ved 6 varer og 3 gratis ved 9 varer, i ét tilbud. Samme logik driver "buy 6, get 2 gratis" fordobling til 4 gratis ved 12 varer. Og fordi Function kører inde Shopifys egen checkout pipeline, indkøbsvognsiden, checkout siden og accelererede checkouts alle beregner det identiske resultat, så en Shop Pay køber får præcis hvad indkøbsvognsskuff lovede.
Tredje, cheapest-item adfærd bliver eksplicit. En Function kan fortælles at altid rabatteret det lavest prissatte berettigede element i hvert sæt, som er hvad en sande 3-for-2 betyder, eller at påny gælde en procent i stedet for helt gratis for et mildt tilbud. Ifølge Shopifys developer dokumentation, harBuy X Get Y rabat modeldokumenterede begrænsninger og overvejelser, og Functions er den understøttet vej for at gå ud over dem.
Gennemarbejdet eksempel: en store-wide 3-for-2 og en gentagende buy-6-get-2
Lad os gøre begge promotioner konkrete.
Promotion A: 3-for-2 på tværs af et 400-produkts katalog
En tøjforretning ønsker "buy any 3, get billigste gratis" på hele sit 400-SKU range, og det ønsker nye arrivals join automatisk. Med et Functions-baseret tilbud, berettigelse er en tag (sige,promo-3for2) påny gældt til hele kataloget, buy mængde er 3, get mængde er 1, rabatten er 100 procent af billigste berettigede element, og repeat er til.
Her er hvordan en rigtig indkøbsvogn løser.
Native Buy X Get Y kan ikke udtrykke dette på to niveauer: det kan ikke dække 400 produkter i en berettigelsesliste, og selv i et dækket sæt ville det frigøre kun én vare for 9-vare indkøbsvognen i stedet for tre. Det Functions-baseret tilbud håndterer både katalogstørrelsen og gentag.
Promotion B: en gentagende buy-6-get-2
Et snack brand kører "buy 6 barer, get 2 gratis," og promo plakaten antyder det skal fordobles for en 12-bar indkøbsvogn. Setupet er buy mængde 6, get mængde 2, repeat til, 100 procent af get varerne.
En 12-bar indkøbsvogn får 4 gratis barer, to repeats af 6-for-2 sættet, som er præcis hvad plakaten lovede. Native Buy X Get Y, påny gældt én gang pr. ordre, ville give 2 gratis barer for den samme 12-bar indkøbsvogn og stille undersælger tilbuddet.
Pointen for begge tabeller er ikke at matematik er svær. Det er at native Buy X Get Y stopper ved første sæt og ved 100 produkter, og et Functions-baseret tilbud fortsætter.
Køre dette pålideligt med Stackable
Hvis du hellere vil konfigurere dette end bygge en custom Shopify Function,Stackablekører Buy X Get Y ud over native grænserne, ærligt og inden for Shopifys rigtige regler.
- Intet 100-produkt loft. Du scope berettigelse efter tag, kollektion eller en eksplicit liste uden øvre grænse, så en store-wide 3-for-2 dækker dit hele katalog og nye produkter der matcher reglen opt-in automatisk.
- Repeat logik er en single toggle. "Buy 3, get 1 gratis" påny gælder når indkøbsvognen vokser, så 6 varer får 2 gratis og 9 varer får 3 gratis, og "buy 6, get 2 gratis" fordobles til 4 gratis ved 12 varer, alle i ét tilbud.
- Billigste-vare-gratis er standarden, og du kan skifte den til en procent for et mildt deal, eller fixe rabatten til en specifik vare.
- Matematikken kører inde enShopify Function, så indkøbsvognside, checkout og accelererede checkouts som Shop Pay alle beregner det samme resultat. Der er ingen draft-order hack, ingen fake bundle SKU, og ingen tema-versus-checkout drift.
Installer Stackable gratis og kør en gentagende 3-for-2 i hele butikken, der stemmer på øret, på usestackable.com/pricing. 🚀
Bundlinjen
- Native Buy X Get Y begrænser hvor mange produkter du kan markere som berettigede, en grænse forhandlere og Shopify-support bredt rapporterer som 100, så det kan ikke dække et stort katalog i en regel.
- Native Buy X Get Y gælder også et fast antal gange pr. ordre, så det gentager ikke: en 9-vare indkøbsvogn på 3-for-2 frigør 1 vare, ikke 3, og en 12-bar indkøbsvogn på buy-6-get-2 frigør 2, ikke 4.
- Workaroundene handler alle med grænsen for et værre problem: duplicate rabatter bryder mix-and-match, draft orders omgår koder og accelereret checkout, og fake bundle SKUs ødelægger inventar og rapportering.
- Grænsen eksisterer fordi native rabatter lagrer berettigelse som en afgrænset liste. Shopify Functions evaluerer berettigelse som en regel ved runtime, så katalogstørrelse stopper med at spille rolle.
- Et Functions-baseret Buy X Get Y køres store-wide og kan gentage pr. sæt, altid rabatteret det billigste berettigede element, med samme total på indkøbsvognsside, checkout og Shop Pay.
- Værktøjer som Stackable giver dig ingen produktgrænse, en repeat toggle, og billigste-vare-gratis som standarden, så en sande 3-for-2 på hele dit katalog er et par indstillinger snarere end en custom Function.
Relaterede artikler
- BOGO og Buy X Get Y ud over 100-produkts grænsen: køre 3-for-2 store-wide med repeat logik og billigste-vare-gratis.
- Rabat stacking, gør rigtigt: hvordan de tre per-klasse combine switches beslutter hvad gælder sammen.
- Mængde breaks og volume tiers: belønne større indkøbsvogne med per-produkt tiered prissætning.
- Hvordan rabat stacking virker i Shopify: hvorfor native kun påny gælder højeste, og hvordan combine tilbud rigtigt.
- Gentagende multibuy deals der genberegner pr. sæt: "4 for GBP 10, 8 for GBP 20" der genberegner for hvert sæt.
- Stackable prissætning: plans, fri tier, og hvad hver inkluderer.


