Email Field
The component captures email address input. Use it to collect email information in forms, customer profiles, or contact workflows.
doesn't perform automatic email validation. Implement your own validation logic, and use the error property to display validation results.
Supported targets
- pos.
cart. line-item-details. action. render - pos.
customer-details. action. render - pos.
draft-order-details. action. render - pos.
exchange. post. action. render - pos.
home. modal. render - pos.
order-details. action. render - pos.
product-details. action. render - pos.
purchase. post. action. render - pos.
register-details. action. render - pos.
return. post. action. render
Supported targets
- pos.
cart. line-item-details. action. render - pos.
customer-details. action. render - pos.
draft-order-details. action. render - pos.
exchange. post. action. render - pos.
home. modal. render - pos.
order-details. action. render - pos.
product-details. action. render - pos.
purchase. post. action. render - pos.
register-details. action. render - pos.
return. post. action. render
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 examplesExamples
Anchor to example-capture-email-addresses-with-an-email-fieldCapture email addresses with an email field
Capture email address input using an 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
Anchor to example-handle-email-input-eventsHandle email input events
Subscribe to email input events to respond when merchants enter email addresses. This example demonstrates handling , , , and events for real-time email validation, duplicate checking, or autosave functionality.
Handle email input events
Examples
Capture email addresses with an email field
Description
Capture email address input using an `EmailField` component. This example shows a basic email field with a label for collecting email information.
Default
<s-email-field label="Email" value="snowdevil@shopify.com" required />Handle email input events
Description
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.
Default
<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')} />
Anchor to propertiesProperties
Configure the following properties on the component.
- Anchor to detailsdetailsdetailsstringstring
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.
- Anchor to disableddisableddisabledbooleanbooleanDefault: falseDefault: false
Disables the field, disallowing any interaction.
- Anchor to errorerrorerrorstringstring
Indicate an error to the user. The field will be given a specific stylistic treatment to communicate problems that have to be resolved immediately.
- Anchor to idididstringstring
A unique identifier for the element.
- Anchor to labellabellabelstringstring
Content to use as the field label.
- Anchor to maxLengthmaxLengthmaxLengthnumbernumberDefault: InfinityDefault: Infinity
Specifies the maximum number of characters allowed.
- Anchor to placeholderplaceholderplaceholderstringstring
A short hint that describes the expected value of the field.
- Anchor to requiredrequiredrequiredbooleanbooleanDefault: falseDefault: false
Whether the field needs a value. This requirement adds semantic value to the field, but it will not cause an error to appear automatically. If you want to present an error when this field is empty, you can do so with the
errorproperty.- Anchor to valuevaluevaluestringstring
The current value for the field. If omitted, the field will be empty.
Anchor to eventsEvents
The component provides event callbacks for handling user interactions. Learn more about handling events.
- Anchor to blurblurblur(event: CallbackEvent<"s-email-field">) => void(event: CallbackEvent<"s-email-field">) => void
Callback when the element loses focus.
- Anchor to changechangechange(event: CallbackEvent<"s-email-field">) => void(event: CallbackEvent<"s-email-field">) => void
Callback after editing completes (typically on blur).
- Anchor to focusfocusfocus(event: CallbackEvent<"s-email-field">) => void(event: CallbackEvent<"s-email-field">) => void
Callback when the element receives focus.
- Anchor to inputinputinput(event: CallbackEvent<"s-email-field">) => void(event: CallbackEvent<"s-email-field">) => void
Callback when the user makes any changes in the field.
CallbackEvent
- bubbles
boolean - cancelable
boolean - composed
boolean - currentTarget
HTMLElementTagNameMap[T] - detail
any - eventPhase
number - target
HTMLElementTagNameMap[T] | null
interface CallbackEvent<T extends keyof HTMLElementTagNameMap> {
currentTarget: HTMLElementTagNameMap[T];
bubbles?: boolean;
cancelable?: boolean;
composed?: boolean;
detail?: any;
eventPhase: number;
target: HTMLElementTagNameMap[T] | null;
}Anchor to best-practicesBest practices
- Write descriptive labels: Use specific labels like "Customer Email" or "Receipt Email Address" rather than generic "Email."
- Provide context in details: Use
detailsfor 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.