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://mp-staging.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/diagnose-availability-issues.md


name: "Check Bookings Availability (and Diagnose Issues)" description: "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."

Check Bookings Availability (and Diagnose Issues)

This recipe answers two related questions, in order of how often they're asked:

  1. "Does this service have availability right now?" — the default. Give a short, plain status answer.

  2. "Why is there no availability / why can't customers book?" — diagnose the cause. Only do this when there's no bookable availability, or the owner explicitly asks why / how to fix it.

Don't diagnose by default. If the owner just wants to know the status and the service is bookable, answer that and stop.

⚠️ Output rule (read first)

You are talking to a site owner, not a developer. Use everything below — endpoints, JSON, reason codes, suggestedAction values, field names — only to do the work. Your reply must be plain language.

Keep it short and only say what's relevant:

  • When the service is bookable, confirm it in a sentence. Don't recite everything that happens to be fine — the owner didn't ask for an audit. ❌ "It's visible on your site (not hidden). Online booking is ON. It has 1 staff member assigned and 1 location." ✅ "Yes — [service] has open times customers can book."

  • When you diagnose, surface only the blocking cause and its fix — not a checklist of everything that passed.

Never put any of these in your reply: endpoint paths or curl, JSON, reason-code names (e.g. RESOURCE_NOT_AVAILABLE_AT_SERVICE_LOCATION), suggestedAction enums, or field names. Translate them. See Presenting to the user.

✅ "Your staff don't have working hours at the location this service is offered at, so there's nothing to book. Want me to add hours there?" ❌ "DiagnoseAvailability returned RESOURCE_NOT_AVAILABLE_AT_SERVICE_LOCATION / CHECK_WORK_LOCATIONS."

When to use

  • Owner asks whether an appointment-based service has availability / bookable times → Step 1.

  • Owner reports the service has no bookable times, or that customers can't book (or can't even find) it → Step 1 will come back empty, so go on to diagnose (Step 2 onward). For "can't book / can't find," start diagnosis at Step 2 even if Step 1 returned slots — a hidden service still lists slots (see the note in Step 1).

  • Owner narrows to a specific date/time ("why nothing on 3 Aug from 4pm?") and the slot check for that window comes back empty → this is a "why" question. Run the diagnosis (Step 2 → Step 3). Do not answer it from the empty slot list alone.

Scope: appointment-based services.

🚫 Never invent the cause (read first)

An empty ListAvailabilityTimeSlots tells you there is no availability — not why. The reason for an empty result comes only from the checks in Steps 2–4 (service.hidden / onlineBooking, then DiagnoseAvailability, then policy/capacity). Never state a cause you didn't get from them — do not guess "the staff aren't scheduled," "it's outside working hours," a date-range problem, or anything else from a zero slot count. If you haven't run the diagnosis, you don't know the reason yet: run it, then report what it returns.


Prerequisites

  • Wix Bookings app installed (App ID: 13d21c63-b5ec-5912-8397-c3a5ddb27a97).

