Overview
SpendOwl automatically observes StoreKit 2 transactions to track revenue for ROAS calculation. This works passively alongside other subscription SDKs like RevenueCat or Adapty.Automatic Tracking
Purchase tracking starts automatically when you callconfigure():
No additional code required. SpendOwl observes all StoreKit 2 transactions automatically.
How It Works
- User completes a purchase through StoreKit 2
- SpendOwl receives the transaction notification
- Transaction data (product ID, price, currency) is extracted
- Revenue event is sent to SpendOwl servers
- ROAS is calculated and displayed in your dashboard
Tracked Transaction Types
| Type | Tracked | Notes |
|---|---|---|
| Consumables | Yes | One-time purchases |
| Non-consumables | Yes | Lifetime purchases |
| Auto-renewable subscriptions | Yes | Initial and renewals |
| Non-renewing subscriptions | Yes | One-time subscriptions |
| Refunds | Yes | Negative revenue |
| Family Sharing | Yes | Shared purchases |
Currency Handling
SpendOwl handles currency conversion automatically:- Prices are captured in the user’s local currency
- Converted to USD using current exchange rates
- ROAS is always displayed in USD for consistency
Exchange rates are updated daily from European Central Bank data.
Works with Other SDKs
SpendOwl uses passive observation and doesn’t interfere with:- RevenueCat — Both can observe the same transactions
- Adapty — No conflicts
- Qonversion — Works alongside
- Custom StoreKit code — No changes needed
Revenue Attribution
Purchases are attributed to campaigns:- User installs from an Apple Search Ads campaign
- Attribution is captured by SpendOwl
- User makes a purchase (days or weeks later)
- Revenue is linked to the original campaign
Revenue / Ad Spend = ROAS
User ID Linking
When a user ID is set, purchases are linked to that user:Server-Side Validation
All transactions are validated server-side:- Transaction receipts are verified with Apple
- Fraudulent transactions are filtered
- Only valid revenue counts toward ROAS
Debugging Purchases
Enable logging to see purchase events:FAQ
Do I need to call any method after a purchase?
Do I need to call any method after a purchase?
No. SpendOwl observes transactions automatically. Just ensure the SDK is configured before purchases occur.
Are test purchases tracked?
Are test purchases tracked?
Sandbox purchases are tracked separately and don’t affect production ROAS. Use a test API key in development.
What about StoreKit 1?
What about StoreKit 1?
SpendOwl uses StoreKit 2 only. If your app uses StoreKit 1, transactions are not tracked. Consider migrating to StoreKit 2.
How are renewals handled?
How are renewals handled?
Auto-renewal transactions are tracked just like initial purchases. Each renewal adds to the user’s LTV.
Are refunds tracked?
Are refunds tracked?
Yes. Refunds are recorded as negative revenue and reduce the ROAS for the associated campaign.