# Coming from Shopify

> What each part of a Shopify app is called on Storeware, the command that turns shopify.app.toml into a manifest, and what has no match yet.

Source: https://storeware.ai/docs/get-started/coming-from-shopify

If you have built a Shopify app, you already know how a Storeware app works. It is a service at an HTTPS address, a manifest that says what it may reach, signed webhooks, pages framed in the admin, and an API token per shop. This page maps each part across.

## Start with your manifest

```bash
npx @storeware/cli app import-shopify
```

Run it in the folder that holds `shopify.app.toml`. It writes `storeware.app.toml` beside it, with your scopes, webhook topics, app proxy, admin home and redirect URLs carried across, then lists everything it could not carry, each with the page that covers it. It never overwrites a manifest unless you pass `--force`. Then:

```bash
npx @storeware/cli validate
npx @storeware/cli app dev -- npm run dev
```

## Part by part

| On Shopify                               | On Storeware                                                                                                              | Read                                                   |
| ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ |
| `shopify.app.toml`                       | `storeware.app.toml`, stored as written with every release                                                                | [The manifest](https://storeware.ai/docs/build-apps/manifest)                   |
| Access scopes                            | `[oauth] scopes`, shown to the merchant before install                                                                    | [Permissions](https://storeware.ai/docs/build-apps/permissions)                 |
| OAuth and token exchange                 | Installs start in Storeware; your app gets a token per shop that lasts 24 hours, which the SDK refreshes                  | [Installs and tokens](https://storeware.ai/docs/build-apps/installs-and-tokens) |
| App Bridge                               | App Bridge version 2: toasts, title bar, save bar, modals, confirm, resource picker, navigation                           | [App Bridge](https://storeware.ai/docs/extensions/app-bridge)                   |
| App Bridge React                         | `@storeware/app-bridge-react`, a provider and hooks                                                                       | [App Bridge React](https://storeware.ai/docs/extensions/app-bridge-react)       |
| Polaris                                  | `@storeware/app-ui`, React components styled by the admin's own variables                                                 | [App UI](https://storeware.ai/docs/extensions/app-ui)                           |
| Session tokens                           | `?session=` on first load, then `bridge.sessionToken()`, read by `authenticateAdmin`                                      | [App Bridge](https://storeware.ai/docs/extensions/app-bridge#session-tokens)    |
| Admin UI extensions (blocks and actions) | Panels and actions at points in the admin, framed pages that speak App Bridge                                             | [Inside the admin](https://storeware.ai/docs/extensions/admin)                  |
| Admin links                              | Your home and up to five `navigation` pages in `[app]`, and actions in a record's Apps menu                               | [Inside the admin](https://storeware.ai/docs/extensions/admin)                  |
| Webhook subscriptions                    | `[webhooks] url` and `events`, each delivery signed, never redirected                                                     | [Webhooks](https://storeware.ai/docs/webhooks)                                  |
| Compliance webhooks                      | `[privacy] url`, for data requests and erasures                                                                           | [Webhooks](https://storeware.ai/docs/webhooks)                                  |
| Admin API                                | A REST API with an OpenAPI document, the same one the admin uses                                                          | [API reference](https://storeware.ai/docs/api-reference)                        |
| Metafields your app owns                 | `[[metafields.definitions]]` in the manifest                                                                              | [Manifest reference](https://storeware.ai/docs/build-apps/manifest-reference)   |
| Shopify Functions                        | Checkout functions: `discount`, `delivery_rates`, `payment_methods` and `cart_validation`, in TypeScript, in a hosted app | [Checkout functions](https://storeware.ai/docs/build-apps/checkout-functions)   |
| Carrier service                          | Your own delivery rates at checkout, beside the shop's                                                                    | [Delivery rates](https://storeware.ai/docs/extensions/delivery-rates)           |
| Theme app extensions                     | Blocks in four named slots, and sections a merchant places on any page                                                    | [On the shop front](https://storeware.ai/docs/extensions/storefront)            |
| App proxy                                | `[app_proxy] url`, served at `/apps/<your slug>` on the shop's own address                                                | [App proxy](https://storeware.ai/docs/extensions/app-proxy)                     |
| Flow triggers and actions                | `[[automations.triggers]]` and `[[automations.actions]]` in the merchant's automations                                    | [Automations](https://storeware.ai/docs/extensions/automations)                 |
| Billing API and managed pricing          | `[billing]`: plans Storeware shows at install, or charges you ask for, including by use up to a cap                       | [Charging merchants](https://storeware.ai/docs/selling/billing)                 |
| Development stores                       | Development stores that take test payments                                                                                | [Development stores](https://storeware.ai/docs/get-started/development-stores)  |
| `shopify app dev`                        | `storeware app dev`, which opens a tunnel and installs your app on a development store                                    | [Build your first app](https://storeware.ai/docs/get-started/quickstart)        |
| `shopify app deploy`                     | `storeware app deploy`, which also hosts your app for free if you ask                                                     | [Hosting on Storeware](https://storeware.ai/docs/build-apps/hosting)            |

## What changes

- **Your sales.** Storeware takes no share of what your app sells, at any amount. Stripe's cost to collect and pay out is passed on at cost. See [Earnings and payouts](https://storeware.ai/docs/selling/earnings-and-payouts).
- **API versions.** There are none to move between. `/api/v1` only grows, and anything retired gets at least 24 months of notice, with `Deprecation` and `Sunset` headers on the call itself. See [API reference](https://storeware.ai/docs/api-reference#versions-and-notice).
- **Hosting.** You can keep your own server, or run your app on Storeware's edge at `<your slug>.storewareapps.com`, free while in beta. Checkout functions need it.
- **Functions in TypeScript.** A checkout function is a pure TypeScript function in your hosted app, not WebAssembly. It runs wherever a basket is priced, so a discount it gives holds for an AI agent's checkout too.
- **Settings for free.** Declare `[settings]` and Storeware draws the form for the merchant. See [Settings](https://storeware.ai/docs/extensions/settings).
- **Review.** A release that asks for nothing new skips the review queue. See [Your listing](https://storeware.ai/docs/selling/listing).

## What has no match yet

- **Checkout UI extensions.** Storeware draws its own checkout. Change what it charges and offers with checkout functions; nothing of yours is drawn inside it.
- **Cart transforms, fulfilment constraints and order routing functions.** Only the four kinds above exist.
- **Point of sale and customer account extensions.** Storeware has no point of sale, and no extension points in a customer's account.
- **App embed blocks and scripts on every page.** Storefront blocks and sections are drawn on the server and carry no script.
- **Web pixels.** There is no extension for them.
- **A GraphQL Admin API.** The admin API is REST. The [storefront API](https://storeware.ai/docs/api-reference/storefront-graphql) is GraphQL.

If something you need is missing, write to us from the [contact page](https://storeware.ai/contact).
