# discountkit — full documentation > The discounting platform for Shopify. This file concatenates every documentation page; canonical URLs are noted per section. --- # DiscountKit documentation Source: https://discountkit.app/docs/ DiscountKit runs every promotion you can imagine: pick a discount type, set the rules, and it runs everywhere — cart, checkout, and your storefront. Every section is here — discount types, DiscountKit Live, the component reference, and help guides. Use the sidebar or search to find what you need. ## DiscountKit Live Your discount data, published straight to storefront metafields — no API calls, no performance overhead. title="Introduction" description="How Live works: the dk:live tag, sync, limits and fan-out." href="/docs/live/introduction/" /> title="Storefront data" description="Reading discounts from product, collection and shop metafields." href="/docs/live/storefront-data/" /> ## Coming to these docs Discount types (volume, tiered, gift with purchase, order goals, custom rules), Live web components (``, ``, ``), Sidekick, POS, and test mode. --- # AI tools (MCP) Source: https://discountkit.app/docs/ai-tools/ The discountkit documentation is available as a remote [MCP](https://modelcontextprotocol.io) server, so your AI editor can search and read these docs directly. No install, no API key — it runs on the same edge deployment as this site. **Endpoint:** `https://discountkit.app/mcp` (streamable HTTP) ## Setup ```bash claude mcp add --transport http discountkit-docs https://discountkit.app/mcp ``` Add to `.cursor/mcp.json`: ```json { "mcpServers": { "discountkit-docs": { "url": "https://discountkit.app/mcp" } } } ``` Any MCP client with streamable HTTP support can connect to the endpoint directly. For stdio-only clients, bridge with: ```bash npx -y mcp-remote https://discountkit.app/mcp ``` ## Tools | Tool | What it does | | --- | --- | | `search_docs` | Ranked search across every docs page, with snippets and URLs | | `get_doc` | One page as full markdown, by path | | `list_docs` | Every page with title, description and URL | The machine-readable catalog lives at [`/mcp-schema.json`](/mcp-schema.json). Prefer plain files? The whole documentation set is also published at [`/llms.txt`](/llms.txt) and [`/llms-full.txt`](/llms-full.txt). --- # App blocks vs. Web Components Source: https://discountkit.app/docs/components/app-blocks-vs-web-components/ Every Live Component can be placed two ways. They render the **same component** from the **same data** — the difference is who places it, how it's configured, and where it's allowed to go. - **App blocks** — added through the **theme editor**. No code; every setting is a control in the editor. The right choice for most merchants, and the only way to render inside **product cards** on collection pages. - **Web Components** — the `` element written **directly into your theme's Liquid**. Configured with `data-*` attributes and `--dkl-*` CSS. For developers customizing a theme by hand. (These are labelled "Web Components" on each component page.) ## At a glance | | App block | Web Component | | --- | --- | --- | | **Added by** | Theme editor (drag-and-drop) | Hand-written in theme Liquid/HTML | | **Configuration** | Editor settings panel | `data-*` attributes | | **Styling** | Editor pickers (colours, spacing, fonts) | `--dkl-*` CSS styling tokens | | **Which discount** | The block's **Discount** picker | `data-discount-id` attribute | | **Product cards / collection grids** | ✅ Supported | ❌ Product-page only | | **Needs the app embed** | ✅ Yes | ✅ Yes | | **No-flicker render** | ✅ Inline server render | ✅ From a head carrier | | **Best for** | Merchants, no code | Developers, full control | :::note Both paths require the **Discount Kit Live** app embed to be enabled — it loads the shared runtime (styles + behaviour) and pre-renders the data each component reads. See [Enable the Global App Embed](/docs/components/overview/#enable-the-discount-kit-live-app-embed). ::: ## App blocks An app block is a theme block you add in the editor — **DK: Price**, **DK: Volume Groups**, **DK: Discount Badge**, or **DK: Order Goal**. Drop it into a section or product-card slot, and configure it entirely through the editor's settings panel. ```text Online Store → Themes → Customize → (add block) → DK: Price ``` What an app block does for you: - **Resolves the eligible discount itself** — using the shared eligibility rules, so it agrees with the custom-tag path. When more than one discount applies, it renders the first eligible one, or a specific one chosen in its **Discount** picker setting. - **Exposes every option as an editor control** — colours, spacing, labels, and behaviour toggles. Your choices are written into a scoped `