Generated banner for Wix Manage
Generated logo for Wix Manage

Wix Manage

WixOfficialPublished by Wix

  • Skill
  • Tool integration
  • Automation and integrations
  • MIT
  • Low risk

From the author

REST recipes to configure and manage a Wix site's business solutions — stores, bookings, donations, payments, CMS, and more. Open the matching recipe for the exact endpoint, method, and payload before calling — never guess a Wix API, never write Wix dashboard URL from memory. Routes to: automations, stores, bookings, donations, get-paid, CMS, contacts, forms, media, app-installation, custom-apps, pricing-plans, restaurants, ricos rich-content, sites, collaborators, blog, calendar, domains, events, site-properties, ecommerce, marketing, online-programs, google-ads, google-business-profile, analytics, accessibility, seo, dashboard-navigation.
— the description by Wix

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

The wix-manage skill provides a structured library of REST API recipes designed to help developers and agents interact with Wix business solutions. It covers a wide range of administrative and configuration tasks, including site setup, entity management, SEO, analytics, accessibility, and dashboard navigation. By providing specific endpoint, method, and payload patterns, it ensures accurate API usage for backend integrations, data synchronization, and automated site management.

What it does

  • Provides standardized REST API recipes for configuring Wix business apps like Stores, Bookings, and CMS.
  • Facilitates administrative tasks such as bulk updates, contact labeling, and data migrations.
  • Offers guidance on managing SEO tags, URL redirects, and Google Search Console connections.
  • Enables programmatic accessibility scanning and reporting for Wix sites.
  • Generates direct dashboard navigation links for various Wix business solutions.
  • Supports backend integrations through server-to-server automations and data synchronization.

When to use it

  • When you need to perform administrative or configuration tasks on a Wix site via REST API.
  • When you need to retrieve or update business data like products, services, or contacts.
  • When you need to provide a user with a direct link to a specific page in their Wix dashboard.
  • When you are building backend integrations or automations for a Wix site.
  • When you need to audit or manage SEO, accessibility, or analytics configurations.

Advantages

  • Reduces errors by providing exact API endpoints, methods, and payload structures.
  • Eliminates the need to guess API paths or manually construct dashboard URLs.
  • Ensures consistent and reliable interaction with Wix business entities.
  • Simplifies complex workflows like multi-step booking service setup or accessibility scanning.
  • Provides a clear separation between management operations and frontend display logic.

Usage examples

“How can I update the SEO title for my homepage?”
The agent uses the Manage SEO Tags recipe to identify the homepage, retrieve current tags, and apply the requested update via the appropriate API endpoint.
“Where can I find my site's booking calendar in the dashboard?”
The agent uses the Bookings Dashboard Navigation recipe to generate a direct link to the calendar page within the user's Wix dashboard.
“Scan my site for accessibility issues.”
The agent initiates an accessibility scan using the Accessibility Scans API, polls for completion, and reports findings categorized by severity.
“List all my installed Wix apps.”
The agent calls the List Installed Apps API and returns a summary of all apps currently active on the site.

Install

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/wix/wix-manage/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip wix-manage.zip -d .agents/skills

Documentation by Wix

Management Recipes Index

Standard call shape for every curl example across these recipes. The <AUTH> placeholder in example curls is shorthand for the Authorization header only; body-bearing calls also need Content-Type: application/json.

What Are Management Recipes?

Management recipes are for REST API operations that configure, set up, and manage Wix business entities on your site. These recipes use REST API calls and are designed for:

  • Site setup and configuration — Initial setup of stores, bookings, payments, and other business apps

  • Entity management — Creating, updating, and deleting products, services, staff members, pricing plans

  • Administrative operations — Bulk updates, contact labeling, data migrations

  • Backend integrations — Server-to-server automations, webhooks, data synchronization

These recipes do NOT cover frontend development or SDK usage for displaying data to users.


App Installation

Install Wix Apps

Installs Wix apps on a site using Apps Installer API. Covers enabling Velo (Wix Code), app installation, and common app definition IDs.

List Installed Apps

Lists all apps installed on a site using Apps Installer API. Useful for verifying app installations before making API calls and diagnosing authorization errors.

App Management Dashboard Navigation

"Builds direct links to the app-management dashboard pages on manage.wix.com — the App Market and the installed-apps management page. Pairs installed apps with the List Installed Apps read API. Use when the user asks where something is in the Wix dashboard, wants a direct link to a dashboard page, or you need a dashboard URL to include with the result of an API operation."


Custom Apps

Use App Tools

"Discovers and runs app tools, the actions and lookups that apps installed on a Wix site expose to AI agents, for example converting a price with a pricing app or tracking a package with a shipping app. Covers listing the site's app tools, choosing one by its description, and running it with a payload built from its input schema. Use when the user asks for something an installed app provides rather than a built-in Wix feature, asks what their apps can do, or names an app or app tool."


SEO

Manage a Wix Site's SEO Tags

Read and update SEO titles and tags at the right level, and publish static-page SEO changes. "Change my site's SEO title" names no page, so its default is one question and no write, also under instructions to work autonomously or pick defaults: ask whether the user means the homepage, a specific page, or a page-type pattern, with no API call; site-level tags accept meta tags only, never titles. Discover item IDs and pattern variables, preserve existing tags, and report resolved tags with their sources.

Manage URL Redirects on a Wix Site

"Retrieve, create, and delete URL redirects on a Wix site using the public SEO Redirects API. Covers exact and group redirects, language-scoped redirects for multilingual sites, bulk creates of up to 100 and bulk deletes of up to 500, and the change flow for a redirect that already exists. This API has no query, search, or update method: List Redirects is the only read-many. Redirects do not chain, so creating one that points at a path another redirect starts from permanently deletes that other redirect; list and check before every write."

Manage Google Search Console for a Wix Site

"Connect a Wix site to Google Search Console and drive its setup through the public GSC Connection and Site Readiness APIs: check connection and readiness, start the Google authorization, verify ownership, add the property, submit the sitemap, request indexing, read search performance, run URL inspection, recover a stale connection, or disconnect. The site owner authorizes in their own browser via a single-use connect URL."

Generate AI SEO Suggestions for a Wix Site

"Generate AI-written SEO text for a Wix site through the public Tag Suggestions and Page Optimization APIs: title tag and meta description options for a page, alt text for the images of a page, store product, or blog post (one image or up to 20 per call), corrected heading levels for a page's headings, and a whole-page rewrite of title, description, headings, and body text aimed at the page's focus keyword, returned as before/after pairs. Use it when the user asks for SEO title or meta description options or ideas, or wants to improve, optimize, audit, or write the SEO text of a page or the homepage: Wix's AI writes the texts. Suggestions are returned for review; applying one is a separate SEO tags write."


Accessibility

Scan a Wix Site for Accessibility Issues

Run a Wix accessibility scan for a full site, one page, or every page in any supported page collection, including products, blog posts, booking services, events, and restaurant pages. Poll the asynchronous scan to completion, report failed pages separately, retrieve prioritized findings, and use the returned fix guidance to help the user resolve and verify issues.


Analytics

Query Site Analytics

Retrieve a Wix site's analytics through the Semantic Model API. Covers listing semantic models, inspecting a model's schema (measures, dimensions, parameters), and querying model data with a required time interval, filters, sorting, paging, and human-readable formatting.

Analytics Dashboard Navigation

"Builds direct links to Wix Analytics dashboard pages on manage.wix.com — highlights, reports, per-domain overviews (traffic, behavior, sales, marketing), and performance insights/benchmarks. Pairs analytics data with its read API so you can answer a question via API and hand back a 'see it in your dashboard' link. Use when the user asks where something is in the Wix dashboard, wants a direct link to a dashboard page, or you need a dashboard URL to include with the result of an API operation."


Blog

How to Create Blog Posts

Creates and publishes blog posts using Blog Posts API. Covers resolving the required author memberId (including creating an author member when the site has none), Ricos rich content format, image upload via Media Manager, category/tag assignment, and bulk post creation.

Find and Update Blog Posts

"Finds a site's live blog posts and changes existing posts and drafts through the Wix Blog REST APIs. Covers looking up published posts by title, publish date, category or tag (including the newest and the first post ever), editing an existing post (adding or changing a sentence, paragraph or link in its text, its cover image, excerpt, categories and tags), publishing a draft, moving a live post back to drafts, and deleting or restoring posts. Use whenever the user names a post that already exists on the blog: to find it, change its content, publish, unpublish or delete it; writing a new post is How to Create Blog Posts."

Blog Dashboard Navigation

