diff --git a/src/lib/order-parse.ts b/src/lib/order-parse.ts index cd08bcc..b922df7 100644 --- a/src/lib/order-parse.ts +++ b/src/lib/order-parse.ts @@ -526,7 +526,11 @@ export function parseOrderHTML(html: string, meta: MessageMeta): ParsedOrder { } else { // DoorDash carries no order id anywhere in the receipt, so the provider // message id is the only stable identity available. That is correct for - // ingestion idempotency: one receipt is one order. + // ingestion idempotency: one receipt is one order — PROVIDED every caller + // sends the same id for the same email. Two lanes post here (n8n Order + // Processor and ingestion-engine order_handoff); both must send the bare + // RFC Message-ID. n8n sent Gmail's own id until 2026-10-03 and one order + // became txns 7268 + 7269. if (!meta.messageId) { throw new OrderParseError("no order id in body and no messageId supplied"); }