skills/sales-bagisto/SKILL.md
Bagisto platform help — open-source (MIT) Laravel/PHP eCommerce framework for developers and makers: products, orders, carts, customers, and checkout via a REST API and a GraphQL API (Shop + Admin), plus multi-vendor marketplace, POS, B2B, and multi-channel/headless storefronts, self-hosted or on Bagisto Cloud. Use when building a Bagisto REST or GraphQL integration, authenticating requests (Laravel Sanctum bearer token, X-STOREFRONT-KEY storefront key, or JWT for the headless package), creating a guest cart token, pulling products/orders into a CRM or warehouse, fixing a broken install or slow page loads, fixing broken images after an APP_URL change, choosing self-host vs Bagisto Cloud, or comparing Bagisto to Medusa/Saleor/Shopify. Do NOT use for cross-cart checkout-conversion strategy (use /sales-checkout) or picking a Merchant of Record for global tax (use /sales-merchant-of-record).
npx skillsauth add sales-skills/sales sales-bagistoInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
If references/learnings.md exists, read it first for accumulated platform knowledge.
Figure out what the user actually needs before diving in:
/api/shop, /api/admin), GraphQL API (/api/graphql), the older headless bagisto/graphql-api package (/graphql), the admin panel UI, or a marketplace/POS add-on?X-STOREFRONT-KEY storefront key, a guest cart token, or JWT (legacy headless package)?Skip-ahead rule: if the prompt already says what they need, go straight to Step 2.
If the question is really a cross-platform strategy, hand off with the exact command:
| If the user wants… | Route to |
|---|---|
| Checkout conversion / order bumps / cart-abandonment tactics across carts | /sales-checkout {question} |
| Whether to use a Merchant of Record for global VAT/sales tax | /sales-merchant-of-record {question} |
| Digital-product pricing & launch strategy | /sales-digital-products {question} |
| Post-purchase email / abandoned-cart sequences | /sales-email-marketing {question} |
| Comparing Bagisto against another commerce backend | /sales-checkout {question} (platform selection) |
Otherwise it's a Bagisto-specific question — answer it here.
Read references/platform-guide.md for the full reference — modules and what's API vs event vs UI-only, pricing/plan posture, data model with JSON shapes, and quick-start recipes. For raw auth/endpoint/pagination detail, read references/bagisto-api-reference.md.
Answer using only the relevant section — don't dump the whole guide.
X-STOREFRONT-KEY (pk_storefront_..., generated at install or via php artisan bagisto-api:generate-key) on every Shop call, plus a Laravel Sanctum bearer token (Authorization: Bearer 1|...) for customer/admin-scoped routes. Guests get a cart token (POST /api/shop/cart-tokens). The older standalone bagisto/graphql-api (Mobikul) package instead uses JWT + an x-app-secret-key header — don't mix the two./api/shop/..., /api/admin/...) and GraphQL (/api/graphql, playground at /api/graphiql) both split into a public Shop API and a protected Admin API. Choose REST for simple CRUD/scripts, GraphQL when a headless storefront wants to request exactly the fields it needs.checkout.order.save.after) in a listener and fetch() out yourself, schedule a polling job against /api/admin/orders, or add a community webhook package. Don't expect a Shopify-style "webhooks" settings page.If you discover a gotcha or fix not in references/learnings.md, append it there with today's date.
Best-effort from research (2026-06) — re-verify plan gates, fees, auth headers, and API package versions against live docs.
APP_URL in .env must exactly match the real site URL (scheme + host). A mismatch breaks asset/image URLs; serving assets over HTTP on an HTTPS site triggers browser mixed-content blocking. Fix APP_URL, then php artisan optimize:clear.php artisan optimize / route+view+config caching, use Redis for cache & sessions, and run a real queue worker. Bundle-product price calculation is a known slow path on category pages — cache aggressively or limit bundles per listing.storage/ and bootstrap/cache/ are writable by the web user and required PHP extensions are present before re-running the installer.X-STOREFRONT-KEY + Sanctum; the older bagisto/graphql-api package uses JWT + x-app-secret-key and a /graphql endpoint. Tutorials mix them — confirm which package is installed before quoting headers/endpoints.composer require bagisto/rest-api (or bagisto/graphql-api) then run the package's php artisan ...:install. The GraphQL package needs middleware tweaks in bootstrap/app.php.php artisan lighthouse:cache for production and php artisan lighthouse:clear-cache after schema changes, or queries get slow / stale./sales-checkout — Checkout-conversion strategy across carts (order bumps, upsells, cart-abandonment recovery) and platform selection./sales-medusa — Another open-source, self-hostable headless commerce engine (Node.js/TypeScript, MIT) — compare if you're choosing a stack; Bagisto is Laravel/PHP./sales-saleor — Open-source GraphQL-first headless commerce (Python/Django) with native webhooks — compare against Bagisto's Laravel/event model./sales-spree — Open-source (BSD-3) headless commerce on Ruby on Rails with REST APIs and native outbound webhooks — compare if your team is choosing between the Ruby and PHP/Laravel stacks./sales-shopify — The leading hosted commerce backend; compare against Bagisto's self-hosted/open-source model./sales-merchant-of-record — Whether to use a MoR (Paddle, Lemon Squeezy) for global tax instead of self-managing (Bagisto is not a MoR)./sales-do — Not sure which skill to use? The router matches any sales objective to the right skill. Install: npx skills add sales-skills/sales --skill sales-do -a claude-codeUser: "I'm writing a script to sync every Bagisto order into BigQuery nightly. What auth do I use and how do I page through them?"
Approach: Use the Admin REST API. Authenticate with a Laravel Sanctum bearer token (Authorization: Bearer {token}) obtained from the admin login endpoint, and send Accept: application/json. Call GET /api/admin/orders?page=1&per_page=50 (per-page is capped at 50) and walk pages using the response headers X-Total-Pages / X-Total-Count / X-Page. There's no documented hard rate limit, so still throttle politely and back off on errors. If you're on the GraphQL package instead, query orders under the Admin API and page with Relay cursors (first/after + pageInfo).
User: "Where do I add a webhook URL in Bagisto so my CRM gets pinged on every new order?"
Approach: Explain Bagisto core has no outbound-webhook settings page. Because it's a Laravel app, register a listener on the checkout.order.save.after event (in a service provider's $listen map or an EventServiceProvider), load the order in the handler, and fetch()/Http::post() to your CRM — you own retries/signing/logging. Alternatives: a scheduled job that polls GET /api/admin/orders?per_page=50 for new IDs since the last run, or a community webhook package. Run a real queue worker so the outbound call doesn't block checkout.
User: "Should I self-host Bagisto or use Bagisto Cloud? I'm a solo founder launching a small store." Approach: The engine is MIT/free with no per-sale fee either way — Cloud just sells managed infra. Self-hosting means you run PHP/Laravel + MySQL/MariaDB + Redis + a queue worker on a VPS (Railway/Render/DigitalOcean) and own updates, backups, and scaling. Bagisto Cloud (Starter vs Pro tiers — Pro adds a higher uptime SLA and advanced support) removes the ops burden. If they're comfortable with a LAMP+Redis stack and Laravel ops, self-host is cheapest; if not, Cloud is the lower-friction path. Match the choice to their infra appetite, not defaults — and note pricing should be re-verified on the live page.
Set APP_URL in .env to the exact live URL (correct scheme and host), then run php artisan optimize:clear (or config:clear + cache:clear). Broken images and HTTPS "mixed content" warnings are almost always an APP_URL/scheme mismatch causing assets to load from the wrong origin. Confirm the storage symlink exists (php artisan storage:link).
Build caches (php artisan optimize, plus route/view/config caching), move cache & sessions to Redis, and run a queue worker so deferred work isn't done in-request. Category pages with bundle products are a known slow path — limit bundles per listing or cache the computed prices. If still slow, profile the DB and add indexes; very large catalogs benefit from the search/indexer being kept warm.
You're likely mixing the two API generations. The current unified API uses /api/shop + /api/admin (REST) and /api/graphql (GraphQL) with X-STOREFRONT-KEY + Sanctum bearer auth. The older standalone bagisto/graphql-api (Mobikul) package uses a /graphql endpoint with JWT and an x-app-secret-key header. Check which package is in composer.json and read that package's docs specifically; install the REST/GraphQL package and run its php artisan ...:install if the routes are missing entirely.
tools
Wizlogo (wizlogo.com) platform help — a budget online logo maker (template/style-variation, marketed as "AI") plus a hub of FREE branding tools (business-name, blog-name and slogan generators, business-card maker, invoice generator, color converter, domain search). The pricing traps: the FREE logo is PERSONAL-USE-ONLY; the two cheap paid tiers are RASTER PNG/JPG only — Single (~€39.99 one-time) and Unlimited (~€3.99 per WEEK, recurring) — and VECTOR (SVG/PDF/EPS) is gated to the ~€299.99 Enterprise tier, which also bundles human designer edits and a social kit. Transparent PNG is on all paid plans. Use when making a Wizlogo logo, understanding free-vs-paid or personal-vs-commercial use, which tier unlocks vector/SVG for print, the weekly-subscription billing trap, its free name/slogan generators, or whether it has an API (UI-only — no public API, webhooks, Zapier or MCP). Do NOT use to just generate the business name (use /sales-namelix) or to compare/validate branding tools (use /sales-idea-validation).
tools
VistaPrint platform help (vistaprint.com, a Cimpress company) — the small-business design + print + digital-marketing platform: a free AI Logomaker (4 generations, 60 more after free sign-up) exporting SVG/PNG/PDF at 4000x4000 with no watermark, a free Brand Kit, business cards/flyers/signage/apparel/promo print, and a website builder. THE RIGHTS TRAP: VistaPrint states NO intellectual-property rights transfer on an AI-generated logo — you get usage rights but CANNOT register it for trademark or copyright; only its human designer service transfers full IP. Use when making a VistaPrint logo, asking if you own or can trademark it, running out of AI logo credits, printed colors not matching the screen, bleed/DPI/font file-prep rejections, or asking whether VistaPrint has an API (the consumer site does not — automation runs through the parent Cimpress Open partner-fulfilment API). Do NOT use for Vista Social scheduling (use /sales-vistasocial) or comparing logo tools market-wide (use /sales-idea-validation).
tools
Turbologo (turbologo.com) platform help — a budget AI/DIY logo maker: enter a business name + industry, pick icons and colors, and it proposes logo concepts you refine in an in-browser editor, then pay a one-time fee to download (designing is free, previews are watermarked, downloading is the paywall). Vector SVG/PDF is gated to the mid tier and up; the top tier adds a brand kit (business cards, letterheads, email signatures, social assets). Use when generating a logo in Turbologo, choosing which download tier to buy, vector SVG vs raster PNG, removing the free watermark, the time-limited edit-after-purchase window, pay-to-download pricing questions, whether an AI logo is yours to trademark, or whether Turbologo has an API to bulk-generate logos (it is UI-only — no public API, webhooks, Zapier, or MCP). Do NOT use to generate the business name (use /sales-namelix), compare or validate branding tools across the market (use /sales-idea-validation), or build wider marketing creative (use /sales-canva).
tools
Online Logo Maker (onlinelogomaker.com) platform help — a long-standing free/freemium DIY logo maker: build the mark yourself from icons, shapes, text, and fonts — MANUAL/template-based, NOT enter-a-name-get-AI-concepts. The free pack downloads a LOW-RES 300px PNG with a background; vector SVG, transparent PNG, and 2000px high-res are gated to a one-time lifetime Premium pack (not a subscription). The free tier's commercial-use rights are disputed by reviewers — clean ownership effectively needs Premium, and a shared-icon mark can be non-distinctive. Use for building/editing a logo here, free download vs Premium, vector SVG or transparent PNG, one-time pricing, commercial-use/trademark terms, near-namesake confusion (NOT LogoMaker.com / LogoMakr / Logomakerr.ai), or whether it has an API (UI-only — no API, webhooks, Zapier, MCP). Do NOT use to generate the business name (use /sales-namelix), compare branding tools across the market (use /sales-idea-validation), or build wider creative (use /sales-canva).