Fetches soft-deleted shop pages, extracts image URLs from layout JSON, deletes all images from Azure Blob Storage, then hard-deletes the shop page record.
ShopPageAssetCleanup (1)
Payload: ShopPageId
Deletes images that were replaced or removed during shop page updates from Azure Blob Storage.
ShopPageUpdateCleanup (2)
Payload: RemovedImageUrls[]
Comprehensive cleanup for soft-deleted shops: products, reviews, followers, shop pages, ad bookings, subscription usage, and Azure blob assets.
ShopDeletionCleanup (13)
Payload: ShopId, ShopName
Processes ad slot lifecycle operations: expires old slots, updates bid statuses, and activates/expires ads. Mirrors the hosted service for on-demand use.
AdLifecycle (3)
Payload: Empty
Enforces ad content submission deadlines: sends reminder emails when content is due, auto-expires bookings that miss the 1-day-before-start deadline.
AdContentDeadlines (4)
Payload: Empty
Processes queued subscription lifecycle events: expiry reminders, trial expirations, grace period handling, and auto-downgrade to Free tier.
SubscriptionLifecycle (5)
Payload: Empty
Checks for scheduled notifications and sends them via the notification management service. Logs errors for failed sends.
NotificationScheduler (6)
Payload: Empty
Aggregates & deletes receipts older than 60 days, archives expired notifications, and deletes old analytics records (>6 months).
NotificationCleanup (7)
Payload: Empty
Calculates notification analytics: delivery rates, read rates, click-through rates, platform breakdowns (Web, Android, iOS), and average read time.
NotificationAnalytics (8)
Payload: Empty
Daily cleanup of expired login sessions and deletion of old login attempts based on retention period from LoginSecuritySettings.
LoginSessionCleanup (9)
Payload: Empty
Sends 24-hour reminder emails to users whose deletion grace period is expiring, then permanently deletes users whose grace period has fully expired.
UserDeletionCleanup (10)
Payload: Empty
Anonymizes PII in deleted user archive records after 6-year retention period. Complies with DPDPA 2023 & GST Act. Preserves transaction IDs for tax audits.
DataRetentionCleanup (14)
Payload: Empty
Retention: 6 years
Aggregates EngagementEvent data into EngagementSummary for seller dashboard analytics. Processes today + yesterday (catch-up). Uses Dapper stored procedure.
TrackingAggregation (11)
Payload: Empty
Resolves unmapped cities after admin creates a location alias. Bulk-updates all shops matching the city/state with the resolved LocationId.
UnmappedCityResolution (12)
Payload: City, State, LocationId
Auto-expires promotions past their end date to prevent showing expired promotions to customers. Queue counterpart of PromotionLifecycleService.
PromotionLifecycle (15)
Payload: Empty
✓ NEW
Deletes old EngagementEvent records older than 60 days. Events are already aggregated into EngagementSummary, so raw events can be safely deleted. Batch: 10,000.
TrackingRetention (16)
Payload: Empty
✓ NEW
Preloads category cache to avoid cold start delays. Can be triggered manually to re-warm caches without restarting the application.
CacheWarmup (17)
Payload: Empty
✓ NEW