4.6 KiB
RevenueCat Plugin Integration Playbook (Godot Mobile Games)
For hackathon/game-jam mobile games that must monetize via RevenueCat. Based on research of the Godotx RevenueCat plugin (MIT, community-maintained) — verified August 2026.
Versions (pin these)
| Component | Version | Note |
|---|---|---|
| Godot | 4.7-stable | plugin is built against this |
| Godotx RevenueCat plugin | v2.2.x | github.com/FunkyMuse/godot-revenuecat (also on official Asset Library, id 4493) |
| Bundled RC iOS SDK | 5.79.0 | min iOS 15.0 |
| Bundled RC Android SDK | 10.10.0 | min Android SDK 24 |
Why this plugin
It wraps the official native RevenueCat SDKs and ships them as .xcframework (iOS) +
.aar (Android), managed through Godot's export-plugin pipeline — no C++/Java/Obj-C work
for us. It's thin glue: if it breaks, fork and patch it rather than replacing it.
⚠️ No first-party RevenueCat SDK exists for Godot. This community plugin is the pragmatic path; budget a spike to validate it BEFORE building game systems on top.
Install
- AssetLib in-editor → "Godotx RevenueCat" → Install & Enable
(or download release ZIP → copy
addons/,ios/plugins/,android/plugins/into project root) - Commit all three folders
- Run
godot --headless --path . --importto regenerate cache
Configure Export Presets
Both platforms need their plugin enabled — per preset:
- Android preset: enable the RevenueCat plugin AND
Gradle Build(native plugins require gradle) - iOS preset: enable the RevenueCat plugin
Verify with an actual headless export after setup (see exporting.md).
Store Setup Order (do it in this sequence)
- Create app in Google Play Console + App Store Connect
- Create IAP products there (e.g.,
premium_unlock,hints_10) - Create matching products + entitlement (
premium) + offering (default) in the RevenueCat dashboard; note each platform's public API key - Sandbox-test purchases with internal testers before writing more game code
Runtime Integration Skeleton
Read the addon's bundled README/API reference for exact method names — verify against the installed version, don't guess (see SKILL.md failure modes). The flow is always:
# autoload IapManager — adapt names to the installed plugin API
extends Node
const IOS_API_KEY := "appl_xxx"
const ANDROID_API_KEY := "goog_xxx"
signal entitlements_changed(is_premium: bool)
func _ready() -> void:
var key := IOS_API_KEY if OS.get_name() == "iOS" else ANDROID_API_KEY
_configure(key) # plugin configure/init call
check_entitlements()
func _configure(key: String) -> void:
pass # TODO: plugin init — see addons/godotx_revenue_cat README
func buy(product_id: String) -> void:
pass # TODO: purchase call → await result → check_entitlements()
func restore() -> void:
pass # TODO: restore purchases (App Store requires a restore button!)
func check_entitlements() -> void:
pass # TODO: fetch customer info → emit entitlements_changed
func show_paywall() -> void:
pass # TODO: present_paywall (plugin ships native paywall UI)
Wire entitlements_changed into game systems (unlock levels, remove ads, etc.).
Hackathon-Specific Requirements
- Judges must get a free trial OR a promo unlock for premium features:
- Simplest: make the paywall offer a trial; or add a hidden "promo code" input redeeming entitlement locally / via your own backend
- Demo video must show the real purchase flow on device (sandbox OK)
- Grand Prize judging uses RevenueCat-reported revenue → integrate early so revenue accrues
- Consider RevenueCat Ads tracking (AdMob ILRD → AdTracker) as an extra category entry
Failure Playbook
| Problem | Action |
|---|---|
| Plugin init fails on export | Check plugin enabled in BOTH presets; Android needs Gradle Build ON |
| Products not loading | Store products not yet approved/available to tester account; check dashboard mirroring |
| Purchase succeeds, entitlement stale | Call customer-info refresh after purchase; don't cache entitlements across sessions without refresh |
| iOS build missing plugin symbols | Re-export; confirm .xcframework copied by export plugin |
| Plugin abandoned/broken | Fork repo, patch (thin native glue), or pin last-good release tag |
Sources
- Plugin: github.com/FunkyMuse/godot-revenuecat · godot-x/revenuecat · Asset Library #4493
- Official SDKs: github.com/RevenueCat/purchases-ios · purchases-android · docs.revenuecat.com
- Engine ranking context: ship-a-ton-2026/docs/engine-research.md