- URL quote special characters in site IDs to escape them
- Catch non-fatal XML errors and continue requesting. Only throw an error and stop when the API limit has been exceeded, when the request itself has failed, or when the ShopperTrak server cannot be reached even after retrying.
- When site ID is not found (error code "E101"), skip it without throwing an error
- Retry when server is down (new ShopperTrak error code "E000")
- Fix location hours query to retrieve each location's current hours rather than its first hours
- Do not throw an error if the ShopperTrak API rate limit is hit
- Perform recovery queries on past thirty days of missing data
- Initial commit without any recovery queries