Submit Website Flow Response
POST https://api.secure.quotivity.com/v1/website/flows/{flowId}/responsesSubmits a visitor’s completed run of a published flow. The answer to the flow’s required email question identifies the visitor: Quotivity finds or creates the contact by that address, writes any other contact-synced answers to it, attaches the contact’s primary company, creates a deal in the account’s configured pipeline and stage with quotivity_flow_response_id set, saves the Flow Response, and then creates a quote with quote rules applied and posts the New Quote from Public Flow Response timeline event on the deal. The quote and event follow within a few seconds of the 201. Send an Idempotency-Key header (any unique string per attempt, reused on retries) so a retried request returns the original result instead of creating a second deal. Limited to 10 submissions per hour per flow, across all visitors. Requires the Enterprise Website add-on.
Path parameters
Section titled “Path parameters”| Name | Type | Required | Description |
|---|---|---|---|
flowId |
string | Yes | The flow id from the script tag’s data-flow attribute. |
Header parameters
Section titled “Header parameters”| Name | Type | Required | Description |
|---|---|---|---|
Idempotency-Key |
string | No | Unique per submission attempt; reuse it when retrying after a timeout. Replays return the stored 201 for 24 hours. |
Request body
Section titled “Request body”Required, application/json: WebsiteFlowSubmission
Responses
Section titled “Responses”| Status | Body | Description |
|---|---|---|
201 |
WebsiteFlowSubmissionResult | The response was saved and the deal created |
400 |
WebsiteFlowError | Invalid or missing answers, including an email answer that is malformed or on a blocked public domain (VALIDATION) |
401 |
WebsiteFlowError | Missing or invalid website key (UNAUTHORIZED) |
403 |
WebsiteFlowError | The origin is not allowed (ORIGIN_NOT_ALLOWED), or the flow is not published or the account lacks the add-on (UNAVAILABLE) |
404 |
WebsiteFlowError | The flow does not exist or is not active (UNAVAILABLE) |
429 |
WebsiteFlowError | Rate limit exceeded (RATE_LIMITED); honour Retry-After |
502 |
WebsiteFlowError | HubSpot rejected the deal or the response could not be stored (SUBMIT_FAILED); nothing was left behind in HubSpot. Show the support email with reference. |
Schemas
Section titled “Schemas”WebsiteFlowError
Section titled “WebsiteFlowError”Returned by the Website Flows operations for every non-success status. code tells the embedding page whether to retry or to show the account’s support email; reference is the id a visitor can quote to support.
| Field | Type | Required | Description |
|---|---|---|---|
code |
UNAUTHORIZED | UNAVAILABLE | ORIGIN_NOT_ALLOWED | RATE_LIMITED | VALIDATION | SUBMIT_FAILED |
Yes | — |
message |
string | Yes | — |
reference |
string | No | Short request id for support, present on 5xx responses. |
retryAfterSeconds |
integer | No | Present with RATE_LIMITED; also sent as the Retry-After header. |
WebsiteFlowSubmission
Section titled “WebsiteFlowSubmission”| Field | Type | Required | Description |
|---|---|---|---|
answers |
object | Yes | Question key to answer. Multi-select answers are arrays of option values; everything else is a string. The answer to the flow’s required email question (an email question synced to the contact’s email property) identifies the visitor: the contact is found by that address or created, other contact-synced answers are written to it, and its primary company is attached to the deal. |
WebsiteFlowSubmissionResult
Section titled “WebsiteFlowSubmissionResult”| Field | Type | Required | Description |
|---|---|---|---|
responseId |
string | Yes | The Flow Response id, also written to the deal’s quotivity_flow_response_id. |
dealId |
string | Yes | — |
Ask the help center
Answers come from these guides, with links to the articles used.
Ask anything about configuring quoting in Quotivity Studio.