diff --git a/.changesets/set-appsignal-transaction-namespace--action-name-and-some-tags-earlier-.md b/.changesets/set-appsignal-transaction-namespace--action-name-and-some-tags-earlier-.md
new file mode 100644
index 000000000..bf444713f
--- /dev/null
+++ b/.changesets/set-appsignal-transaction-namespace--action-name-and-some-tags-earlier-.md
@@ -0,0 +1,6 @@
+---
+bump: "patch"
+type: "change"
+---
+
+Set the AppSignal transaction namespace, action name and some tags, before Active Job jobs are performed. This allows us to check what the namespace, action name and some tags are during the instrumentation itself.
diff --git a/lib/appsignal/hooks/active_job.rb b/lib/appsignal/hooks/active_job.rb
index 5101fd5b3..2a7139662 100644
--- a/lib/appsignal/hooks/active_job.rb
+++ b/lib/appsignal/hooks/active_job.rb
@@ -37,12 +37,6 @@ def execute(job)
               )
             end
 
-          super
-        rescue Exception => exception # rubocop:disable Lint/RescueException
-          job_status = :failed
-          transaction.set_error(exception)
-          raise exception
-        ensure
           if transaction
             transaction.params =
               Appsignal::Utils::HashSanitizer.sanitize(
@@ -59,6 +53,15 @@ def execute(job)
             transaction.set_tags(transaction_tags)
 
             transaction.set_action_if_nil(ActiveJobHelpers.action_name(job))
+          end
+
+          super
+        rescue Exception => exception # rubocop:disable Lint/RescueException
+          job_status = :failed
+          transaction.set_error(exception)
+          raise exception
+        ensure
+          if transaction
             enqueued_at = job["enqueued_at"]
             if enqueued_at # Present in Rails 6 and up
               transaction.set_queue_start((Time.parse(enqueued_at).to_f * 1_000).to_i)