FTC 30-day shipping rule: delivery claims in a holiday sale clip

If you state no shipping time, the FTC rule gives you 30 days; a time you do state needs a reasonable basis. Burn ship-by text from data. Read 2026-10-05.

4 min readSume
All posts

The FTC's Mail, Internet or Telephone Order Merchandise Rule applies to internet orders. Its business guide says that if you state no time, you must ship within 30 days of a properly completed order, and that you need a reasonable basis for any shipping time you do advertise. A holiday clip that says "ships in 2 days" is therefore a claim you must be able to support, and one you must be ready to revisit when orders pile up.

What the FTC guide says (read 2026-10-05)

Delays are where holiday campaigns get into trouble: a clip promises speed, then volume outruns the warehouse. The guide describes what to do then. Read it in full, because it has conditions that a table cannot carry. This is not legal advice.

FTC Mail, Internet or Telephone Order Merchandise Rule guide, read 2026-10-05
SituationWhat the guide says
No shipping time statedShip within 30 days of a properly completed order
A time is advertisedYou need a reasonable basis for it
Customer applies for credit50 days applies
DelayNotify the customer and offer a revised date or cancellation with a full refund
Refund timingWithin 7 working days

Generate the promise from data

The failure mode in a video is a number that nobody owns. Keep the shipping promise in the same data file that your warehouse system feeds, and generate the cue text from it. If the days field is over 30, the build should stop and ask for either a stated date or a delay plan.

With video captions you send cues (text, start, end in seconds) and Sume burns them with no speech-to-text, at $0.20 per clip up to 60 seconds. The sketch below builds one body with the shipping promise per stock state, and refuses to build one over 30 days.

import json

ship_days = {"in-stock": 2, "backorder": 21}   # from your warehouse data
cues = []
for i, (label, days) in enumerate(ship_days.items()):
    if days > 30:
        raise SystemExit(f"{label}: over 30 days, add a stated date or a delay plan")
    cues.append({"text": f"Ships within {days} days", "start": i * 3.0, "end": i * 3.0 + 3.0})
print(json.dumps({"video_url": "https://example.com/gift.mp4", "cues": cues}))

When the promise breaks

Plan the second clip before the first goes live. If volume pushes an item past the promise, the guide's remedy is customer notice and choice, which is a message to the customer, not a change to a public ad. But a public clip that still says "ships in 2 days" is now unsupported. Pull it or re-burn it from the clean master with the new number, and use a new idempotency key version so the retry logic does not return the old job.

Limits

The guide covers when you must ship and what to do about delays. It does not tell you what delivery estimate a carrier will meet, which is a different thing from your ship time. Carrier cutoffs are in other posts. Also note that state and national rules outside the US can differ.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume