Skip to main content

Sales channels

The current source defines Sales Channels as an authenticated business-and-integration surface. It can list sales-channel definitions, show whether a business has an attached integration record, and expose persistent or outbound actions. This guide documents those fixed-source boundaries; it does not prove that any channel is deployed, connected, synchronized, or approved by a provider.

Do not operate this surface for documentation

Do not use live businesses, provider accounts, credentials, tokens, catalogs, menus, orders, callbacks, or external links. Connect, install, setup, enable, disable, disconnect, push, sync, and provider-navigation controls can create records or downstream effects and remain outside this source-only review.

Availability and navigation

The route is /connect/sales-channels. Current routing restricts it to level-0 administrators and redirects to Dashboard home unless the Sales Channels flag or eligible Connect Pro mode is present.

The sidebar additionally requires the Connect parent: an Enterprise project with the Dashboard Connect flag, or an eligible Pro project in Connect Pro mode. It excludes read-only administrators, read-only delivery managers, read-only/view-only business owners, and levels excluded by the Connect parent. The Sales Channels item then applies its own flag-or-Pro-mode gate. Route access, parent visibility, item visibility, and the returned integration inventory are independent gates.

Business list and authenticated reads

Sales Channels header with filter, refresh, search, and column controls

The source configures an authenticated, paginated business list with active-state filtering and search by business name, email, and phone. Selecting a business opens its details and requests:

  • the business record, including its attached third-party integration relationships;
  • the project integration catalogue, filtered client-side to sales_channel definitions;
  • the selected integration's plugin metadata and setup state when returned.

Business identity, contact fields, provider relationships, external identifiers, plugin metadata, and setup state are private operational data. GET is not presumed safe by verb, and none of these reads was executed for this documentation.

How source-defined states are derived

The business details compare each returned sales-channel definition with the business's third_party_integrations relationships. Source labels and controls then depend on returned fields:

Source stateUI boundary
No plugin is associatedThe source can present an install path when a plugin root exists, or a missing-plugin error otherwise.
Plugin exists but the business has no relationshipThe source can present Connect; selecting it issues a persistent request with an enabled state.
Business relationship existsThe source can present Setup, integration details, enabled state, external-ID input, action selection, or disconnect controls depending on returned plugin metadata.
Contact-us policy appliesThe regular install/connect control is replaced by a contact-us control.

A returned definition, logo, button label, or relationship record is not proof of provider authentication, external account health, menu/order flow, or deployed success.

The initial Connect request sends enabled: true without an External ID. In an existing sales-channel mapping, the External ID input is enabled, and both Save and enabled-switch requests include its current value with the enabled state. Current API source permits a nullable External ID and, when present, requires 1–255 characters and uniqueness within that third-party integration. The POS-only business sync-identifier hashing and clearing rules do not apply to a sales_channel relationship. These are fixed-source contracts, not proof that hosted validation or persistence accepted a value.

Persistent and outbound effect surfaces

The shared business-detail shell also wires the business enabled switch to a business update and the confirmed Delete action to business deletion. Custom fields opens business metadata create/delete controls. A visible Sync now control has no source handler in the inspected component, so its label is not evidence of dispatch.

Current Dashboard and API source expose the following request classes for a selected business and integration:

  • create or update the business-integration relationship, including enabled state and an optional external identifier;
  • delete the business-integration relationship;
  • invoke an allowed integration action such as business sync, menu sync, or menu push;
  • install a system plugin or open plugin-provided setup/settings destinations when metadata permits it.

The API source validates relationship data, can create or modify a record, invokes plugin hooks, and handles deletion. Its action controller limits named action classes and loads enabled plugins, hooks, and business relationships. These source paths establish possible effect classes only. No record, plugin, provider, menu, order, callback, or external destination was read or changed.

An existing mapping panel can request integration logs for the selected business and plugin. Its general-settings handler resolves a plugin-provided destination into an iframe and substitutes project, session-access, and language values; the shared Setup path similarly constructs a credential-bearing destination. Do not open, copy, capture, or share those destinations or log data. No log read, iframe, setup link, credential value, or external origin was accessed.

Fail-closed interpretation

  • Connect is a persistent relationship request, not merely informational guidance.
  • Disconnect is a deletion request; it is not a harmless local toggle.
  • Push menu, Sync menu, and Sync business can invoke plugin-backed work; a client toast is not completion evidence.
  • Install and Setup can cross plugin or external boundaries and must not be tested with a real account.
  • A failed, timed-out, or ambiguous response does not establish that no downstream effect occurred.

What remains unverified

Without immutable Dashboard/API serving receipts plus a credential-free synthetic business and intercepted provider/plugin boundary, this page does not claim:

  • which sales-channel definitions or plugins a deployed project returns;
  • that a connection, installation, setup, push, sync, callback, or deletion succeeds;
  • provider authentication, catalogue/menu synchronization, order ingestion, or external publication;
  • safety, idempotency, retry, rollback, or downstream completion for any request.

Related guides: Delivery services · Gift card manager