Service Plugins

Wix business solutions run prebuilt flows for things like calculating tax, quoting shipping, and validating a checkout. A service plugin is a backend extension that lets you inject your own code into one of those flows at a specific decision point.

For example, an app can implement the Additional Fees service plugin to add a packaging fee to every cart. When a customer checks out on a Wix site that has the app installed, Wix asks the app for any additional fees and shows the response in the order summary.

Common use cases include custom shipping providers, payment providers, tax calculators, and checkout validators.

How service plugins work

Service plugins invert the usual call pattern. Your code doesn't initiate the call. Wix initiates it during one of its own flows. The request describes the current state, like the cart or the checkout. Your response feeds back into the rest of the flow.

You implement the interface methods that the platform calls. Each interface defines its own request and response contract, and your response must match the contract exactly for Wix to use it. For how Wix handles timeouts and errors during a plugin call, see Custom Business Logic.

Available service plugin interfaces

Wix exposes a range of service plugin interfaces across its business solutions, covering things like checkout validations, shipping rates, payment processing, tax calculation, and form submissions. The available set depends on the development path.

Authentication and permissions

A service plugin runs with no caller identity. Wix invokes it on its own during a host flow, so there's no Wix user, member, or visitor identity attached, and the SDK's default auth in this context is null. To call Wix APIs from the plugin, you must use elevation.

What elevated calls can do is bounded:

  • For app-owned plugins, elevation runs the call as the Wix app, bounded by the app's permission scopes, declared in the app's manifest.
  • For site-owned plugins, elevation grants site admin authority.

The inbound request from Wix is signed so the plugin can verify it actually came from Wix. The Wix CLI handles this verification automatically. Self-managed implementations verify it explicitly.

Service plugins across development paths

The development path determines how you implement a service plugin:

  • Sites: Implement service plugins for a single site by adding a service plugin file to the site's backend code. See Available Service Plugins in Extend Websites for the available service plugin catalog.
  • Wix-managed headless projects:
    • Full Wix integration (Astro): Implement service plugins as backend extensions through the Wix CLI. The CLI generates the file structure and contract scaffolding. See Add Service Plugin Extensions with the Wix CLI.
    • Other frameworks: Don't support service plugins directly. Follow the same approach as self-managed headless projects.
  • Self-managed headless projects: Expose endpoints from their own backend that satisfy each interface's contract. The app's manifest declares which interfaces it implements, and Wix calls those endpoints during the relevant flows. See the Build Apps service plugin catalog for the available interfaces and Add Self-Hosted Service Plugin Extensions with the SDK or with REST in Build Apps.
  • Wix-managed apps: Implement service plugins as backend extensions through the Wix CLI. The CLI generates the file structure and contract scaffolding. See the Build Apps service plugin catalog for the available interfaces and Add a Service Plugin with the CLI.
  • Self-managed apps: Expose endpoints from their own backend that satisfy each interface's contract. The app's manifest declares which interfaces it implements, and Wix calls those endpoints during the relevant flows. See the Build Apps service plugin catalog for the available interfaces and Add Self-Hosted Service Plugin Extensions with the SDK or with REST in Build Apps.
  • Blocks apps: Don't support service plugin extensions in their backend. An app that uses Blocks for UI can still register service plugins by adding a CLI or self-hosted component for the service plugin logic.

See also

Last updated: 2 August 2026

Did this help?