> For the complete documentation index, see [llms.txt](https://help.recart.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.recart.com/developers/public-api/subscriber/statistics-view-of-the-sites-subscribers.md).

# Statistics view of the site's subscribers

One statistics view over the site's subscribers. `name` picks the view. When the date range is omitted it defaults to the last 7 days.

`list-summary` returns the list statistics for the range: list size at the end of the range, new subscriptions (gross — re-subscribes included), subscriber-initiated unsubscriptions by how the opt-out arrived (keyword, ai, optOutLink, dashboard, publicApi, integration) and automated cleaning by reason (deactivatedNumber, knownLitigator, landline, reassigned). Net growth is not a field — compute subscriptions − unsubscriptions − cleaning.

`list-history` returns the same statistics per UTC calendar day of the range, one entry per day, without bucketing.

`countries-summary` returns the currently subscribed numbers by country (the phone number's carrier country), sorted descending. It is a snapshot: it takes no date range, and a date range returns 400.

`subscription-sources` returns the new SMS subscriptions collected in the range, one entry per source — where the subscribers came from: opt-in tools by type (popup, landing-page, embedded-form, keyword), and non-tool sources (import, custom-integration, public-api, shopify\_checkout, …). Every subscription counts toward exactly one source; a source without SMS subscriptions in the range is absent. Entries are sorted descending by smsSubscriptions. For the per-tool split use /optin-tools/views/optin-tools-summary.

The data of list-summary, list-history and countries-summary is grouped by channel: `channel` selects the channels and defaults to sms. The legacy facebook channel is not served.

```json
{"openapi":"3.1.0","info":{"title":"Recart API","version":"2023-12"},"tags":[{"name":"Subscriber","description":"Subscribers"}],"servers":[{"url":"https://api.recart.com/app-integrations/2023-12","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-Recart-API-Key","description":"It can be obtained in Recart account after contacting Support"}},"schemas":{"SubscribersViews":{"type":["object"],"required":["type","attributes"],"properties":{"type":{"type":"string","enum":["subscribers-views"]},"attributes":{"type":"object","description":"The requested view's data under its name — exactly one key per\nrequest.\n","minProperties":1,"properties":{"subscription-sources":{"type":"array","description":"One entry per subscription source, sorted descending by\nsmsSubscriptions.\n","items":{"$ref":"#/components/schemas/SubscriptionSourcesItem"}},"list-summary":{"$ref":"#/components/schemas/SubscriberListStatistics"},"list-history":{"type":"array","description":"One entry per UTC calendar day of the range.","items":{"$ref":"#/components/schemas/SubscriberListHistoryItem"}},"countries-summary":{"$ref":"#/components/schemas/SubscribersByCountry"}}}}},"SubscriptionSourcesItem":{"type":"object","description":"New SMS subscriptions collected from one source in the range. A\nsource is either an opt-in tool type (popup, landing-page,\nembedded-form, keyword) or a non-tool source slug (import,\ncustom-integration, public-api, shopify_checkout, …).\n","required":["source","smsSubscriptions"],"properties":{"source":{"type":"string"},"smsSubscriptions":{"type":"integer"}}},"SubscriberListStatistics":{"type":"object","description":"List statistics of one period, grouped by channel — only the\nchannels selected with `channel` are present.\n","properties":{"sms":{"type":"object","description":"SMS list statistics — list size at the end of the period, and\nthe subscriptions, opt-outs and cleaning removals within it.\n","required":["subscribers","subscriptions","unsubscriptions","cleaning"],"properties":{"subscribers":{"type":"integer","description":"SMS subscribers at the end of the period (list size)."},"subscriptions":{"type":"integer","description":"New SMS subscriptions in the period, gross — re-subscribes included."},"unsubscriptions":{"type":"object","description":"Subscriber-initiated SMS opt-outs in the period, by how the opt-out arrived.","required":["keyword","ai","optOutLink","dashboard","publicApi","integration"],"properties":{"keyword":{"type":"integer","description":"STOP or another unsubscribe keyword texted in (AI-detected replies excluded)."},"ai":{"type":"integer","description":"Free-text replies the AI intent classifier recognized as an opt-out."},"optOutLink":{"type":"integer","description":"The opt-out link in a message."},"dashboard":{"type":"integer","description":"Unsubscribed by the merchant in the dashboard."},"publicApi":{"type":"integer","description":"Unsubscribed through the public API (DELETE /subscriptions)."},"integration":{"type":"integer","description":"Opt-outs synced from an integration such as Klaviyo."}}},"cleaning":{"type":"object","description":"Automated list cleaning in the period, by reason.","required":["deactivatedNumber","knownLitigator","landline","reassigned"],"properties":{"deactivatedNumber":{"type":"integer","description":"The carrier reported the number as deactivated."},"knownLitigator":{"type":"integer","description":"The number is on the known-litigator list."},"landline":{"type":"integer","description":"Landline number, cannot receive SMS."},"reassigned":{"type":"integer","description":"The number was reassigned to a new owner."}}}}}}},"SubscriberListHistoryItem":{"allOf":[{"type":"object","required":["date"],"properties":{"date":{"type":"string","format":"date","description":"The UTC calendar day the statistics belong to."}}},{"$ref":"#/components/schemas/SubscriberListStatistics"}]},"SubscribersByCountry":{"type":"object","description":"Currently subscribed numbers by country, grouped by channel.","properties":{"sms":{"type":"array","description":"Sorted by subscribers, descending.","items":{"type":"object","required":["countryCode","subscribers"],"properties":{"countryCode":{"type":"string","description":"Country code of the phone number from the carrier lookup."},"subscribers":{"type":"integer","description":"Currently subscribed SMS subscribers with a number in this country."}}}}}},"HttpErrorBody":{"type":"object","required":["errors"],"properties":{"errors":{"type":"array","items":{"type":"object","required":["id","code","title","detail"],"properties":{"id":{"type":"string"},"code":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"}}}}}}},"responses":{"HttpError":{"description":"HTTP Error response","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/HttpErrorBody"}}}}}},"paths":{"/subscribers/views/{name}":{"get":{"summary":"Statistics view of the site's subscribers","tags":["Subscriber"],"operationId":"getSubscribersView","description":"One statistics view over the site's subscribers. `name` picks the\nview. When the date range is omitted it defaults to the last 7 days.\n\n`list-summary` returns the list statistics for the range: list size\nat the end of the range, new subscriptions (gross — re-subscribes\nincluded), subscriber-initiated unsubscriptions by how the opt-out\narrived (keyword, ai, optOutLink, dashboard, publicApi, integration)\nand automated cleaning by reason (deactivatedNumber, knownLitigator,\nlandline, reassigned). Net growth is not a field — compute\nsubscriptions − unsubscriptions − cleaning.\n\n`list-history` returns the same statistics per UTC calendar day of\nthe range, one entry per day, without bucketing.\n\n`countries-summary` returns the currently subscribed numbers by\ncountry (the phone number's carrier country), sorted descending. It\nis a snapshot: it takes no date range, and a date range returns 400.\n\n`subscription-sources` returns the new SMS subscriptions collected\nin the range, one entry per source — where the subscribers came\nfrom: opt-in tools by type (popup, landing-page, embedded-form,\nkeyword), and non-tool sources (import, custom-integration,\npublic-api, shopify_checkout, …). Every subscription counts toward\nexactly one source; a source without SMS subscriptions in the range\nis absent. Entries are sorted descending by smsSubscriptions. For\nthe per-tool split use /optin-tools/views/optin-tools-summary.\n\nThe data of list-summary, list-history and countries-summary is\ngrouped by channel: `channel` selects the channels and defaults to\nsms. The legacy facebook channel is not served.\n","parameters":[{"name":"name","in":"path","required":true,"description":"The view to return","schema":{"type":"string","enum":["subscription-sources","list-summary","list-history","countries-summary"]}},{"name":"dateFrom","in":"query","description":"First day of the range, inclusive (YYYY-MM-DD, UTC).\nDefaults to 7 days before `dateTo`. Must not be older than\n18 months — the API does not serve older data, and an older\n`dateFrom` returns 400.\n","schema":{"type":"string","format":"date"}},{"name":"dateTo","in":"query","description":"Last day of the range, inclusive — `dateTo=2026-08-24` includes\nthe whole of 2026-08-24 (UTC). Defaults to today.\n","schema":{"type":"string","format":"date"}},{"name":"channel","in":"query","description":"Channels to return — list-summary, list-history and\ncountries-summary only. Each selected channel appears as a key\nin the view's data. Defaults to sms; the legacy facebook channel\nis not served.\n","schema":{"type":"array","items":{"type":"string","enum":["sms"]},"default":["sms"]}}],"responses":{"200":{"description":"Ok","content":{"application/vnd.api+json":{"schema":{"type":"object","properties":{"data":{"description":"Always one resource of type subscribers-views;\nattributes holds the requested view under its name.\n","$ref":"#/components/schemas/SubscribersViews"}}}}}},"4XX":{"$ref":"#/components/responses/HttpError"},"5XX":{"$ref":"#/components/responses/HttpError"}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.recart.com/developers/public-api/subscriber/statistics-view-of-the-sites-subscribers.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
