Skip to content

Troubleshooting

Common symptoms and their fixes. When in doubt, start with php bin/console marketplace:ping — it tells you which backend is bound and whether it can reach its data.

Install & schema

plugin:install fails writing the OAuth keypair

The plugin generates var/marketplace/oauth.id_rsa{,.pub} on install and needs write access to var/marketplace/. Fix permissions for the web/CLI user, then php bin/console plugin:install --activate FlyokaiMarketplace again (idempotent).

Tables missing / schema looks out of date

Re-run the idempotent apply: php bin/console marketplace:local:schema:apply. The 23 flyokai_* tables are reconciled from declarative DTOs every install / update; this re-applies them without data loss.

Offers & buy-box

A seller's offer doesn't show on the storefront

Almost always pending approval. Check the Offers admin for offers in pending_approval and approve them — only active offers reach the buy-box. To let sellers publish directly, enable autoApproveOffers. Also confirm marketplaceEnabled is on for that sales channel.

Offer exists on the parent product but not the variant

Offers are per-variant — the parent carries none. The buy-box resolves per variant. Backfill with php bin/console flyokai:marketplace:backfill-variant-offers.

Native product price isn't being overridden

Check priceDisplayMode. native never overrides; hybrid keeps the native price and only adds a synthetic offer in the widget. Use marketplace for buy-box pricing. See Cart & checkout.

Seller portal

Portal calls fail with CORS errors

The browser origin isn't allowed. Set Settings → Plugins → FlyokaiMarketplace → Seller portal → Seller portal CORS origin (sellerPortalOrigin) to the SPA's exact origin (default http://localhost:5173).

Portal login / JWT rejected
  • Verify the SPA's VITE_OAUTH_CLIENT_ID / SECRET match a client from marketplace:oauth:client:create.
  • If you ran marketplace:oauth:keypair:generate, all existing JWTs are now invalid — sellers must re-authenticate.
  • The seller's flyokai_user must exist and be active.
401/403 on a …/me/… endpoint

/flyok-portal/* runs under the portal route scope; the JWT must validate and resolve to a seller. A seller can only ever access their own data — a cross-seller id will 403.

Statements & payouts

Changing commission didn't change an existing statement

By design. Commission and fees are snapshotted onto PO lines at order placement; statements read those snapshots. New config only affects future orders. See Finance.

includeShippingInPayout change not reflected

It applies at generate / recompute time. Recompute an open statement to pick it up; closed / paid statements are frozen.

Remote

marketplace:ping still shows LocalMarketplaceBackend after installing Remote

The rebind happens in Remote's compiler pass at container build. Run php bin/console plugin:install --activate FlyokaiMarketplaceRemote, then clear the cache (bin/console cache:clear) so the container rebuilds.

Portal shows errors when the cluster is down

Intentional — there's no silent fallback. Under dataLocation=cluster a fallback would read the wrong DB. Bring the cluster back; sendRequest() recovers on its own.

Cluster 'restarted' but marketplace:ping fails

Stale workers holding the sockets. ss -lntp | grep -E '1339|1439' — kill leftover processes (systemd may report "active" while old workers own the port), then rerun.

Data migration

Migration aborts at schema_check

The data-plane tables differ between source and target (columns / types / nullability). Apply the schema on both ends (marketplace:local:schema:apply Shopware-side; cluster setup cluster-side), then rerun — it resumes from the failing step.

Migration stalls at restart_cluster

Step 7 polls the channel port for 30s. Your clusterRestartCommand may need a passwordless sudoers rule, or it isn't actually restarting the cluster. Fix the command, then rerun the same migrate command (state is persisted in var/marketplace/migration.state).

Writes are blocked but no migration is running

A migration left the maintenance flag set (e.g. it was interrupted before step 10). Don't toggle the flag by hand — rerun the migrate command so it finishes its steps and clears the gate cleanly.

Mail

Mail isn't delivered

The marketplace only sets the From identity (mailFromAddress / mailFromName); the transport is Shopware's. Check Settings → System → Mailer, then php bin/console marketplace:mail:smoke to test end-to-end.

Still stuck?

The authoritative text is in the plugin README.md files in the flyokai/flyokai monorepo. When code and docs disagree, the code wins — and marketplace:ping is your first instrument.