Note: If Bookings APIs return errors, the app may not be installed. Use List Installed Apps to verify and Install Wix Apps to install it.

  • Typically the serviceId (optionally with a staff member's resourceId to scope to one provider). A resourceId on its own is also supported for the staff editor, where no service is in context — see Which inputs to pass.

  • Authorization (diagnosis only): to call DiagnoseAvailability the caller needs the bookings:availability:v2:time_slot:diagnose_availability permission. A plain site/owner token can come back 403 (empty body) if that permission isn't granted — that's an auth problem, not "no cause found." Ensure the calling context carries the permission before treating a 403 as inconclusive.


Step 1 — Report the current availability status

This is the default answer. Find out whether customers can actually book the service right now, then say so plainly.

  • Endpoint: ListAvailabilityTimeSlots — the same slots a customer sees. See End-to-End Booking Flow for the request shape. Query the service over a sensible upcoming window (e.g. the next few weeks) in the site's time zone.

Interpret the result:

What comes backAvailability statusWhat to do
One or more bookable slotsBookable.Tell the owner in a sentence and stop — no diagnosis needed unless they ask why/how to change something.
Slots exist but none are bookable (nonBookableReasons / bookingPolicyViolations set)Not bookable — policy/capacity.This is the cause. Surface it directly (policy/capacity causes). No need to run DiagnoseAvailability.
No slots at allNo availability.Diagnose: go to Step 2, then Step 3. Don't guess the reason from the empty list — an empty result isn't a cause.

The hidden-service trap. A service that's hidden from the site, or has online booking turned off, can still list slots here — so bookable slots do not prove customers can book it. When the complaint is "customers can't book / can't find this service" (as opposed to "the calendar is empty"), run Step 2 before trusting the slot count — it's the single most common cause and neither ListAvailabilityTimeSlots nor DiagnoseAvailability detects it.

If no slots come back at all, also double-check the inputs before concluding "no availability": the queried window isn't entirely in the past, and any locations filter is actually offered by the service.


Diagnosis

Do the following only when Step 1 found no availability, or the owner asks why there are no times / how to fix it / why customers can't book. Run the checks in order — cheapest, most common blockers first.

Step 2 — Rule out service-level blockers (visibility & online booking)

Two service settings block booking entirely, regardless of staff availability, and are invisible to DiagnoseAvailability. Check them first with a single read of the service.

  • Endpoint: GET https://www.wixapis.com/_api/bookings/v2/services/{serviceId}

Inspect two fields on the returned service:

FieldBlocking valueWhat it means (the "Visible on your site and app" toggle is hidden inverted)
hiddentrueThe service is hidden from the site and app. Customers can't see or book it. In the dashboard this is the "Visible on your site and app" toggle turned off.
onlineBooking.enabledfalseOnline booking is turned off for this service. It may be visible, but customers can't book it online (staff can still book it manually).
  • If hidden: true → that's the cause. Stop here. Fix: make the service visible (offer to flip the toggle for them).

  • If onlineBooking.enabled: false → that's the cause (for "can't book online"). Fix: turn online booking on.

  • If both are fine (hidden: false, onlineBooking.enabled: true) → proceed to Step 3. Don't announce that they're fine — just move on.

Why this comes first: a hidden service can still have staff, working hours, and internally-generated time slots — so ListAvailabilityTimeSlots and DiagnoseAvailability will happily report on those slots (including policy details like "too late to book"). None of that is the real reason the customer can't book. Confirming visibility first prevents a confidently-wrong answer.


Step 3 — Run the diagnosis

DiagnoseAvailability is a read-only custom action that explains why availability is empty rather than returning slots.

  • Endpoint: POST https://www.wixapis.com/_api/service-availability/v2/time-slots/diagnose

  • Maturity: ALPHA, behind the diagnoseAvailabilityEndpoint feature toggle (deployed and available in production). If it returns no reasons for a service you'd expect to be broken, treat the result as inconclusive and go to Step 4.

  • hasAvailability is set true only on the service paths, when the availability-window check confirms real availability — and for serviceId-only, only when the service needs a single staff resource type. It is never asserted true for serviceId+resourceId (one resource can't confirm the whole service) or for resource-only. So hasAvailability: false with an empty reasons array means inconclusive ("no blocking cause found"), not necessarily "no availability."

Which inputs to pass (prefer a service)

Prefer passing serviceId — on its own, or together with a resourceId to scope to one provider. resourceId alone is a valid mode (it serves the staff editor, where there is no service context) but is shallower; use it when a service genuinely isn't available.

The service is what makes the diagnosis deep. Only the service paths run the L2 availability-window check — it needs the service configuration (duration, buffer, offered locations, resource types) to actually verify the resource has real windows in the range and at the right locations. That L2 check is what produces NO_RESOURCE_AVAILABILITY_WINDOWS, RESOURCE_NOT_AVAILABLE_AT_SERVICE_LOCATION, and REQUESTED_LOCATION_NOT_OFFERED_BY_SERVICE.

InputsDiagnosesDepthhasAvailability
serviceId + resourceId (preferred)Why a specific provider has no slots for the serviceL1 setup + L2 window/locationnever asserted true
serviceId onlyWhole-service availability across assigned staff/locationsL1 setup + L2 window/locationtrue only if the service needs a single staff resource type
resourceId onlyStaff-editor check, no service contextL1 setup + missing/empty working-hours check (no window/location; deep not allowed)never asserted true

Resource-only is a valid mode, but lighter. It exists for contexts where there is no service — e.g. the staff editor, diagnosing a staff member on their own. It catches a missing or empty working-hours schedule (RESOURCE_HAS_NO_WORKING_HOURS), but with no service configuration it can't run the availability-window or location checks, can't resolve locations, and can't use deep. So problems that only surface against a service — no windows despite having hours, a location mismatch, duration/buffer — are caught only when a serviceId is supplied.

  • Owner reports a service has no availability → pass serviceId.

  • Concern is a specific provider, and you have (or can find) a service → pass serviceId + resourceId (use a service they're assigned to) for the fullest diagnosis.

  • Only a resourceId is available (e.g. from the staff editor, with no service in context) → use resource-only; it flags missing/empty working hours, but treat an inconclusive result with care — it can't check windows, locations, or run deep. When you can, re-run with a service the resource is assigned to.

Request
curl -X POST 'https://www.wixapis.com/_api/service-availability/v2/time-slots/diagnose' \
  -H 'Authorization: <AUTH>' \
  -H 'Content-Type: application/json' \
  -d '{
    "serviceId": "<SERVICE_ID>",
    "fromLocalDate": "2026-07-01T00:00:00",
    "toLocalDate": "2026-09-29T00:00:00",
    "timeZone": "America/New_York"
  }'
FieldNotes
serviceIdService to diagnose. Provide this or resourceId.
resourceIdStaff member / resource to diagnose. Pair it with serviceId (see Which inputs to pass). Resource-only (no serviceId) runs a lighter check — missing/empty working hours only, no window/location/deep — and can miss service-dependent problems.
fromLocalDateYYYY-MM-DDThh:mm:ss (ISO-8601). Optional; defaults to now.
toLocalDateOptional; defaults to fromLocalDate + 90 days.
timeZoneIANA tz (e.g. America/New_York). Defaults to the site's time zone.
locationsLocations to diagnose. Empty ⇒ all locations the service offers.
deepOptional (default false). Set true with a serviceId to refine a "no availability windows" result into why — outside working hours vs. blocked/busy time. Extra sampling call; only acts when no windows exist; rejected on the resource-only path (MISSING_ARGUMENTS). See Deep mode.
Response
{
  "hasAvailability": false,
  "reasons": [
    { "code": "RESOURCE_NOT_AVAILABLE_AT_SERVICE_LOCATION", "suggestedAction": "CHECK_WORK_LOCATIONS" }
  ],
  "resolvedContext": {
    "serviceId": "<SERVICE_ID>",
    "resolvedLocations": [ { "id": "...", "name": "...", "locationType": "BUSINESS" } ],
    "durationInMinutes": 60,
    "bufferTimeInMinutes": 0,
    "fromLocalDate": "2026-07-01T00:00:00",
    "toLocalDate": "2026-09-29T00:00:00",
    "timeZone": "..."
  }
}
  • reasons are ordered most-specific first. Fix the first, then re-run.

  • resolvedContext echoes the inputs actually used (resolved locations, duration, buffer, window, time zone) — use it to confirm you diagnosed what you meant to.

  • Empty reasons ⇒ inconclusive → go to Step 4.

Reason codes → owner fix (agent-internal — never shown to the user)

This table is for your interpretation only. Map the returned code to the plain-language cause and fix, then write the reply in everyday words — the code names and suggestedAction values must not appear in your response. See Presenting to the user.

codesuggestedActionMeaning & fix
NO_ASSIGNED_STAFF_OR_RESOURCESASSIGN_STAFF_OR_RESOURCESNo staff/resources assigned to the service. Assign at least one.
RESOURCE_NOT_ASSIGNED_TO_SERVICEASSIGN_RESOURCE_TO_SERVICEThe given resource isn't assigned to the service. Assign it, or diagnose a resource that is.
RESOURCE_HAS_NO_WORKING_HOURSCHECK_STAFF_WORKING_HOURSThe staff member has no working-hours schedule. Configure working hours — see Bookings Staff Setup.
RESOURCE_NOT_AVAILABLE_AT_SERVICE_LOCATIONCHECK_WORK_LOCATIONSAssigned resources have availability windows, but none at a location the service offers. Add working hours at an offered location, offer the service where the staff works, or assign a provider who works at the offered location.
NO_RESOURCE_AVAILABILITY_WINDOWSCHECK_STAFF_WORKING_HOURSNo availability windows exist anywhere in the diagnosed range. Add working hours, or widen the range.
REQUESTED_DATE_OUTSIDE_SERVICE_AVAILABILITY_RANGECHECK_SERVICE_AVAILABILITY_RANGEThe dates being checked fall outside the date range the service itself is offered on (its own availability window) — so no slots exist there, whatever the staff's hours. Covers both before the range starts and after it ends. Deterministic: returned on the standard call (no deep needed) and ahead of the working-hours/blocked reasons, so trust it over RESOURCE_NOT_IN_WORKING_HOURS. Fix: extend the service's available date range, or check dates within it. (The exact bounds aren't in resolvedContext; if you need to state the start date, read service.schedule.firstSessionStart via Services V2 Get Service.)
REQUESTED_LOCATION_NOT_OFFERED_BY_SERVICECHECK_SERVICE_LOCATIONSA requested locations filter isn't offered by the service. Drop the filter or fix the service's locations.
DURATION_TOO_LONG_FOR_AVAILABLE_WINDOWSREDUCE_DURATION_OR_BUFFERThe service is longer than every free window. Shorten it or lengthen working hours.
BUFFER_TIME_ELIMINATES_WINDOWSREDUCE_DURATION_OR_BUFFERBuffer time consumes all otherwise-free windows. Reduce the buffer or lengthen working hours.
SERVICE_AVAILABILITY_CONFIGURATION_MISSING—The service's availability configuration is missing.
RESOURCE_TYPE_RESOLUTION_FAILED—The service's resource types couldn't be resolved.
RESOURCE_NOT_IN_WORKING_HOURSCHECK_STAFF_WORKING_HOURSThe resource works, but not during the empty range — it's outside their working hours. Reported only with deep: true. Fix: adjust/extend working hours.
RESOURCE_BLOCKEDCHECK_BLOCKED_TIMEThe resource is within working hours but blocked by existing bookings, calendar events, or an external calendar. Reported only with deep: true. Fix: free up the blocked time.
Endpoint errors
HTTPapplication_codeCause
400MISSING_ARGUMENTSNeither serviceId nor resourceId provided; or deep: true sent without a serviceId.
400INVALID_TIME_ZONEtimeZone isn't a valid IANA zone.
400INVALID_SERVICE_IDS_PROVIDEDThe serviceId doesn't resolve to a service on the site. In practice a well-formed-but-nonexistent serviceId (not only a malformed one) currently surfaces here rather than as a 404 — re-check the ID.
404SERVICE_NOT_FOUND / RESOURCE_NOT_FOUNDService / staff record missing. (A missing serviceId may instead surface as the 400 INVALID_SERVICE_IDS_PROVIDED above.)
404NO_IMPLEMENTERS_FOUND / MULTIPLE_IMPLEMENTERS_FOUNDNo / multiple availability providers configured.
403UNAUTHORIZED_OPERATIONCaller lacks bookings:availability:v2:time_slot:diagnose_availability.
Deep mode

deep: true (with a serviceId) refines a no-availability-windows result — it tells you why there are no windows: the staff are outside their working hours for that range (RESOURCE_NOT_IN_WORKING_HOURS) vs. within hours but blocked/busy (RESOURCE_BLOCKED, e.g. existing bookings or an external calendar).

  • When to use: the standard call returns NO_RESOURCE_AVAILABILITY_WINDOWS and you want to tell the owner whether to add hours or free up blocked time.

  • How it works: it samples a handful of slots across the range and makes one availability check, then attributes the cause. It runs only when no windows exist — it does nothing when availability is already present.

  • Constraints: requires a serviceId (resource-only + deep → MISSING_ARGUMENTS); it's a best-effort refinement and silently falls back to the generic NO_RESOURCE_AVAILABILITY_WINDOWS cause if the sampling is inconclusive.


Step 4 — Fallback when the endpoint is inconclusive

Empty reasons + still no bookable slots usually means the cause is one DiagnoseAvailability doesn't evaluate: booking policy or remaining capacity. You may already have this from the ListAvailabilityTimeSlots call in Step 1 — if not, call it again for the same service and window and inspect the returned slots.

<a id="booking-policy--capacity-slots-exist-but-arent-bookable"></a>

  • nonBookableReasons — noRemainingCapacity, violatesBookingPolicy, reservedForWaitingList, eventCancelled.

  • bookingPolicyViolations — tooEarlyToBook, tooLateToBook, bookOnlineDisabled.

If no slots come back at all, re-check the inputs: the diagnosed window isn't entirely in the past, and any locations filter is actually offered by the service.

See End-to-End Booking Flow for the ListAvailabilityTimeSlots request shape.


Presenting to the user

Whether you're reporting status or a cause, reply in plain, friendly language and keep it short.

  • Answer the actual question. If they asked "is it available," the reply is a status line — not a diagnosis. Only explain causes when there's no availability or they asked why.

  • Only say what's relevant. When the service is bookable, confirm it in a sentence; don't list every setting that's fine ("visible, online booking on, 1 staff, 1 location" — the owner didn't ask). When diagnosing, give only the blocking cause and its fix, not a rundown of everything that passed.

  • Don't expose internals — no reason codes, suggestedAction enums, raw JSON, endpoint names, or field paths.

  • Lead with the point in plain English, then the concrete next step. One or two short sentences is usually enough.

  • Use the owner's own terms — "your service", "your staff", "the dates you're looking at", real location names from resolvedLocations.

  • Offer to help with the fix rather than only stating it.

  • If diagnosis is inconclusive (empty reasons), say only that you couldn't find a blocking problem, and describe what you'll check next (policy/capacity, or re-run against a service for a resource-only check). Do not state or imply that anything is set up correctly — an empty reasons array means "no blocker detected," not "working hours / locations / setup are present." On the resource-only path never say the staff "have working hours set"; the check doesn't verify that.

Plain-language phrasing per outcome:

OutcomeSay something like
Service is bookable (status)"Yes — [service] has open times customers can book (the next one is [day/time])."
Service is hidden from the site (hidden: true)"This service is currently hidden from your site and app, so customers can't see or book it. Want me to make it visible?"
Online booking turned off (onlineBooking.enabled: false)"Online booking is turned off for this service, so customers can't book it themselves online (you can still book it for them manually). Want me to turn online booking on?"
No staff/resources on the service"This service doesn't have any staff assigned yet, so there's nothing to book. Want me to help you add someone?"
Provider isn't on the service"That staff member isn't assigned to this service, so their times don't show. I can add them to it."
Provider has no working hours"The staff for this service don't have any working hours set, so there are no times to offer. Let's set their hours."
Provider works only at other locations"Your staff have working hours, but not at the location(s) this service is offered at. We can either add hours at one of the service's locations, or offer the service where they already work."
No working-hours windows in range"None of the staff for this service have working hours in the dates you're checking. Let's add or extend their hours — or try a different date range."
Dates outside the service's available range"This service isn't offered on the dates you're looking at — it's only available during a set date range. Want me to extend the dates it's offered, or check a date inside that range?"
Outside working hours (deep)"For those dates, your staff simply aren't scheduled to work, so there's nothing to offer. Let's add working hours in that period."
Within hours but blocked/busy (deep)"Your staff are scheduled to work then, but that time is already taken up — by existing bookings or events on their calendar. Freeing some of it up will open slots."
Service too long / buffer too large"The service is longer than any open gap in your staff's schedule (the duration plus buffer doesn't fit). Shortening it a bit, or widening working hours, would open up slots."
Requested location not offered"This service isn't offered at the location you picked. Want me to add that location to the service, or check a different one?"
Slots exist but aren't bookable"There are times available, but customers can't book them right now — [e.g. they're fully booked / it's too early or late to book per your policy]. Here's how to adjust that."

Example conversational reply (for a location-mismatch result):

I looked into why no times are showing for [service name]. Your staff do have working hours, but none of them are at the locations this service is offered at (Jerusalem2 and Holon) — so there's nothing available to book.

To fix it you can either add working hours for a staff member at Jerusalem2 or Holon, or offer the service at the location where your staff already work. Want me to set that up?


Common causes (quick reference)

Popular reasons a service shows no availability, and where each surfaces:

SituationWhere it surfacesFix
Service is bookableStep 1 — ListAvailabilityTimeSlots returns bookable slotsNothing — report the status.
Service hidden from the site/appStep 2 — service.hidden: trueMake the service visible ("Visible on your site and app" toggle).
Online booking turned offStep 2 — service.onlineBooking.enabled: falseTurn online booking on for the service.
No staff/resources on the serviceNO_ASSIGNED_STAFF_OR_RESOURCESAssign staff/resources.
Provider isn't on the serviceRESOURCE_NOT_ASSIGNED_TO_SERVICEAssign the provider.
Provider has no working hoursRESOURCE_HAS_NO_WORKING_HOURSConfigure working hours.
Provider works only at other locationsRESOURCE_NOT_AVAILABLE_AT_SERVICE_LOCATIONAlign staff work locations with the service's offered locations.
No working-hours windows in rangeNO_RESOURCE_AVAILABILITY_WINDOWSAdd working hours / widen the range.
Dates fall outside the service's own offered date rangeREQUESTED_DATE_OUTSIDE_SERVICE_AVAILABILITY_RANGEExtend the service's available date range, or check dates within it.
No windows — outside working hours (deep)RESOURCE_NOT_IN_WORKING_HOURS (deep: true)Add or extend working hours in the range.
No windows — within hours but blocked/busy (deep)RESOURCE_BLOCKED (deep: true)Free up blocked time / check the external calendar.
Service too long / buffer too large for the windowsDURATION_TOO_LONG_FOR_AVAILABLE_WINDOWS, BUFFER_TIME_ELIMINATES_WINDOWSShorten duration/buffer or lengthen hours.
Requested location not offeredREQUESTED_LOCATION_NOT_OFFERED_BY_SERVICEFix the location filter or the service's locations.
Slots exist but aren't bookable (fully booked, too early/late, online booking off)Step 1 / Step 4 — ListAvailabilityTimeSlots nonBookableReasons / bookingPolicyViolationsAdjust capacity or booking policy.

Gotchas

  • Don't diagnose when you weren't asked to. The default question is "does this have availability" — answer the status and stop. Only dig into causes when there's no availability or the owner asks why / how to fix.

  • Keep the reply to what's relevant. When a service is bookable, don't recite every setting that's fine; when diagnosing, give only the blocking cause, not a pass/fail checklist.

  • A hidden service is the classic wrong-diagnosis trap. hidden: true (or onlineBooking.enabled: false) blocks booking entirely, but a hidden service can still list slots — so ListAvailabilityTimeSlots and DiagnoseAvailability will report on those slots and their policy details (e.g. "too late to book"), none of which is the real reason. When the complaint is "customers can't book / can't see this service," run Step 2 first.

  • hasAvailability: false + empty reasons ≠ a confirmed problem. It means "no blocking cause detected." Always confirm with ListAvailabilityTimeSlots.

  • DiagnoseAvailability is ALPHA and feature-toggled. If it returns nothing for an obviously broken service, the diagnoseAvailabilityEndpoint toggle may be off — fall back to Step 4.

  • A 403 is an auth problem, not a diagnosis. The action needs the bookings:availability:v2:time_slot:diagnose_availability permission; a caller without it gets a 403 with an empty body. Don't read that as "no cause found" — confirm the caller has the permission (see Prerequisites).

  • Never state a cause you didn't diagnose. A zero slot count from ListAvailabilityTimeSlots means "no availability," not a reason. Guessing "the staff aren't scheduled to work" (or any other cause) from an empty list is the failure this recipe exists to prevent — run DiagnoseAvailability and report the code it returns. This applies especially when the owner narrows to a specific date/time and it comes back empty: that's a diagnosis trigger, not a status reply.

  • A date-range restriction is a distinct cause — don't blame staff hours for it. When a service is only offered within a set date range and the owner asks about a date outside it, DiagnoseAvailability returns REQUESTED_DATE_OUTSIDE_SERVICE_AVAILABILITY_RANGE on the standard call, ahead of the deep working-hours/blocked reasons. If you see it, say the service isn't offered on those dates — not that staff aren't scheduled (they may well work then; the service just isn't offered). It covers dates both before and after the range.

  • deep: true needs a serviceId (resource-only + deep → MISSING_ARGUMENTS) and only refines a "no windows" result — it does nothing when windows already exist.

  • DiagnoseAvailability ignores booking policy and capacity — those come from ListAvailabilityTimeSlots (Step 1 / Step 4).

  • Resource-only diagnosis is lighter. Passing resourceId without serviceId catches missing/empty working hours but skips the window, location, and deep checks, so it can return "inconclusive" for service-dependent problems. Valid when there's no service context (e.g. the staff editor); otherwise pair the resource with a service.

  • Appointment-based services only.

API Documentation References

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.

Download ZIP

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