Skip to main content

EmailField

The EmailField component captures email address input. Use it to collect email information in forms, customer profiles, or contact workflows.

EmailField doesn't perform automatic email validation. Implement your own validation logic, and use the error property to display validation results.

Use cases

  • Customer emails: Collect customer email addresses during account creation or updates.
  • Merchant emails: Capture merchant emails for notifications or receipts.
  • Email features: Enable features like sending receipts or order confirmations.
  • Validation: Support email validation in checkout or customer management interfaces.

Anchor to example-capture-email-addresses-with-an-email-fieldCapture email addresses with an email field

Capture email address input using an EmailField component. This example shows a basic email field with a label for collecting email information.

Capture email addresses with an email field

Capture email addresses with an email field

<s-email-field
label="Email"
value="snowdevil@shopify.com"
required
/>

Add action buttons to the email field using the accessory slot for quick actions like clearing input or verifying email addresses. This example shows how to use s-button and s-clickable components in the accessory slot, providing inline functionality within the email input context.

Add accessory buttons

<s-email-field
label="Newsletter signup"
placeholder="Enter email address"
value="customer@example.com"
>
<s-button slot="accessory" onClick={() => console.log('Subscribe')}>
Subscribe
</s-button>
</s-email-field>;

Subscribe to email input events to respond when merchants enter email addresses. This example demonstrates handling onChange, onInput, onFocus, and onBlur events for real-time email validation, duplicate checking, or autosave functionality.

Handle email input events

<s-email-field
label="Customer email"
placeholder="customer@example.com"
onInput={(event) => console.log('Input:', event.currentTarget.value)}
onChange={(event) => console.log('Change:', event.currentTarget.value)}
onFocus={(event) => console.log('Focus')}
onBlur={(event) => console.log('Blur')}
/>

Configure the following properties on the EmailField component.

string

The additional text to provide context or guidance for the field. This text is displayed along with the field and its label to offer more information or instructions to the user. This will also be exposed to screen reader users.

boolean
Default: false

Whether the field is disabled, preventing user interaction. Use when the field is temporarily unavailable due to application state, permissions, or dependencies.

string

An error message to indicate a problem to the user. The field will be given specific stylistic treatment to communicate issues that must be resolved immediately.

string

A unique identifier for the element used for targeting with CSS, JavaScript, or accessibility features.

string

The content to use as the field label that describes the email information being requested.

number
Default: Infinity

The maximum number of characters allowed in the text field.

string

A short hint that provides guidance about the expected value of the field.

boolean
Default: false

Whether the field needs a value. This requirement adds semantic value to the field but doesn't cause an error to appear automatically. Use the error property to present validation errors.

string

The current email address entered in the field. An empty string means no email is entered.

The EmailField component supports slots for additional content placement within the field. Learn more about using slots.

HTMLElement

The additional content to be displayed in the field. Commonly used to display clickable text or action elements. Only Button and Clickable components with text content only are supported in this slot. Use the slot="accessory" attribute to place elements in this area.

The EmailField component provides event callbacks for handling user interactions. Learn more about handling events.

(event: <"s-email-field">) => void

Called when the element loses focus.

(event: <"s-email-field">) => void

Called after editing completes, typically on blur.

(event: <"s-email-field">) => void

Called when the element receives focus.

(event: <"s-email-field">) => void

Called when the user makes any changes in the field.

  • Write descriptive labels: Use specific labels like "Customer Email" or "Receipt Email Address" rather than generic "Email."
  • Provide context in details: Use details for additional context like "Required for digital receipts" or "We'll send order updates to this address."
  • Write actionable error messages: Provide clear validation messages like "Please enter a valid email address" that help users correct their input.

The accessory slot supports only Button and Clickable components—other component types can't be used in the accessory slot.

Was this page helpful?