# PromotionProductScope

object type

WHAT product lines match: the CollectionPredicate VERBATIM + manual inclusions (union) / exclusions (subtract; included∩excluded refused) + a direct Collection ref (membership resolved PER CART LINE: static = member point-read; dynamic = pins-beat-exclusions then the collection's predicate; status-blind stored-ref matching, the EV-n law). ABSENT on the Promotion = ALL product lines (the sitewide sale — the recorded divergence); open_item lines NEVER match.

## Fields

| Field | Type | Notes |
| --- | --- | --- |
| `predicate` | [CollectionPredicate](/types/CollectionPredicate/) | No further notes. |
| `includedProductIds` | [ID](/types/#scalars) `[ID!]` | No further notes. |
| `excludedProductIds` | [ID](/types/#scalars) `[ID!]` | No further notes. |
| `collectionId` | [ID](/types/#scalars) | No further notes. |
