Shopify: 3 months for $1/month, plus up to $10,000 credits as you sell
Tutorial Series/Product Data and Feed Operations System
Intermediate65 minutesStep 7

Promo Feed Readiness and Seasonal Merchandising

Use a T-14 to T+7 promo feed readiness gate to lock promotion_id, product_applicability, offer_type, promotion_effective_dates, sale_price, sale_price_effective_date, display dates, redemption codes, inventory, price and availability consistency, Shopify Google & YouTube sync, and product sets, then use a 20oz promo feed release lab, Promo Launch Pressure Lab, T-2 nine-SKU sample, and launch-hour war room to lower budget, reduce product pool, re-accept the promotion, or write copyable lesson notes.

7
Current Lesson
7/8 lessons
Reviewed by Ranfeng Wei. Maintained monthly against Shopify, Google Search, ads, analytics, and ecommerce operating workflows.
Quick Answers

TL;DR: Write included SKUs, excluded SKUs, promotion_id, product_applicability, sale_price, sale_price_effective_date, redemption code, inventory c

Q: What is the key action in this lesson?A: Separate price mismatch, inventory or margin pressure, promotion-mapping gap, and launch-hour code failure. Choose hold launch, reduce produ

Lesson Progress
Progress
7/8 lessons
Current lesson unlockedContinue in sequence

Lesson HowTo steps

Complete this lesson in 4 steps

  1. 1

    Build the promo feed readiness gate

    Write included SKUs, excluded SKUs, promotion_id, product_applicability, sale_price, sale_price_effective_date, redemption code, inventory coverage, product sets, landing-page promise, and stop conditions. Do not enter scaling without evidence and a responsible person.

  2. 2

    Use the 20oz promo feed release lab to route exceptions

    Separate price mismatch, inventory or margin pressure, promotion-mapping gap, and launch-hour code failure. Choose hold launch, reduce product pool, repair promotion_id / product_applicability mapping, or lower budget first.

  3. 3

    Run the T-2 nine-SKU sample

    Cover hero, long-tail, and boundary SKUs. Check PDP, checkout, feed preview, Merchant Center, Meta Catalog, product set, and structured data. When the sample fails, record failed field, impact scope, responsible person, and retest time.

  4. 4

    Run the Promo Launch Pressure Lab

    Check whether platform preview, calendar pressure, total inventory, or first-hour support issues are creating false confidence. For each pressure, write first evidence, budget action, retest window, and blocked move into the copyable lesson notes.

  5. 5

    Run the launch-hour war room and first-week review

    In the first launch hour, read price, inventory, product pool, platform state, support, and refund signals, then convert exceptions into continue, lower budget, reduce pool, pause, or re-accept. After one week, review campaign tags, remaining inventory, refund reasons, and the next roadmap action.

Article FAQ

Answer the common misunderstandings first

Why is promo feed work not just a last-minute price edit?

Because platforms read a set of product facts, not only the page price. promotion_id, product_applicability, sale_price, sale_price_effective_date, redemption code, inventory, product set, landing page, and structured data need to align before budget scales.

What does the 20oz promo feed release lab train?

It trains separate actions for the same 20oz summer tumbler when the issue is price mismatch, inventory or margin pressure, promotion-mapping gap, or launch-hour code failure. The answer may be hold launch, reduce product pool, repair mapping, or lower budget first.

What should the T-2 nine-SKU sample check?

Sample hero, long-tail, and boundary SKUs. Check PDP, checkout, feed preview, Merchant Center, Meta Catalog, product set, and structured data. A failed sample should record failed SKU, failed field, impact scope, responsible person, retest time, and budget permission.

Why does the Promo Launch Pressure Lab look at schedule, preview, and total inventory?

Because each signal can create false confidence. A platform preview only says the promotion may be readable; it does not prove the nine-SKU retest, landing page, checkout, inventory coverage, and budget cap are safe. A calendar proves intent, not readiness. Total inventory is not the same as sellable, fulfillable, profitable inventory.

What should I have after finishing "Promo Feed Readiness and Seasonal Merchandising"?

You should leave with a promo feed readiness gate and copyable lesson notes: included and excluded SKUs, promo fields, eligibility, inventory coverage, product sets, T-2 sample evidence, launch-hour exception table, launch pressure, first evidence, stop conditions, budget action, and next review time.

