diff --git a/src/com/android/customization/module/logging/SysUiStatsLogger.kt b/src/com/android/customization/module/logging/SysUiStatsLogger.kt
index 111c2c2..71363fb 100644
--- a/src/com/android/customization/module/logging/SysUiStatsLogger.kt
+++ b/src/com/android/customization/module/logging/SysUiStatsLogger.kt
@@ -60,6 +60,7 @@
     private var toggleOn = false
     private var shortcut = ""
     private var shortcutSlotId = ""
+    private var lockEffectIdHash = 0
 
     fun setColorPackageHash(colorPackageHash: Int) = apply {
         this.colorPackageHash = colorPackageHash
@@ -151,6 +152,10 @@
 
     fun setShortcutSlotId(shortcutSlotId: String) = apply { this.shortcutSlotId = shortcutSlotId }
 
+    fun setLockEffectIdHash(lockEffectIdHash: Int) = apply {
+        this.lockEffectIdHash = lockEffectIdHash
+    }
+
     fun log() {
         SysUiStatsLog.write(
             STYLE_UI_CHANGED,
@@ -185,6 +190,7 @@
             toggleOn,
             shortcut,
             shortcutSlotId,
+            lockEffectIdHash,
         )
     }
 }
diff --git a/src/com/android/customization/module/logging/ThemesUserEventLoggerImpl.kt b/src/com/android/customization/module/logging/ThemesUserEventLoggerImpl.kt
index 3f4a6dc..b28086b 100644
--- a/src/com/android/customization/module/logging/ThemesUserEventLoggerImpl.kt
+++ b/src/com/android/customization/module/logging/ThemesUserEventLoggerImpl.kt
@@ -75,9 +75,10 @@
         SysUiStatsLogger(SNAPSHOT)
             .setWallpaperCategoryHash(preferences.getHomeCategoryHash())
             .setWallpaperIdHash(preferences.getHomeWallpaperIdHash())
+            .setEffectIdHash(preferences.getHomeWallpaperEffectsIdHash())
             .setLockWallpaperCategoryHash(preferences.getLockCategoryHash())
             .setLockWallpaperIdHash(preferences.getLockWallpaperIdHash())
-            .setEffectIdHash(preferences.getHomeWallpaperEffectsIdHash())
+            .setLockEffectIdHash(preferences.getLockWallpaperEffectsIdHash())
             .setColorSource(colorManager.currentColorSourceForLogging)
             .setColorVariant(colorManager.currentStyleForLogging)
             .setSeedColor(colorManager.currentSeedColorForLogging)
@@ -110,9 +111,10 @@
             .setAppSessionId(appSessionId.getId())
             .setWallpaperCategoryHash(if (isHomeWallpaperSet) categoryHash else 0)
             .setWallpaperIdHash(if (isHomeWallpaperSet) wallpaperIdHash else 0)
+            .setEffectIdHash(if (isHomeWallpaperSet) getIdHashCode(effects) else 0)
             .setLockWallpaperCategoryHash(if (isLockWallpaperSet) categoryHash else 0)
             .setLockWallpaperIdHash(if (isLockWallpaperSet) wallpaperIdHash else 0)
-            .setEffectIdHash(getIdHashCode(effects))
+            .setLockEffectIdHash(if (isLockWallpaperSet) getIdHashCode(effects) else 0)
             .setSetWallpaperEntryPoint(setWallpaperEntryPoint)
             .setWallpaperDestination(destination)
             .log()
@@ -293,6 +295,11 @@
         return getIdHashCode(getHomeWallpaperEffects())
     }
 
+    /** If not set, the output hash is 0. */
+    private fun WallpaperPreferences.getLockWallpaperEffectsIdHash(): Int {
+        return getIdHashCode(getLockWallpaperEffects())
+    }
+
     private fun getIdHashCode(id: String?): Int {
         return id?.hashCode() ?: 0
     }
