diff --git a/stats/Android.bp b/stats/Android.bp
index b4cbfc1..3e23d7a 100644
--- a/stats/Android.bp
+++ b/stats/Android.bp
@@ -23,6 +23,7 @@
 
 enum_protos = [
     "enums/adservices/fledge/*.proto",
+    "enums/adservices/measurement/*.proto",
     "enums/app/**/*.proto",
     "enums/contexthub/*.proto",
     "enums/debug/*.proto",
diff --git a/stats/atoms.proto b/stats/atoms.proto
index 95ed442..1a8b76e 100644
--- a/stats/atoms.proto
+++ b/stats/atoms.proto
@@ -27,6 +27,7 @@
 import "frameworks/proto_logging/stats/atoms/providers/mediaprovider/media_provider_atoms.proto";
 import "frameworks/proto_logging/stats/atom_field_options.proto";
 import "frameworks/proto_logging/stats/enums/adservices/fledge/enums.proto";
+import "frameworks/proto_logging/stats/enums/adservices/measurement/enums.proto";
 import "frameworks/proto_logging/stats/enums/app/enums.proto";
 import "frameworks/proto_logging/stats/enums/app/job/enums.proto";
 import "frameworks/proto_logging/stats/enums/app/remoteprovisioner_enums.proto";
@@ -792,6 +793,11 @@
     extensions 656; // BluetoothLeSessionConnected bluetooth_le_session_connected
     extensions 658; // ExpressUidHistogramSampleReported express_uid_histogram_sample_reported
     extensions 662; // AdServicesErrorReported ad_services_error_reported
+    extensions 663; // AdServicesBackgroundJobsExecutionReported ad_services_background_jobs_execution_reported
+    extensions 673; // AdServicesMeasurementDelayedSourceRegistration ad_services_measurement_delayed_source_registration
+    extensions 674; // AdServicesMeasurementAttribution ad_services_measurement_attribution
+    extensions 675; // AdServicesMeasurementJobs ad_services_measurement_jobs
+    extensions 676; // AdServicesMeasurementWipeout ad_services_measurement_wipeout
     extensions 9999; // Atom9999 atom_9999
 
     // Pulled events will start at field 10000.
@@ -21274,6 +21280,10 @@
     }
 
     optional ReportUploadStatus response_code = 2;
