nectyra

Reference

Every detail a rule can check, every comparison, and the exact JSON format.

Details you can check

Name in the builderJSON fieldKindWhat it is
Internet numberskutextThe product number on homedepot.com, labeled "Internet #".
Store SKUstoreSKUtextThe number on the shelf tag. Not every item has one.
UPCupctextThe barcode number. Not every item has one.
Product nameproductNametextThe product's name on homedepot.com.
Store numberstoreIdtextThe store the price drop happened at. Leading zeros are optional, so 589 and 0589 are the same store.
MSRPmsrpnumberThe regular price at the store, in dollars: Home Depot's "was" price or its online price for that store, whichever is higher.
In-store priceinStorePricenumberThe price at the store right now, in dollars. A penny item is 0.01.
Percent offpercentOffnumberHow far the in-store price is below MSRP, from 0 to 100. Items with no MSRP count as 0% off.
Quantityquantitywhole numberHow 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 builderJSON opWorks onMatches when
is==text, numberthe detail equals the value
is not!=text, numberthe detail doesn't equal the value
is less than<numberthe detail is below the value
is at most<=numberthe detail is below or equal to the value
is more than>numberthe detail is above the value
is at least>=numberthe detail is above or equal to the value
containscontainstextthe value appears anywhere in the detail
starts withstartsWithtextthe detail begins with the value
does not containnotContainstextthe value doesn't appear in the detail
contains any ofwhitelistContainstextany value in the list appears anywhere in the detail
is any ofwhitelistEqualstext, numberthe 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"] }]
  }
}
  • highPriority and regularPriority are required. globalBlacklist is optional.
  • Each part is either a single rule (field, op, value) or a group (type plus a conditions list).
  • A group's type is "all", "any", or "not" (not all of these).

On this page