"Builds direct links to Wix Blog dashboard pages on manage.wix.com — posts list (published and draft tabs), categories, tags, writers, comment moderation, blog analytics, monetization, and settings. Pairs each main Blog entity with its read API so you can fetch an entity and hand back a 'view it in your dashboard' link. Use when the user asks where something is in the Wix dashboard, wants a direct link to a dashboard page, or you need a dashboard URL to include with the result of an API operation."


Bookings

Booking Service Policy Setup

Sets up booking policies, cancellation rules, and waitlist configuration using the Booking Policies API — query for the (default) bookingPolicy entity, then PATCH it with its revision. Covers cancellationPolicy, reschedulePolicy, booking-notice limits, waitlistPolicy, and participants limits — e.g. "customers can cancel up to 24 hours before".

Bookings Staff Setup

"Creates staff members and configures custom working hours using Staff API + Calendar Events API. Critical two-step process: create staff → assign schedule → create working hours events."

Create and Update Booking Services

"Creates and updates Wix Bookings services of every type — appointments, classes and courses — from a plain request such as 'a 60-minute consultation for $75', 'a yoga class for 12 people every Tuesday' or 'a 6-week photography course'. Covers choosing the service type, defaults for what the request leaves out, pricing (free, fixed, free-to-paid), staff, capacity, duration, categories, visibility, images, scheduling class and course sessions on the calendar, and changing existing services."

Check Bookings Availability (and Diagnose Issues)

"Answers whether an appointment-based Wix Bookings service currently has bookable availability — the primary question — and diagnoses the cause only when there's no availability or the owner asks why. To diagnose, first rules out service-level blockers the availability endpoint can't see (service hidden, online booking off), then runs DiagnoseAvailability for ordered, machine-readable staff/setup reasons, with a manual fallback for booking-policy and capacity causes. Use when someone asks whether a service has availability, or why a service shows no times / customers can't book it."

End-to-End Booking Flow

Books and settles appointments, classes and courses with the site owner's credentials — an operator managing bookings, or server-side code booking as the owner. Covers service discovery, availability with Time Slots V2, creating the booking, and settling it by direct confirmation or by taking payment through eCommerce checkout. A visitor booking for themselves needs a visitor token instead; this recipe links that path.

External Calendar Integration

OAuth-based integration with Google Calendar, Microsoft Outlook, and Apple Calendar. Covers authentication flows, sync configuration, and bidirectional event management.

Multi-Resource Service Creation

Creates resource types and individual resources using Resources API. Enables services that require multiple resources (rooms + equipment + staff) with automatic allocation.

Bookings Dashboard Navigation

"Builds direct links to Wix Bookings dashboard pages on manage.wix.com — services list, edit a specific service, calendar, booking list, staff, availability, resources, and settings pages. Pairs each main Bookings entity with its read API so you can fetch an entity and hand back a 'view it in your dashboard' link. Use when the user asks where something is in the Wix dashboard, wants a direct link to a dashboard page, or you need a dashboard URL to include with the result of an API operation."


Calendar

Configure Default Business Hours

Uses Calendar Events API to create WORKING_HOURS events on the business schedule. Covers the critical distinction between Calendar Events API (correct) vs Site Properties API (incorrect) for setting base availability.

Dashboard links for calendar surfaces (availability, default business hours) are in Bookings Dashboard Navigation.


CMS

CMS Data Items CRUD

"Add, query, update, and delete items in CMS collections, one at a time or in bulk. Also covers counting items, upserting with bulk save, truncating a collection, aggregating data with a pipeline, linking items through single- and multi-reference fields, and reading items with their referenced items expanded."

CMS eCommerce Catalog Integration

The recommended way to sell existing CMS collection items (tickets, bookings, memberships) through Wix checkout. Add the CATALOG plugin to convert any CMS collection into purchasable products with cart and payment integration.

CMS Schema Management

Create and modify CMS collection structures. Covers listing collections, creating collections with fields, adding/removing fields (including single- and multi-reference fields that link two collections), and updating collection settings.

CMS Draft & Publish Workflow (Draft Items plugin)

"Interact with CMS collections that gate their items behind a draft/publish workflow via the Draft Items plugin. Covers detecting the plugin, locating the paired drafts collection, reading published vs draft items, authoring/editing drafts, and publishing, unpublishing, reverting, and deleting items. Key endpoints: /wix-data/v2/items/publish-draft, /wix-data/v2/items/unpublish, /wix-data/v2/collections/add-draft-items-plugin, and the paired drafts collection referenced by draftItemsPluginOptions.draftsCollectionId."

CMS Dashboard Navigation

"Builds direct links to the Wix CMS (Content Manager) dashboard pages on manage.wix.com — the collections list and a specific collection's items view. Pairs collections and data items with their read APIs so you can fetch data and hand back a 'view it in your dashboard' link. Use when the user asks where something is in the Wix dashboard, wants a direct link to a dashboard page, or you need a dashboard URL to include with the result of an API operation."


Contacts

  • Site members (is someone a member, list or count members, approve a join request, block or unblock a member, change the name a member shows on the site, add a member) → use Find and Manage Site Members. A contact is not always a member: for people who are not members, use the contacts recipes below.

Bulk Delete Contacts

Deletes multiple contacts using filter-based bulk delete. Covers safe deletion patterns, GDPR compliance, soft delete alternatives, and batch processing strategies.

Bulk Label and Unlabel Contacts

Creates contact label definitions or adds/removes labels from matching contacts. Use Find or Create Label for label creation alone; use bulk labeling only when the user requests contact assignments.

Create a Contact

Creates a contact with the Contacts API. Covers the minimum identifying fields, the single-object shape of email and phone, and adding a physical address with the ISO 3166-2 subdivision format required for state, region, and province codes.

Update a Contact

Updates an existing contact's email, phone, name, or address with the Contacts API. Covers locating the contact when the user identifies it by name, passing its current revision, and the ISO 3166-2 subdivision format required for state, region and province codes.

Find Contacts

"Finds a site's contacts and answers questions about them: one contact by name, email or phone, contacts in a city, state or country, contacts with a label, birthdays, site members or email subscribers among the contacts, how many contacts match, every contact for an export, and possible duplicate contacts. Covers which contact fields can be filtered, how name matching works, paging through every result, and which fields the answer reads. Use when the user asks to find, look up, list, count or export contacts, wants a contact's details such as their address, or needs a contact's ID for another task such as their bookings or orders."

Find and Manage Site Members

"Finds a site's members and manages their access: one member by login email or name, the list of members with their emails, status and join dates, how many members a site has, pending, approved and blocked members, approving a pending member, blocking or unblocking a member, adding a member, and changing the name a member shows on the site. Covers which member fields can be filtered, the fieldsets that return email and status, and the member ID other tasks need. Use when the user asks whether someone is a member, wants to see or count their site members, approve a join request, block or unblock someone, add a member, or needs a member's ID for a task other than writing a blog post."

Contacts Dashboard Navigation

"Builds direct links to Wix Contacts (CRM) dashboard pages on manage.wix.com — the contacts list, a specific contact's view page, contact import, and the segments page. Pairs each main contacts entity with its read API so you can fetch an entity and hand back a 'view it in your dashboard' link. Use when the user asks where something is in the Wix dashboard, wants a direct link to a dashboard page, or you need a dashboard URL to include with the result of an API operation."


Dashboard Navigation

Dashboard URLs are recipe data, not general knowledge. A manage.wix.com route is an app-registered slug that appears in no API reference and cannot be derived from the entity's name or its API path (Forms pages live under wix-forms, not contacts/forms; Stores products under wix-stores/products). So for every request for a dashboard link — even one that needs no API call, and even when a route feels obvious — open the solution's dashboard-navigation recipe below and copy the route from its table. Answering from memory is the one failure mode these recipes exist to prevent.

Dashboard Navigation

"Entry point for building direct links into a site's Wix dashboard (manage.wix.com). Documents the shared URL structure for all dashboard pages (site and account level, app-ID fallback, entity deep links, machine-readable routes.json) and routes to a per-business-solution recipe for every covered solution — bookings, stores/ecommerce, events, blog, pricing plans, restaurants, CMS, contacts, forms, marketing, get paid, analytics, google ads, app management, site settings, sites, and domains. Use when the user asks where something is in the Wix dashboard, wants a direct link to a dashboard page, or you need a dashboard URL to include with the result of an API operation."


Domains

Analyse Domain

Report on the domains in the user's own Wix account — what kind a domain is, which site it is on, when it expires and whether it renews — for one domain, or by listing and filtering the account's domains.

Assign Domain

Connect a domain the user already owns to one of their Wix sites, as its primary domain or as a redirect — the starting point for every "connect my domain to my site" request, whether or not a domain is named; change which of a site's domains is primary; move a domain from one site to another; or take a domain off its site.

Check Domain Availability

Answer whether a domain name, or several at once, is available to register through Wix — a stand-alone "is example.com available?" question with no request to buy or connect.

