When integrating Singular using official docs we have faced a few issues:
From the official docs it is not clear which API key we suppose to use. Singular has many types of API keys: SDK, Reporting API key, S2S API key, etc.
We were under impression that we should use Reporting API key located here: https://app.singular.net/#/react/api. On our integration page on Revenue Cat all events were green and in event logs it was indicated that Singular successfully accepts the events.
The problem was that we couldn’t find any rc_events on Singular Events page. We had raised a problem with Singular support and they confirmed that Reporting API key should be used as API key. After a few days they again replied to us saying that this is wrong and SDK API key should be used instead.
Would be nice to have more clear explanation on docs page regarding this issue.
IDFA for iOS
We don’t ask our users to provide access to IDFA, so we only collect IDFV. In your official integration with Singular if customer profile $idfa is empty you won’t send the rc_events to Singular at all. Feels like it is not the correct behaviour because Singular is capable of identifying users based on IDFV (link to their docs) as in case with other MMPs like AppsFlyer where $idfa is optional.
In our case we were setting $idfv manually via Purchases.setAttributes(...). What we did instead to fix this: we started using Purchases.collectDeviceIdentifiers() to set both $idfv and $idfa. Since we’re not asking our users to provide IDFA now all our customer profiles have $idfa as 00000000-0000-0000-0000-000000000000. And after that we can see that Singular receives iOS events.
What I am trying to say that it doesn’t make sense to have $idfa as required parameter for Singular integration.
Changing $idfa attribute
This one is more like a comment for people facing the same issue. If you’re worried that you won’t be able to change $idfa once it is saved as zeroes, seems like it is not the case.
On this page it is stated:
Device identifiers can't be changed once set
Once a device identifier is set for a subscriber, it can't be changed in order to keep these identifiers associated with the original installation. This allows RevenueCat to send events generated by a particular device to downstream integrations with a consistent identifier unaffected by uninstalls and reinstalls.
This is not true in case you first save $idfa as zeroes and then later obtain $idfa (after consent) and you save it with Purchases.collectDeviceIdentifiers(). We are able to change $idfa from zeroes to the actual one.