diff --git a/health/health-services-client/api/1.0.0-beta01.txt b/health/health-services-client/api/1.0.0-beta01.txt
index a170f81..3b52c27 100644
--- a/health/health-services-client/api/1.0.0-beta01.txt
+++ b/health/health-services-client/api/1.0.0-beta01.txt
@@ -746,16 +746,16 @@
   }
 
   public final class PassiveListenerConfig extends androidx.health.services.client.data.ProtoParcelable<androidx.health.services.client.proto.DataProto.PassiveListenerConfig> {
-    ctor public PassiveListenerConfig(java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> dataTypes, boolean shouldRequestUserActivityState, java.util.Set<androidx.health.services.client.data.PassiveGoal> passiveGoals, java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes);
+    ctor public PassiveListenerConfig(java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> dataTypes, boolean shouldRequestUserActivityState, java.util.Set<androidx.health.services.client.data.PassiveGoal> dailyGoals, java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes);
     method public static androidx.health.services.client.data.PassiveListenerConfig.Builder builder();
+    method public java.util.Set<androidx.health.services.client.data.PassiveGoal> getDailyGoals();
     method public java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> getDataTypes();
     method public java.util.Set<androidx.health.services.client.data.HealthEvent.Type> getHealthEventTypes();
-    method public java.util.Set<androidx.health.services.client.data.PassiveGoal> getPassiveGoals();
     method public androidx.health.services.client.proto.DataProto.PassiveListenerConfig getProto();
     method public boolean getShouldRequestUserActivityState();
+    property public final java.util.Set<androidx.health.services.client.data.PassiveGoal> dailyGoals;
     property public final java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> dataTypes;
     property public final java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes;
-    property public final java.util.Set<androidx.health.services.client.data.PassiveGoal> passiveGoals;
     property public final boolean shouldRequestUserActivityState;
     field public static final android.os.Parcelable.Creator<androidx.health.services.client.data.PassiveListenerConfig> CREATOR;
     field public static final androidx.health.services.client.data.PassiveListenerConfig.Companion Companion;
@@ -764,9 +764,9 @@
   public static final class PassiveListenerConfig.Builder {
     ctor public PassiveListenerConfig.Builder();
     method public androidx.health.services.client.data.PassiveListenerConfig build();
+    method public androidx.health.services.client.data.PassiveListenerConfig.Builder setDailyGoals(java.util.Set<androidx.health.services.client.data.PassiveGoal> dailyGoals);
     method public androidx.health.services.client.data.PassiveListenerConfig.Builder setDataTypes(java.util.Set<? extends androidx.health.services.client.data.DataType<?,?>> dataTypes);
     method public androidx.health.services.client.data.PassiveListenerConfig.Builder setHealthEventTypes(java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes);
-    method public androidx.health.services.client.data.PassiveListenerConfig.Builder setPassiveGoals(java.util.Set<androidx.health.services.client.data.PassiveGoal> passiveGoals);
     method public androidx.health.services.client.data.PassiveListenerConfig.Builder setShouldRequestUserActivityState(boolean requestUserActivityState);
   }
 
diff --git a/health/health-services-client/api/current.txt b/health/health-services-client/api/current.txt
index a170f81..3b52c27 100644
--- a/health/health-services-client/api/current.txt
+++ b/health/health-services-client/api/current.txt
@@ -746,16 +746,16 @@
   }
 
   public final class PassiveListenerConfig extends androidx.health.services.client.data.ProtoParcelable<androidx.health.services.client.proto.DataProto.PassiveListenerConfig> {
-    ctor public PassiveListenerConfig(java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> dataTypes, boolean shouldRequestUserActivityState, java.util.Set<androidx.health.services.client.data.PassiveGoal> passiveGoals, java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes);
+    ctor public PassiveListenerConfig(java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> dataTypes, boolean shouldRequestUserActivityState, java.util.Set<androidx.health.services.client.data.PassiveGoal> dailyGoals, java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes);
     method public static androidx.health.services.client.data.PassiveListenerConfig.Builder builder();
+    method public java.util.Set<androidx.health.services.client.data.PassiveGoal> getDailyGoals();
     method public java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> getDataTypes();
     method public java.util.Set<androidx.health.services.client.data.HealthEvent.Type> getHealthEventTypes();
-    method public java.util.Set<androidx.health.services.client.data.PassiveGoal> getPassiveGoals();
     method public androidx.health.services.client.proto.DataProto.PassiveListenerConfig getProto();
     method public boolean getShouldRequestUserActivityState();
+    property public final java.util.Set<androidx.health.services.client.data.PassiveGoal> dailyGoals;
     property public final java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> dataTypes;
     property public final java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes;
-    property public final java.util.Set<androidx.health.services.client.data.PassiveGoal> passiveGoals;
     property public final boolean shouldRequestUserActivityState;
     field public static final android.os.Parcelable.Creator<androidx.health.services.client.data.PassiveListenerConfig> CREATOR;
     field public static final androidx.health.services.client.data.PassiveListenerConfig.Companion Companion;
@@ -764,9 +764,9 @@
   public static final class PassiveListenerConfig.Builder {
     ctor public PassiveListenerConfig.Builder();
     method public androidx.health.services.client.data.PassiveListenerConfig build();
+    method public androidx.health.services.client.data.PassiveListenerConfig.Builder setDailyGoals(java.util.Set<androidx.health.services.client.data.PassiveGoal> dailyGoals);
     method public androidx.health.services.client.data.PassiveListenerConfig.Builder setDataTypes(java.util.Set<? extends androidx.health.services.client.data.DataType<?,?>> dataTypes);
     method public androidx.health.services.client.data.PassiveListenerConfig.Builder setHealthEventTypes(java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes);
-    method public androidx.health.services.client.data.PassiveListenerConfig.Builder setPassiveGoals(java.util.Set<androidx.health.services.client.data.PassiveGoal> passiveGoals);
     method public androidx.health.services.client.data.PassiveListenerConfig.Builder setShouldRequestUserActivityState(boolean requestUserActivityState);
   }
 
diff --git a/health/health-services-client/api/public_plus_experimental_1.0.0-beta01.txt b/health/health-services-client/api/public_plus_experimental_1.0.0-beta01.txt
index a170f81..3b52c27 100644
--- a/health/health-services-client/api/public_plus_experimental_1.0.0-beta01.txt
+++ b/health/health-services-client/api/public_plus_experimental_1.0.0-beta01.txt
@@ -746,16 +746,16 @@
   }
 
   public final class PassiveListenerConfig extends androidx.health.services.client.data.ProtoParcelable<androidx.health.services.client.proto.DataProto.PassiveListenerConfig> {
-    ctor public PassiveListenerConfig(java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> dataTypes, boolean shouldRequestUserActivityState, java.util.Set<androidx.health.services.client.data.PassiveGoal> passiveGoals, java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes);
+    ctor public PassiveListenerConfig(java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> dataTypes, boolean shouldRequestUserActivityState, java.util.Set<androidx.health.services.client.data.PassiveGoal> dailyGoals, java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes);
     method public static androidx.health.services.client.data.PassiveListenerConfig.Builder builder();
+    method public java.util.Set<androidx.health.services.client.data.PassiveGoal> getDailyGoals();
     method public java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> getDataTypes();
     method public java.util.Set<androidx.health.services.client.data.HealthEvent.Type> getHealthEventTypes();
-    method public java.util.Set<androidx.health.services.client.data.PassiveGoal> getPassiveGoals();
     method public androidx.health.services.client.proto.DataProto.PassiveListenerConfig getProto();
     method public boolean getShouldRequestUserActivityState();
+    property public final java.util.Set<androidx.health.services.client.data.PassiveGoal> dailyGoals;
     property public final java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> dataTypes;
     property public final java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes;
-    property public final java.util.Set<androidx.health.services.client.data.PassiveGoal> passiveGoals;
     property public final boolean shouldRequestUserActivityState;
     field public static final android.os.Parcelable.Creator<androidx.health.services.client.data.PassiveListenerConfig> CREATOR;
     field public static final androidx.health.services.client.data.PassiveListenerConfig.Companion Companion;
@@ -764,9 +764,9 @@
   public static final class PassiveListenerConfig.Builder {
     ctor public PassiveListenerConfig.Builder();
     method public androidx.health.services.client.data.PassiveListenerConfig build();
+    method public androidx.health.services.client.data.PassiveListenerConfig.Builder setDailyGoals(java.util.Set<androidx.health.services.client.data.PassiveGoal> dailyGoals);
     method public androidx.health.services.client.data.PassiveListenerConfig.Builder setDataTypes(java.util.Set<? extends androidx.health.services.client.data.DataType<?,?>> dataTypes);
     method public androidx.health.services.client.data.PassiveListenerConfig.Builder setHealthEventTypes(java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes);
-    method public androidx.health.services.client.data.PassiveListenerConfig.Builder setPassiveGoals(java.util.Set<androidx.health.services.client.data.PassiveGoal> passiveGoals);
     method public androidx.health.services.client.data.PassiveListenerConfig.Builder setShouldRequestUserActivityState(boolean requestUserActivityState);
   }
 
diff --git a/health/health-services-client/api/public_plus_experimental_current.txt b/health/health-services-client/api/public_plus_experimental_current.txt
index a170f81..3b52c27 100644
--- a/health/health-services-client/api/public_plus_experimental_current.txt
+++ b/health/health-services-client/api/public_plus_experimental_current.txt
@@ -746,16 +746,16 @@
   }
 
   public final class PassiveListenerConfig extends androidx.health.services.client.data.ProtoParcelable<androidx.health.services.client.proto.DataProto.PassiveListenerConfig> {
-    ctor public PassiveListenerConfig(java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> dataTypes, boolean shouldRequestUserActivityState, java.util.Set<androidx.health.services.client.data.PassiveGoal> passiveGoals, java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes);
+    ctor public PassiveListenerConfig(java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> dataTypes, boolean shouldRequestUserActivityState, java.util.Set<androidx.health.services.client.data.PassiveGoal> dailyGoals, java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes);
     method public static androidx.health.services.client.data.PassiveListenerConfig.Builder builder();
+    method public java.util.Set<androidx.health.services.client.data.PassiveGoal> getDailyGoals();
     method public java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> getDataTypes();
     method public java.util.Set<androidx.health.services.client.data.HealthEvent.Type> getHealthEventTypes();
-    method public java.util.Set<androidx.health.services.client.data.PassiveGoal> getPassiveGoals();
     method public androidx.health.services.client.proto.DataProto.PassiveListenerConfig getProto();
     method public boolean getShouldRequestUserActivityState();
+    property public final java.util.Set<androidx.health.services.client.data.PassiveGoal> dailyGoals;
     property public final java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> dataTypes;
     property public final java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes;
-    property public final java.util.Set<androidx.health.services.client.data.PassiveGoal> passiveGoals;
     property public final boolean shouldRequestUserActivityState;
     field public static final android.os.Parcelable.Creator<androidx.health.services.client.data.PassiveListenerConfig> CREATOR;
     field public static final androidx.health.services.client.data.PassiveListenerConfig.Companion Companion;
@@ -764,9 +764,9 @@
   public static final class PassiveListenerConfig.Builder {
     ctor public PassiveListenerConfig.Builder();
     method public androidx.health.services.client.data.PassiveListenerConfig build();
+    method public androidx.health.services.client.data.PassiveListenerConfig.Builder setDailyGoals(java.util.Set<androidx.health.services.client.data.PassiveGoal> dailyGoals);
     method public androidx.health.services.client.data.PassiveListenerConfig.Builder setDataTypes(java.util.Set<? extends androidx.health.services.client.data.DataType<?,?>> dataTypes);
     method public androidx.health.services.client.data.PassiveListenerConfig.Builder setHealthEventTypes(java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes);
-    method public androidx.health.services.client.data.PassiveListenerConfig.Builder setPassiveGoals(java.util.Set<androidx.health.services.client.data.PassiveGoal> passiveGoals);
     method public androidx.health.services.client.data.PassiveListenerConfig.Builder setShouldRequestUserActivityState(boolean requestUserActivityState);
   }
 
diff --git a/health/health-services-client/api/restricted_1.0.0-beta01.txt b/health/health-services-client/api/restricted_1.0.0-beta01.txt
index a170f81..3b52c27 100644
--- a/health/health-services-client/api/restricted_1.0.0-beta01.txt
+++ b/health/health-services-client/api/restricted_1.0.0-beta01.txt
@@ -746,16 +746,16 @@
   }
 
   public final class PassiveListenerConfig extends androidx.health.services.client.data.ProtoParcelable<androidx.health.services.client.proto.DataProto.PassiveListenerConfig> {
-    ctor public PassiveListenerConfig(java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> dataTypes, boolean shouldRequestUserActivityState, java.util.Set<androidx.health.services.client.data.PassiveGoal> passiveGoals, java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes);
+    ctor public PassiveListenerConfig(java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> dataTypes, boolean shouldRequestUserActivityState, java.util.Set<androidx.health.services.client.data.PassiveGoal> dailyGoals, java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes);
     method public static androidx.health.services.client.data.PassiveListenerConfig.Builder builder();
+    method public java.util.Set<androidx.health.services.client.data.PassiveGoal> getDailyGoals();
     method public java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> getDataTypes();
     method public java.util.Set<androidx.health.services.client.data.HealthEvent.Type> getHealthEventTypes();
-    method public java.util.Set<androidx.health.services.client.data.PassiveGoal> getPassiveGoals();
     method public androidx.health.services.client.proto.DataProto.PassiveListenerConfig getProto();
     method public boolean getShouldRequestUserActivityState();
+    property public final java.util.Set<androidx.health.services.client.data.PassiveGoal> dailyGoals;
     property public final java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> dataTypes;
     property public final java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes;
-    property public final java.util.Set<androidx.health.services.client.data.PassiveGoal> passiveGoals;
     property public final boolean shouldRequestUserActivityState;
     field public static final android.os.Parcelable.Creator<androidx.health.services.client.data.PassiveListenerConfig> CREATOR;
     field public static final androidx.health.services.client.data.PassiveListenerConfig.Companion Companion;
@@ -764,9 +764,9 @@
   public static final class PassiveListenerConfig.Builder {
     ctor public PassiveListenerConfig.Builder();
     method public androidx.health.services.client.data.PassiveListenerConfig build();
+    method public androidx.health.services.client.data.PassiveListenerConfig.Builder setDailyGoals(java.util.Set<androidx.health.services.client.data.PassiveGoal> dailyGoals);
     method public androidx.health.services.client.data.PassiveListenerConfig.Builder setDataTypes(java.util.Set<? extends androidx.health.services.client.data.DataType<?,?>> dataTypes);
     method public androidx.health.services.client.data.PassiveListenerConfig.Builder setHealthEventTypes(java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes);
-    method public androidx.health.services.client.data.PassiveListenerConfig.Builder setPassiveGoals(java.util.Set<androidx.health.services.client.data.PassiveGoal> passiveGoals);
     method public androidx.health.services.client.data.PassiveListenerConfig.Builder setShouldRequestUserActivityState(boolean requestUserActivityState);
   }
 
diff --git a/health/health-services-client/api/restricted_current.txt b/health/health-services-client/api/restricted_current.txt
index a170f81..3b52c27 100644
--- a/health/health-services-client/api/restricted_current.txt
+++ b/health/health-services-client/api/restricted_current.txt
@@ -746,16 +746,16 @@
   }
 
   public final class PassiveListenerConfig extends androidx.health.services.client.data.ProtoParcelable<androidx.health.services.client.proto.DataProto.PassiveListenerConfig> {
-    ctor public PassiveListenerConfig(java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> dataTypes, boolean shouldRequestUserActivityState, java.util.Set<androidx.health.services.client.data.PassiveGoal> passiveGoals, java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes);
+    ctor public PassiveListenerConfig(java.util.Set<? extends androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> dataTypes, boolean shouldRequestUserActivityState, java.util.Set<androidx.health.services.client.data.PassiveGoal> dailyGoals, java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes);
     method public static androidx.health.services.client.data.PassiveListenerConfig.Builder builder();
+    method public java.util.Set<androidx.health.services.client.data.PassiveGoal> getDailyGoals();
     method public java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> getDataTypes();
     method public java.util.Set<androidx.health.services.client.data.HealthEvent.Type> getHealthEventTypes();
-    method public java.util.Set<androidx.health.services.client.data.PassiveGoal> getPassiveGoals();
     method public androidx.health.services.client.proto.DataProto.PassiveListenerConfig getProto();
     method public boolean getShouldRequestUserActivityState();
+    property public final java.util.Set<androidx.health.services.client.data.PassiveGoal> dailyGoals;
     property public final java.util.Set<androidx.health.services.client.data.DataType<? extends java.lang.Object,? extends androidx.health.services.client.data.DataPoint<?>>> dataTypes;
     property public final java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes;
-    property public final java.util.Set<androidx.health.services.client.data.PassiveGoal> passiveGoals;
     property public final boolean shouldRequestUserActivityState;
     field public static final android.os.Parcelable.Creator<androidx.health.services.client.data.PassiveListenerConfig> CREATOR;
     field public static final androidx.health.services.client.data.PassiveListenerConfig.Companion Companion;
@@ -764,9 +764,9 @@
   public static final class PassiveListenerConfig.Builder {
     ctor public PassiveListenerConfig.Builder();
     method public androidx.health.services.client.data.PassiveListenerConfig build();
+    method public androidx.health.services.client.data.PassiveListenerConfig.Builder setDailyGoals(java.util.Set<androidx.health.services.client.data.PassiveGoal> dailyGoals);
     method public androidx.health.services.client.data.PassiveListenerConfig.Builder setDataTypes(java.util.Set<? extends androidx.health.services.client.data.DataType<?,?>> dataTypes);
     method public androidx.health.services.client.data.PassiveListenerConfig.Builder setHealthEventTypes(java.util.Set<androidx.health.services.client.data.HealthEvent.Type> healthEventTypes);
-    method public androidx.health.services.client.data.PassiveListenerConfig.Builder setPassiveGoals(java.util.Set<androidx.health.services.client.data.PassiveGoal> passiveGoals);
     method public androidx.health.services.client.data.PassiveListenerConfig.Builder setShouldRequestUserActivityState(boolean requestUserActivityState);
   }
 
diff --git a/health/health-services-client/src/main/java/androidx/health/services/client/data/PassiveListenerConfig.kt b/health/health-services-client/src/main/java/androidx/health/services/client/data/PassiveListenerConfig.kt
index 8f86001..25b2a24 100644
--- a/health/health-services-client/src/main/java/androidx/health/services/client/data/PassiveListenerConfig.kt
+++ b/health/health-services-client/src/main/java/androidx/health/services/client/data/PassiveListenerConfig.kt
@@ -31,7 +31,7 @@
  * @property shouldRequestUserActivityState whether to request [UserActivityInfo] updates. Data will
  * be returned by [PassiveListenerCallback.onUserActivityInfoReceived]. If set to true, calling app
  * must have [android.Manifest.permission.ACTIVITY_RECOGNITION].
- * @property passiveGoals set of [PassiveGoal]s which should be tracked. Achieved goals will be
+ * @property dailyGoals set of daily [PassiveGoal]s which should be tracked. Achieved goals will be
  * returned by [PassiveListenerCallback.onGoalCompleted].
  * @property healthEventTypes set of [HealthEvent.Type] which should be tracked. Detected health
  * events will be returned by [PassiveListenerCallback.onHealthEventReceived].
@@ -41,7 +41,7 @@
     public val dataTypes: Set<DataType<out Any, out DataPoint<out Any>>>,
     @get:JvmName("shouldRequestUserActivityState")
     public val shouldRequestUserActivityState: Boolean,
-    public val passiveGoals: Set<PassiveGoal>,
+    public val dailyGoals: Set<PassiveGoal>,
     public val healthEventTypes: Set<HealthEvent.Type>
 ) : ProtoParcelable<DataProto.PassiveListenerConfig>() {
 
@@ -60,7 +60,7 @@
     public class Builder {
         private var dataTypes: Set<DataType<*, *>> = emptySet()
         private var requestUserActivityState: Boolean = false
-        private var passiveGoals: Set<PassiveGoal> = emptySet()
+        private var dailyGoals: Set<PassiveGoal> = emptySet()
         private var healthEventTypes: Set<HealthEvent.Type> = emptySet()
 
         /** Sets the requested [DataType]s that should be passively tracked. */
@@ -83,12 +83,12 @@
         }
 
         /**
-         * Sets the requested [PassiveGoal]s that should be passively tracked.
+         * Sets the requested daily [PassiveGoal]s that should be passively tracked.
          *
-         * @param passiveGoals the [PassiveGoal]s that should be tracked passively
+         * @param dailyGoals the daily [PassiveGoal]s that should be tracked passively
          */
-        public fun setPassiveGoals(passiveGoals: Set<PassiveGoal>): Builder {
-            this.passiveGoals = passiveGoals.toSet()
+        public fun setDailyGoals(dailyGoals: Set<PassiveGoal>): Builder {
+            this.dailyGoals = dailyGoals.toSet()
             return this
         }
 
@@ -107,7 +107,7 @@
             return PassiveListenerConfig(
                 dataTypes,
                 requestUserActivityState,
-                passiveGoals,
+                dailyGoals,
                 healthEventTypes
             )
         }
@@ -118,7 +118,7 @@
         DataProto.PassiveListenerConfig.newBuilder()
             .addAllDataTypes(dataTypes.map { it.proto })
             .setIncludeUserActivityState(shouldRequestUserActivityState)
-            .addAllPassiveGoals(passiveGoals.map { it.proto })
+            .addAllPassiveGoals(dailyGoals.map { it.proto })
             .addAllHealthEventTypes(healthEventTypes.map { it.toProto() })
             .build()
     }
