What's new
- Robust attribution ↔ purchase linkage. Linkage now always uses the SDK's stable, device-scoped anonymous SpendOwl ID, independent of
setUserId. Attribution and purchases match correctly regardless of when (or whether) you set a user id — set it early, after login, or never. setUserIdis now reporting metadata. The id you pass is sent as a separateexternalUserIdfield on attribution and purchase events for reporting and lookups. It no longer affects how events are linked, so it's safe to call at any time (e.g. after login).
No API changes — setUserId(_:) keeps the same signature. Backward compatible: payloads persisted by older versions still replay correctly.
Note: requires the current SpendOwl backend (already live).