Loading interactive version
Text version of this lessonExpand

A promotion is not a last-minute price edit. Before budget scales, sale price, effective dates, eligible products, inventory, product sets, collection pages, landing-page promises, and platform state need to be locked together. Otherwise the campaign is not buying growth. It is amplifying wrong prices, stockouts, bad product pools, and support problems.

Lesson output: Promo Feed Readiness Gate

The useful output of this lesson is a promo feed readiness gate and copyable lesson notes the team can reuse. This is not a generic checklist. It is a release table that states which SKUs join, which SKUs are excluded, which promo fields are locked, which products are eligible, how much inventory is available, which product sets will receive spend, what the page promises, what evidence proves acceptance, who is responsible, when to stop, what to monitor in the first launch hour, and what to review after the first week.

The gate prevents the expensive launch-day failure: ads start spending while the feed shows one price, the PDP shows another price, the product set includes low-stock variants, Merchant Center preview recognizes only part of the offer, or support sees repeated code failures in the first hour. Without a gate, teams often misread these problems as ad performance noise, keep budget running, and make ads, site ops, support, and fulfillment pay for a data problem.

By the end, you should be able to answer four practical questions: Which products really join this promotion? Which fields let platforms recognize them? Who can pause launch when the T-2 sample fails? When the first launch hour shows a problem, what happens to budget first?

Why promo feed work is not a last-minute price edit

Many beginners reduce promotion work to three moves: change the page banner, add a sale price, and raise ad budget. That model is too thin. For shopping platforms, a promotion is a product-data state. Price fields, effective dates, eligibility, redemption code, product set, inventory, structured data, and page content all need to tell the same story.

Google Merchant Center's promotions data specification asks merchants to define promotion ID, eligible products, code requirement, effective dates, and display dates. Google's sale_price documentation says the submitted sale price needs to match what appears on the landing page and at checkout. Shopify's Google & YouTube syncing guidance warns that product-information changes can create errors or warnings on products that were already synced. In plain language: a summer sale is not finished when the page says summer sale. Several systems must read the same product facts.

If the team changes only the visible price right before launch, risk concentrates at the worst moment. The ad platform pushes budget into the product pool it can read. Merchant Center compares the feed, site, and structured data. Meta Catalog hands a product set to ads. Email, SMS, and support copy promise the same offer. If one system is behind, buyers see a wrong price, an unavailable product, a broken code, or a promise that checkout does not honor.

This lesson is not about making a pretty campaign page. It is about using a readiness gate to control release. Strong promo operations are not about reacting fast on launch day. They are about stopping problems before budget makes them larger.

Plain terms before the checklist

The terms below are not decorative jargon. They are the fields and operating rules inside the release gate. You do not need to memorize every official label, but you do need to know where the term appears, who reads it, and what breaks when it is wrong.

  • sale_price: the promo-price field platforms read from product data. It should match the PDP, checkout, ad creative, email, and campaign page. If a 20oz summer tumbler PDP shows 29.99 and the feed still says 39.99, the team should not scale budget.
  • sale_price_effective_date: the start and end window for the sale price. It tells platforms when to read the promo price and when to return to the base price. Without a clear end time, a platform may still think the product is on sale after the campaign ends.
  • promotion_id: the Merchant Center promotion identifier. It can also be mapped into product data so Google knows which products join the promotion. It is not the customer coupon code and not the campaign name.
  • product_applicability: the rule that says whether a promotion applies to all products or specific products. Use all_products only when the offer truly applies to the whole store. If low-margin, out-of-stock, or warning SKUs must be excluded, do not use all_products as a shortcut.
  • generic_redemption_code: a public code all customers can use. If the page says SUMMER20, the checkout test, email, ad creative, and promotion data should carry the same code.
  • promotions_display_dates: a display or preview window for pre-launch QA. It helps the team see whether the promotion can be displayed before it starts, but it does not replace the real effective window.
  • Product set / product pool: the group of products ads can read and spend against. A correct collection page does not prove the product set is correct. A correct product set does not prove Merchant Center promotion mapping is correct.
  • Readiness gate: the release check that confirms fields, pages, product sets, inventory, evidence, and stop conditions are ready together. Its job is to decide whether budget can scale, not to add a spreadsheet to the meeting.

