# How the products work together (/docs/ecosystem)

Obelism is a set of tools around a website or an online shop: **Improve**, **Content**, **Numbers** and **Media**, with an app for **Shopify**. Each is its own product with its own dashboard and docs, but they share one account, one [Organization](/docs/organizations) and one set of [Spaces](/docs/organizations/spaces), so a test, a page, its files and its numbers all belong to the same site.

| Product                                        | What it does                                                                             | Plan                                     |
| ---------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------- |
| [Improve](https://improve.obelism.studio/docs) | A/B tests, feature flags and audiences, with results per variant                         | Switched on or off per Organization      |
| [Content](https://content.obelism.studio/docs) | The headless CMS: your content model, pages, blocks, locales, editing on your own site   | Switched on or off per Organization      |
| [Numbers](https://numbers.obelism.studio/docs) | Analytics: visitors, pages, sources, clicks and your own events                          | Comes with Improve or Content, no switch |
| [Media](https://media.obelism.studio/docs)     | The file library: folders, alt text per language, focal points, shares, Shopify products | Comes with Content, no switch            |
| www.obelism.studio                             | Your account, Organizations, members, Spaces, billing and the [MCP server](/docs/agents) | Always there                             |

## What every product shares [#what-every-product-shares]

- **One account.** You sign in on www.obelism.studio once, for every product. Signing out anywhere signs you out everywhere, and passkeys, two-factor authentication and your sessions are managed in one place: see [Your account](/docs/account).
- **One Organization.** Members, their [roles](/docs/organizations/roles), which products they may use, and billing belong to the Organization, not to a product. Invite someone once and they reach every product you let them.
- **One Space per site.** A Space is one site or project. Improve's tests and flags, Content's model and entries, Numbers' events and Media's files of a site all live in the same Space, and every product opens the Space you were last in.
- **Three environments.** Improve, Content and Numbers keep their data per environment of a Space: `develop`, `staging` and `production`. Media's files are shared by a Space's environments.
- **Settings in one place.** A Space's page on www holds what more than one product reads: its [allowed origins](/docs/organizations/spaces#allowed-origins), its [connected deployments](/docs/organizations/spaces#connected-deployments), its Shopify store and the site's `.env`.
- **One switcher and one ⌘K.** Every dashboard has the same Organization and Space switcher and the same ⌘K prompt, which reads and changes the Space you're in, in your own words. See [Agents](/docs/agents#the-k-prompt).
- **One MCP server.** [www.obelism.studio/mcp](/docs/agents/mcp) carries every product's tools, behind one sign-in.

## Improve and Numbers [#improve-and-numbers]

Improve's tests are counted by Numbers.

- The Improve SDK sends a test's exposures and a site's events to Numbers. A site with Improve already reports to Numbers.
- Both use the same first-party visitor cookie, so a visitor in a test is the same visitor in Numbers.
- Improve's results per variant are worked out from the events in Numbers: conversions, and revenue when an event carries a `value` and `currency`.
- **Events** in Improve's sidebar opens Numbers on the same Space and environment.
- The allowed origins on www apply to both: a site's browser events are accepted from those origins only.

## Content and Improve [#content-and-improve]

A test or flag can switch blocks on a page.

- Every blocks field in Content takes an **A/B test or flag** block (the `_improve` block), with a list of blocks per variant. It is offered while the Organization has Improve switched on.
- The block names the test or flag by its slug, so the same page works in every environment. Publishing checks that the test or flag exists in Improve and that every variant is one of its options.
- Your site picks the variant with the Improve SDK. Content's SDK has the helpers: see [A/B tests in Content](https://content.obelism.studio/docs/guides/ab-tests).

## Content and Numbers [#content-and-numbers]

A page shows how often each block is clicked.

- Tag a block's element with `data-numbers-id` set to the block's id, and load Numbers' script or SDK on your site.
- Content's artboards and editor then show each block's click rate: the share of visitors who clicked it in the last 30 days, in the environment you're editing. See [Clicks](https://numbers.obelism.studio/docs/tracking/clicks).

## Content and Media [#content-and-media]

Content's assets are Media's files.

- Content's asset picker browses and uploads into Media's folders, and **Media** in Content's sidebar opens the library on the same Space.
- Alt text, focal points and Shopify products are set once on the file in Media. An asset field can override the alt text and focal point for one use.
- Changing a file in Media (its alt text, focal point, a replacement) reaches sites through Content: it sends Content's `asset.updated` webhook.
- Media knows where a file is used in Content, and doesn't delete a file that is still in use.
- Members who may use Content may use Media. There is no separate switch or plan for it.

## Shopify [#shopify]

One store per Space, connected once, used by every product.

- Install the Obelism app in Shopify and connect the store to a Space on www. Admins and developers connect stores. See [Spaces](/docs/organizations/spaces#shopify).
- **Content** picks products and collections in its fields and links, offers product grid, product page and collection page types, and sends webhooks when a product or collection changes. Prices and stock come live from Shopify.
- **Media** tags products on photos, suggests products for a photo, and lets store staff import files into a product from the Shopify admin. See [Shopify in Media](https://media.obelism.studio/docs/shopify).
- **Improve** runs tests on the storefront. The store's domain is not added to the allowed origins for you: add it on the Space's page.

## A site's `.env` [#a-sites-env]

The Space's page on www, and each product's settings, copy one `.env` for a site: every product's Organization, Space and environment, and a line for each token it needs.

```bash
IMPROVE_ORGANIZATION_ID=org_…
IMPROVE_SPACE_ID=space_…
IMPROVE_ENVIRONMENT=production
IMPROVE_API_TOKEN=

CONTENT_SPACE_ID=space_…
CONTENT_ENVIRONMENT=production
CONTENT_DELIVERY_TOKEN=

NUMBERS_ORGANIZATION_ID=org_…
NUMBERS_SPACE_ID=space_…
NUMBERS_ENVIRONMENT=production
NUMBERS_API_TOKEN=
```

Improve's and Content's lines are there while the Organization has them on, and `SHOPIFY_STORE_DOMAIN` and `SHOPIFY_STOREFRONT_TOKEN` once a store is connected. A token line is left out when a [connected deployment](/docs/organizations/spaces#connected-deployments) signs in for that product instead.

Tokens themselves are made in the product that accepts them: Improve's, Content's (delivery, preview and management) and Numbers'. Each expires after the time you choose (or never), and the Organization's admins and the token's creator get an email 14 and 3 days before.

## Billing [#billing]

Billing belongs to the Organization, not to a product: admins manage it on www, under the Organization's **Billing** tab, with its usage and invoices. Numbers and Media have no plan of their own; they come with Improve and Content.
