{"record":{"id":"44095c61e1d37151","repo":"docusealco/docuseal","slug":"missing-field","errorCode":null,"errorMessage":"Missing field","messagePattern":"Missing field","errorType":"validation","errorClass":"Submitters::SubmitValues::ValidationError","httpStatus":422,"severity":"error","filePath":"lib/submitters/submit_values.rb","lineNumber":501,"sourceCode":"          phone = value.gsub(/[^+\\d]/, '')\n        end\n\n        next if email.blank? && phone.blank?\n\n        submission.submitters.create!(uuid: s['uuid'], email:, phone:, account_id: submitter.account_id)\n\n        SubmissionEvents.create_with_tracking_data(submitter, 'invite_party', request, { uuid: submitter.uuid })\n\n        is_invited = true\n      end\n\n      submission.update!(submitters_order: :preserved) if is_invited\n\n      submitter\n    end\n\n    def validate_value!(_value, field, _params, submitter, _request)\n      raise ValidationError, 'Missing field' unless field\n      raise ValidationError, 'Invalid field' if field['submitter_uuid'] != submitter.uuid\n\n      if field['readonly'] == true\n        Rollbar.warning(\"Readonly field #{submitter.id}: #{field['uuid']}\") if defined?(Rollbar)\n\n        raise ValidationError, 'Read-only field'\n      end\n\n      true\n    end\n  end\nend\n","sourceCodeStart":483,"sourceCodeEnd":514,"githubUrl":"https://github.com/docusealco/docuseal/blob/004a22c1c88109c7ba0b567df011a8cb13894001/lib/submitters/submit_values.rb#L483-L514","documentation":"Raised by Submitters::SubmitValues.validate_value! (via validate_values!) when the submitted values hash contains a key that matches no field UUID in submitter.submission.template_fields. Every key of values must be a template field UUID known to the submission.","triggerScenarios":"Submitting values whose keys include a UUID that is not in template_fields — a field deleted from the template, a typo'd/truncated UUID, or a wrong identifier type (submitter UUID, attachment UUID, field area UUID) used as a value key.","commonSituations":"Client cached an older template version and posts fields that were since removed or regenerated; a submission was re-created from an updated template so UUIDs changed; automation copies value keys between environments/templates; key silently mangled during serialization.","solutions":["Refetch the submission's template fields and rebuild the values payload so every key is a current field UUID","Slice the values hash to known field UUIDs and drop/log unknown keys before submitting","If the field should exist, restore or re-add it to the template instead of resubmitting the stale UUID"],"exampleFix":"# before\nvalues = { 'removed_field_uuid' => 'x', 'valid_field_uuid' => 'y' }\nSubmitters::SubmitValues.update_submitter!(submitter, { values: values }, request) # raises 'Missing field'\n# after\nknown = submitter.submission.template_fields.map { |f| f['uuid'] }\nSubmitters::SubmitValues.update_submitter!(submitter, { values: values.slice(*known) }, request)","handlingStrategy":"validation","validationCode":"known = submitter.submission.template_fields.map { |f| f['uuid'] }\nunknown = values.keys - known\nraise ArgumentError, \"unknown field uuids: #{unknown.join(', ')}\" if unknown.any?\nvalues = values.slice(*known)","typeGuard":"def known_field?(uuid, submission)\n  submission.fields_uuid_index.key?(uuid)\nend","tryCatchPattern":"begin\n  Submitters::SubmitValues.call(submitter, params, request)\nrescue Submitters::SubmitValues::ValidationError => e\n  # e.message == 'Missing field' -> values contained a uuid not on the template\n  render json: { error: e.message }, status: :unprocessable_entity\nend","preventionTips":["Always build value keys from a fresh read of the submission's template_fields, never from a cached copy","Validate keys against the field list before submit and log dropped keys","After editing a template, invalidate client-side field caches"],"tags":["ruby","rails","e-signature","form-validation","uuid"],"backgroundTag":"unknown-field-identifier","analyzedSha":"004a22c1c88109c7ba0b567df011a8cb13894001","analyzedAt":"2026-08-21T13:38:23.343Z","schemaVersion":2},"datasetVersion":"2026-08-21T18:17:14.833Z"}