The short version
Every Shopify theme has a built-in contact form: create a page in Online Store > Pages, choose the contact template, save it and add the page to a menu in Content > Menus.
Its submissions go by email to your store's sender email address in Settings > Notifications, not to the Store email address.
If messages stop arriving, check that address first, then search your mailbox for [SPAM], because flagged messages still arrive, and send a test from your storefront.
Move to the free Shopify Forms app when you need submissions stored in your admin, custom fields without code or several recipients through Shopify Flow.
Every Shopify theme already has a contact form, so adding one comes down to a page with the contact template, a link to it in your menu, and an inbox that actually receives the messages. Its messages arrive at the sender email address in Settings > Notifications, not at your Store email.
If you already have the form and messages never show up, arrive with [SPAM] in the subject, or visitors hit a puzzle when they press send, go straight to the checks in order.
What Every Shopify Theme Already Gives You
Key takeaway
Shopify states the rule for its themes as a class, not theme by theme:
All Shopify themes have a built-in contact form that you can apply to the pages that you create.
The mechanism is a page template. You add a contact form by creating a new page with the page.contact template, and if you leave that page without any other content, customers see only the form.
Two things are not part of that form. The free Shopify Forms app is a separate install that doesn't come with any plan, and the newsletter signup is a different theme form with its own setup, covered in our newsletter signup guide.
Theme Form, Shopify Forms or an Embedded Form?
Key takeaway
Find your row. The route decides where a message lands and who can read it, so pick it before you build the page.
Three ways to put a contact form on your store
| Route | Where submissions go | Extra fields | Who gets notified | What to know |
|---|---|---|---|---|
| Your theme's contact form | An email to your store's sender email address | In Horizon 4.4.0 and Dawn 16.1.1, only by editing the theme's code | The sender email address | Built into every Shopify theme; you can't change the subject line of its emails |
| Shopify Forms (free app) | Stored in your Shopify admin; a new customer gets a customer profile | Custom fields in the app, stored as a local field or a customer or company metafield; up to 31 fields per form | An optional email notification you turn on in Forms settings; several addresses through a Shopify Flow automation | Not installed with any plan; up to 25 forms per store; no multi-step forms or conditional logic |
| A form service such as Wufoo or Jotform, embedded on your contact page | Not your sender email address: Shopify's help suggests this route for exactly that case | You build the custom form in the service, then embed it | Set up in that service | Shopify's help names both as examples; their plans and limits are their own |
Shopify Help Center pages on the contact page and on Shopify Forms, read November 2, 2026.
The theme form has no address of its own. It writes to your sender email address, so changing where its messages land means changing that address or moving to another route.
Shopify Forms is free to install and use, but you can have up to 25 forms per store, and multi-step forms and conditional logic aren't supported. Where the free app stops and a paid form builder starts is the subject of our comparison of Shopify Forms and paid form apps.
With Shopify Forms, if several people on your team need each message, the documented route is a Shopify Flow automation that sends an internal email after a form submission; our FAQ on Forms notifications for more than one person covers it.
How to Add a Contact Form, Step by Step
Key takeaway
The first two steps are required: Shopify's help says that after you create the contact page, you need to add it to your menu to display it on your online store. The last two are optional and depend on your theme.
Create a page with the contact template
Key takeaway
Shopify's steps for a desktop browser, with what our test admin showed as of November 8, 2026:
- From your Shopify admin, go to Online Store > Pages.
- Click Add page.
- In Title, type a name such as Contact us or Get in touch.
- In Content, add any text, images or videos to show above the form, or leave it blank.
- In the Template box, select
contact. Shopify's help calls this list the Theme template drop-down. - Click Save.
- Online Store
- Pages
- Online Store
- Pages
- Contact
The Shopify mobile app has the same steps, reached through Sales channels > Online Store > Pages. If the saved page doesn't show up on your storefront at all, our FAQ on why a Shopify page isn't showing goes through the usual causes.
Add the page to your menu
Shopify's steps, with what our test admin showed as of November 8, 2026:
- From your Shopify admin, go to Content > Menus.
- Click the title of the menu you want to edit.
- Click Add menu item.
- Type a Label such as Contact, then use the Link field, marked Search or paste link, to find and select your contact page.
- Confirm the item with the check mark, then click Save.
- Content
- Menus
Customize the contact template: Horizon block, Dawn section
Key takeaway
The contact page is a template that you customize in the theme editor. Shopify's steps:
- From your Shopify admin, go to Online Store.
- Find the theme you want to edit, and click Edit theme.
- From the drop-down menu, click Pages > Contact to load the contact page template.
- Click + Add section, pick a section, and click Save when the layout is right.
The sections you add here carry extra information, such as featured collections, blog posts or images. Where the form itself lives depends on the theme: Shopify's help says you can add a contact form to any page with the Contact form section, then tells you to check with your theme developer whether your theme supports it.
In Horizon's code, version 4.4.0, the contact template holds a section named Contact form (built from Horizon's Section type), with a Contact form block inside it and a Submit button block nested inside that form block. So the form itself is a block: the theme has no Contact form section file, though its Section type offers a Contact form preset in its Forms category that holds the same block.
The Contact form block's settings cover width, background color, input style and colors, borders and padding, and the theme files the block under Forms. The Submit button block takes its own label and style.
- Online Store
- Themes
- Edit theme
- Pages
- Contact
Dawn keeps the older shape. In Dawn 16.1.1 the contact template has two sections, the page content and a Contact form section, whose settings are a heading, the heading size, a color scheme and top and bottom padding.
- Online Store
- Themes
- Edit theme
- Pages
- Contact
In both themes' code the form's settings stop at layout, styling and, in Dawn, a heading: the fields themselves, a name, an email, a phone number and a message box, are written into the code, which the next step covers. Whether Horizon has a form at all is answered in our FAQ on Horizon's contact form; this guide covers the steps for any theme.
Shopify's help on pages that Sidekick generates uses a contact page as its example: you might need custom code to create a functional contact form. A test message, step three of the checks below, tells you quickly whether it works.
For the same steps on video, this 2022 walkthrough from the EcommerceGold channel finds the contact template, creates the page, and adds rich text, a location and a map. It was recorded before Horizon, so your theme editor will look different.
Adding or changing fields in the theme's code
Key takeaway
shopify.dev documents how the form is built: the Liquid form tag with the 'contact' parameter. Any change to its fields follows four rules:
Four rules for contact form fields
| Change | What goes in the theme code | Why |
|---|---|---|
| Keep the form submitting | An input with type email and name contact[email] | It is the one input the form requires to submit successfully |
| Add a field | Any HTML input named contact[information_id], where information_id briefly names what you collect | That title appears in the contact notifications you receive, and it must be unique within the form |
| Make a field required | The attribute required="required" inside that field's input element | It is the documented way to make a specific field required for a customer |
| Offer several checkboxes | A unique name value on each input in the checkbox group | With shared names, only the last selected value comes through |
shopify.dev, Add a contact form to your theme, read November 2, 2026.
One limit stays whatever you code. You can't change the subject line for emails sent through a contact form on a Shopify store.
If you replace the theme's form with a custom one, shopify.dev asks you to keep the attributes its CAPTCHA relies on, such as an action pointing at /contact and the form_type field, so that the form stays compatible with CAPTCHA.
If editing code isn't for you, Shopify Forms lets you create custom input fields in the app and store each one as a local field or as a customer or company metafield.
Where Do Contact Form Messages Go?
Key takeaway
Shopify's help is plain about the route:
Your contact form sends all submissions to your store's sender email address.
To check or change that address:
- From your Shopify admin, go to Settings > Notifications.
- In the Sender email section, enter your email address and save.
- Settings
- Notifications
Your store also has a Store email address. Shopify sends exports of your products, orders or customers there; contact form submissions go to the sender email address instead, so check that one first when a message is missing.
Pick an inbox someone checks every day. If you don't have a mailbox at your own domain yet, our FAQ on whether Shopify gives you a business email explains what Shopify does and doesn't host.
Two other routes take messages elsewhere. Shopify's help suggests a form service such as Wufoo or Jotform, embedded on your contact page, when you don't want to use your sender email address for the form. Shopify Forms keeps a record instead: after a customer submits a form, the submission data is stored in your Shopify admin.
How Spam Protection Works on the Contact Form
Key takeaway
The two protections work independently: one decides whether a submission goes through, the other labels what arrives.
hCaptcha runs on every store by default
Key takeaway
hCaptcha is enabled by default on all Shopify stores, and it can display in contact, newsletter signup and comment forms. When it's active, every submission runs an invisible, non-interactive check. One assessed as suspicious redirects the visitor to a /challenge page to solve a puzzle or tick an "I'm a human" box, and when hCaptcha can't tell whether a visitor is a bot, it may return an error instead.
To change it, with what our test admin showed as of November 8, 2026:
- From your Shopify admin, go to Online Store > Preferences.
- In the Spam protection section, switch Enable on contact and comment forms on or off, then save. Shopify's help names this setting Enable hCaptcha on contact and comment forms.
- Online Store
- Preferences
Leave it on unless something conflicts with it. hCaptcha isn't compatible with custom code or third-party apps that add CAPTCHA, so a second CAPTCHA app is a problem rather than extra protection. On a custom theme, shopify.dev adds that CAPTCHA isn't present when the theme lacks the content_for_header object.
Shopify added Google's reCAPTCHA v3 to contact forms and blog comments in July 2020, then started migrating storefront CAPTCHA to hCaptcha in a changelog post dated July 24, 2024. The Preferences help page we read on November 2, 2026 describes only hCaptcha, so a reCAPTCHA setting in an older tutorial won't match your admin.
What the [SPAM] tag means
Key takeaway
The filter analyzes the content of the contact[body] field, which is the message box in Horizon 4.4.0 (in English, Dawn 16.1.1 names its message box contact[Comment]), and an email it flags is sent with a [SPAM] prefix in its subject. Shopify explains why flagged messages still reach you:
To make sure that you don't miss any legitimate messages that are flagged as spam by mistake, you receive all contact form submissions, including those flagged as spam.
Create an email filter for subjects that contain [SPAM] so these land in their own folder, then skim that folder, because a genuine customer can be flagged by mistake.
Contact Form Not Receiving Emails? Check in This Order
Key takeaway
Three problems look alike from the inbox: no message arrives at all, messages arrive but sit in a spam folder or under a [SPAM] subject, or customers tell you the form showed them a puzzle or an error when they pressed send.
If customers report a puzzle instead, that is hCaptcha's challenge: a submission it finds suspicious goes to a /challenge page. An error may come from hCaptcha too: Shopify's help says that if hCaptcha can't determine whether a visitor is a bot, then it will either return an error, or potentially redirect the user to a page to solve an interactive challenge. A third-party CAPTCHA app running beside hCaptcha is the first thing to remove; step six of the checks covers the rest.
The order below puts the cheap checks first, and it draws on Shopify's help pages for the contact page, email setup and online store preferences. Work down the list and stop at the step that explains your case; your ticks stay in this browser.
Fix a Shopify contact form that isn't delivering, in this orderTick each check as you rule it out.
Fix a Shopify contact form that isn't delivering, in this order
Tick each check as you rule it out.
Open Settings > Notifications and check the Sender email: that is where every contact form submission is delivered, not the Store email address.
Before you tick this off
- The Sender email in Settings > Notifications is an inbox someone reads
- I'm not looking for submissions in the Store email inbox, which receives exports
Search the inbox and the junk folder for subjects that contain [SPAM]: submissions Shopify flags are still delivered, with that prefix in the subject.
Before you tick this off
- I searched the inbox and the junk folder for [SPAM]
- I set a filter that moves [SPAM] subjects to a folder I check
Submit the form on your storefront contact page with an address you can read in the Email field, then look for it in the sender inbox.
Before you tick this off
- The Email field held an address I can read
- The test arrived in the sender email inbox
If your sender email is on a third-party domain, Shopify's contact page help says you might also need to authenticate the domain; for emails to customers, Shopify's email setup page says multiple DMARC TXT records make DMARC validation fail.
Before you tick this off
- I know whether my sender email's domain is a third-party domain
- I followed Shopify's sender email authentication steps for that domain
- The domain has one DMARC TXT record, not several
Use a sender address without wording such as no-reply, do-not-reply or noreply: Shopify's email setup page says some email hosts automatically reject such addresses.
Before you tick this off
- My sender email doesn't contain no-reply wording
- If I changed the address, I sent another test
On a custom theme or form, keep the content_for_header object in the theme, keep the CAPTCHA attributes on custom forms, and don't add a second CAPTCHA app beside hCaptcha.
Before you tick this off
- The theme outputs content_for_header
- A custom form keeps the attributes shopify.dev lists, such as its /contact action and form_type
- No third-party CAPTCHA app runs alongside hCaptcha
Steps four and five lean on Shopify's email setup page, which states these rules for the emails your store sends to customers:
- Without authentication records on a third-party domain, your sender email address is rewritten to
store+123@shopifyemail.com. - Multiple DMARC TXT records make DMARC validation fail, and the sender email may be rewritten the same way.
- Since February 1, 2024, Gmail and Yahoo require an authenticated domain and a DMARC record for emails to customers from a branded email address, Shopify's page says.
- Some email hosts automatically reject sender email addresses that include wording such as no-reply, do-not-reply or noreply.
The contact page help itself says only that with a third-party domain, you might also need to authenticate your domain. Our FAQ on sending Shopify emails from your own domain covers what authenticating a sender address at your own domain involves.
The Bottom Line
Key takeaway
The form itself is the easy part; what decides whether it works is the inbox behind it.
Frequently Asked Questions
Front-end developer specializing in Shopify since 2017. Experienced in building custom Liquid themes, optimizing storefront performance, and integrating third-party apps. Directs the editorial process behind Ecom Store Pro: sets its topics and the rules every AI-written page must pass before publication.
This page was written by AI. Separate AI agents that did not write it check its figures and claims against official sources and test its links and interactive tools. A human editor sets the site's editorial direction, topics and rules and checks that pages are complete and display correctly, but does not check their facts or edit their text. Details may change — always confirm critical data at shopify.com.
Editorial PolicySome links in this article are affiliate links. If you sign up for a Shopify store through these links, we may earn a commission at no extra cost to you. Read our full advertising policy.