diff --git a/health/health-services-client/src/test/java/androidx/health/services/client/impl/ServiceBackedPassiveMonitoringClientTest.kt b/health/health-services-client/src/test/java/androidx/health/services/client/impl/ServiceBackedPassiveMonitoringClientTest.kt
index 11dd637..104817f 100644
--- a/health/health-services-client/src/test/java/androidx/health/services/client/impl/ServiceBackedPassiveMonitoringClientTest.kt
+++ b/health/health-services-client/src/test/java/androidx/health/services/client/impl/ServiceBackedPassiveMonitoringClientTest.kt
@@ -96,7 +96,7 @@
         val config = PassiveListenerConfig(
             dataTypes = setOf(STEPS_DAILY, CALORIES_DAILY),
             shouldRequestUserActivityState = true,
-            passiveGoals = setOf(),
+            dailyGoals = setOf(),
             healthEventTypes = setOf()
         )
 
@@ -119,7 +119,7 @@
         val config = PassiveListenerConfig(
             dataTypes = setOf(STEPS_DAILY),
             shouldRequestUserActivityState = true,
-            passiveGoals = setOf(),
+            dailyGoals = setOf(),
             healthEventTypes = setOf()
         )
         val callback = FakeCallback()
@@ -141,7 +141,7 @@
         val config = PassiveListenerConfig(
             dataTypes = setOf(STEPS_DAILY),
             shouldRequestUserActivityState = true,
-            passiveGoals = setOf(),
+            dailyGoals = setOf(),
             healthEventTypes = setOf()
         )
         val callback = FakeCallback()
@@ -186,7 +186,7 @@
         val config = PassiveListenerConfig(
             dataTypes = setOf(STEPS_DAILY),
             shouldRequestUserActivityState = false,
-            passiveGoals = setOf(
+            dailyGoals = setOf(
                 PassiveGoal(DataTypeCondition(STEPS_DAILY, 87, GREATER_THAN), ONCE)
             ),
             healthEventTypes = setOf()
@@ -227,7 +227,7 @@
         val config = PassiveListenerConfig(
             dataTypes = setOf(),
             shouldRequestUserActivityState = false,
-            passiveGoals = setOf(),
+            dailyGoals = setOf(),
             healthEventTypes = setOf(FALL_DETECTED)
         )
         val callback = FakeCallback()
@@ -258,7 +258,7 @@
         val config = PassiveListenerConfig(
             dataTypes = setOf(STEPS_DAILY),
             shouldRequestUserActivityState = false,
-            passiveGoals = setOf(
+            dailyGoals = setOf(
                 PassiveGoal(DataTypeCondition(STEPS_DAILY, 87, GREATER_THAN), ONCE)
             ),
             healthEventTypes = setOf()
