diff --git a/lib/foreman_cement/configure_sentry.rb b/lib/foreman_cement/configure_sentry.rb
index f0b9d8228e75ce61a6e95b33f9a87e06980fe284..b089a88e813aa4fb1af7118d97b0e8a01eac8e1b 100644
--- a/lib/foreman_cement/configure_sentry.rb
+++ b/lib/foreman_cement/configure_sentry.rb
@@ -11,11 +11,32 @@ Sentry.init do |config|
   config.breadcrumbs_logger = %i[active_support_logger http_logger]
 
   if SETTINGS.with_indifferent_access['sentry_trace']
-    config.traces_sample_rate = if SETTINGS.with_indifferent_access['sentry_trace'].is_a?(Hash)
-                                  SETTINGS.with_indifferent_access.dig('sentry_trace', 'rate') || 0.2
-                                else
-                                  0.2
-                                end
+    config.traces_sampler = lambda do |ctx|
+      next ctx[:parent_sampled] if ctx[:parent_sampled]
+
+      # if SETTINGS.with_indifferent_access['sentry_trace'].is_a?(Hash)
+      #   SETTINGS.with_indifferent_access.dig('sentry_trace', 'rate') || 0.2
+      # else
+      #   0.2
+      # end
+
+      tctx = ctx[:transaction_context]
+      case tctx[:op]
+      when /http/
+        case tctx[:name]
+        when /api/
+          0.2
+        when /hosts/
+          0.5
+        else
+          0.1
+        end
+      when /sidekiq/
+        0.01
+      else
+        false
+      end
+    end
   end
 
   ## FIXME: Filters out required Sentry data if enabled