About Submission Values

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.

Keys come from field targets

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.

Value shapes

Each value's shape follows the originating field's inputType, not the component that renders it:

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

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:

Copy

A multi choice, image choice, tag picker, or multi-service picker field has the ARRAY input type, so it submits 1 entry per selection:

Copy

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.

Address

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.

Copy

Payment

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.
Copy

Appointment

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.
Copy

See also

Last updated: 1 September 2026

Did this help?