Thanksgiving Day 2026: $6.9B online forecast and a three-post plan
Adobe forecasts $6.9 billion online on Thanksgiving, Nov 26, 2026, up 8.5%, with 63% on mobile. Three 6-second vertical clips on Sume cover the day for $2.25.

Thanksgiving Day, Thursday November 26, 2026, is forecast by Adobe at $6.9 billion in US online sales, up 8.5% on 2025, with 63% of that spending on mobile devices. Three short vertical clips, one per part of the day, cost $2.25 on Sume when each is 6 seconds on Wan 3.0 at 720p ($0.10 list per second x 1.25 = $0.125 per second, $0.75 per clip).
Adobe's forecast also has AI-assistant traffic to retail sites up 159% on Thanksgiving. That is a reminder to keep the offer in text on the page, not only in the clip.
Three posts, three jobs
The day is quiet in the morning, busy at midday and active again after dinner. Plan one clip for each state rather than one clip posted three times.
| Slot | Clip | Why | Cost (6 s, Wan 3.0 720p) |
|---|---|---|---|
| Morning | Early-access reminder with the sale start time | Gets the deal in front of people before the cooking starts | $0.75 |
| Midday | Hero product with price, 9:16 | Mobile is 63% of the day's online spending | $0.75 |
| Evening | Last-call clip with the hours the sale ends | Catches the after-dinner browse | $0.75 |
Submit all three at once
Sending three separate /v1/videos requests is fine, and each can carry its own webhook through callback_url. If you send them from a script, put a distinct, stable key per slot in your own bookkeeping so a retry does not create a fourth clip.
import asyncio, os
import httpx
SLOTS = {
"morning": "Kitchen counter, soft morning light, a phone on the counter showing a countdown glow, gentle push-in",
"midday": "Product on a wooden table beside autumn leaves, shallow depth of field, slow orbit",
"evening": "Warm dinner table candles blurring in the background, product in sharp focus, slow rack focus",
}
async def submit(client, slot, prompt):
r = await client.post("https://api.sume.com/v1/videos", json={
"model": "wan-3.0", "prompt": prompt, "duration": 6,
"resolution": "720p", "aspect_ratio": "9:16"})
r.raise_for_status()
return slot, r.json()["id"]
async def main():
headers = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
async with httpx.AsyncClient(headers=headers, timeout=30) as client:
for slot, job_id in await asyncio.gather(*(submit(client, s, p) for s, p in SLOTS.items())):
print(slot, job_id)
asyncio.run(main())Cautions
Adobe's numbers are a forecast, so write the plan so that it still works if the day is flat. If you offer pickup or same-day delivery, put the cut-off time in a caption, not in the spoken audio, since the audio is generated and may not say the time you intend.
Do not post all three at the hours listed if your audience is in several time zones; schedule by the local hour of your biggest region.
- Mobile share is the season-wide 57.4%; on Thanksgiving it is forecast at 63%.
- Keep the three clips visually related so the day reads as one campaign.
- Reserve funds for one re-roll per slot.
Sources
Related posts
More in Use cases
- Thanksgiving pie pre-orders: three 8-second Omni clips for $3.00
A bakery can make three 8-second 720p pie clips from product photos for $3.00 on Sume (Gemini Omni Flash 1.1 at $1.00 each) before Thanksgiving, Nov 26.
- TikTok Shopping Assistant: what should product videos say?
TikTok's Shopping Assistant answers sizing, shipping and availability in chat. Make product clips that match your listing, with photo-to-video and burned cues.
- UGC-style ad made by AI, not a customer: the FTC fake testimonial rule
Can an AI-made UGC ad pose as a real customer? No: the FTC's 2024 rule bans testimonials by someone who does not exist. Make it a brand ad, not a review.
- Use MAI-Voice-2.1 audio in a Sume lip sync clip: import it first
MAI-Voice-2.1 is not in Sume's TTS Router, but its audio can drive a Sume talking clip if you import the file first: Sume-hosted, 10 MB, 5 to 14.8 s.
Written by Sume