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/events/manage-wix-events.md


name: "Manage Wix Events — Publishing, Cancelling, Cloning and Counting" description: "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 Wix Events — Publishing, Cancelling, Cloning and Counting

Goal

Operate on events that already exist. Creating an event — including its date, location, description, guest limit and recurring occurrences — is Create an Event. Ticket types and prices use the Ticket Definitions V3 API; guests, RSVPs, orders and check-in use the RSVP V2 and Ticketing APIs — this recipe doesn't manage ticket prices, sale periods, guests, RSVPs, orders or check-in (it only makes the couple of ticket-definition calls that registration state depends on).

Switching an event between RSVP and ticketed creates a new event, so it is two turns: explain and ask in the first, create only after the user says yes — see Switch an event between RSVP and ticketed.

Prerequisite — the Wix Events app

Every endpoint here returns 428 WIX_EVENTS_APP_NOT_INSTALLED against a site without the app. Install it first — do not guess the install path:

curl -X POST 'https://www.wixapis.com/apps-installer-service/v1/app-instance/install' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: <AUTH>' \
  --data-binary '{
    "tenant": { "tenantType": "SITE", "id": "<SITE_ID>" },
    "appInstance": { "appDefId": "140603ad-af8d-84a5-2c80-a0f60cb47351" }
  }'

appDefId nests under appInstance, not at the root — at the root it fails with 400 appInstance must not be empty. See Install Wix Apps.

Find an event

Every action below takes an eventId (Query Events is the reference for this call). When the user names the event instead, look it up with POST https://www.wixapis.com/events/v3/events/query. title matching ignores case, for $eq, $in (several names at once), $startsWith and $contains: "pool splash" with $contains finds "Summer Pool Splash". Start with $eq on the name as the user wrote it; when that finds nothing, retry once with $contains on its most distinctive word:

curl -X POST 'https://www.wixapis.com/events/v3/events/query' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: <AUTH>' \
  --data-binary '{
    "query": {
      "filter": { "title": { "$eq": "Open House" } },
      "paging": { "limit": 100 }
    },
    "fields": ["DETAILS", "REGISTRATION"]
  }'
  • Send this body as it is, adding only the filters and sort shown in this section. filter, paging and sort are siblings under query; paging or sort nested inside filter, and a nested registration object in the filter, fail 400.

  • Don't add includeDrafts. true needs the draft-events permission and fails 403; the default already returns every published event. Always send paging.limit — its default is 0, which returns no events. Matches come back in events[] with the id at events[].id, and pagingMetadata.total is the count. Other filterable fields: status (UPCOMING, STARTED, ENDED, CANCELED, DRAFT), registration.initialType, dateAndTimeSettings.startDate, slug, id.

Events in a date range, soonest first: put each bound in its own condition under $and. One object with both $gte and $lt fails 400 ... is invalid for field start of type DateTime. Write the bounds in UTC from midnight in the time zone the user named, or else the site's (properties.timeZone from GET https://www.wixapis.com/site-properties/v4/properties): "December" in America/New_York starts at 2026-12-01T05:00:00Z. Don't rely on the default order; send sort:

{
  "query": {
    "filter": {
      "status": { "$in": ["UPCOMING", "STARTED"] },
      "$and": [
        { "dateAndTimeSettings.startDate": { "$gte": "2026-12-01T05:00:00Z" } },
        { "dateAndTimeSettings.startDate": { "$lt": "2027-01-01T05:00:00Z" } }
      ]
    },
    "sort": [{ "fieldName": "dateAndTimeSettings.startDate", "order": "ASC" }],
    "paging": { "limit": 100 }
  },
  "fields": ["DETAILS"]
}

Some fields come back only when fields asks for them — send every value the next step reads:

ValueAddsUse it for
DETAILSshortDescription, mainImageThe event's image and one-line summary
TEXTSdescription (rich content)The text on the event page, before changing it
REGISTRATIONregistrationThe event's type and registration state
DASHBOARDsummariesHow many registered, for every event in the result (Manage Event Guests)
URLSeventPageUrlA link to the event page

One title can match several events — every occurrence of a recurring event shares the title, and duplicated events keep it too. When more than one comes back, pick by dateAndTimeSettings.startDate and status if the user named a date; otherwise list the matches with their dates and ask which one. Never act on all of them unless the user asked for the series.

