Amazon BFCM inventory arrival dates: which SKUs get sale clips first

Amazon's BFCM inbound dates are Oct 14, 21 and 28 by route. Make clips first for SKUs that arrive by Oct 14. Read 2026-10-05, with a queue sketch.

4 min readSume
All posts

Amazon's Holiday 2026 page lists three inventory arrival deadlines for Black Friday and Cyber Monday: **October 14** for AWD, **October 21** for FBA minimal splits and **October 28** for FBA Amazon-optimized splits. If you are short on creative time, make sale clips first for the SKUs whose stock will arrive by the earliest date, because a clip for a SKU that cannot be in stock is wasted money and a risk of advertising something you cannot ship.

The three dates (read 2026-10-05)

Which route a SKU takes is a logistics decision, not a creative one. The point here is only that the route sets the order of the creative queue.

BFCM inventory arrival deadlines on Amazon's Holiday 2026 page, read 2026-10-05
RouteArrival deadlineClip priority (our suggestion)
AWDOctober 14First: render now
FBA, minimal splitsOctober 21Second: render after the Oct 14 batch is reviewed
FBA, Amazon-optimized splitsOctober 28Third: hold a price-card template, render last

Build the queue by arrival date

Keep a list of SKU, deadline, source clip and price text. Process it in deadline order and give every job a deterministic idempotency key (SKU plus a version number). A retry after a network error then returns the same job instead of billing a second caption job. Jobs and results explains the job envelope you poll afterwards.

The sketch burns one price cue on each clip. Caption jobs are $0.20 each for clips up to 60 seconds, per the captions page.

import json, os, urllib.request

SKUS = [  # (sku, arrival deadline label, clip url, price text)
    ("mug-set", "Oct 14", "https://example.com/mug.mp4", "$24"),
    ("scarf", "Oct 21", "https://example.com/scarf.mp4", "$38"),
    ("candle", "Oct 28", "https://example.com/candle.mp4", "$18"),
]
for sku, due, url, price in sorted(SKUS, key=lambda s: s[1]):
    body = {"video_url": url, "style": "slam",
            "cues": [{"text": price, "start": 0.5, "end": 3.5}]}
    req = urllib.request.Request(
        "https://api.sume.com/v1/video-captions", json.dumps(body).encode(),
        {"Authorization": "Bearer " + os.environ["SUME_API_KEY"],
         "Content-Type": "application/json", "Idempotency-Key": f"bf26-{sku}-v1"})
    print(sku, due, json.load(urllib.request.urlopen(req)).get("request_id"))

Why the late group should wait

The October 28 group has the most time to change. Prices move, and Amazon's own page notes fees and surcharges starting October 15, so the price you plan to show on October 6 may not be the price you show on November 20. Rendering the late group last lets you burn the final price once instead of re-burning it.

Review while stock is in transit

The gap between rendering and arrival is useful. Use it to look at each finished clip frame by frame for price typos, because the price card is the one element that must be exactly right. Video frames can pull up to 24 stills from a clip of up to 300 seconds at the source size, so you can check the exact frame where the price appears at the cue time rather than scrubbing by hand.

Keep the SKU, price text and cue times in one file next to the clip URL. When a price moves, you change one row, re-run only that SKU, and the idempotency key version increments to v2 so the new job is not mistaken for a retry of the old one.

Limits

The dates come from a seller-forum post on Amazon's domain, so confirm them in Seller Central for your own account. This post does not say anything about which route is cheaper or faster. If a SKU misses its arrival deadline, pull its clip from the schedule rather than letting an ad promise stock you may not have.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume