diff --git a/iphone/Maps/Core/DeepLink/Strategies/DeepLinkHandlerStrategy.swift b/iphone/Maps/Core/DeepLink/Strategies/DeepLinkHandlerStrategy.swift index 815640ffa3..abd3caf872 100644 --- a/iphone/Maps/Core/DeepLink/Strategies/DeepLinkHandlerStrategy.swift +++ b/iphone/Maps/Core/DeepLink/Strategies/DeepLinkHandlerStrategy.swift @@ -7,13 +7,30 @@ protocol IDeepLinkHandlerStrategy { } extension IDeepLinkHandlerStrategy { + fileprivate func makeParams(type: String) -> [String: String] { + let params = [kStatType : type, kStatProvider: deeplinkURL.provider.statName] + guard let components = URLComponents(string: deeplinkURL.url.absoluteString) else { + return params + } + + var result = [String: String]() + components.queryItems? + .filter({ $0.name.starts(with: "utm_") || $0.name == "booking_aid" }) + .forEach({ result[$0.name] = $0.value ?? "" }) + + // Internal params are more perffered than url params. + for param in params { + result.updateValue(param.value, forKey: param.key) + } + + return result + } + func sendStatisticsOnSuccess(type:String) { - Statistics.logEvent(kStatDeeplinkCall, withParameters: [kStatType : type, - kStatProvider: deeplinkURL.provider.statName]) + Statistics.logEvent(kStatDeeplinkCall, withParameters: makeParams(type:type)) } func sendStatisticsOnFail(type:String) { - Statistics.logEvent(kStatDeeplinkCallMissed, withParameters: [kStatType : type, - kStatProvider: deeplinkURL.provider.statName]) + Statistics.logEvent(kStatDeeplinkCallMissed, withParameters: makeParams(type:type)) } }