API Reference

Shop analytics

Shop-wide analytics across all forms.

GET
/v1/engagement

Authorization

apiKey
headerAuthorizationBearer <token>

A Formtoro API key minted in Settings → Connections. A key carries one or more scopes; an endpoint refuses a key that lacks its required scope with 403 insufficient_scope. Scopes:

  • analytics:read — all aggregate read endpoints.
  • customers:read — customer-level lifetime value.
  • forms:write — create and edit forms (drafts). Grantable only by a member who holds the Form-editing permission.
  • forms:publish — save versions and turn forms on or off on the live storefront. Grantable only by a member who holds the Form-publishing permission.
  • discounts:read — read discount definitions. Grantable only by a member who holds the Discounts-view permission.

Query Parameters

range?string

Time window. Shorthand (7d/30d/90d), an ISO pair (2026-01-01..2026-01-31), or a single ISO day. Omitted → last 30 days.

Response Body

An array of analytics rows plus meta (with the resolved range).

application/json
  1. response
data*array<>

Endpoint-specific payload.

meta*
curl -X GET 'https://public-api.formtoro.com/v1/engagement?range=30d'
{  "meta": {    "requestId": "string",    "shopId": "string",    "credentialId": "string",    "range": {      "from": "2019-08-24T14:15:22Z",      "to": "2019-08-24T14:15:22Z"    }  },  "data": [    {}  ]}

Subscription metrics

GET
/v1/subscriptions

Authorization

apiKey
headerAuthorizationBearer <token>

A Formtoro API key minted in Settings → Connections. A key carries one or more scopes; an endpoint refuses a key that lacks its required scope with 403 insufficient_scope. Scopes:

  • analytics:read — all aggregate read endpoints.
  • customers:read — customer-level lifetime value.
  • forms:write — create and edit forms (drafts). Grantable only by a member who holds the Form-editing permission.
  • forms:publish — save versions and turn forms on or off on the live storefront. Grantable only by a member who holds the Form-publishing permission.
  • discounts:read — read discount definitions. Grantable only by a member who holds the Discounts-view permission.

Query Parameters

range?string

Time window. Shorthand (7d/30d/90d), an ISO pair (2026-01-01..2026-01-31), or a single ISO day. Omitted → last 30 days.

Response Body

An array of analytics rows plus meta (with the resolved range).

application/json
  1. response
data*array<>

Endpoint-specific payload.

meta*
curl -X GET 'https://public-api.formtoro.com/v1/subscriptions?range=30d'
{  "meta": {    "requestId": "string",    "shopId": "string",    "credentialId": "string",    "range": {      "from": "2019-08-24T14:15:22Z",      "to": "2019-08-24T14:15:22Z"    }  },  "data": [    {}  ]}

Shop-wide totals

GET
/v1/project/stats

Authorization

apiKey
headerAuthorizationBearer <token>

A Formtoro API key minted in Settings → Connections. A key carries one or more scopes; an endpoint refuses a key that lacks its required scope with 403 insufficient_scope. Scopes:

  • analytics:read — all aggregate read endpoints.
  • customers:read — customer-level lifetime value.
  • forms:write — create and edit forms (drafts). Grantable only by a member who holds the Form-editing permission.
  • forms:publish — save versions and turn forms on or off on the live storefront. Grantable only by a member who holds the Form-publishing permission.
  • discounts:read — read discount definitions. Grantable only by a member who holds the Discounts-view permission.

Query Parameters

range?string

Time window. Shorthand (7d/30d/90d), an ISO pair (2026-01-01..2026-01-31), or a single ISO day. Omitted → last 30 days.

Response Body

An analytics object plus meta (with the resolved range).

application/json
  1. response
data*

An endpoint-specific analytics object. Shapes mirror the in-app analytics surface and the MCP analytics tools 1:1; see the per-tool docs for exact fields. Monetary fields are integer cents.

meta*
curl -X GET 'https://public-api.formtoro.com/v1/project/stats?range=30d'
{  "meta": {    "requestId": "string",    "shopId": "string",    "credentialId": "string",    "range": {      "from": "2019-08-24T14:15:22Z",      "to": "2019-08-24T14:15:22Z"    }  },  "data": {}}
GET
/v1/responses/distribution

Authorization

apiKey
headerAuthorizationBearer <token>

A Formtoro API key minted in Settings → Connections. A key carries one or more scopes; an endpoint refuses a key that lacks its required scope with 403 insufficient_scope. Scopes:

  • analytics:read — all aggregate read endpoints.
  • customers:read — customer-level lifetime value.
  • forms:write — create and edit forms (drafts). Grantable only by a member who holds the Form-editing permission.
  • forms:publish — save versions and turn forms on or off on the live storefront. Grantable only by a member who holds the Form-publishing permission.
  • discounts:read — read discount definitions. Grantable only by a member who holds the Discounts-view permission.

Query Parameters

range?string

Time window. Shorthand (7d/30d/90d), an ISO pair (2026-01-01..2026-01-31), or a single ISO day. Omitted → last 30 days.

Response Body

An array of analytics rows plus meta (with the resolved range).

application/json
  1. response
data*array<>

Endpoint-specific payload.

meta*
curl -X GET 'https://public-api.formtoro.com/v1/responses/distribution?range=30d'
{  "meta": {    "requestId": "string",    "shopId": "string",    "credentialId": "string",    "range": {      "from": "2019-08-24T14:15:22Z",      "to": "2019-08-24T14:15:22Z"    }  },  "data": [    {}  ]}