A submission's submissions map holds every value a visitor entered, keyed by each field's target. Read it to see what someone submitted, or construct it yourself when creating a submission on a visitor's behalf.
The generated reference shows submissions only as map<string, google.protobuf.Value>, since a map can't declare its own keys or value types. This article covers both: which keys submissions accepts, and the value each field type submits.
Each key must be the target of a field in the form's schema: the field's stable storage key, not its id or label, so it doesn't change when a Wix user relabels or reorders a field. Read the schema's fields with Get Form to find the targets a given form accepts.
Sending a key that isn't a field's target fails the whole submission, not just that value.
Each value's shape follows the originating field's inputType, not the component that renders it:
STRING: A string. For a choice field it's the selected option's value. Date and time fields are strings too, formatted according to the field's validation.format.NUMBER: A number.BOOLEAN: A boolean.ARRAY: An array of the selected option values.ADDRESS: An address object.PAYMENT: An array of product objects, 1 per item bought.SCHEDULING: An appointment object.This is why a single-line address field and a multi-line address field aren't interchangeable, even though both map to a contact's address: the first submits a string, the second an object.
For how a field declares its target and inputType, see About Form Fields.
Choice fields submit an option's value, not its ID or its label. Which shape a field submits depends on how many selections it accepts.
A single choice, dropdown, or service picker field has the STRING input type, so it submits 1 value:
A multi choice, image choice, tag picker, or multi-service picker field has the ARRAY input type, so it submits 1 entry per selection:
In service picker and multi-service picker fields, each value is a Wix Services service ID rather than free text.
Every value must appear in the field's declared list of accepted values. A STRING field declares that list in stringOptions.validation.enum, and an ARRAY field declares it in arrayOptions.validation.items.stringOptions.enum. A value outside the list fails validation, which fails the whole submission.
A schema declares its choices twice, in the component's options array and in that validation list, so read the accepted values from the validation list.
An ADDRESS field submits an object. Every property is optional, so send only the subfields the form shows:
country: Country code, in ISO 3166-1 alpha-2 format.subdivision: State, region, prefecture, or province code, in ISO 3166-2 format.city: City name.postalCode: Zip or postal code.addressLine: Main address line, usually street and number as free text.addressLine2: Further detail, such as apartment, suite, or floor.streetName: Street name, when the address is captured as separate street parts.streetNumber: Street number, when the address is captured as separate street parts.country and subdivision are validated against the values allowed for the selected country, so a free-text subdivision is rejected.
A PAYMENT field submits an array with 1 object per item bought:
productId: ID of a product declared in the field's paymentOptions.validation.products.price: Amount for a single unit, as a decimal string.quantity: Number of units bought.name: Product name. Read-only: Wix returns it, but doesn't accept it as input.A SCHEDULING field submits the booked slot:
startDate: Start of the appointment, as a local date and time.endDate: End of the appointment, as a local date and time.timeZone: Time zone the appointment was booked in.Last updated: 1 September 2026