New API: Pricing Plans Backend Functions and Events

Hey, we’re excited to announce our new APIs for managing pricing plans!

These APIs work seamlessly with our existing paid plans APIs, which you can use to customize how your site members order and purchase pricing plans.

We now added plan management functions and backend events to Velo, so that you can perform managerial activities with APIs on your pricing plans, just as you do use the Dashboard. These activities include:

  • Creating and updating plans

  • Hiding, showing, and archiving plans

  • Rearranging the order plans appear on the site page

  • Deleting plans

  • Setting which plan is the primary plan, and clearing the primary plan

  • Getting statistics about a plan

  • Getting, listing, and querying plans.

Let us know what do you think? Thanks.

Hi I´ve started a new project tha is and online school
i´ll have a bunch of diferent courses = differents plan prices

but i´m having a problem
i need that the member who bought a course ( plan ) see only the course that he has bought.

i´ve tried different codes for it but i´m not having sucess

i´ve got diferrents Database for each course, because it´s linked with dynamic pages with all the course content
And have 1 Data for the member

but i-m having trouble to show for that expecific member only the course or courses that he bought

i´ve bought a free course and a 100 U$ course

in my member page nedd to be showed only these 2 courses not all the courses that i-ve got

it´s that possible ?

Thanks a lot


It should be possible. Please write me an email at antanasd (at) and I will try to help.

I can’t find where your email is .

@duda-aleo it’s

Hi there @antanasd ,
I’m on a very very tight deadline and still cant make the plans wok correctly.

I’m unable to set which plans are primary and so.
Right now im trying to build them with repeaters and dynamic pages and it doesn’t seem to work either.

What I’m trying to do:

  • Set a basic plan
  • Set a premium plan (if you have basic)
    -Show only the basic plan on the plans page
    -show only the premium plan on the members area
  • delete archived plans
  • Archived plans shouldn’t display on members permission for pages.

any ideas?

Thank you!!!

Hello, you can find information how build a custom package picker here

Does that help?

hi @antanasd !
Thank you for your response

I’ve already tried that and couldn’t make it work.

Would you mind taking a look?

I haven’t followed the all items (with repeater instructions) as they are working fine without any coding.


export function multiply(factor1, factor2) {
return factor1 * factor2;

// Execute the sample function above by copying the following into your page code

import {multiply} from ‘backend/events’;

$w.onReady(function () {

multiply(4,5).then(product => { 
      // Logs: 20 
.catch(error => { 



  • Backend code in events.js *

// For inserting data into a collection.
import wixData from ‘wix-data’ ;

// The onPlanPurchased() event is fired when a plan
// is purchased, or a free plan is ordered.
// Get the order information
// from the event’s order object.

export function wixPaidPlans_onPlanPurchased(event) {

// The PlanEvents collection has a title field,
// in which we insert the type of transaction.
// The collection also has a data field,
// where we will insert information about the order
// from the event’s order object (json).

if (event.order.price.amount === 0 ) {
let orderData = {
“title” : “Free plan purchased” ,
“data” : event.order
wixData.insert( “Tracking purchases” , orderData);

} else {
let orderData = {
“title” : “Regular plan purchased” ,
“data” : event.order
wixData.insert( “Tracking purchases” , orderData);

On Item page:
#dataset1 - Plans - Planestestimonial
#tracking - Purchases - Tracking Purchases
#comprar -buy btn

import wixWindow from ‘wix-window’ ;
import wixPay from ‘wix-pay’ ;
import wixPaidPlans from ‘wix-paid-plans’ ;
import wixUsers from ‘wix-users’ ;

$w.onReady( () => {

const currentPlanObject = $w( “#dataset1” ).getCurrentItem();
const planId = currentPlanObject._id;
const planPrice = currentPlanObject.price;

$w( ‘#comprar’ ).onClick((event) => {
let user = wixUsers.currentUser;
let isLoggedIn = user.loggedIn;
if (!isLoggedIn) {
wixUsers.promptLogin().then(() => {
processPlan(planId, planPrice);
} else {
processPlan(planId, planPrice);

function processPlan(myId, myPrice) {

if (myPrice > 0 ) {
wixPaidPlans.orderPlan(myId).then(orderObject => {
wixWindow.openLightbox( “confirm” , orderObject)
.then((goForIt) => {
if (goForIt) {
} else {
wixPaidPlans.orderPlan(myId).then(orderObject => {
wixWindow.openLightbox( “congrats” , orderObject);



I’ve already created a post

And its been more than a week since I asked wix support assistance.
We are under a very (very!) tight agenda.
I would deeply appreciate your help on this matter.

Thank you!!!