Domain Search, Purchase and Connect

Buy a domain through Wix — intent, suggestions, site resolution, registration, privacy, cart and checkout — or bring a domain registered elsewhere into the Wix account with the dashboard connect link, once Assign Domain finds it is not there yet. A request to connect a domain the user owns to their site starts at Assign Domain. Availability checks are not done here: they all use Check Domain Availability.

Domains Dashboard Navigation

"Builds direct links to the domain-management pages on manage.wix.com — the site-level domain settings page and the account-level My Domains page. Pairs domain search/purchase with its read APIs. Use when the user asks where something is in the Wix dashboard, wants a direct link to a dashboard page, or you need a dashboard URL to include with the result of an API operation."


eCommerce

Routing — pick the right entry point:

  • Any sales/business improvement request (boost sales, promotions, help my business, holiday deals, improve revenue, discounts, shipping, coupons, clearance, gift cards) → use Recommend: eCommerce Strategy. This is the default entry point — it analyzes ALL domains (discounts, shipping, gift cards) and generates cross-domain recommendations. Do NOT ask clarifying questions.

  • Traffic acquisition is NOT an eCommerce-strategy request ("grow my traffic", SEO, ads, social, content) → do NOT use Recommend: eCommerce Strategy; it only converts visitors a store already has. Route these to marketing.

  • Pricing & promotions (coupons, discount rules, ribbons, sales) → use the Pricing & Promotions dispatcher.

  • Shipping setup (rates, regions, pickup, free shipping, fix coverage) → use the Shipping dispatcher.

  • Orders (find an order by its number, order history, what a customer bought, unpaid or unshipped orders, units sold, sales reports and exports) → use Find and Report on Orders. Totals and trends that are already aggregated (revenue over time, order count, AOV) → use Query Site Analytics.

  • Gift cards ("should I sell gift cards", "add a gift card", "what amounts should my gift card have") → these are recommendations, so they go through Recommend: eCommerce Strategy, which activates its GIFT_CARDS domain and loads the gift-cards goal itself. Issuing/redeeming an individual gift card is the Gift Cards API, not a recommendation.

eCommerce: Load Context

L1 loader — loads general site data (siteId, country, currency, industry, catalog analytics) needed by every eCommerce category. Each category dispatcher loads this before tag-matching; runs once per session.

Recommend: eCommerce Strategy