+    optional android.adservices.service.measurement.ReportUploadFailureType failure_type = 3;
+    optional android.adservices.service.measurement.ReportUploadMethod upload_method = 4;
+    // delay (in milliseconds) between scheduled delivery time and actual delivery time.
+    optional int64 reporting_delay_millis = 5;
 }
 
 /**
@@ -21289,6 +21299,12 @@
     optional RegistrationType type = 1;
     optional int64 response_size_in_bytes = 2;
     optional string adtech_url_domain_if_size_above_threshold = 3;
+    optional android.adservices.service.measurement.SourceType source_type = 4;
+    optional android.adservices.service.measurement.RegistrationSurfaceType surface_type = 5;
+    optional android.adservices.service.measurement.Status status = 6;
+    optional android.adservices.service.measurement.RegistrationFailureType failure_type = 7;
+    // delay (in milliseconds) between registration queue request and the time it gets processed
+    optional int64 registration_delay_millis = 8;
 }
 
 /**
diff --git a/stats/atoms/adservices/adservices_extension_atoms.proto b/stats/atoms/adservices/adservices_extension_atoms.proto
index abe4304..2c8cc23 100644
--- a/stats/atoms/adservices/adservices_extension_atoms.proto
+++ b/stats/atoms/adservices/adservices_extension_atoms.proto
@@ -20,6 +20,8 @@
 
 import "frameworks/proto_logging/stats/atoms.proto";
 import "frameworks/proto_logging/stats/atom_field_options.proto";
+import "frameworks/proto_logging/stats/enums/app/job/enums.proto";
+import "frameworks/proto_logging/stats/enums/adservices/measurement/enums.proto";
 
 option java_package = "com.android.os.adservices";
 option java_multiple_files = true;
@@ -38,6 +40,22 @@
   optional AdServicesErrorReported
       ad_services_error_reported = 662
         [(module) = "adservices", (truncate_timestamp) = true];
+  optional AdServicesBackgroundJobsExecutionReported
+      ad_services_background_jobs_execution_reported = 663
+        [(module) = "adservices"];
+
+  optional AdServicesMeasurementDelayedSourceRegistration
+      ad_services_measurement_delayed_source_registration = 673
+        [(module) = "adservices", (truncate_timestamp) = true];
+  optional AdServicesMeasurementAttribution
+      ad_services_measurement_attribution = 674
+        [(module) = "adservices", (truncate_timestamp) = true];
+  optional AdServicesMeasurementJobs
+      ad_services_measurement_jobs = 675
+        [(module) = "adservices", (truncate_timestamp) = true];
+  optional AdServicesMeasurementWipeout
+      ad_services_measurement_wipeout = 676
+        [(module) = "adservices", (truncate_timestamp) = true];
 }
 
 /**
@@ -178,3 +196,80 @@
   // The fully qualified name of the last encountered exception.
   optional string last_observed_exception_name = 6;
 }
+
+/** Logs background job stats to monitor the stability of Rubidium background jobs. */
+message AdServicesBackgroundJobsExecutionReported {
+  // A unique identifier for a background job
+  optional int32 job_id = 1;
+
+  // Time interval from the start to the end of an execution of a background job.
+  // It is on a milli-second basis.
+  optional int32 execution_duration_ms = 2;
+
+  // Time interval from the start of previous execution to the start of current execution of
+  // a background job. It is on a second basis.
+  optional int32 execution_frequency_second = 3;
+
+  // Type of the result code that implies different execution results.
+  enum ExecutionResultCode {
+     /** Unspecified result code. */
+     UNSPECIFIED_CODE = 0;
+     /** Successful execution. */
+     SUCCESSFUL = 1;
+     /** Failed execution with retrying the job. */
+     FAILED_WITH_RETRY = 2;
+     /** Failed execution without retrying the job. */
+     FAILED_WITHOUT_RETRY = 3;
+     /** OnJobStop() is invoked with retrying the job. */
+     ONSTOP_CALLED_WITH_RETRY = 4;
+     /** OnJobStop() is invoked without retrying the job. */
+     ONSTOP_CALLED_WITHOUT_RETRY = 5;
+     /** The execution is halted by system or device, leaving an open-ended start.. */
+     HALTED_BY_DEVICE = 6;
+  }
+  optional ExecutionResultCode execution_result_code = 4;
+
+  // The publicly returned reason onStopJob() was called.
+  // This is only applicable when the state is FINISHED, but may be undefined if
+  // JobService.onStopJob() was never called for the job.
+  // The default value is STOP_REASON_UNDEFINED.
+  optional android.app.job.StopReasonEnum public_stop_reason = 5;
+}
+
+/**
+ * Logs when an AdServices delayed source is fetched and registered.
+ */
+message AdServicesMeasurementDelayedSourceRegistration {
+  optional android.adservices.service.measurement.DelayedSourceRegistrationStatus registration_status = 1;
+  // delay (in milliseconds) between a source registration and a previously registered trigger with matching attribution destination
+  optional int64 missed_source_delay_millis = 2;
+}
+
+/**
+ * Logs when an AdServices trigger is attributed to a source.
+ */
+message AdServicesMeasurementAttribution {
+  optional android.adservices.service.measurement.SourceType source_type = 1;
+  optional android.adservices.service.measurement.AttributionSurfaceCombination attribution_surface_combination = 2;
+  optional android.adservices.service.measurement.Status status = 3;
+  optional android.adservices.service.measurement.AttributionFailureType failure_type = 4;
+  optional bool is_source_derived = 5;
+  optional bool is_install_attribution = 6;
+  // delay (in milliseconds) between trigger registration and a trigger becoming attributed.
+  optional int64 trigger_to_attribution_delay_millis = 7;
+}
+
+/**
+ * Logs AdServices job finish status
+ */
+message AdServicesMeasurementJobs {
+  optional android.adservices.service.measurement.Status status = 1;
+  optional android.adservices.service.measurement.JobType job_type = 2;
+}
+
+/**
+ * Logs when AdServices deletion API is called.
+ */
+message AdServicesMeasurementWipeout {
+  optional android.adservices.service.measurement.WipeoutCause wipeout_cause = 1;
+}
\ No newline at end of file
diff --git a/stats/enums/adservices/measurement/enums.proto b/stats/enums/adservices/measurement/enums.proto
new file mode 100644
index 0000000..261ccf7
--- /dev/null
+++ b/stats/enums/adservices/measurement/enums.proto
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+package android.adservices.service.measurement;
+
+option java_outer_classname = "MeasurementProtoEnums";
+option java_multiple_files = true;
+
+/**
+ * Enum used by AdServicesMeasurement(Registration, Attribution).
+ */
+enum SourceType {
+  UNKNOWN_SOURCE_TYPE = 0;
+  EVENT_SOURCE_TYPE = 1;
+  NAVIGATION_SOURCE_TYPE = 2;
+}
+
+/**
+ * Enum used by AdServicesMeasurementRegistration.
+ */
+enum RegistrationSurfaceType {
+  UNKNOWN_REGISTRATION_SURFACE_TYPE = 0;
+  WEB_REGISTRATION_SURFACE_TYPE = 1;
+  APP_REGISTRATION_SURFACE_TYPE = 2;
+}
+
+/**
+ * Enum used by AdServicesMeasurement(Registration, Attribution, Reporting,
+ * Jobs)
+ */
+enum Status {
+  UNKNOWN_STATUS = 0;
+  SUCCESS_STATUS = 1;
+  FAILURE_STATUS = 2;
+}
+
+/**
+ * Enum used by AdServicesMeasurementRegistration.
+ */
+enum RegistrationFailureType {
+  UNKNOWN_REGISTRATION_FAILURE_TYPE = 0;
+  PARSING_REGISTRATION_FAILURE_TYPE = 1;
+  NETWORK_REQUEST_REGISTRATION_FAILURE_TYPE = 2;
+  ENROLLMENT_REGISTRATION_FAILURE_TYPE = 3;
+  REDIRECT_REGISTRATION_FAILURE_TYPE = 4;
+  STORAGE_REGISTRATION_FAILURE_TYPE = 5;
+}
+
+/**
+ * Enum used by AdServicesMeasurementReporting.
+ */
+enum ReportUploadFailureType {
+  UNKNOWN_REPORT_UPLOAD_FAILURE_TYPE = 0;
+  ENROLLMENT_NOT_FOUND_REPORT_UPLOAD_FAILURE_TYPE = 1;
+  NETWORK_ERROR_REPORT_UPLOAD_FAILURE_TYPE = 2;
+  DATASTORE_ERROR_REPORT_UPLOAD_FAILURE_TYPE = 3;
+  REPORT_NOT_PENDING_REPORT_UPLOAD_FAILURE_TYPE = 4;
+}
+
+/**
+ * Enum used by AdServicesMeasurementReporting.
+ */
+enum ReportUploadMethod {
+  UNKNOWN_REPORT_UPLOAD_METHOD = 0;
+  REGULAR_REPORT_UPLOAD_METHOD = 1;
+  FALLBACK_REPORT_UPLOAD_METHOD = 2;
+}
+
+/**
+ * Enum used by AdServicesMeasurementDelayedSourceRegistration.
+ */
+enum DelayedSourceRegistrationStatus {
+  UNKNOWN_DELAYED_SOURCE_REGISTRATION_STATUS = 0;
+  MISSING_DELAYED_SOURCE_REGISTRATION_STATUS = 1;
+  VALID_DELAYED_SOURCE_REGISTRATION_STATUS = 2;
+}
+
+/**
+ * Enum used by AdServicesMeasurementAttribution.
+ */
+enum AttributionSurfaceCombination {
+  UNKNOWN_ATTRIBUTION_SURFACE_COMBINATION = 0;
+  APP_APP_ATTRIBUTION_SURFACE_COMBINATION = 1;
+  APP_WEB_ATTRIBUTION_SURFACE_COMBINATION = 2;
+  WEB_APP_ATTRIBUTION_SURFACE_COMBINATION = 3;
+  WEB_WEB_ATTRIBUTION_SURFACE_COMBINATION = 4;
+}
+
+/**
+ * Enum used by AdServicesMeasurementAttribution.
+ */
+enum AttributionFailureType {
+  UNKNOWN_ATTRIBUTION_FAILURE_TYPE = 0;
+  TRIGGER_IGNORED_ATTRIBUTION_FAILURE_TYPE = 1;
+  TRIGGER_ALREADY_ATTRIBUTED_ATTRIBUTION_FAILURE_TYPE = 2;
+  TRIGGER_MARKED_FOR_DELETION_ATTRIBUTION_FAILURE_TYPE = 3;
+  NO_MATCHING_SOURCE_ATTRIBUTION_FAILURE_TYPE = 4;
+  NO_TOP_LEVEL_FILTER_MATCH_ATTRIBUTION_FAILURE_TYPE = 5;
+  RATE_LIMIT_EXCEEDED_ATTRIBUTION_FAILURE_TYPE = 6;
+  NO_REPORTS_GENERATED_ATTRIBUTION_FAILURE_TYPE = 7;
+}
+
+/**
+ * Enum used by AdServicesMeasurementJobs.
+ */
+enum JobType {
+  UNKNOWN_JOB_TYPE = 0;
+  ASYNC_REGISTRATION_JOB_TYPE = 1;
+  ASYNC_REGISTRATION_FALLBACK_JOB_TYPE = 2;
+  ATTRIBUTION_JOB_TYPE = 3;
+  AGGREGATION_REPORTING_JOB_TYPE = 4;
+  AGGREGATE_REPORTING_FALLBACK_JOB_TYPE = 5;
+  EVENT_REPORTING_JOB_TYPE = 6;
+  EVENT_REPORTING_FALLBACK_JOB_TYPE = 7;
+  DELETE_EXPIRED_JOB_TYPE = 8;
+  DELETE_UNINSTALLED_JOB_TYPE = 9;
+}
+
+/**
+ * Enum used by AdServicesMeasurementWipeout.
+ */
+enum WipeoutCause {
+  UNKNOWN_WIPEOUT_CAUSE = 0;
+  UNINSTALL_WIPEOUT_CAUSE = 1;
+  CONSENT_FLIP_WIPEOUT_CAUSE = 2;
+  CLEAR_DATA_WIPEOUT_CAUSE = 3;
+}
\ No newline at end of file
