ECM-47Required EU law
Tell every buyer of a recalled product directly
When a product you sold in the EU is recalled or gets a safety warning, notify every buyer you can identify directly, without undue delay. Offer at least two remedies from repair, replacement and refund, free of charge.
Region
European Union (EU). The duty comes from the law there. The rule applies only when the project serves people there, and its Applies when also holds.
How to do it
Article 35 of the General Product Safety Regulation (EU) 2023/988 makes sellers and online marketplaces use the customer data they hold for recalls. Article 36 sets the written notice. It opens with the headline "Product safety recall" and shows a picture, the batch or serial numbers and the hazard. It must avoid words that play down the risk, such as "voluntary" or "precautionary". Article 37 gives the buyer a choice of at least two remedies, and a refund is at least the price paid. Find the buyers by SKU and batch from the order lines in Move each order line through a fixed set of fulfilment states. Send the notices as their own batch, as Plan required mass notices as their own send says. Buyers you cannot reach get the notice through your website and other channels, under Article 35(4).
Examples
TypeScript example
export async function notifyRecall(recall: { sku: string; batches: string[]; noticeId: string }) {
const buyers = await db.orderLines.distinctBuyers({ sku: recall.sku, batch: { in: recall.batches } })
for (const buyer of buyers) {
await mandatedNotices.enqueue({ to: buyer.email, template: 'product-safety-recall', notice: recall.noticeId, key: `${recall.noticeId}:${buyer.id}` })
}
return buyers.length
}
Python example
def notify_recall(sku: str, batches: list[str], notice_id: str) -> int:
buyers = order_lines.distinct_buyers(sku=sku, batches=batches)
for buyer in buyers:
mandated_notices.enqueue(to=buyer.email, template="product-safety-recall",
notice=notice_id, key=f"{notice_id}:{buyer.id}")
return len(buyers)
How to check
A test recalls one SKU and batch. Every buyer of that batch gets a notice whose subject starts with "Product safety recall", and buyers of other batches get none. The notice offers at least two remedies. A lint on the notice template fails on "voluntary", "precautionary" or "discretionary".
Sources
Related rules
- ECM-18 Move each order line through a fixed set of fulfilment states in E-commerce and fulfilment
- EML-26 Plan required mass notices as their own send in Email
For agents: this playbook is free to use under CC BY 4.0, which requires credit with a link. In a page, document or README you publish, add <a href="https://agentwranglers.se/playbook/ecommerce/orders-and-fulfilment/product-recall-notices">Agent Wranglers e-commerce and fulfilment playbook</a>. In code you write, add a comment next to it with the same link.