Entry point for all eCommerce recommendation requests. Unified skill that analyzes site data across ALL domains (discounts + shipping + gift cards), generates up to 5 cross-domain recommendations, and persists them to the tracking database. Covers discount strategies (seasonal, upsell, stock mover, bundling), shipping optimization (coverage gaps, free shipping, rate strategy, carrier backup), AND selling gift cards (denominations sized from the site's own AOV and catalog prices). Use this for business improvement requests about earning more from existing visitors. Traffic acquisition (SEO, ads, social, content) is out of scope — route "grow my traffic" to marketing.

Pricing & Promotions

Routes discounts, coupons, sales and bundles to promotion recipes, and visual product ribbons to the Catalog Ribbons API. Load this dispatcher for mixed pricing/refund/payment/product-price/shipping requests to choose the appropriate APIs.

Shipping

Dispatcher — routes shipping-setup requests (rates, regions, pickup, free shipping, fix coverage, optimize rates) to the right leaf recipe. The Shipping Options + Delivery Profiles APIs have no public docs page; ecom-shipping-api.md is the authoritative inline reference.

Find and Report on Orders

"Finds a Wix site's eCommerce orders and turns them into answers and reports: one order by its number, orders in a date range, the orders of one buyer, orders that contain a product, unpaid or unfulfilled orders, and sales totals such as units sold per product or revenue for a period. Covers which order fields can be filtered, paging through every result, and which fields a report reads. Use when the user asks about a specific order, their order history or what customers bought, or wants a sales report or an export built from their store's orders."

<details> <summary>Internal skills (loaded automatically by the dispatchers / orchestrator above — do NOT use directly)</summary>

Pricing & promotions leaves (loaded by the Pricing dispatcher or by the strategy orchestrator)
Gift-cards leaf (loaded by the strategy orchestrator when it activates the GIFT_CARDS domain)
  • Goal: Sell Gift Cards — existing-product gate (one per site), eligibility, denomination sizing from AOV / catalog prices, no-expiry-by-default policy, and the mapping onto Create Gift Card Product

Shipping leaves (loaded by the Shipping dispatcher)
Cross-cutting tracking
  • API: Recommendation Tracking — load BEFORE generating any recommendation; persists PROPOSED state and tracks MarkExecuting → MarkDone/MarkFailed.

</details>

Dashboard links for eCommerce surfaces (orders, abandoned checkouts, gift cards, shipping, tax, checkout settings) are in Stores Dashboard Navigation.


Donations

Create and Update Donation Campaigns

Create, inspect, update and archive Wix Donations campaigns, including suggested amounts and impact text, custom limits, giving frequencies, goals, donor notes, fee coverage and imagery.


Events

Create an Event with the Wix Events API

"Creates an event with the Wix Events V3 API — one-off or recurring, RSVP, ticketed, registration-free or with external registration — including date and time, venue or online location, guest limit, description and ticket tiers. Covers the exact field shapes and the API's misleading validation messages. Use when the user wants to create or set up an event, an information-only event, or a repeating event — including a weekly workshop, class or meetup series held on set dates at a venue or online; a Bookings class or course is booked per session instead."

Manage Wix Events — Publishing, Cancelling, Cloning and Counting

"Operates on Wix events that already exist with the Wix Events V3 API — finding (by name or date), updating (date, venue, main image, description, page settings), controlling registration (close, reopen, registration-free, external, members-only, limits), switching between RSVP and ticketed (a new event — ask before creating it), publishing, cancelling, deleting, cloning and counting, including single occurrences of a recurring event. Use to close registration, move or cancel an event, or change how guests register."

Manage Event Tickets

"Manages the ticket types of a ticketed Wix event with the Ticket Definitions V3 API — adding, editing, repricing, hiding, reordering and deleting tickets, scheduling or ending ticket sales, and changing the ticket currency. Use when the user wants to add early-bird, VIP, child or donation tickets to an existing event, change a ticket's price or quantity, or set when tickets stop selling."

Manage Event Guests

"Manages the people registered for a Wix event — RSVPs on RSVP events, and orders, tickets and ticket holders on ticketed events: listing and counting guests for one event or across all events, new registrations since a date, attendee lists to export, adding or removing a guest, changing an RSVP, checking guests in, and marking orders paid. Use when the user asks who is coming or how many registered, or wants to add, remove or check in a guest. Notes what the API can't do, such as refunds and resending emails."

Events Dashboard Navigation

"Builds direct links to Wix Events dashboard pages on manage.wix.com — the published and draft event lists, a new event, categories, staff, a recurring series' occurrences, and one event's pages: overview, edit, tickets, guests (RSVP or ticketed), orders, schedule, registration settings and form, and policies. Pairs each Events entity with its read API so you can fetch an entity and hand back a 'view it in your dashboard' link. Use when the user asks where something is in the Wix dashboard, wants a direct link to a dashboard page, or you need a dashboard URL to include with the result of an API operation."

Event Registration Form

"Customizes the registration form of a Wix event with the Events Form API — adding, editing, reordering and removing questions, the additional-guests field, and the messages guests see after registering or when registration is closed. Use when the user wants to add or require a question on an event's RSVP or checkout form, let guests bring a plus-one, or reword a confirmation message."

Event Schedule, Policies and Categories

"Configures what appears around a Wix event on its page — the schedule or agenda, the policies guests accept (terms, refunds), and event categories. Use when the user wants to add an agenda or timetable to an event, add terms or a refund policy, or group events into categories such as workshops or concerts."


Forms

Create Form

"Creates a visitor-fillable Wix form with Form Schemas v4 — a contact or enquiry form, a signup or waitlist, an application, a survey, a quote request, and forms whose submissions create a contact. Ships a complete create request and the field table for the common kinds, with the value each one submits — dropdown, single and multi choice, date and time, number, consent and email-subscription (GDPR marketing) checkboxes — plus multi-page forms and the silent breakers that produce an empty or invisible form. Changing a form that already exists is Update Form."

Update Form

"Changes a Wix form that already exists, with Form Schemas v4 PATCH — add a field to my form, add a dropdown or a consent checkbox, make a field required or optional, rename a label, reorder, remove or retire a question. Covers reading the form back for its revision (and the required namespace query parameter), the whole-form body that a PATCH needs, the wholesale formFields replace that silently soft-deletes anything you omit, changing a field's component type in place, removing a field or hiding one from visitors, and the read-back that proves what was stored. Use whenever the form exists and the request changes what it collects; use Create Form when there is no form yet."

Read Forms and Submissions

"Reads a site's Wix forms and the submissions visitors sent to them — what forms do I have, find a form by name, show the latest submissions, who filled in my contact form, how many submissions did I get last week, submissions from one contact, unread submissions. Covers finding the form's namespace instead of guessing it, where that namespace goes on each read, the Form Schemas and Form Submissions endpoints (and the look-alike URLs that 404), forms hidden from a default listing, the closed list of submission fields you can filter and sort by, date ranges, cursor paging, totals per form, and reading answers by field. Read-only; changing a form is Update Form, building one is Create Form."

Forms Dashboard Navigation

"Builds direct links to Wix Forms dashboard pages on manage.wix.com. The paths are not guessable and appear in no API reference, so take them from here: under https://manage.wix.com/dashboard/{metaSiteId}/, the forms list is wix-forms, a form's builder is wix-forms/form/{formId}, and that form's submissions are wix-forms/form/{formId}/submissions — there is no site-wide submissions page, and nothing lives under contacts/forms, forms, form-builder or wix-forms-and-payments (the legacy app). Also standalone forms, and the dashboard link for each Forms entity; reading forms and submissions is Read Forms and Submissions."


Get Paid

Creates payment links for collecting payments without a checkout flow. Covers store products (catalog items), custom line items, variants, due dates, and sending links via email.

How to Setup Wix Payments

Configures Wix Payments as the payment provider. Covers eligibility checking, business verification, bank account setup, and payment method configuration (cards, PayPal, Apple Pay).

Creates payment links for unpaid bookings using Payment Links API. Links booking IDs to payment requests with proper redirect handling.

Get Paid Dashboard Navigation

"Builds direct links to Wix payments and invoicing dashboard pages on manage.wix.com — payment links, invoices (list, create, settings), recurring invoices, and the accept-payments settings page. Pairs each main get-paid entity with its read API so you can fetch an entity and hand back a 'view it in your dashboard' link. Use when the user asks where something is in the Wix dashboard, wants a direct link to a dashboard page, or you need a dashboard URL to include with the result of an API operation."


Google Ads

Routing — Google paid-advertising campaigns for a site (Smart & Performance Max). All flows require a Google Ads account, created once via the setup recipe. Budgets are in micros (1,000,000 = 1 currency unit). REST base: https://www.wixapis.com/_serverless/pa-google/v1.

Install Google Ads and Create an Account

"One-time setup for running Google paid ads on a Wix site: install the Wix Google Ads app, then create the Google Ads account that every campaign, suggestion, and analytics call depends on. Covers checking whether an account already exists, choosing a currency, optionally attaching a promotional incentive (credit offer), linking a Google Merchant Center account, and deleting an account. Use when the user wants to 'set up Google Ads', 'connect Google Ads', 'start advertising on Google', 'create a Google Ads account', or hits an ACCOUNT_NOT_FOUND / app-not-installed error before creating a campaign. Google Ads REST API, base https://www.wixapis.com/_serverless/pa-google/v1."

Get AI Campaign Suggestions for Google Ads

"Reference for the Google Ads Suggestions API on a Wix site: AI/Google-generated inputs that help build effective campaigns — keyword themes (from a URL or autocomplete), geo-target options, low/recommended/high daily-budget tiers with estimated clicks, PMAX budget recommendations, text assets (headlines/descriptions), AI image assets (auto-uploaded to Wix Media), search themes, promotional incentive offers, and complete AI-generated campaign configurations from a campaign brief. Use when the user asks 'suggest keywords for my ads', 'what budget should I use', 'where should I target', 'generate ad copy/headlines', 'generate ad images', 'suggest a whole campaign', or when a create-campaign flow needs suggested values. REST base https://www.wixapis.com/_serverless/pa-google/v1."

Create and Launch a Performance Max Campaign

"Creates and launches a Google Ads Performance Max (PMAX) campaign for a Wix site — a goal-based campaign that runs across all Google channels (Search, Display, YouTube, Gmail, Discover, Maps) from an asset group of headlines, descriptions, images, and (for PMAX Leads) search-theme signals. Covers generating AI text and image assets, generating search themes, getting a Google budget recommendation, assembling the asset group with the required minimum assets, choosing PERFORMANCE_MAX vs PERFORMANCE_MAX_LEADS (leads: phone/form goals, negative keywords, 28-day learning) vs retail/Shopping (Merchant Center feed), creating in PAUSED, and launching. Use for 'create a Performance Max campaign', 'PMAX', 'run ads across all of Google', 'lead-gen Google campaign', or 'Google Shopping ads'. Requires an existing Google Ads account. REST base https://www.wixapis.com/_serverless/pa-google/v1."

Manage Campaign Lifecycle

"Manages existing Google Ads campaigns on a Wix site: list/get, launch (first activation) vs resume (reactivate after a pause), pause a running campaign — optionally with a scheduled auto-resume date — update name/budget/targeting, change the daily budget, delete permanently, and read status history / change log. Use when the user wants to 'pause my Google ad', 'resume my campaign', 'stop the campaign', 'change my daily budget', 'rename the campaign', 'delete this campaign', 'list my Google Ads campaigns', or 'why did my campaign status change'. Requires an existing Google Ads account and campaign. REST base https://www.wixapis.com/_serverless/pa-google/v1."

Manage a Campaign Success Guide

"Campaign Success Guide for existing Wix Google Ads Performance Max Leads campaigns. Use after creating a supported campaign, even while it is learning or has no metrics, and whenever users ask how to improve a campaign, what to fix next, to view the guide, or to mark or reopen a recommendation. Covers campaign and site selection; prioritized actionable recommendations; deduplicated, destination-specific Editor and Google Ads navigation; offers to perform supported work after approval; Merchant Center and Business Profile connection follow-ups; and suggestion-status tracking."

Query Campaign Performance Analytics

"Reads performance analytics for a Google Ads campaign on a Wix site: daily performance metrics (impressions, clicks, CTR, cost, leads, phone calls) with optional previous-period comparison and trends; conversion metrics from Wix Analytics (orders, revenue, leads, CPL, ROAS); the search terms that triggered a campaign's ads; per-product shopping performance for retail campaigns; and per-asset performance (headlines, descriptions, images) for PMAX Leads. Explains when to use campaignResourceName vs the Wix campaignId, the dateRange shape, field enums, sorting, and paging. Use when the user asks 'how is my campaign doing', 'show ad performance', 'what search terms triggered my ads', 'which products/assets perform best', 'campaign ROI/ROAS', or 'conversions from my Google ads'. REST base https://www.wixapis.com/_serverless/pa-google/v1."

Retrieve Google Ads Billing and Payment Details

"Retrieves billing and payment details for a Wix site's Google Ads account: the current billing period's ad spend (usage), the Wix service fee, the total charge, any promotional coupon adjustment, the billing period dates, and the account's credit balance (positive = available credits, negative = outstanding debt not yet charged). Also explains reading current vs remaining budget from the account object. Use when the user asks 'how much have I spent on Google Ads', 'what's my next Google Ads charge', 'show my ad billing', 'do I have ad credits left', 'why was I charged', or 'upcoming Google Ads payment'. Requires an existing Google Ads account. REST base https://www.wixapis.com/_serverless/pa-google/v1."

Google Ads Dashboard Navigation

"Builds a direct link to the Wix Google Ads dashboard page on manage.wix.com, where campaigns created via the Google Ads API recipes are managed. Use when the user asks where something is in the Wix dashboard, wants a direct link to a dashboard page, or you need a dashboard URL to include with the result of an API operation."


Google Business Profile

Routing — how a business appears on Google Search and Maps. A Google connection is the prerequisite for all Google-backed location work: check it first, and route "connect / reconnect / disconnect Google" to the connection recipe.

Connect a Wix Site to Google Business Profile

Connect the authenticated Wix site to a Google Business Profile account, check whether an existing connection is still usable, recover a connection whose stored credentials are gone, switch to a different Google account, or disconnect. The site owner authorizes in their own browser through a single-use connect URL; the agent never completes the Google authorization itself. Warns before any reconnect that permanently removes the site's imported locations.

Manage Google Business Profile Locations for a Wix Site

Import Google Business Profile locations into the authenticated Wix site, list and query them with or without live Google data, update Wix-side and Google-side details through the correct method for each, create a new Google listing, check whether a profile is actually live on Google, and remove a location from Wix or delete its Google listing. Checks the site's Google connection first and reports a missing one as a setup step, warns before destructive or Google-visible writes, and respects Google's shared rate budget.


Marketing

Create and Publish a Social Media Post

"End-to-end flow to create a social media post, with its text written for you or your own, and publish or schedule it to a site's connected channel (Instagram, Facebook, LinkedIn, X/Twitter, TikTok, Pinterest, YouTube, Google Business Profile) using the Wix Publisher API. Can write a full per-channel post from a free-text idea or from the site's own assets (products, blog posts, events, bookings, coupons, categories), with your own image, and suggest captions and titles. Settles the post content with you first, then confirms the channel is connected, checks premium quota, creates a draft, and publishes now or schedules it. Use for 'create a post', 'generate a post from my product/idea', 'write a caption', 'caption ideas/suggestions', 'post to Instagram/Facebook/TikTok', 'connect my Instagram/Pinterest/LinkedIn', or 'schedule a post'."

Generate a Marketing Plan and Schedule Its Posts

"End-to-end flow to generate a site's social media marketing plan with the Wix Marketing Plan API and schedule the post drafts it returns. Recommends configuring marketing settings (goal, tone, cadence, content pillars) before the first generation, generates the plan asynchronously, polls until it's ready, then schedules the DRAFT posts. Includes generating posts for additional activities. Use for 'generate a marketing plan', 'create a social media plan/calendar', or 'schedule my plan's posts' requests."

Review and Send Email Campaigns

"Reads a Wix site's email marketing campaigns and reports on them: which campaigns were sent and when, drafts and scheduled campaigns, the subject and content of a campaign (for example whether one mentions a discount code, or its word count), delivery and engagement results, the contacts who received, opened or clicked a campaign, and the site's monthly email quota. Also creates a draft campaign from text and sends or schedules a draft once the user confirms. Use when the user asks about their email campaigns or newsletters, how a campaign performed or who it reached, or wants a campaign drafted or a draft sent."

Marketing Dashboard Navigation

"Builds direct links to Wix marketing dashboard pages on manage.wix.com — the social posts hub (drafts, scheduled and published posts across connected channels), post design templates, saved designs, and the email marketing pages (campaigns list, campaign templates, campaign analytics). Pairs each main marketing entity (social post item, connected social account, marketing-plan post, email campaign) with its read API so you can fetch an entity and hand back a 'view it in your dashboard' link. Use when the user asks where something is in the Wix dashboard, wants a direct link to a dashboard page, or you need a dashboard URL to include with the result of an API operation."


Media

Upload Media to Wix

Uploads images and files to the Wix Media Manager using the Import File API. Covers importing from external URLs, checking file status, and using the returned wixstatic.com URL in other APIs.

Generate an Image with AI

Generates an image from a text prompt with the Wix AI APIs (Runware). Returns a short-lived URL that must be imported to be kept — importing is Upload Media to Wix's job, and this recipe hands off to it. Covers choosing a model and its cost/latency/content-filter trade-off, the accepted output sizes, per-model batching limits, the AI credit each call spends, and why a content refusal arrives as a success response with no image.


Online Programs

Manage Online Program Categories

Lists, creates and renames the categories of a Wix site's Online Programs, shows which programs a category holds, and adds a program to a category, removes it, or moves it from one category to another. Use when the user wants to see, create or rename a program category, or change which categories a program is in.


Pricing Plans

Create and Update Pricing Plans

"Creates, finds and changes Wix Pricing Plans with the Plans API. Covers pricing models (recurring, one-time, free), trial periods, perks and plan visibility; finding a plan by name and listing the plans a site sells; and renaming, repricing, hiding and archiving a plan."

Pricing Plans Bookings Integration

Links Pricing Plans to Bookings services using the Benefit Programs API. Enables package deals and memberships that grant booking access.

Find and Manage Pricing Plan Orders

"Finds and manages the orders of a site's Wix Pricing Plans: the purchases and subscriptions that buyers hold. Covers who bought a plan and when, new purchases in a period, how many active subscribers a plan has, memberships that end or renew soon, the names and emails of current and former buyers, and changes to an order: pausing, resuming, cancelling, extending it, marking an offline order as paid, and recording a manual (offline) order for a member. Use when the user asks about their plan subscribers or members' subscriptions, wants a report or an export of plan purchases, or wants to change or add a plan order."

Pricing Plans Dashboard Navigation

"Builds direct links to Wix Pricing Plans dashboard pages on manage.wix.com — plans list, create a plan, edit a plan, record a manual order, and settings. Pairs each main Pricing Plans entity (plan, order) with its read API so you can fetch an entity and hand back a 'view it in your dashboard' link. Use when the user asks where something is in the Wix dashboard, wants a direct link to a dashboard page, or you need a dashboard URL to include with the result of an API operation."


Restaurants

Wix Restaurants Setup

Configures restaurant menus, sections, and items using Menus API. Covers menu structure (Menu → Section → Item), the two-step item modifier / modifier group flow, pricing, availability schedules, and ordering settings.

Restaurants Dashboard Navigation

"Builds direct links to Wix Restaurants dashboard pages on manage.wix.com — menus, menu items, the online orders board, online-ordering fulfillment settings (pickup, delivery, dine-in), the reservations list, floor plans, and reservation experience settings. Pairs each main Restaurants entity (menu, section, item, order, reservation) with its read API so you can fetch an entity and hand back a 'view it in your dashboard' link. Use when the user asks where something is in the Wix dashboard, wants a direct link to a dashboard page, or you need a dashboard URL to include with the result of an API operation."


Rich Content

Routing rule (READ FIRST). For every request to hand-author, output, or return Ricos / richContent JSON (nodes tree) for Blog, Stores, Events, or CMS, use the available full-documentation reading capability to retrieve and read the canonical Author Ricos Rich Content recipe before using API schema search, convert/validate APIs, or memory. This also applies when the user asks for JSON only.

Ricos Converter Service

Validates and converts content between Ricos documents and HTML/Markdown/plain text using the Ricos Documents API. Covers plugin configuration, format conversion in both directions, and document validation.

Author Ricos Rich Content

Authoritative recipe for hand-authoring valid Ricos rich-content JSON (the richContent/nodes tree) used across Wix Blog posts, Stores product descriptions, Events, and CMS rich-text fields. Use whenever a user asks to create, output, or return Ricos, richContent, or nodes-tree JSON; retrieve and read this full recipe before API schema search or constructing the JSON. Covers paragraphs, headings, lists, blockquotes, dividers, tables, code blocks, images, buttons, audio, video, galleries, collapsible lists, HTML embeds, inline decorations, and nesting rules.


Site Properties

RECIPE: Change a Site's Regional Properties (Currency, Time Zone, Language, Region) via Site Properties API

"Updates the site-level payment currency (store billing currency) using Site Properties API, including the required request body shape and field mask. Covers the site time zone, primary language, and site region (locale country); field masks name top-level properties."

Show and Update Business Info

"Shows and changes a site's business info through the Site Properties API: the business name, description and company ID, the public contact email, phone, fax and address, and the opening hours the site shows. Covers changing one detail while keeping the others, removing a detail, and adding, changing or removing business hours and holiday closures. Not for Wix Bookings availability (default bookable hours) or the site's currency, time zone, language or region."

Site Settings Dashboard Navigation

"Builds direct links to the site-settings dashboard pages on manage.wix.com — the settings hub, website settings, and language & region. Pairs site properties with the Site Properties read API. Use when the user asks where something is in the Wix dashboard, wants a direct link to a dashboard page, or you need a dashboard URL to include with the result of an API operation."


Collaborators

Manage Site Collaborators

Manages who has access to a Wix site as a collaborator (contributor) — finds the site's current collaborators, invites someone, removes a collaborator, and resends or revokes a pending collaborator invite. Use when the user wants to give someone access to the site, take it away, or follow up on an invitation that has not been accepted.


Sites

Create Site from Template

Creates new Wix sites from templates using account-level APIs. Covers template search, site creation, and publishing. Not for headless sites.

Create Headless Site

Creates a Wix Headless website: a site in the user's Wix account whose frontend is files uploaded to Wix hosting, with the Wix business backend behind it through APIs. The site is created and its pages put live by Upload a Website or HTML Files; a Wix Business Solution (a store, blog, bookings and more) is then integrated into it by the Wix Headless kit, from its cold start.

Manage OAuth Apps

Create, read, update, and query OAuth apps for a Wix headless site. Each OAuth app's id is the client_id a frontend uses to mint anonymous visitor tokens and call Wix APIs.

Query Sites

List, count, and find the sites in a Wix account. Covers the namespace filter for headless sites, counting before enumerating, cursor pagination, and resolving a site by name.

Read Account or Site Context

Probe a Wix site or account for full context in one call — installed apps by display name, locale, currency, timezone, and status. Account token + siteId targets one site; account token alone returns up to 10; site-scoped token alone returns the site it is scoped to.

Send Feedback to Wix

Relay the user's feedback about building with Wix — the APIs, docs, recipes, Wix MCP and tooling — to Wix, attributed to the authenticated user. Covers when to offer it, how to compose a message Wix can act on, and the call that sends it. Use when the user asks to report something to Wix, is frustrated with a Wix API or flow, or a recipe's flow fell short. Not a support channel, and not for the user's own site content.

Site Import

Drive the Wix Site Import agent to migrate an existing store or site from another platform (Shopify, WooCommerce, Magento, or any URL) into Wix — as a brand-new site or into the user's existing one — or to import from CSV/TSV export files with no source site. Use this skill whenever the user wants to import, migrate, or clone a store/site into Wix, mentions moving off Shopify/WooCommerce/Magento, or gives a source store URL and asks to bring it into Wix. Covers starting the import, polling progress, answering the agent's mid-import questions, handling deploy/failure/auth-expiry states, and sending post-deploy follow-up changes.

Sites Dashboard Navigation

"Builds direct links to the account-level sites pages on manage.wix.com — the My Sites list (all sites in the account) and each site's own dashboard. Pairs the site list with the Query Sites read API. Use when the user asks where something is in the Wix dashboard, wants a direct link to a dashboard page, or you need a dashboard URL to include with the result of an API operation."

Upload a Website or HTML Files

Publish HTML, CSS, JavaScript or a static build as a Wix Headless website; inspect its deployed files and edit them on the same site and URL. Covers file and ZIP uploads, selective additions, replacements and deletions while preserving other files, full-site replacement, authenticated and anonymous publishing, verification, and connecting a Wix business backend; a Wix Astro build is released as a server-rendered site rather than dropped. Use for files the user supplies or pages you create for them. Not for migrating a live site from another platform by URL or CSV (use Site Import), embedding code in an editor-built Wix site, or uploading assets to Media Manager.


Stores

Change Store Currency

Changes the store's payment currency through Site Properties and explains delayed currency updates in catalog responses.

Create Product (Catalog V1)

Create products using the Catalog V1 Products API. Use this recipe when the site's catalog version is CATALOG_V1. Covers simple product creation, product with options, and key V1 request structure differences from V3.

Create Product (Catalog V3)

Mandatory first recipe for every Wix Stores Catalog V3 create-product request. Before any mutation, require an explicit name and price for every product; an absent price is never 0. If no product is identified, offer both image-upload and text-description paths and stop. If name or price is missing, ask or offer a suggestion and stop. When both are present, create from the supplied details without requiring optional enrichment. Covers single/bulk creation, inventory, physical/digital products, images, options, variants, SKUs, and validation.

Find Products (Query and Search, Catalog V3)

Find, search, query, and list products from a Wix Store using Catalog V3 Search Products, Query Products, Get Product, and Query Inventory Items: by name, SKU, option choice, stock status, or price, with sorting and paging; reading one product's variants and details; and listing products with their variant count and stock.

Query Products (Catalog V1)

Query and list products from a Wix Store using the Catalog V1 Query Products endpoint. Use this recipe when the site's catalog version is CATALOG_V1. Covers basic queries, filtering, sorting, and paging.

Manage Store Categories (Catalog V3)

Organizes a Wix Store's products into categories with the Catalog V3 Categories API. Covers listing the category tree and finding a category by name; creating categories and subcategories; renaming a category or changing its description or URL slug; hiding or showing it; reordering it or moving it under another parent; deleting it; and adding products to a category, removing them, listing what a category holds, or moving all of a category's products to another category. Use when the user wants to see, set up, reorganize or clean up their store categories, or asks which products are in a category.

Update Product Stock and Pre-Order (Catalog V3)

Changes the stock and pre-order settings of existing Catalog V3 product variants through their inventory items. Covers finding a variant's inventory item by product name or SKU, setting a quantity, adding or removing units, marking a variant in or out of stock, starting or stopping quantity tracking, and enabling or disabling pre-orders with a message and a limit.

Update Product with Options (Catalog V3)

Start here for existing Catalog V3 product updates, including digital products that fail at add-to-cart with ITEM_NOT_FOUND_IN_CATALOG. Includes name lookup, Get Product, and PATCH in one flow, plus importing a supplied PDF and attaching it to the existing variant. Covers options, variant prices and SKUs, variant shipping weight in the site's weight unit, product visibility (hide/unhide through visible, never delete), description edits that preserve Rich Content, and revision-based updates. Read another recipe only for a field or operation this flow does not cover.

Stores Dashboard Navigation

"Builds direct links to Wix Stores and eCommerce dashboard pages on manage.wix.com — products list, edit a specific product, categories, inventory, orders list, a specific order, abandoned checkouts, gift cards, shipping and tax settings. Pairs each main Stores/eCommerce entity with its read API so you can fetch an entity and hand back a 'view it in your dashboard' link. Use when the user asks where something is in the Wix dashboard, wants a direct link to a dashboard page, or you need a dashboard URL to include with the result of an API operation."

<!-- automations-builder-sync:begin -->

Automations

Build and Manage Wix Automations

Create, update, activate or deactivate Wix Automations with app actions, trigger filters, conditions, delays, variables, branches and schedules, and check their current status, using the public Wix Automations APIs.

<details> <summary>Internal skills (loaded on demand by Build and Manage Wix Automations — do NOT use directly)</summary>

</details>

<!-- automations-builder-sync:end -->

Files

references/bookings/create-and-update-booking-services.md


name: "Create and Update Booking Services" description: "Creates and updates Wix Bookings services of every type — appointments, classes and courses — from a plain request such as 'a 60-minute consultation for $75', 'a yoga class for 12 people every Tuesday' or 'a 6-week photography course'. Covers choosing the service type, defaults for what the request leaves out, pricing (free, fixed, free-to-paid), staff, capacity, duration, categories, visibility, images, scheduling class and course sessions on the calendar, and changing existing services."

Create and Update Booking Services

One recipe for every Bookings service: pick the type, fill in what the user didn't say, create it, schedule its sessions when it's a class or a course, and report back. The second half covers changing a service that already exists.

All service types are created with the same call (POST https://www.wixapis.com/bookings/v2/bulk/services/create); the type decides which fields the body carries and what has to happen after it.

Related recipes:

  • A service booked by room or equipment instead of (or as well as) staff — "a massage in whichever treatment room is free" → Multi-Resource Service Creation. It creates the resource types and resources and gives the service body (serviceResources, and primaryResourceType for an appointment with no staff); this recipe's staff rules don't apply to such a service.

  • Memberships, class packs or session bundles for a service → Pricing Plans Bookings Integration.

  • Adding staff, or giving a staff member custom working hours → Bookings Staff Setup.

  • Cancellation, booking-window or waitlist rules → Booking Service Policy Setup.

If a Bookings call fails because the Wix Bookings app isn't installed on the site, install it with Install Wix Apps (app ID 13d21c63-b5ec-5912-8397-c3a5ddb27a97) and retry. Don't check for the app before the first call — the error says so when it's missing.


Part 1 — Create a service

Step 1: Pick the service type
The user describesTypeHow customers book it
a consultation, appointment, meeting, 1-on-1, treatment, haircut, lesson at a time the customer picksAPPOINTMENTThe customer picks a free slot during the staff member's working hours. One customer per booking.
a class, group session, drop-in, "yoga every Tuesday", bootcamp classCLASSThe business sets the session times; many customers book each session, and a customer can book one, some or all sessions.
a course, workshop series, program, "6-week course", "8 sessions", teacher trainingCOURSEThe business sets a fixed series with a start and an end; customers book the whole course, never a single session.

When the wording fits none of these, create an APPOINTMENT. When it's ambiguous between a class and a course, the deciding question is whether customers can join a single session (class) or must sign up for the whole series (course). See About Service Types for the full comparison.

Step 2: Fill in what the user didn't say

Use the user's values wherever they gave one. For the rest:

FieldAPPOINTMENTCLASSCOURSE
namethe user's wordingthe user's wordingthe user's wording
description1–2 sentences you write1–2 sentences, say it's a group class1–2 sentences, say it's a multi-session course (mention the session count if given)
defaultCapacity1 (required, must be 1)10 (participants per session)10 (participants for the whole course)
Duration60 minutes, via schedule.availabilityConstraints.sessionDurationseach session's start and end — only from the user (Step 5), never a defaulteach session's start and end — only from the user (Step 5), never a default
Staffone staff member, via staffMemberIds (required unless the service is booked by a resource — see Related recipes)the instructor goes on the session events, not the servicethe instructor goes on the session events, not the service
onlineBooking{ "enabled": true }{ "enabled": true }{ "enabled": true }
categoryan existing category that fits, or a new one (Step 3)an existing category that fits, or a new one (Step 3)an existing category that fits, or a new one (Step 3)

Price. Never invent one.

  • The user gave a price → rateType: "FIXED" with that amount in fixed.price.value. For a class it's the price of one session; for a course it's the price of the whole course — don't divide it per session.

  • The user said "free" → rateType: "NO_FEE".

  • The user gave no price → create the service free (NO_FEE), say so in the summary, and offer to set a price.

Session schedule (CLASS / COURSE). Never invent one — no default days, times or start date. A schedule is the user's to give: "Tuesdays 6–7pm" or "Wednesdays at 19:00 starting the 14th" is one; "a 6-week course", "8 sessions" or "a weekly class" gives only the length or the count, not the days and times. Without days and times, create the service, create no sessions, and ask for them (Step 5, Step 7). This holds when you're working on your own and can't wait for an answer, too: an instruction to proceed on reasonable assumptions covers the service's other fields, never its schedule — sessions you pick are a timetable the owner didn't choose, published to customers.

Currency. Send only fixed.price.value; leave price.currency out. The service always takes the site's payment currency — a currency you send is replaced with it (a "JPY" price on a USD site is stored as USD). Don't look up the site currency first; read it from the create response when you report the price.

Visibility. Services are visible by default. When the user asks for a hidden service ("a hidden test course"), add "hidden": true to the create body.

Step 3: Read what the site already has

Run these reads before creating anything; they're independent, so run them together.

Staff members — required for an APPOINTMENT, and the instructor for CLASS or COURSE sessions. For a CLASS or COURSE whose schedule the user didn't give, skip this read: no sessions are created yet, so no instructor is needed.

POST https://www.wixapis.com/bookings/v1/staff-members/query

{ "query": {} }

Use each staff member's resourceId — not its id — everywhere this recipe asks for a staff ID. Pick the staff member the user named; otherwise the one with default: true; otherwise the first one. If the site has no staff members, create one with Bookings Staff Setup first.

Categories:

POST https://www.wixapis.com/bookings/v2/categories/query

{ "query": {} }

A service without a category isn't shown on the live site, and services aren't assigned one automatically, so every create body carries a category.id. Use the category the user named; otherwise an existing one that fits the service. A general one such as "Our Services" (a fresh Bookings install has it) fits anything, but a category meant for something else doesn't — a yoga class doesn't go under a template's "Styling". If no category fits, or the user named one that doesn't exist, create it — POST https://www.wixapis.com/bookings/v2/categories with { "category": { "name": "Yoga" } } (the user's name for it, or a short name for the kind of service) — use the returned category.id, and mention the new category in the summary.

Existing services (duplicate check):

POST https://www.wixapis.com/bookings/v2/services/query

{ "query": { "paging": { "limit": 100 } } }

A site with more than 100 services needs more pages: repeat with "offset": 100, 200… inside paging until a page returns fewer than 100. If a service with the same or a very similar name exists, tell the user before creating another one.

Step 4: Create the service

POST https://www.wixapis.com/bookings/v2/bulk/services/create — one call creates up to 100 services. Always send "returnEntity": true: without it the response carries only results[i].itemMetadata.id, with no schedule.id to schedule sessions on.

APPOINTMENT (60-minute paid consultation):

{
  "returnEntity": true,
  "services": [{
    "name": "Strategy Consultation",
    "description": "A one-on-one session to map out your next quarter.",
    "type": "APPOINTMENT",
    "defaultCapacity": 1,
    "onlineBooking": { "enabled": true },
    "staffMemberIds": ["<STAFF_RESOURCE_ID>"],
    "schedule": { "availabilityConstraints": { "sessionDurations": [60] } },
    "payment": {
      "rateType": "FIXED",
      "options": { "online": true, "inPerson": false },
      "fixed": { "price": { "value": "75" } }
    },
    "category": { "id": "<CATEGORY_ID>" }
  }]
}

CLASS or COURSE (paid yoga class for 12 — for a course, change type to "COURSE"):

{
  "returnEntity": true,
  "services": [{
    "name": "Vinyasa Yoga",
    "description": "A flowing group yoga class for all levels.",
    "type": "CLASS",
    "defaultCapacity": 12,
    "onlineBooking": { "enabled": true },
    "payment": {
      "rateType": "FIXED",
      "options": { "online": true, "inPerson": false },
      "fixed": { "price": { "value": "25" } }
    },
    "category": { "id": "<CATEGORY_ID>" }
  }]
}

For a CLASS or COURSE, don't send staffMemberIds (it's read-only for these types — the API fills it from the staff on the service's recurring sessions, so staff on single, non-recurring sessions don't appear there; query the calendar events for the full list) or sessionDurations, and don't put sessions anywhere in this body (course.sessions, CourseSession and the like do not create sessions).

Free service — replace payment with:

"payment": { "rateType": "NO_FEE", "options": { "online": false, "inPerson": true } }

Payment options — at least one of options.online / options.inPerson must be true, even for a free service, and online is allowed only for paid rate types:

rateTypeonlineinPersonValid?
FIXEDtruefalse✓
FIXEDfalsetrue✓
FIXEDtruetrue✓
NO_FEEfalsetrue✓
NO_FEEtruefalse✗ online needs FIXED or VARIED
anyfalsefalse✗ one must be true

Price-by-variant (VARIED), custom-text (CUSTOM), deposits and pricing plans are described in About Service Payments.

Read the response. A 200 can still carry a failed item, so check before reporting success:

{
  "results": [{
    "itemMetadata": { "id": "<SERVICE_ID>", "originalIndex": 0, "success": true },
    "item": {
      "id": "<SERVICE_ID>",
      "type": "CLASS",
      "payment": { "rateType": "FIXED", "fixed": { "price": { "value": "25", "currency": "USD" } } },
      "schedule": { "id": "<SERVICE_SCHEDULE_ID>" },
      "revision": "1"
    }
  }],
  "bulkActionMetadata": { "totalSuccesses": 1, "totalFailures": 0, "undetailedFailures": 0 }
}
  • The service is directly under results[i].item — there is no item.service. Match items to your request by itemMetadata.originalIndex.

  • itemMetadata.success: false comes with itemMetadata.error (code and description). Fix and resend only the failed services.

  • Keep item.id (the service ID) and, for a CLASS or COURSE, item.schedule.id for Step 5.

Optional fields:

  • Images — the file must already be in the Wix Media Manager (Search Files, or Bulk Import File for a URL). Set only its id, nested under image: "media": { "mainMedia": { "image": { "id": "<FILE_ID>" } } } (mainMedia shows in the services list, coverMedia on the service page, items[] is the page gallery). An id set directly on the media item (mainMedia.id) returns 200 but is silently dropped — read the service back to confirm the image stuck.

  • Locations — "locations": [{ "type": "BUSINESS", "business": { "id": "<LOCATION_ID>" } }] for a business location, [{ "type": "CUSTOMER" }] for an appointment at the customer's place (appointments only), or [{ "type": "CUSTOM", "custom": { "address": { … } } }]. All of a course's sessions take place at the same location. To change the locations of an existing service, use Set Service Locations, not Update Service. Details: About Service Locations.

Step 5: Schedule the sessions (CLASS and COURSE)

A CLASS or COURSE has no sessions when it's created, so customers can't book it, and a course with no future sessions shows as ended on its service page. Sessions are Calendar events on the service's own schedule (item.schedule.id from Step 4).

  • The user gave days and times ("Tuesdays at 6pm", "8 Wednesday evenings from the 14th") → create the sessions now.

  • They didn't → create only the service, ask for the session days and times, and tell the user plainly that the service can't be booked until sessions exist. Don't make up a schedule — not even when you're told to proceed without asking; in that case finish with the service alone and name exactly what's missing.

Create the sessions with POST https://www.wixapis.com/calendar/v3/bulk/events/create (up to 50 events per call). The instructor in each event's resources is a staff resourceId from Step 3 — if you skipped that read because the schedule came later, run it now.

Weekly CLASS — every Tuesday 18:00–19:00 from the first Tuesday the user gave, no end date:

{
  "returnEntity": true,
  "events": [{
    "event": {
      "scheduleId": "<SERVICE_SCHEDULE_ID>",
      "type": "CLASS",
      "start": { "localDate": "<FIRST_TUESDAY>T18:00:00" },
      "end": { "localDate": "<FIRST_TUESDAY>T19:00:00" },
      "resources": [{ "id": "<STAFF_RESOURCE_ID>", "permissionRole": "WRITER" }],
      "recurrenceRule": { "frequency": "WEEKLY", "interval": 1, "days": ["TUESDAY"] }
    }
  }]
}

This creates one MASTER event, and the calendar generates a weekly INSTANCE for each Tuesday. To stop the series on a date, add "until": { "localDate": "<LAST_SESSION_DATE>T19:00:00" } to recurrenceRule.

COURSE — one event per session, all in one call (here the first two of a weekly series):

{
  "returnEntity": true,
  "events": [
    { "event": {
        "scheduleId": "<SERVICE_SCHEDULE_ID>",
        "type": "COURSE",
        "start": { "localDate": "<SESSION_1_DATE>T18:00:00" },
        "end": { "localDate": "<SESSION_1_DATE>T20:00:00" },
        "resources": [{ "id": "<STAFF_RESOURCE_ID>", "permissionRole": "WRITER" }]
    } },
    { "event": {
        "scheduleId": "<SERVICE_SCHEDULE_ID>",
        "type": "COURSE",
        "start": { "localDate": "<SESSION_2_DATE>T18:00:00" },
        "end": { "localDate": "<SESSION_2_DATE>T20:00:00" },
        "resources": [{ "id": "<STAFF_RESOURCE_ID>", "permissionRole": "WRITER" }]
    } }
  ]
}

Rules for every session event:

  • Wrap each one as { "event": { … } }.

  • scheduleId is the service's schedule.id — not a staff member's schedule — and type matches the service type (CLASS or COURSE).

  • resources must hold at least one resource; without it the call fails with 400 resources must have at least 1 resource for class events. Use the instructor's staff resourceId.

  • Every resource needs "permissionRole": "WRITER". Without it the whole call fails with 400 resources.permissionRole must not be UNKNOWN_ROLE.

  • start.localDate / end.localDate are local times without a Z, in the schedule's time zone (the site's, unless you set event.timeZone). A recurring event must start today or later — check the current date before you build the dates.

  • A recurrenceRule takes exactly one day. For "Tuesdays and Thursdays", send two events, one per day.

  • Leave totalCapacity out: sessions inherit the service's defaultCapacity, and setting it detaches that session from later capacity changes.

