> ## Documentation Index
> Fetch the complete documentation index at: https://docs.formitto.com/llms.txt
> Use this file to discover all available pages before exploring further.

# E-commerce

> Read your shop (e-commerce) widgets.

An **e-commerce widget** is an embeddable product, subscription, or donation
widget bound to a verified domain. Shop widgets are read-only in v1.

## The shop widget object

```json theme={null}
{
  "id": 77,
  "name": "Tee shirt",
  "type": "one_time",
  "productName": "Formitto Tee",
  "description": "100% cotton",
  "priceCents": 2500,
  "currency": "usd",
  "fulfilmentType": "physical",
  "imageUrl": "https://cdn.example.com/tee.png",
  "domain": { "id": 5, "domain": "example.com" },
  "orderCount": 8,
  "imageUrls": ["https://cdn.example.com/tee.png"],
  "interval": null,
  "trialDays": null,
  "createdAt": "2026-05-01T12:00:00.000Z",
  "updatedAt": "2026-05-18T08:00:00.000Z"
}
```

`type` is `one_time`, `subscription`, or `donation`. `fulfilmentType` is
`digital`, `service`, or `physical`. List responses include `orderCount`; the
single-widget view adds `imageUrls`, `interval`, and `trialDays`. Stripe IDs
and download URLs are never exposed.

## List shop widgets

`GET /v1/ecommerce-widgets` — scope `read:ecommerce`. Supports `page`,
`limit`, and `domainId`.

<CodeGroup>
  ```bash curl theme={null}
  curl https://formitto.com/v1/ecommerce-widgets \
    -H "Authorization: Bearer fmt_live_xxxxxxxx"
  ```

  ```typescript TypeScript theme={null}
  const result = await formitto.ecommerce.listEcommerceWidgets({});
  ```
</CodeGroup>

## Get a shop widget

`GET /v1/ecommerce-widgets/{id}` — scope `read:ecommerce`.

<CodeGroup>
  ```bash curl theme={null}
  curl https://formitto.com/v1/ecommerce-widgets/77 \
    -H "Authorization: Bearer fmt_live_xxxxxxxx"
  ```

  ```typescript TypeScript theme={null}
  const widget = await formitto.ecommerce.getEcommerceWidget({ id: 77 });
  ```
</CodeGroup>

To read a widget's orders, see [Orders](/resources/orders).