Only when the user asks about draft events, add "includeDrafts": true. If that returns 403 Requires WIX_EVENTS.READ_DRAFT_EVENTS permission, say draft events are not readable from this connection rather than answering from published events alone.

Registration settings

Change registration with PATCH https://www.wixapis.com/events/v3/events/{event.id} and the change under event.registration — never through ticket sale periods, and never by cancelling.

curl -X PATCH 'https://www.wixapis.com/events/v3/events/<EVENT_ID>' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: <AUTH>' \
  --data-binary '{
    "event": { "registration": { "registrationPaused": true } },
    "fieldmask": "registration.registrationPaused",
    "fields": ["REGISTRATION"]
  }'

Updates merge: only the fields you send change. A fieldmask — a comma-separated string with the dotted path of each field you send (registration.rsvp.limit,registration.rsvp.waitlistEnabled) — is optional for registration settings: every row of the table below, including the nested rsvp and tickets objects, applies without one; the examples include it anyway. It is required in two cases only: changing the location (see Update an event — without a mask the call returns 200 and the location does not change), and clearing a field, which you do by listing its path and leaving it out of the body.

The user wantsUnder event.registration
Close / stop / pause registration, keep the event"registrationPaused": true
Reopen registration"registrationPaused": false
No registration — the event is information-only"registrationDisabled": true, "registrationPaused": false
Guests register on another website"external": { "url": "https://..." }, "registrationPaused": false
Back to registering on the site, from information-only (type NONE)"registrationDisabled": false
Back to registering on the site, from external (type EXTERNAL)send "registration": {} with "fieldmask": "registration.external.url" — type returns to RSVP or TICKETING
Only site members can register"allowedGuestTypes": "MEMBER" (VISITOR_OR_MEMBER for everyone)
RSVP guest limit / waitlist"rsvp": { "limit": 50, "waitlistEnabled": true } — the waitlist needs a limit; to remove the limit, mask registration.rsvp.limit with no value in the body and also send "waitlistEnabled": false (the waitlist flag is not reset for you)
RSVP answers offered"rsvp": { "responseType": "YES_ONLY" } or "YES_AND_NO" — an event created without a responseType accepts only "yes" (a "no" RSVP fails UNEXPECTED_RSVP_STATUS)
RSVP registration opens / closes on dates"rsvp": { "startDate": "<ISO>", "endDate": "<ISO>" } — both together; to remove the dates, mask both with no values
Tickets per order, reservation hold, tax"tickets": { "ticketLimitPerOrder": 10, "reservationDurationInMinutes": 15, "taxSettings": { "type": "ADDED_AT_CHECKOUT", "name": "VAT", "rate": "21" } }
One registration form per ticket holder"tickets": { "guestsAssignedSeparately": true }

Limits: ticketLimitPerOrder 0–50 (default 20), reservationDurationInMinutes 5–30, tax rate a decimal string, tax name 1–10 characters, tax type INCLUDED_IN_PRICE or ADDED_AT_CHECKOUT.

Before closing registration, read status and registration ("fields": ["REGISTRATION"]):

  • status ENDED or CANCELED — there is nothing to close; say so.

  • registration.type NONE or EXTERNAL — the event has no on-site registration to close; say so, and offer to switch it back to on-site registration first.

  • registration.status CLOSED_AUTOMATICALLY — registration is already closed (sold out or past); say so rather than setting the flag.

  • a ticketed event with no ticket types yet reads CLOSED_AUTOMATICALLY too — nobody can register, so there is nothing to close. Don't create a ticket to change that. Tell the user, and set registrationPaused: true so registration stays closed if tickets are added later.

Pause vs disable. "Close registration", "stop sign-ups" or "no more guests" → registrationPaused: true. "Guests don't need to register" → registrationDisabled: true.

Read back and report the result. Ask for registration in the response with "fields": ["REGISTRATION"], as above, and confirm the flag you sent comes back with the new value — registration.registrationPaused: true, registrationDisabled: true, or the external.url. If it doesn't, the change did not apply: say so. Then report the derived fields:

