Reference
Every detail a rule can check, every comparison, and the exact JSON format.
Details you can check
| Name in the builder | JSON field | Kind | What it is |
|---|---|---|---|
| Internet number | sku | text | The product number on homedepot.com, labeled "Internet #". |
| Store SKU | storeSKU | text | The number on the shelf tag. Not every item has one. |
| UPC | upc | text | The barcode number. Not every item has one. |
| Product name | productName | text | The product's name on homedepot.com. |
| Store number | storeId | text | The store the price drop happened at. Leading zeros are optional, so 589 and 0589 are the same store. |
| MSRP | msrp | number | The regular price at the store, in dollars: Home Depot's "was" price or its online price for that store, whichever is higher. |
| In-store price | inStorePrice | number | The price at the store right now, in dollars. A penny item is 0.01. |
| Percent off | percentOff | number | How far the in-store price is below MSRP, from 0 to 100. Items with no MSRP count as 0% off. |
| Quantity | quantity | whole number | How many the store has in stock when the alert fires. Always at least 1. |
Comparisons
Text comparisons ignore upper and lower case.
| Name in the builder | JSON op | Works on | Matches when |
|---|---|---|---|
| is | == | text, number | the detail equals the value |
| is not | != | text, number | the detail doesn't equal the value |
| is less than | < | number | the detail is below the value |
| is at most | <= | number | the detail is below or equal to the value |
| is more than | > | number | the detail is above the value |
| is at least | >= | number | the detail is above or equal to the value |
| contains | contains | text | the value appears anywhere in the detail |
| starts with | startsWith | text | the detail begins with the value |
| does not contain | notContains | text | the value doesn't appear in the detail |
| contains any of | whitelistContains | text | any value in the list appears anywhere in the detail |
| is any of | whitelistEquals | text, number | the detail equals any value in the list |
For "contains any of" and "is any of", the value is a list, and every entry must be the same kind as the detail: all text or all numbers.
In hand-written JSON, whitelistContains is also allowed on number details, where it means exactly the same as whitelistEquals. The builder only offers "is any of" for numbers.
Rules that contradict each other
Inside an All of these group, the bot rejects rules on the same detail that can never all be true, such as:
- percent off more than 80 and percent off less than 50
- two different "is" values for the same detail
- "is 5" together with "is not 5"
- "is 200" when another rule says "is at most 100"
The builder flags these as you type.
JSON format
The builder writes this for you, but here's the shape if you want to edit it by hand.
{
"highPriority": { "field": "inStorePrice", "op": "==", "value": 0.01 },
"regularPriority": {
"type": "all",
"conditions": [
{ "field": "percentOff", "op": ">=", "value": 60 },
{ "field": "quantity", "op": ">=", "value": 2 }
]
},
"globalBlacklist": {
"type": "any",
"conditions": [{ "field": "productName", "op": "whitelistContains", "value": ["behr", "glacier bay"] }]
}
}highPriorityandregularPriorityare required.globalBlacklistis optional.- Each part is either a single rule (
field,op,value) or a group (typeplus aconditionslist). - A group's
typeis"all","any", or"not"(not all of these).