Hooking up Superwall events to 3rd party tools

SuperwallKit automatically tracks some internal events. You can view the list of events here. We encourage you to also track them in your own analytics by implementing the Superwall delegate. Using the handleSuperwallEvent(withInfo:) function, you can forward events to your analytics service:

extension SuperwallService: SuperwallDelegate {
  func handleSuperwallEvent(withInfo eventInfo: SuperwallEventInfo) {
    print("analytics event called", eventInfo.event.description)
    MyAnalyticsService.shared.track(
      event: eventInfo.event.description,
      params: eventInfo.params
    )
  }
}

You might also want to set user attribute to allow for Cohorting in 3rd Party Tools

Alternatively, if you want typed versions of all these events with associated values, you can access them via eventInfo.event:

func handleSuperwallEvent(withInfo eventInfo: SuperwallEventInfo)  {
  switch eventInfo.event {
    case .firstSeen:
      break
    case .appOpen:
      break
    case .appLaunch:
      break
    case .identityAlias:
      break
    case .appInstall:
      break
    case .sessionStart:
      break
    case .deviceAttributes(let attributes):
      break
    case .subscriptionStatusDidChange:
      break
    case .appClose:
      break
    case .deepLink(let url):
      break
    case .triggerFire(let placementName, let result):
      break
    case .paywallOpen(let paywallInfo):
      break
    case .paywallClose(let paywallInfo):
      break
    case .paywallDecline(let paywallInfo):
      break
    case .transactionStart(let product, let paywallInfo):
      break
    case .transactionFail(let error, let paywallInfo):
      break
    case .transactionAbandon(let product, let paywallInfo):
      break
    case .transactionComplete(let transaction, let product, let type, let paywallInfo):
      break
    case .subscriptionStart(let product, let paywallInfo):
      break
    case .freeTrialStart(let product, let paywallInfo):
      break
    case .transactionRestore(let restoreType, let paywallInfo):
      break
    case .transactionTimeout(let paywallInfo):
      break
    case .userAttributes(let atts):
      break
    case .nonRecurringProductPurchase(let product, let paywallInfo):
      break
    case .paywallResponseLoadStart(let triggeredPlacementName):
      break
    case .paywallResponseLoadNotFound(let triggeredPlacementName):
      break
    case .paywallResponseLoadFail(let triggeredPlacementName):
      break
    case .paywallResponseLoadComplete(let triggeredPlacementName, let paywallInfo):
      break
    case .paywallWebviewLoadStart(let paywallInfo):
      break
    case .paywallWebviewLoadFail(let paywallInfo):
      break
    case .paywallWebviewLoadComplete(let paywallInfo):
      break
    case .paywallWebviewLoadTimeout(let paywallInfo):
      break
    case .paywallWebviewLoadFallback(let paywallInfo):
      break
    case .paywallProductsLoadStart(let triggeredPlacementName, let paywallInfo):
      break
    case .paywallProductsLoadFail(let triggeredPlacementName, let paywallInfo):
      break
    case .paywallProductsLoadComplete(let triggeredPlacementName):
      break
    case .paywallProductsLoadRetry(let triggeredPlacementName, let paywallInfo, let attempt):
      break
    case .surveyResponse(let survey, let selectedOption, let customResponse, let paywallInfo):
      break
    case .paywallPresentationRequest(let status, let reason):
      break
    case .touchesBegan:
      break
    case .surveyClose:
      break
    case .reset:
      break
    case .restoreStart:
      break
    case .restoreFail(let message):
      break
    case .restoreComplete:
      break
    case .configRefresh:
      break
    case .customPlacement(let name, let params, let paywallInfo):
      break
    case .configAttributes:
      break
    case .confirmAllAssignments:
      break
    case .configFail:
      break
    case .adServicesTokenRequestStart:
      break
    case .adServicesTokenRequestFail(let error):
      break
    case .adServicesTokenRequestComplete(let token):
      break
    case .shimmerViewStart:
      break
    case .shimmerViewComplete:
      break
    }
}

Wanting to use events to see which product was purchased on a paywall? Check out this doc.