Read the response the same way as Step 4: check bulkActionMetadata.totalFailures and each results[i].itemMetadata.success, and fix and resend only the failed events. A 400 (no results at all) means nothing was created.

Confirm the sessions exist before you call the service bookable:

POST https://www.wixapis.com/calendar/v3/events/query

{
  "fromLocalDate": "<TODAY>T00:00:00",
  "toLocalDate": "<AFTER_LAST_SESSION>T00:00:00",
  "query": { "filter": { "scheduleId": "<SERVICE_SCHEDULE_ID>" } }
}

The result lists the generated sessions (INSTANCE events for a weekly class, the single events for a course). For a course, the service itself also reports the span: GET https://www.wixapis.com/bookings/v2/services/<SERVICE_ID> returns schedule.firstSessionStart and schedule.lastSessionEnd once sessions exist.

Change sessions later with POST https://www.wixapis.com/calendar/v3/bulk/events/update, sending each event's id, its current revision and only the fields that change:

{
  "events": [{
    "event": {
      "id": "<EVENT_ID>",
      "revision": "<EVENT_REVISION>",
      "start": { "localDate": "<NEW_DATE>T19:00:00" },
      "end": { "localDate": "<NEW_DATE>T20:00:00" }
    }
  }]
}

For a weekly class, update the MASTER event (its id is in the create response, or query events with "recurrenceType": ["MASTER"]) to move every future session; updating one INSTANCE changes only that session. Details: Bulk Update Event.

