diff --git a/datadog-tracing.cabal b/datadog-tracing.cabal
--- a/datadog-tracing.cabal
+++ b/datadog-tracing.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.2
 name:                datadog-tracing
-version:             1.3.3
+version:             1.4.0
 synopsis:            Datadog tracing client and mock agent.
 license:             BSD-3-Clause
 license-file:        LICENSE
@@ -71,7 +71,7 @@
   build-depends:    , datadog-tracing
                     , data-default         ^>= 0.7.1.1
                     , servant-server       ^>= 0.14.1
-                    , wai-extra            ^>= 3.0.25
+                    , wai-extra            ^>= 3.0.24 || ^>= 3.0.25
                     , warp                 ^>= 3.2.25
   ghc-options:        -threaded
 
diff --git a/library/Datadog/Agent.hs b/library/Datadog/Agent.hs
--- a/library/Datadog/Agent.hs
+++ b/library/Datadog/Agent.hs
@@ -71,7 +71,7 @@
   , spanDuration :: Int64
   , spanError    :: Maybe Int32
   , spanMeta     :: Maybe (Map Text Text)
-  , spanMetrics  :: Maybe Metrics
+  , spanMetrics  :: Maybe (Map Text Double)
   , spanType     :: Maybe Text
   } deriving (Generic)
 
@@ -112,20 +112,6 @@
          <*> v .:? "meta" .!= Nothing
          <*> v .:? "metrics" .!= Nothing
          <*> v .:? "type" .!= Nothing
-
--- See TraceResponse
-data Metrics = Metrics Int deriving (Generic)
-
-instance Arbitrary Metrics where
-  arbitrary = genericArbitraryU
-
-instance ToJSON Metrics where
-  toJSON (Metrics priority) = object
-    [ "_sampling_priority_v1" .= priority ]
-
-instance FromJSON Metrics where
-  parseJSON = withObject "Metrics" $ \v ->
-    Metrics <$> v .: "_sampling_priority_v1"
 
 -- "rate" is a number between `[0.0, 1.0]` indicating the desired percentage of
 -- traces that the agent wishes to downsample for a given service (`0.0` meaning
diff --git a/library/Datadog/Client.hs b/library/Datadog/Client.hs
--- a/library/Datadog/Client.hs
+++ b/library/Datadog/Client.hs
@@ -122,11 +122,14 @@
              duration
              meta
              err)) =
-      let metrics = (\_ -> API.Metrics 2) <$> parent -- never sample
+      -- Magic undocumented flags: never sample, always search
+      let metrics = M.insert "_dd1.sr.eausr" 1 $ case parent of
+            Just _  -> M.singleton "_sampling_priority_v1" 2
+            Nothing -> M.empty
       in API.Span
                serviceName
                spanName
-               "time" -- not using resource, but it is required
+               spanName -- not using resource
                traceId
                spanId
                ((\(SpanId (unrefine -> p)) -> p) <$> parent)
@@ -134,7 +137,7 @@
                (nominalToNanos duration)
                (if err then Just 1 else Nothing)
                ((\m -> (M.map unValue) . (M.mapKeys unKey) $ m) <$> meta)
-               metrics
+               (Just metrics)
                Nothing -- not using type
 
     unKey (MetaKey (unrefine -> k)) = k
diff --git a/manual-test/Main.hs b/manual-test/Main.hs
--- a/manual-test/Main.hs
+++ b/manual-test/Main.hs
@@ -45,10 +45,9 @@
   spanid <- randomWord64
   let http   = client (Proxy @ Traces3)
       env    = mkClientEnv mgr base
-      metrics = Just $ Metrics 2
       traces = [ (Trace
                   [ Span "tester" "span" "time" traceid spanid Nothing start 800971
-                    Nothing Nothing metrics Nothing
+                    Nothing Nothing Nothing Nothing
                   ])
                ]
   putStrLn (LT.unpack . encodeToLazyText $ traces)
