     }
 
     func logError(_ name: String, message: String?, error: Error?) {
-        Analytics.logEvent("Error", parameters: [
+        logFbEvent("Error", parameters: [
             "name": name,
             "message": String(describing: message),
             "error": String(describing: error)
         ])
     }
 
+    fileprivate func logFbEvent(_ event: String, parameters: [String: Any]?) {
+        // Firebase event names must be snake cased and since AK is designed for multi-provider we
+        // have to convert to be safe.
+        var snakeCaseEvent = event.replacingOccurrences(of: "-", with: " ")
+        snakeCaseEvent = snakeCaseEvent.replacingOccurrences(of: "_", with: " ")
+        snakeCaseEvent = snakeCaseEvent.replacingOccurrences(of: " +", with: "_", options: .regularExpression, range: nil)
+        snakeCaseEvent = snakeCaseEvent.lowercased()
+        snakeCaseEvent = snakeCaseEvent.components(separatedBy: AnalyticsKitFirebaseProvider.eventCharacterSet).joined()
+        Analytics.logEvent(snakeCaseEvent, parameters: parameters)
+    }
+
 }

    }

    func logError(_ name: String, message: String?, exception: NSException?) {
        Analytics.logEvent("Exception", parameters: [
            "name": name,
            "message": String(describing: message),
            "exception": String(describing: exception)

import Firebase

class AnalyticsKitFirebaseProvider: NSObject, AnalyticsKitProvider {

    private static var eventCharacterSet: CharacterSet = {
        var cs = CharacterSet.alphanumerics
        cs.insert("_")
        return cs.inverted
    }()

    override init() {
        super.init()