Promotion mapping lab: how the platform knows which products join

The first promotion question is not what the page says. It is how the platform recognizes eligibility. If you only build a campaign page, the platform may not know which products are eligible. If you only write a promotion_id, the page and checkout may not honor the offer. If you set all_products too quickly, low-stock or low-margin products may receive spend.

Promotion typeWhat to setEvidenceDo not do
All-products promotionUse all_products only when every sellable product should join.Sitewide policy, page promise, shipping or discount rule, excluded-product check.Do not default to all_products when low-margin, out-of-stock, or warning SKUs need to be excluded.
Specific SKUsMap the same promotion_id in promotion data and eligible product data.Promotion ID list, SKU list, Merchant Center promotion preview.Do not treat promotion_id as the customer coupon code.
Product filtersUse item_id, brand, product_type, item_group_id, or custom label.Filter fields, sample SKUs, exclusion list, before/after product-pool count.Do not force filters when the product pool is unclear.
Redemption codeUse generic_code and generic_redemption_code when a public code is needed.Landing page, checkout test, promotion preview, support copy.Do not let ads, email, and promotion data show different codes.
Pre-launch QAUse display dates for preview and effective dates for the real window.T-2 preview, time zone, re-acceptance record.Do not confuse display dates with real sale dates.

A simple rule helps: if the campaign needs exclusions, do not start with all_products. If only specific SKUs join, prove that promotion_id, filters, custom labels, and product-set counts align.

20oz promo feed release lab: choose the pressure, then choose the release action

Use a 20oz summer tumbler as the insulated-cup example for practice. The same product can hit four different launch pressures. They may all look like feed readiness problems, but they do not deserve the same action.

ScenarioUnsafe reactionSafer actionEvidence to write back
T-2 sample finds PDP at 29.99 while the feed still shows 39.99.Launch at the planned budget and observe day one.Hold launch, fix sale_price / sale_price_effective_date / landing-page price, then resample.PDP, checkout, feed preview, and creative screenshots; field values; resample time.
The hero color has 80 units, but ads forecast 120 first-day sales.Launch the full product pool and deal with stockouts later.Reduce the product pool. Exclude low-stock, low-margin, and high-return SKUs before recalculating the budget cap.Coverage days, forecast demand, contribution profit, return risk, excluded SKU list.
The collection page is correct, but Merchant Center promotion preview shows only half the SKUs.Enter the ad product set and let the platform figure it out.Repair promotion_id / product_applicability / filters / custom label mapping before product-set entry.promotion_id list, product_applicability, filters, promotion-preview SKU count.
Support sees repeated code failures in the first launch hour.Wait until the end of the day and review later.Lower budget first, write the issue into the launch-hour exception table, then debug generic_redemption_code, page copy, and checkout test.Code, checkout-failure screenshot, support tags, affected SKUs, budget-change record.

The lab trains budget discipline, not memorization. If fields are not locked, do not scale. If the product pool has not been recalculated, do not add budget. If the campaign is already live and exceptions cluster, lower budget before debugging. Promo work is not a test of whether the team is brave enough to push. It is a test of whether the team can stop before budget amplifies the wrong thing.

Promo Launch Pressure Lab: do not get fooled by schedule, preview, or total inventory

The risky part of promo work is usually not that the team forgot acceptance. It is that the meeting pressure pushes everyone to skip acceptance. Four pressures show up again and again: platform preview looks approved, the promo calendar is locked, total inventory looks enough, and first-hour exceptions are treated as small problems. They all push the same unsafe move: launch first, review later.

Launch pressureTempting wrong moveSafer readFirst evidenceBlocked move
Platform preview looks approved.Treat Merchant Center promotion preview as full-funnel budget approval.Preview only proves the promotion may be readable. It does not prove product pool, checkout, inventory, and budget cap passed.Promotion preview, nine-SKU PDP/checkout/feed screenshots, product-set count, and inventory coverage.No full-budget launch without nine-SKU recheck and budget cap.
Promo calendar is already locked.Launch page and ads first, then inspect field problems in the first hour.A schedule proves intent to launch, not readiness to scale. If T-2 finds wrong price, code, or pool, reduce scope or hold.T-2 failed SKU, failed field, fixer, retest time, and allowed launch scope.Do not replace re-acceptance with "the page is already scheduled."
Total inventory looks enough.Read total inventory only, without checking hero variants, low-margin bundles, and high-return SKUs.A promotion consumes sellable, fulfillable, profitable inventory, not total warehouse count.Variant coverage days, forecast demand, contribution profit, return rate, excluded SKUs, and budget cap.Do not hand the full pool to ads without variant-level inventory and profit evidence.
First-hour issues are treated as small problems.Support reports code failures, but ad metrics are not bad yet, so the team waits for day-end review.First-hour support signals are product-data radar. Code, price, inventory, and pool issues often reach shoppers and support first.Support tags, checkout-failure screenshot, affected SKUs, generic_redemption_code, page copy, and budget-change record.When issues cluster, do not wait for ROAS to worsen before lowering budget.

