diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml
index 52e8f59..a363e86 100644
--- a/.github/workflows/python-app.yml
+++ b/.github/workflows/python-app.yml
@@ -15,7 +15,7 @@ jobs:
       fail-fast: false
       max-parallel: 2
       matrix:
-        python-version: [ "3.7", "3.8", "3.9", "3.10" ]
+        python-version: [ "3.8", "3.9", "3.10", "3.11" ]
         poetry-version: [ "1.5.1" ]
         os: [ ubuntu-22.04, macos-latest, windows-latest ]
     runs-on: ${{ matrix.os }}
@@ -62,7 +62,7 @@ jobs:
       fail-fast: false
       max-parallel: 1
       matrix:
-        python-version: [ "3.7", "3.8", "3.9", "3.10" ]
+        python-version: [ "3.8", "3.9", "3.10", "3.11" ]
         poetry-version: [ "1.5.1" ]
         os: [ ubuntu-22.04, macos-latest, windows-latest ]
     runs-on: ${{ matrix.os }}
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 29a266c..6b1200a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,9 +6,15 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
 ## [Unreleased]
 ### Added
 - Added error messages to inform user if .harmony file is formatted incorrectly or missing a key
+- **PODAAC-6302 (issues/137)**
+  - Added small notification when `-gr` is being used but 0 granules are returned
+- Added python versions 3.11 to supported builds
 ### Fixed
 - **PODAAC-6303 (issues/167)**
   - Fixed issue where -gr and -sd/-ed (temporal) cannot be used together as a query
+### Removed
+- Removed python 3.7 from supported builds
+
 
 ## [1.15.2]
 ### Fixed
diff --git a/subscriber/podaac_data_downloader.py b/subscriber/podaac_data_downloader.py
index 8e0307d..acffc23 100755
--- a/subscriber/podaac_data_downloader.py
+++ b/subscriber/podaac_data_downloader.py
@@ -274,6 +274,13 @@ def cmr_downloader(args, token, data_path):
     if args.verbose:
         logging.info(str(results['hits']) + " granules found for " + short_name)  # noqa E501
 
+    if granule is not None and results.get('hits', 0) == 0:
+        logging.info("** 0 granules found with -gr (granuleUR) flag.            **")
+        logging.info("** If you expected granules to be found and downloaded,   **")
+        logging.info("** please try using wildcards (*/%) in the -gr parameter. **")
+        logging.info("**    -gr=\"*data*\" for multiple characters                **")
+        logging.info("**    -gr=\"_A%T_\" for a single character                  **")
+
     if any([args.dy, args.dydoy, args.dymd]):
         file_start_times = pa.parse_start_times(results)
     elif args.cycle: