Plans V3: Sample Flows

This article presents possible use cases and corresponding sample flows that you can support. It provides a useful starting point as you plan your implementation.

Import plans from external systems

You can create plans using data stored in external systems. This is useful when migrating to Wix from another platform or maintaining data across multiple platforms.

To import plans from an external system:

  1. Prepare your plan data as an array of plan objects, ensuring each has the required fields: pricingVariants and visibility.

  2. Iterate through your plan array, calling Create Plan for each plan. To comply with rate limits, send the requests at least 1 second apart from each other.

  3. Set up ongoing synchronization using events to keep both systems in sync.

Sync pricing plans across multiple systems

You can synchronize plan data between Wix and external systems to maintain consistency across platforms.

To sync pricing plans with an external system:

  1. Call Query Plans to retrieve all existing plans from Wix.

  2. Store the plan data in your external system, ensuring you save the plan's id and revision for future updates.

  3. Set up event listeners for Plan Created, Plan Updated, and Plan Deleted events to automatically sync changes.

Note: When receiving a Plan Updated event, use the revision number to avoid conflicts and update only the changed fields in your external system.

Organize plans with tags

You can tag plans to group them by campaign, audience, or lifecycle stage, then retrieve each group without hardcoding plan IDs.

To organize plans with tags:

  1. Create the tags you need with the Tags API, passing wix.pricing_plans.v3.plan as the fqdn, and store the returned IDs. A plan references tags by ID only.

  2. Call Bulk Update Plan Tags with up to 100 plan IDs, passing each tag ID in either assignTags.publicTags or assignTags.privateTags. Site members and visitors can read public tags, so use private tags for internal classification. Check itemMetadata.success on each result, since individual plans can fail while the rest succeed.

  3. To tag plans you can't enumerate, call Bulk Update Plan Tags By Filter with a filter instead of IDs. The response returns a jobId rather than per-plan results, so poll the job to confirm completion.

  4. Retrieve a group by calling Query Plans with a $hasSome filter on tags.publicTags.tagIds or tags.privateTags.tagIds. Use $hasAll to require every tag in the list.

  5. To keep an external system in sync, subscribe to Plan Tags Modified. It delivers the assigned and unassigned tags for each change, so you don't have to diff the plan's full tag list yourself.

Note: Don't use Update Plan to add a single tag. It replaces the plan's whole tag list, which drops tags set by other flows.

Last updated: 1 September 2026

Did this help?