This belongs in the copyable lesson notes. Do not only write "platform preview approved." Write "platform preview approved, and nine-SKU recheck, inventory coverage, and budget cap also passed." Without the second half, the next promo meeting will repeat the same mistake.

T-14 to T+1 readiness timeline

Promo readiness should move on a timeline. The closer the campaign gets to launch, the fewer things should still be changing and the less risk the team should accept. This timeline is not a rigid template. It is a way to state what each moment locks, who owns the decision, and when the launch pauses.

TimeLockEvidenceResponsible person/teamStop condition
T-14Included SKUs, excluded SKUs, target margin, inventory coverage.SKU list, coverage days, margin sheet, return risk.Merchandising team.Do not scale if inventory is below 1.3x forecast demand.
T-10Sale price, effective dates, free shipping, page price, redemption code.Admin screenshot, feed preview, landing page, checkout test.Operations lead.If price, date range, or code mismatches, do not enter ad product sets.
T-7Collection page, product set, custom label, exclusion rules, campaign tag end date.Product-set coverage, exclusion list, collection rule.Site ops and ads team.Pause if low-margin, high-return, or unresolved-warning SKUs are not excluded.
T-2Merchant Center, Meta Catalog, landing page, structured data sample.At least 3 SKU screenshots per group, including hero, long-tail, and boundary SKUs.QA lead.Pause launch and re-accept if sampling fails above 10%.
Launch hourPrice, inventory, product pool, platform state, support, refund signals.Launch-hour exception table, budget-change record, support tags.Business lead.When exceptions cluster, lower budget before field debugging.
T+1 to T+7Spend behavior, stockouts, refunds, support issues, seasonal inventory leftovers.First-day exception review, first-week pool review, remaining-inventory sheet.Business lead and merchandising.If profit, fulfillment, or support pressure worsens, stop scaling and recalculate the pool.

T-2 nine-SKU sample: do not only check the hero product

Many teams run T-2 acceptance by opening one hero SKU. That is not enough. The risk often sits in boundary products: low-stock colors, long-tail sizes, newly added variants, recently edited titles, and SKUs that were supposed to be excluded. A practical sample uses at least three SKUs per group: one hero, one long-tail, and one boundary SKU. If the promotion covers several product lines, expand the sample to nine or twelve SKUs.

  • Check the PDP: price, promo copy, inventory, color/size availability, and shipping promise.
  • Check checkout: final paid price, redemption code, free-shipping threshold, tax, and shipping display.
  • Check feed preview: sale_price, price, sale_price_effective_date, availability, and promotion_id.
  • Check Merchant Center / Catalog: promotion preview, product status, warnings, disapprovals, and product-set count.
  • Check structured data: whether the page data used for platform verification still shows old price or availability.

A failed sample is not closed by telling one person to fix one field. The gate should capture failed SKU, failed field, impact scope, responsible person, retest time, and budget permission. Without a retest record, the lesson is not accepted.

Launch-hour war room: turn Launch Hour Monitor exceptions into budget actions

The first launch hour is not only about spend, clicks, and ROAS. Its most important job is to catch product-data problems before the platform learns from the wrong product pool. The war room should read at least five signals.

  • Price reading: PDP, checkout, feed preview, and ad creative use the same price. If they disagree, lower budget before fixing sale_price and sale_price_effective_date.
  • Inventory reading: SKUs receiving spend are still buyable, and low-stock colors or sizes are excluded. If stockouts cluster, reduce the product pool instead of only pausing one ad.
  • Product-pool reading: Meta product set, Google product group, collection, and campaign page point to the same pool. If the pool drifts, stop scaling and keep only low-budget validation.
  • Platform-state reading: Merchant Center, Meta Catalog, and structured data show no new blocking issues, warnings, or sample failures. Blocking issues pause launch; limited issues reduce the pool.
  • Support and refund reading: repeated wrong-price, code-does-not-work, or unavailable-size messages appear early. Support is not just a post-sale recorder; it is a first-hour anomaly radar.