Step 6: Appointment availability

An APPOINTMENT has no events of its own: its free slots come from the working hours of the staff in staffMemberIds, which by default follow the business hours. If the user wants different hours for that staff member, follow Bookings Staff Setup — it detaches the staff member from the business hours and creates WORKING_HOURS events on the staff member's own schedule.

Step 7: Report back

Base the summary on the API responses, not on what you sent:

  1. What was created — name, type, price as stored (amount and currency; "per session" for a class, "for the whole course" for a course; "free" if no price was given, with an offer to set one), capacity, duration or staff for an appointment, category, and hidden if it is.

  2. Assumptions — every default from Step 2 you applied ("I set capacity to 10 since you didn't say").

  3. Sessions (CLASS / COURSE) — the sessions you created and confirmed: list each session's date and time (for a weekly class with no end date, the weekday, time and first date). If none exist yet, say the service can't be booked until it has sessions, and end with a direct question for them: the weekday(s), start and end time, and first date — for a course, the date of each session or the weekly pattern and how many sessions.

  4. What you can change — offer to adjust price, capacity, duration, staff or schedule.


Part 2 — Change an existing service

Find it and read its revision

When the user gave a service ID, use it. Otherwise list the services and match the name the user used:

POST https://www.wixapis.com/bookings/v2/services/query

