๐ธIn-App Purchases
Before reading this page, please make sure you've set up your RevenueCat account.
๐Setup RevenueCat App๐ง Bubble.io Plugin
[Element] Natively - Purchases
Events:
Purchase Success
Purchase Failed
Set Customer Success
Set Customer Failed
Purchase Cancelled
Customer ID Received
Get Price Success
Get Price Failed
Restore Purchase Success [iOS]
Restore Purchase Failed [iOS]
Paywall - purchase success
Paywall was not presented //Paywall was not presented.
Paywall - cancelled //Paywall was presented and the user cancelled without executing an action.
Paywall - error //Paywall was presented and an error occurred performing an operation.
Paywall - Entitlement ID missing //Only returned when using [Action] Show Paywall if needed and Entitlement ID is not provided.
Paywall - Offering ID was not found //Only returned when provided Offering ID is not valid.
Paywall - restore purchase success [iOS]
States:
Latest Transaction Id - Transaction Id after Purchase Package
Latest Customer Id - Customer Id after Set Customer ID or Purchase Package
Latest Error - Empty if no error
Latest GetPrice price - 9.99
Latest GetPrice price (Localized) - "$9.99" / "9.99 USD"
Latest GetPrice currency - "USD", "UAH", etc.
Latest PurchasePackage packageId
Actions:
Purchase Package - Initiate purchase of product or subscription
Old Product ID (Android) - Specify this field when you want to upgrade/downgrade the current Android subscription.
Set Customer ID - Link your user's id with RevenueCat customer
Customer Identifier - (We're recommending using a Current User's unique id to identify customers in the RevenueCat dashboard)
Reset Customer ID - Unlink Customer ID from a device
Get Package Price - Returns a price for specific product
Get Customer ID - Returns a current customer id
Show Paywall - displays the paywall
Offering ID - if not provided, will be shown the default offering.
Show Paywall if needed - automatically displays the paywall only if the user doesn't have an active entitlement
Offering ID - if not provided, will be shown the default offering.
Entitlement ID - this field is required.
Restore Purchase [iOS] - Restores purchases (Handled by RevenueCat automatically)
How to use?
Make sure you've set up your Revenue Cat for your app
Add revenuecat_apiKey in plugin settings. To find API Key, go to RevenueCat App > API keys > Secret API keys.
Call Set Customer ID
When the Set Customer Success event fires, call Purchase Package action
How to verify User's subscription?
RevenueCat - Verify Subscription
Customer ID - Revenue cat user id that was used on RevenueCat Login.
A new customer will be created if the customer with such ID does not exist. More details here
Entitlements ID - your entitlements id, more details here.
Returns a result as:
Product ID - text
Purchase Date - date
Grace Period Expires Date - date
Expiration Date - date
Is Active - yes / no (Expiration Date > Current Date)
Error - empty text if no error
Bubble Setup example:
On each User Login or first Signup you need to set the RevenueCat customer ID to your own user's unique id.

Purchase a subscription (package) with action

Verify user's subscription whenever you need it


If you have any issues and, for some reasons, purchases doesn't work. You can check Latest Error value from Natively Purchases element

You can also use RevenueCat API for your purpose (for example, validation of purchases)
๐ JavaScript SDK
NativelyPurchases
const purchases = new NativelyPurchases();
const login_callback = function(resp) {
console.log(resp.status); // SUCCESS or FAILED
console.log(resp.customerId); // Customer Id
// Empty if no error (should contain an error if status === "FAILED"
console.log(resp.error);
};
// Link your user with the customer on RevenueCat
const userId = "sdfdsr-2345-3rsd-fsd3432";
const userEmail = "[email protected]";
purchases.login(userId, userEmail, login_callback);
// Unlink your user with the customer on RevenueCat
const logout_callback = function(resp) {
console.log("Logged out");
}
purchases.logout(logout_callback);
// Get the current user's customer id (Useful in case you're not linking the user with the RevenueCat customer)
const customer_id_callback = function(resp) {
console.log(resp.customerId);
}
purchases.customerId(customer_id_callback);
// Make a purchase
const packageId = "$rc_monthly";
const oldProductID = "$rc_yearly"; // Android only. Specify this field when you want to upgrade/downgrade the current Android subscription.
const purchases_package_callback = function(resp) {
console.log(resp.status);
console.log(resp.transactionId); //Legacy. Will not have value in a recent build
console.log(resp.error);
};
purchases.purchasePackage(packageId, purchases_package_callback, oldProductID);
// Get price
const packageId = "$rc_monthly";
const price_callback = function(resp) {
console.log(resp.status); // SUCCESS / FAILED
console.log(resp.price); // "9.99"
console.log(resp.localized); // "$9.99" or "9.99 USD"
console.log(resp.currency); // "USD"
console.log(resp.error); // Empty if no error
};
purchases.packagePrice(packageId, price_callback);
// Restore a purchase
const restore_callback = function(resp) {
console.log(resp.status); // SUCCESS / FAILED
console.log(resp.customerId);
console.log(resp.error);
};
purchases.restore(restore_callback);
// --- Paywalls ---
const show_paywall_callback = function(resp) {
console.log(resp.status); // SUCCESS or FAILED
// Contains a result message if status === "FAILED" (not_presented, cancelled, error) or status === "SUCCESS" (purchased, restored)
console.log(resp.message);
// Empty if no error (should contain an error if status === "FAILED", e.g. entitlement_id_missing, offering_not_found)
console.log(resp.error);
};
// Show a paywall
const offeringId = "my_main_offering"; // Optional: specify which offering to show. If not specified, the default will be used
const showCloseButton = true; //This parameter will be overwritten by the paywall's template
purchases.showPaywall(showCloseButton, offeringId, show_paywall_callback);
// Show a paywall if the user doesn't have an active entitlement
const entitlementId = "pro_access"; // This parameter is required
const showCloseButton_ifNeeded = true; // This parameter will be overwritten by the paywall's template
const offeringId_ifNeeded = "my_main_offering"; // Optional: specify which offering to show. If not specified, the default will be used
purchases.showPaywallIfNeeded(entitlementId, showCloseButton_ifNeeded, offeringId_ifNeeded, show_paywall_callback);How to verify subscription with JS?
You need to fetch a user from RevenueCat API and verify it's entitlements. More details can be found here.
Where to find Package ID?
You can find it in your RevenueCat App dashboard, more details here

How to link Stripe & RevenueCat (Bubble.io)?
How to link Stripe purchases with RevenueCat?
Create a request in API Connector (more details about the endpoint you can find here)

Where fetch_token & app_user_id is:

Last updated
Was this helpful?