You sentExpect
registrationPaused: truetype unchanged (RSVP / TICKETING); status CLOSED_MANUALLY — "Closed" in the dashboard's events list
registrationPaused: falsestatus back to OPEN_RSVP, OPEN_RSVP_WAITLIST_ONLY or OPEN_TICKETS (SCHEDULED_RSVP if RSVP dates are set in the future)
registrationDisabled: truetype NONE, status UNKNOWN_REGISTRATION_STATUS — "No registration" in the dashboard
external.urltype EXTERNAL, status OPEN_EXTERNAL

Read type first, then status: type NONE means registration-free whatever the status. Report CLOSED_MANUALLY as paused and CLOSED_AUTOMATICALLY as sold out, past, or a ticketed event with no tickets — go by this table, not the reference's enum note on CLOSED_MANUALLY.

Never write registration.type, registration.status or registration.initialType. Use the flags in the table. A PATCH that sets "type": "NONE" alone fails 400 with an unrelated date message (startDate.isDefined must be true … getTimeZoneId is not supported); inside a full event body it is ignored.

Ticket currency is a ticket-definition call, not an event field: POST https://www.wixapis.com/events/v3/ticket-definitions/currency with { "eventId": "<EVENT_ID>", "currency": "EUR" } (Change Currency).

Switch an event between RSVP and ticketed

registration.initialType can't be changed, and ticket calls on an RSVP event fail 428 INVALID_EVENT_TYPE. For "make it free" don't switch — add a free ticket (a fixedPrice of "0" with feeType NO_FEE, as in Create an Event).