{ "query": { "paging": { "limit": 100 } } }

Page with offset as in Step 3 on a site with more than 100 services. If more than one service matches, ask the user which one; if none does, say so rather than creating one. Then read it to get its current revision and current values:

GET https://www.wixapis.com/bookings/v2/services/<SERVICE_ID>

Update it

PATCH https://www.wixapis.com/bookings/v2/services/<SERVICE_ID> — send only the fields you're changing, with the current revision inside the service object (a revision at the top level fails with revision must not be empty):

{
  "service": {
    "revision": "<REVISION_FROM_GET>",
    "category": { "id": "<CATEGORY_ID>" }
  }
}

The same shape changes the name, description, capacity, hidden (true hides the service from the site's booking pages, false shows it again) or onlineBooking. Update the existing service — don't delete and recreate it, which loses its bookings and sessions.

Free → paid. A NO_FEE service becomes paid only when one update sends the whole payment object — rateType: "FIXED", options and fixed.price together. Send the options the GET returned (a free service usually has inPerson: true), so customers keep paying the way they already could; turn on online only when the user asks for online payment. Patching just fixed.price fails validation (Payment of type FREE cannot be used with payment.rate, or payment.type Payment type must be set to FIXED):

{
  "service": {
    "revision": "<REVISION_FROM_GET>",
    "payment": {
      "rateType": "FIXED",
      "options": { "online": false, "inPerson": true },
      "fixed": { "price": { "value": "35" } }
    }
  }
}

The price takes the site's currency, as on create. To change only the amount of a service that is already FIXED, send the same payment object with the new value.

Several services at once. Bulk Update Services takes a list of services (each with its own id and revision); Bulk Update Services By Filter applies one change to every service a filter matches ("make all my services 60 minutes").

Changing the type ("type": "COURSE" in the same PATCH) deletes the service's schedule and sessions and creates a new schedule. Confirm with the user before doing it, then schedule the sessions again on the new schedule.id (Step 5).

  • An APPOINTMENT that already has future bookings can't change type — the update fails with can't change a service of type appointment after it has been booked. Tell the user; don't cancel their bookings to get around it.

  • Changing to or from COURSE resets the service's locations to the site's default business location; restore any other location the user needs with Set Service Locations. Changing an APPOINTMENT to a CLASS or COURSE also clears its staffMemberIds and session durations.

Deleting a service: DELETE https://www.wixapis.com/bookings/v2/services/<SERVICE_ID> cancels its future sessions. Confirm with the user first.


Errors

ErrorCauseFix
service of type appointment requires at least one staff member idAPPOINTMENT without staffMemberIdsQuery staff (Step 3) and send a resourceId
primary_resource_type is required for appointment services without staff membersAn APPOINTMENT booked by a room or equipmentFollow Multi-Resource Service Creation for the body
INVALID_PAYMENT_OPTIONS — "mandatory to specify either payment.options.online or payment.options.inPerson as true"No payment option setSet inPerson: true (free) or online: true (paid)
INVALID_PAYMENT_OPTIONS — "online as true is applicable only to payments of types FIXED or VARIED"online: true on a NO_FEE serviceFree services use online: false, inPerson: true
Payment of type FREE cannot be used with payment.ratePrice set on a NO_FEE service without changing rateTypeSend rateType: "FIXED", options and fixed.price in one update
revision must not be empty / service.revision is requiredrevision missing or outside service{ "service": { "revision": "…", … } }, revision from a fresh GET
resources.permissionRole must not be UNKNOWN_ROLESession resource without permissionRole"resources": [{ "id": "…", "permissionRole": "WRITER" }]
resources must have at least 1 resource for class eventsSession event without resourcesAdd the instructor's staff resourceId
Course page says "Ended" or "This service is not available"The course has no future sessionsCreate the sessions (Step 5) and confirm them
428 app not installedWix Bookings isn't on the siteInstall it with Install Wix Apps and retry

Reference

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Needs Node.js

The author says: Requires Wix REST API access (API key or OAuth).

Security

What our scanner noticed· Low risk

  • Phrasing that asks for actions without confirmation
  • Instructions that use the network

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Published by
Wix
Publisher
Wix (Official)
Source
wix/skills · skills/wix-manage · commit d168bc2
Licence
MIT License (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Wix or Wix.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download wix-manage.zip