Base Concepts
Schema Overview
Customizing the form inputs happens within the settings.json file. This is the file you'll interact with to customize the content of the questions and steps within the multi-step booking form flow.
At the base of the settings file, we have the following properties:
| account_id required | integer The company id of the Setster account you created. This parameter is used to tell the app what Setster account to use to fetch information from and save appointment information to. |
| base_url required | string The base url is used to tell the app where images and resources are served from. Ensure a trailing slash is added. |
| embed_id required | string The id of the element the app will be embedded on. |
| finish_message required | string Once your form is submitted or appointment booked this message will display to the user. |
required | object (AppState.IFlow) This is the logic for your form steps where you can conditionally jump to other steps based on highly customizable rules. |
| settings_version required | string A simple versioning solution that that will update your Studio embed when you release new versions of your settings.json file. |
| steps required | object (AppState.ISteps) This is where all content will reside. Each step type provides a distinct user experience with some directly tied to appointment booking. |
| developer_mode | boolean Enabling developer mode resets the app when the page is refreshed. When it is disabled the app will persist user selections to ensure their answers are preserved the next time they visit the form flow. |
object (IEmbedHeight) The fixed pixel height you want your embed to be when it's embedded into your website. | |
object (IBreakpoints) The fixed pixel maximum width you want your embed to be when it's embedded into your website. | |
object (IMeta) The input details you would like to save to our database for future retrieval. Input values that are not included in the meta would not be accessible in the future when retrieving a client's appointment record and will not be saved. | |
| summaries | object (ISummaries) Summaries are used to display the values that the user had previously answered in each step throughout the entire form flow. The content of this step will show alongside the appointment booking details form step. |
| embed_url | string Where the app is embedded or located which allows the reschedule/cancel links in emails to point to the correct url. Ensure a trailing slash is added |
| enable_link_check | boolean This parameter is used to tell the app if it should check for locations/staff/services links that are set up in Setster to only show ones that are associated with previous selections. For example: Only show services that are available at the previously selected location. |
| default_location | integer The physical or virtual location id where the appointment or the meeting will take place. Auto-selects an appointment location based on the provided location Id. Allows the user to skip the location selection step since it's pre-selected. Especially useful for accounts with only one location. |
| default_service | integer Auto-selects an appointment service based on the provided service id. Allows the user to skip the service selection step since it's pre-selected. Especially useful for accounts with only one service. |
| default_staff | integer The individual staff memeber who is being booked for an appointment. Auto-selects a staff member based on the provided staff Id. Allows the user to skip the staff selection step since it's pre-selected. Especially useful for accounts with a single staff member. |
| stripe_public_key | string This is the public key that you get from Stripe. This is needed if you have services which require payment and you have Setster setup to accept payments through Stripe. |
| pay_in_person_message | string The message you'll display if the user selects to pay for a particular service in person. The pay in person option can be configured in the services settings in your Setster dashboard. |
{- "embed_id": "my-embed-id",
- "settings_version": "1.0.0",
- "developer_mode": true,
- "embed_height": {
- "mobile": "480px",
- "tablet": "680px",
- "desktop": "800px"
}, - "breakpoints": {
- "mobile": 480,
- "tablet": 680,
- "desktop": 800
}, - "account_id": 1234,
- "steps": {
- "property1": {
- "submit_form_step": {
- "title": "Submit your appointment",
- "type": "booking",
- "model": "appointment",
- "callback": "processAppointment"
}
}, - "property2": {
- "submit_form_step": {
- "title": "Submit your appointment",
- "type": "booking",
- "model": "appointment",
- "callback": "processAppointment"
}
}
}, - "flow": {
- "normal": {
- "property1": {
- "actions": [
- {
- "next": "string",
- "condition": {
- "step": "string",
- "op": "all_of",
- "values": [
- "string"
]
}
}
], - "filters": {
- "all": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": "string",
- "property2": "string"
}, - "all": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": null,
- "property2": null
}, - "all": [
- null
], - "any": [
- null
]
}
], - "any": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": null,
- "property2": null
}, - "all": [
- null
], - "any": [
- null
]
}
]
}
], - "any": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": "string",
- "property2": "string"
}, - "all": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": null,
- "property2": null
}, - "all": [
- null
], - "any": [
- null
]
}
], - "any": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": null,
- "property2": null
}, - "all": [
- null
], - "any": [
- null
]
}
]
}
]
}
}, - "property2": {
- "actions": [
- {
- "next": "string",
- "condition": {
- "step": "string",
- "op": "all_of",
- "values": [
- "string"
]
}
}
], - "filters": {
- "all": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": "string",
- "property2": "string"
}, - "all": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": null,
- "property2": null
}, - "all": [
- null
], - "any": [
- null
]
}
], - "any": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": null,
- "property2": null
}, - "all": [
- null
], - "any": [
- null
]
}
]
}
], - "any": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": "string",
- "property2": "string"
}, - "all": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": null,
- "property2": null
}, - "all": [
- null
], - "any": [
- null
]
}
], - "any": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": null,
- "property2": null
}, - "all": [
- null
], - "any": [
- null
]
}
]
}
]
}
}
}, - "cancel": {
- "property1": {
- "actions": [
- {
- "next": "string",
- "condition": {
- "step": "string",
- "op": "all_of",
- "values": [
- "string"
]
}
}
], - "filters": {
- "all": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": "string",
- "property2": "string"
}, - "all": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": null,
- "property2": null
}, - "all": [
- null
], - "any": [
- null
]
}
], - "any": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": null,
- "property2": null
}, - "all": [
- null
], - "any": [
- null
]
}
]
}
], - "any": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": "string",
- "property2": "string"
}, - "all": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": null,
- "property2": null
}, - "all": [
- null
], - "any": [
- null
]
}
], - "any": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": null,
- "property2": null
}, - "all": [
- null
], - "any": [
- null
]
}
]
}
]
}
}, - "property2": {
- "actions": [
- {
- "next": "string",
- "condition": {
- "step": "string",
- "op": "all_of",
- "values": [
- "string"
]
}
}
], - "filters": {
- "all": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": "string",
- "property2": "string"
}, - "all": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": null,
- "property2": null
}, - "all": [
- null
], - "any": [
- null
]
}
], - "any": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": null,
- "property2": null
}, - "all": [
- null
], - "any": [
- null
]
}
]
}
], - "any": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": "string",
- "property2": "string"
}, - "all": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": null,
- "property2": null
}, - "all": [
- null
], - "any": [
- null
]
}
], - "any": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": null,
- "property2": null
}, - "all": [
- null
], - "any": [
- null
]
}
]
}
]
}
}
}, - "reschedule": {
- "property1": {
- "actions": [
- {
- "next": "string",
- "condition": {
- "step": "string",
- "op": "all_of",
- "values": [
- "string"
]
}
}
], - "filters": {
- "all": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": "string",
- "property2": "string"
}, - "all": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": null,
- "property2": null
}, - "all": [
- null
], - "any": [
- null
]
}
], - "any": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": null,
- "property2": null
}, - "all": [
- null
], - "any": [
- null
]
}
]
}
], - "any": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": "string",
- "property2": "string"
}, - "all": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": null,
- "property2": null
}, - "all": [
- null
], - "any": [
- null
]
}
], - "any": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": null,
- "property2": null
}, - "all": [
- null
], - "any": [
- null
]
}
]
}
]
}
}, - "property2": {
- "actions": [
- {
- "next": "string",
- "condition": {
- "step": "string",
- "op": "all_of",
- "values": [
- "string"
]
}
}
], - "filters": {
- "all": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": "string",
- "property2": "string"
}, - "all": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": null,
- "property2": null
}, - "all": [
- null
], - "any": [
- null
]
}
], - "any": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": null,
- "property2": null
}, - "all": [
- null
], - "any": [
- null
]
}
]
}
], - "any": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": "string",
- "property2": "string"
}, - "all": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": null,
- "property2": null
}, - "all": [
- null
], - "any": [
- null
]
}
], - "any": [
- {
- "where": "account_id",
- "contains": "string",
- "equals": "string",
- "when": {
- "property1": null,
- "property2": null
}, - "all": [
- null
], - "any": [
- null
]
}
]
}
]
}
}
}
}, - "meta": {
- "normal": {
- "user_journey": "clicked-promo-email"
}, - "cancel": {
- "user_journey": "clicked-promo-email"
}
}, - "summaries": {
- "appointment-details": {
- "title": "Review Your Appointment Details",
- "items": [
- {
- "step": "preference",
- "label": "Preference"
}, - {
- "step": "locations_step",
- "label": "Location",
- "icon": "map-pin",
- "value": "{{name}}"
}, - {
- "step": "locations_step",
- "label": "Address",
- "icon": "map-pin",
- "value": "Full address: {{street1}}, {{street2}} {{city}}, {{country}}"
}, - {
- "step": "services_step",
- "label": "What",
- "icon": "package",
- "value": "{{name}}"
}, - {
- "step": "staff_step",
- "label": "Who",
- "icon": "user",
- "value": "{{name}}"
}, - {
- "step": "calendar_step",
- "label": "When",
- "icon": "calendar"
}
]
}
}, - "enable_link_check": true,
- "default_location": 1234,
- "default_service": 1234,
- "default_staff": 1234,
- "finish_message": "Thanks for booking an appointment with us. You're all set.",
- "stripe_public_key": "1234-12341234-12341234",
- "pay_in_person_message": "We'll collect payment in person during your appointment."
}