Event subscriptions
Receive notifications when important events happen within Formsort
Event subscriptions allow you to set up webhook notifications whenever notable events happen within the Formsort ecosystem. They can be configured using Add a subscription within the Subscriptions tab.

Sent whenever any variant is published, to any environment, across your whole team. See below for an example payload that contains every component currently available in Formsort.
This is the JSON Schema representation of the answers object that this flow creates. Read more about this in the documentation about JSON Schema at Formsort.
Flow content is a representation of the structure of the form, including the groups, steps, and questions within it.
{
"event": {
"id": "5gQOVUsxs8o35vVHF4IKM",
"type": "variant_revision_published",
"createdAt": "2023-07-25T19:33:30+0000"
},
"payload": {
"flowLabel": "sub-event-test",
"environmentLabel": "production",
"variantLabel": "main",
"variantRevisionUuid": "5af64f19-42cb-45f6-8d69-2d1cd491016f",
"jsonSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"definitions": {
"address": {
"type": "object",
"properties": {
"raw": {
"type": "string"
},
"address_1": {
"type": "string"
},
"address_2": {
"type": "string"
},
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"postal_code": {
"type": "string"
},
"country": {
"type": "string"
}
},
"required": [
"address_1",
"city",
"state",
"postal_code"
]
}
},
"properties": {
"text_multiline": {
"type": "string"
},
"number": {
"type": "number"
},
"date": {
"type": "string",
"format": "date"
},
"select_buttons": {
"oneOf": [
{
"const": "1"
},
{
"const": "0"
},
{
"const": "3"
},
{
"const": "4"
},
{
"const": "2"
}
]
},
"single_field_address": {
"$ref": "#/definitions/address"
},
"grid_vegetables": {
"oneOf": [
{
"const": "never"
},
{
"const": "always"
},
{
"const": "sometimes"
}
]
},
"boolean": {
"type": "boolean"
},
"this_will_load_example_com_h": {
"type": "string"
},
"grid_question": {
"type": "string"
},
"utm_params": {
"type": "string"
},
"payment": {
"type": "string"
},
"text_single_line": {
"type": "string"
},
"email": {
"type": "string",
"format": "email"
},
"address": {
"$ref": "#/definitions/address"
},
"api_response": {
"type": "number"
},
"example_calc_var": {
"type": "string"
},
"postal_code": {
"type": "string"
},
"confirm": {
"type": "boolean"
},
"grid_fruits": {
"oneOf": [
{
"const": "never"
},
{
"const": "always"
},
{
"const": "sometimes"
}
]
},
"phone_number": {
"type": "string"
}
}
},
"publishedAt": "2023-07-25T19:33:29.072738+00:00",
"publishedByEmail": "[email protected]",
"notes": null,
"flowContent": {
"groups": [
{
"label": "Questions",
"id": "question-group",
"steps": [
{
"questions": [
{
"label": "# Boolean question",
"schemaKey": "boolean",
"id": "boolean-question",
"choices": [
{
"label": "Yes",
"value": true
},
{
"label": "No",
"value": false
}
],
"optional": true,
"type": "boolean"
}
]
},
{
"questions": [
{
"label": "# Select question",
"schemaKey": "select_buttons",
"choices": [
{
"label": "Strongly Disagree",
"value": "0"
},
{
"label": "Disagree",
"value": "1"
},
{
"label": "Undecided",
"value": "2"
},
{
"label": "Agree",
"value": "3"
},
{
"label": "Strongly Agree",
"value": "4"
}
],
"optional": true,
"type": "select"
}
]
},
{
"label": "Step 1 label",
"questions": [
{
"label": "default address",
"schemaKey": "address",
"optional": true,
"type": "address"
},
{
"label": "single field address",
"schemaKey": "single_field_address",
"type": "address"
}
]
},
{
"questions": [
{
"label": "# Confirm question",
"schemaKey": "confirm",
"optional": true,
"type": "confirm"
}
]
},
{
"questions": [
{
"label": "# Custom question",
"type": "custom"
}
]
},
{
"questions": [
{
"label": "# Date question",
"schemaKey": "date",
"optional": true,
"type": "date"
}
]
},
{
"questions": [
{
"label": "# Email question",
"schemaKey": "email",
"optional": true,
"type": "email"
}
]
},
{
"questions": [
{
"label": "# Grid question",
"optional": true,
"subQuestions": [
{
"label": "Fruits",
"schemaKey": "grid_fruits",
"type": "select",
"choices": [
{
"label": "Never",
"value": "never"
},
{
"label": "Sometimes",
"value": "sometimes"
},
{
"label": "Always",
"value": "always"
}
]
},
{
"label": "Vegetables",
"schemaKey": "grid_vegetables",
"type": "select",
"choices": [
{
"label": "Never",
"value": "never"
},
{
"label": "Sometimes",
"value": "sometimes"
},
{
"label": "Always",
"value": "always"
}
]
}
],
"type": "grid"
}
]
},
{
"questions": [
{
"label": "# Number question",
"schemaKey": "number",
"optional": true,
"type": "number"
}
]
},
{
"questions": [
{
"label": "# Payment question",
"schemaKey": "payment",
"optional": true,
"type": "payment"
}
]
},
{
"questions": [
{
"label": "# Phone question",
"schemaKey": "phone_number",
"optional": true,
"type": "phone"
}
]
},
{
"questions": [
{
"label": "# Postal code question",
"schemaKey": "postal_code",
"optional": true,
"type": "postalCode"
}
]
},
{
"questions": [
{
"label": "# Text question (single line)",
"schemaKey": "text_single_line",
"optional": true,
"type": "text"
},
{
"label": "# Text question (multi-line)",
"schemaKey": "text_multiline",
"optional": true,
"type": "text"
}
]
}
]
},
{
"label": "Content",
"id": "content-group",
"steps": [
{
"questions": [
{
"label": "# This is informational content",
"type": "informational"
},
{
"label": "",
"type": "divider"
}
]
}
]
}
],
"variables": {
"external": {
"utm_params": {}
},
"calculated": {
"example_calc_var": "function myFunction(utm_params: string): string {\n return utm_params\n}"
},
"api": {
"api_response": {
"apiUrl": "https://jsonplaceholder.typicode.com/todos/1",
"apiResultAccessor": "userId"
}
}
}
}
}
}
This is currently in development, and may not be present for 100% of flows as we roll it out. When it's fully released as a 1.0 version, a comprehensive documentation of its structure will be provided. For now, use the above example as a guide.
Last modified 1mo ago