Insito’s pricing is response-based. Every submitted response counts against your organisation’s monthly cap. Triggers, impressions, and “no survey shown” returns are free.Documentation Index
Fetch the complete documentation index at: https://docs.insito.app/llms.txt
Use this file to discover all available pages before exploring further.
What counts
Each row inserted into theresponses table = 1 against your
counter. That happens when:
- A user submits a complete or partial response from the modal
(
MicroSurvey.submitResponse(...)). - A queued offline response is flushed and accepted by the server.
What doesn’t count
MicroSurvey.trigger()calls that returnsurvey: null(audience filter, throttling, no matching survey).- Impressions (
/v1/sdk/impression— recorded for throttling only). - Failed responses (server returned a 4xx). Validation rejects don’t burn your quota.
- Dashboard test responses (you submitting via the Preview button).
Plans
| Plan | Monthly responses | Projects | Cost (USD) |
|---|---|---|---|
| Free | 100 | 1 | $0 |
| Pro | 5,000 | 5 | $49/mo |
| Scale | 50,000 | Unlimited | $299/mo |
| Enterprise | Custom | Unlimited | Contact us |
Limits reset on the first day of each calendar month, anchored to
UTC midnight. Usage carries over to the next billing cycle on
invoice — overages are billed at the next plan’s per-response rate.
What happens at the limit
Insito softens plan exhaustion in three stages:80% usage
Owners + admins of the organisation receive an email warning
(“You’re at 80% of your Pro plan responses this month”). No
user-visible change.
100% usage
New responses are still accepted for the rest of the day,
then start rejecting with a 402 status code. The SDK’s
response_failed event fires with reason: "plan_exhausted".
The dashboard shows a banner.Recovery
Either upgrade (admin.insito.app/billing)
or wait for the monthly reset. New responses resume immediately
after either action.
SDK behaviour when exhausted
When the plan is exhausted,MicroSurvey.trigger() still works (no
quota for triggers). But submitResponse will fail with the modal
showing an error toast. The response isn’t queued — there’s no
point queueing something that will only re-fail. The user is
returned to idle and the host app’s response_failed listener
fires.