Every exception needs to become a budget action: continue, lower budget, reduce product pool, pause release, or re-accept. Do not only write that the issue was shared with operations. If budget does not move, the exception has not entered the business decision.

First-week seasonal merchandising review

A seasonal promo review cannot stop at first-day ROAS. A 20oz summer tumbler may sell well on day one, but if spend concentrates on low-margin colors, return reasons cluster around leakage or size confusion, or the campaign leaves too much seasonal inventory after the week, the promotion only moved the problem forward.

The first-week review should cover four items. First, did sale price and effective dates return on time? Second, did product sets and collection pages remove campaign tags? Third, does remaining inventory need another content, email, or remarketing path? Fourth, did support and refund themes expose a page, spec, or image problem that should be fixed before the next push?

This connects directly to the next lesson on monthly feed review and growth roadmap. A promotion is not an isolated event. It leaves field knowledge, product-pool knowledge, creative knowledge, and risk knowledge. Write that back into the roadmap so the next campaign does not start from zero.

Stop / Go

SignalActionEvidence
Price, stock, product set, collection, and page promises align.Go, launch promotion.T-2 sample, platform state, landing page, product-set screenshots.
Promo price effective date is unclear.Hold, add sale_price_effective_date.Admin field, feed preview, campaign page timing.
Low-stock or low-margin SKUs are not excluded.Hold, fix the product pool first.Inventory coverage, margin, return risk, exclusion reason.
Merchant Center or Catalog warning was not rechecked.Hold, add platform screenshots.Issue detail, affected SKUs, review time.
T-2 sampling fails above 10%.Do not scale. Reduce the product pool or re-accept.Failed SKUs, cause, responsible person, re-acceptance time.
Launch hour shows wrong price, stockout, or support anomaly.Lower budget and debug fields.Launch-hour exception table, support record, budget-change record.

Copyable lesson notes

Before the next teammate touches budget, pages, or product sets, pass one clean note: timeline and locked fields, included and excluded SKUs, QA evidence, launch-hour monitor, stop condition, budget action, and next check time. Do not write, "everything was checked." Write which fields passed in which screenshots, which SKUs were excluded, which exceptions trigger budget reduction, and when the next check happens.

Before copying, check five rows: launch pressure, first evidence, budget action, retest window, and blocked move. If a new teammate cannot decide whether budget can keep scaling after reading the copyable lesson notes, the notes are not specific enough.

Public source boundary

This lesson uses official source boundaries. Official docs will not decide which SKU deserves promotion, but they define promotion fields, sale-price windows, price and availability consistency, and Shopify sync risk. Non-official operating observations are converted into checklists, labs, and budget rules, not public source claims.

Official boundaryLesson use
Google Merchant Center promotions data specification defines promotion_id, product_applicability, offer_type, long_title, promotion_effective_dates, redemption_channel, and other fields.So this lesson starts with a promotion mapping lab that separates all_products, specific_products, redemption code, and display window instead of only checking whether the campaign page is live.
Google Merchant Center sale_price explains sale_price as the sale price for a product, with sale_price_effective_date used for the relevant date range.So the 20oz release lab checks PDP, checkout, feed preview, ad creative, and effective dates together instead of treating a price edit as release-ready.
Google Merchant Center high-quality data emphasizes current price and availability, because product data, landing pages, and structured data can create price or availability issues when they drift.So the T-2 nine-SKU sample and launch-hour war room must read price, availability, structured data, platform state, and budget action.
Shopify Google & YouTube product syncing explains that product information changes can create errors or warnings on products that previously synced successfully.So the team checks Shopify channel state, Merchant Center, feed preview, and page promises before and after launch instead of assuming one successful sync stays stable.
Back to Course Outline
8
View All Tutorials

Share this tutorial with your team

If this lesson helped, send it to a teammate or friend before moving on to the next one.