Turn 1 — explain and stop. Find the event and confirm its type (one query). Then reply, and end your turn with a question. Make no create, update or ticket call in this turn — "switch it" or "convert it" is not the confirmation, because the result is a different event. Tell the user:

  • the existing event can't be converted, so a new event would be created;

  • RSVPs or orders on the original are not carried over;

  • the original stays as it is until they decide to cancel or delete it;

  • for a ticketed copy: which ticket names and prices to create (ask if they didn't say).

End the reply with the offer and the question, for example: "I can create a ticketed copy of Gala with the same date, venue and description. Which tickets should it have, and at what price? Shall I go ahead?"

Turn 2 — only after the user replies yes:

  1. GET https://www.wixapis.com/events/v3/events/<EVENT_ID>?fields=DETAILS&fields=TEXTS&fields=REGISTRATION — read title, location, dateAndTimeSettings, shortDescription, description, mainImage and the registration settings.

  2. POST https://www.wixapis.com/events/v3/events with those fields copied and registration.initialType set to the other type, as in Create an Event. Do not copy registration.type, registration.status, id, slug or any read-only field.

  3. For a ticketed copy, create the tickets against the event.id returned by step 2 — not by querying the title again, which also matches the original RSVP event.

  4. If the original had an agenda, policies or categories, copy them with the Schedule Items, Policies V2 and Categories APIs.

  5. Ask whether to cancel or delete the original. Do neither without a yes.

Publish, cancel and delete

ActionCallResulting status
Publish a draftPOST https://www.wixapis.com/events/v3/events/{eventId}/publishUPCOMING
CancelPOST https://www.wixapis.com/events/v3/events/{eventId}/cancelCANCELED
DeleteDELETE https://www.wixapis.com/events/v3/events/{eventId}—
Cancel severalPOST https://www.wixapis.com/events/v3/bulk/events/cancel-by-filterCANCELED
Delete severalPOST https://www.wixapis.com/events/v3/bulk/events/delete-by-filter—

Publish and cancel take an empty body, and neither can be undone.

Cancel only when the user says the event is not happening — it can email every registered guest and can't be reopened. When they want registration closed but the event to go ahead, pause registration instead (see Registration settings). To bring a cancelled event back, clone it (Clone an event) — the copy comes back live unless the clone body sends "draft": true, so don't publish it again. Cancelled events stay in Query Events results — filter by status to leave them out. publish on a cancelled event fails 428 EVENT_ALREADY_PUBLISHED.

Publish, cancel, clone and update all return { "event": { "id", "title", "slug", "status", ... } } — the same event object Create an Event shows in full. Delete returns { "eventId": "..." } and the bulk calls return {}.

To cancel or delete a set of events in one call, send the ids to the bulk endpoint:

{ "filter": { "filter": { "id": { "$in": ["<EVENT_ID>", "<EVENT_ID>"] } } } }

The conditions go two levels deep, filter.filter.<field>; a single level fails 400 filter.filter must not be empty. Resolve the ids with the query above first, and filter by id rather than by title, so only the events you resolved are affected. A bulk delete removes events that have sold tickets or RSVPs, with no further warning — check the events' guests (Query Event Guests) and get the user's confirmation first. Bulk calls return {} with no per-event result, and a read straight afterwards can still show the events — events with many guests or orders can take ten seconds or more. Query the same ids again every couple of seconds for up to about twenty, then report what is actually gone or cancelled; if any remain, delete or cancel those one by one.

Which of the events have guests: resolve the ids with the query in Find an event and add "fields": ["DASHBOARD"]. One call returns, for every event, summaries.rsvps.totalCount (every RSVP, "no" and waitlist included) and summaries.tickets.ticketsSold; an event has guests when either is above 0. The counts include an RSVP made a second earlier. Then:

  • The request names the events and a rule ("delete the ones nobody signed up for"): that is the confirmation. Delete the events the rule selects without asking again, and say which you kept and why.

  • The request names the events and says to delete them with their guests ("delete them all, registrations too"): that is the confirmation.

  • Otherwise, name the events that have guests and how many, and ask before deleting those.

Draft events need the WIX_EVENTS.READ_DRAFT_EVENTS permission. Without it, publishing a draft fails 403 — as does querying it, fetching it by slug, or adding ticket definitions to it. If you hit that 403, the event was still created; the way forward is to create events already published rather than as drafts, which needs no publish step at all. See Create an Event.

Recurring events — one occurrence or the whole series

Each occurrence of a recurring event has its own id; occurrences share a title and dateAndTimeSettings.recurringEvents.categoryId.

  • One occurrence ("cancel this Friday's class", "move the 12th to 7pm"): find the occurrence whose dateAndTimeSettings.startDate matches, and cancel, delete or update that id only. The other occurrences are untouched.

  • The whole series: read one occurrence's dateAndTimeSettings.recurringEvents.categoryId, then list the series with "filter": { "dateAndTimeSettings.recurringEvents.categoryId": { "$eq": "<CATEGORY_ID>" } } in Query Events (or GET https://www.wixapis.com/events/v3/events/category/<CATEGORY_ID>?paging.limit=100). Then update each one, or cancel/delete them with the bulk call and id.$in. Updates go one call per occurrence; on 429, wait and retry that call rather than moving on, and count the successes before reporting.

  • A date or time change on one occurrence sends just that occurrence's dateAndTimeSettings.

After deleting a whole series, also delete its hidden category (states include RECURRING_EVENT, named after the title) (DELETE https://www.wixapis.com/events/v1/categories/<CATEGORY_ID>, id from the categories query).

Before cancelling or deleting more than one occurrence, list the dates that will be affected and which of them have sold tickets or RSVPs (Query Event Guests), and get the user's confirmation.

Clone an event

POST https://www.wixapis.com/events/v3/events/{eventId}/clone with an empty body copies the registration form, notifications, translations, descriptions and ticket configuration.

The clone is published, and it does not keep the original's date. Unless the body says "draft": true it comes back UPCOMING — live on the site — with its start moved to roughly 14 days from now (same time of day), and the title gets " (1)" appended. Cloning a cancelled event gives a fresh, open event.

To make the copy right in one call, send overrides in the clone body:

{
  "event": {
    "title": "Spring Fair — second weekend",
    "dateAndTimeSettings": { "startDate": "2030-10-01T16:00:00.000Z", "endDate": "2030-10-01T19:00:00.000Z", "timeZoneId": "Europe/Dublin" }
  }
}

A title alone, or a title with both dates and timeZoneId, works. Overriding registration fails 400 with a misleading date message — a clone keeps the original's registration.initialType and cannot switch RSVP and ticketed (see Switch an event between RSVP and ticketed). The copy comes back live. Add "draft": true only when the user asks for an unpublished copy ("don't publish it yet", "so I can review it first") — a draft also needs the draft-events permission for every later call on it.

Then check the result's local time: dateAndTimeSettings.formatted.startTime in the response must equal the original's (and the date must be the one asked for). If it doesn't, your UTC conversion was off — fix the dates with an update before reporting.

Update an event

PATCH https://www.wixapis.com/events/v3/events/{event.id} with the fields to change nested under event (Update Event is the reference for this call):

curl -X PATCH 'https://www.wixapis.com/events/v3/events/<EVENT_ID>' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: <AUTH>' \
  --data-binary '{
    "event": {
      "dateAndTimeSettings": {
        "startDate": "2026-10-15T19:00:00.000Z",
        "endDate": "2026-10-15T22:00:00.000Z",
        "timeZoneId": "America/New_York"
      }
    }
  }'

The Events API takes no revision on update — a revision, if you send one, is ignored rather than rejected. Send only the fields you are changing: title, descriptions, slug, guest-list and display settings, dates and registration settings all apply as sent. The exceptions that need a fieldmask are the venue and clearing a field (see below and Registration settings).

Moving a date: send startDate and endDate together. With startDate alone, a move to a later day puts the start after the stored end and fails 400 event cannot have negative duration. timeZoneId is optional here, unlike on create; the stored one is kept. Express the times in the event's own time zone before converting to UTC — see Create an Event. After the update, the response's dateAndTimeSettings.formatted.startTime must still be the original local time when the user asked for the same time; if not, correct it before reporting.

Changing the venue needs a fieldmask. The reference schema does not list fieldmask — send it anyway. Without it a location update returns 200 but saves only the name: the address is dropped and locationTbd stays true. Send the venue with this mask:

curl -X PATCH 'https://www.wixapis.com/events/v3/events/<EVENT_ID>' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: <AUTH>' \
  --data-binary '{
    "event": {
      "location": {
        "name": "Grand Hall", "type": "VENUE", "locationTbd": false,
        "address": { "country": "IE", "city": "Dublin", "postalCode": "D02 X285",
                     "streetAddress": { "number": "1", "name": "Grafton Street" } }
      }
    },
    "fieldmask": "location.locationTbd,location.name,location.type,location.address",
    "fields": ["DETAILS"]
  }'

Read location back: locationTbd must be false and address.formattedAddress present. The address is geocoded, so formattedAddress can differ from what the user typed (a nearby building or the street's local-language name) — confirm the city matches, and if it is a different place, say so and resend a fuller address (street number, postal code, subdivision).

Changing the main image. mainImage takes an image that is already in the site's Media Manager, by its media id with width and height:

curl -X PATCH 'https://www.wixapis.com/events/v3/events/<EVENT_ID>' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: <AUTH>' \
  --data-binary '{
    "event": {
      "mainImage": { "id": "<MEDIA_FILE_ID>", "width": 1200, "height": 800, "altText": "Event flyer" }
    },
    "fields": ["DETAILS"]
  }'
  • An image the user sent or linked is not in the Media Manager yet. Import it first, in this order. The three calls, their bodies and response paths are complete and were run as written: send them in one code run (poll inside it), without a schema lookup for Import File, Get File or Update Event. Open Upload Media to Wix only if the import fails or the file never becomes READY.

    1. POST https://www.wixapis.com/site-media/v1/files/import with { "url": "<IMAGE_URL>", "mediaType": "IMAGE", "displayName": "Event flyer" }. Leave out mimeType: Wix detects it from the file. The response's file.id (such as 49d11f_3daf...~mv2.jpg) is the media id. The file is still PENDING and has no size yet.

    2. GET https://www.wixapis.com/site-media/v1/files/<FILE_ID> every second or two until file.operationStatus is READY; then width and height are in file.media.image.image.

    3. The PATCH above. mainImage needs the media id; the wixstatic URL alone is not enough.

  • A url without an id, even a static.wixstatic.com one, fails 400 (mainImage is invalid: id has size 0).

  • An id without width and height returns 200 and saves nothing. Read mainImage in the response (it comes back only with "fields": ["DETAILS"]); if it is missing, the image was not set.

Changing the description. shortDescription is a plain string (up to 500 characters). description is rich content, and an update replaces it whole: the nodes you send become the whole text. To add to the text, read it first with GET https://www.wixapis.com/events/v3/events/<EVENT_ID>?fields=TEXTS, then send its description.nodes as they came back, with the new nodes after them. Below, the first node is copied from the read and the second is the new paragraph, which needs only type, nodes and textData:

{
  "event": {
    "description": {
      "nodes": [
        { "type": "PARAGRAPH", "id": "mrc2ax4v", "nodes": [ { "type": "TEXT", "id": "", "nodes": [], "textData": { "text": "Join us by the pool.", "decorations": [] } } ], "paragraphData": {} },
        { "type": "PARAGRAPH", "nodes": [ { "type": "TEXT", "textData": { "text": "General admission: $105" } } ] }
      ]
    }
  },
  "fields": ["TEXTS"]
}

For headings, lists and links, build the nodes as in Rich Content. A string sent as description fails 400 Expected an object.

To change several events, send one PATCH per event; there is no bulk update.

Event page settings go through the same PATCH, under event:

The user wantsSend under eventRead back with fields
A different event URL"seoSettings": { "slug": "summer-gala-2027" }SEO_SETTINGS
Show the guest list to guests"guestListSettings": { "displayedPublicly": true }—
Hide the "details" button (registration-free events only)"eventDisplaySettings": { "hideEventDetailsButton": true }—
No event details page"eventDisplaySettings": { "hideEventDetailsPage": true } — with external registration, visitors go straight to the external page—
Video conferencing for an online event"onlineConferencing": { "enabled": true, "type": "MEETING" } (WEBINAR for a webinar) — needs a connected conferencing provider, see belowONLINE_CONFERENCING_SESSION
  • The URL slug is seoSettings.slug — the top-level slug is read-only. Lowercase letters, numbers and hyphens only (400 INVALID_SLUG_FORMAT), up to 130 characters, unique on the site (428 SLUG_ALREADY_IN_USE). The old URL redirects unless seoSettings.advancedSeoData.settings.preventAutoRedirect is true.

  • Online conferencing needs a set date — not while the date is TBD — and a connected conferencing provider. On a site with none, enabled: true is accepted and not applied: the response still reads onlineConferencing.enabled: false, type UNKNOWN_CONFERENCE_TYPE. Check the response; if it is still false, tell the user to connect a provider in the event's online settings instead of reporting it done. Reading the join links needs the ONLINE_CONFERENCING_SESSION fieldset and its permission.

The agenda, policies and categories use the Schedule Items, Policies V2 and Categories APIs.

Ticket definitions are the exception to the no-revision rule — their update does require the current revision (Update Ticket Definition).

Count events

POST https://www.wixapis.com/events/v3/events/query and read pagingMetadata.total:

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

Query Events returns every event that is not a draft — upcoming, started, ended and cancelled ones included — so the total is not "upcoming events". Add "filter": { "status": { "$eq": "UPCOMING" } } (or $in for several statuses) to count what the user means. Drafts are excluded from both the results and the total, and including them needs includeDrafts: true and the draft permission above. Each occurrence of a recurring event counts as one event.

To get a breakdown, POST https://www.wixapis.com/events/v3/events/count-by-status with a facet:

{ "facet": ["status"] }

returns pagingMetadata.total and facets.status.counts, for example { "UPCOMING": 4, "CANCELED": 3, "ENDED": 1 }. Without facet the facets object comes back empty. It takes the same filter as Query Events.

Gotchas & troubleshooting

  • A 200 on update does not prove the change applied — read-only fields in the body are dropped silently. Confirm from the returned event before telling the user it's done.

  • An invalid enum value reports as a missing one — a value outside an enum returns <field> value is required rather than "invalid value". If a field you did send is reported as required, suspect the value, not its presence.

  • includeDrafts stays false unless the request is about drafts — see Find an event. The WIX_EVENTS.READ_DRAFT_EVENTS note on the Query Events reference describes the permission; it does not mean the caller has it.

  • Dates are always ISO-8601 strings, never {seconds, nanos}, and timeZoneId is required whenever dateAndTimeSettings is sent on create — see Create an Event.

  • Wix Events V3: REST — Update Event

  • Create an Event — create body, dates, location, capacity, recurring

  • Ticket Definitions V3: REST — ticket types, prices, sale periods, currency

  • RSVP V2 and Ticketing: REST, REST — RSVPs, ticket holders, orders, check-in

  • Events Form: REST — form questions and registration messages

  • Schedule Items, Policies V2, Categories: REST, REST, REST — agenda, policies, categories

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