A contact form for Shopify, ready to paste. No app. No monthly fee.
A contact form for Shopify is just an HTML form that posts straight to a hosted backend — no app, no theme editor plugin, no monthly fee. Paste one of the 8 templates below into a Liquid section or Custom HTML block with the action pointed at https://splitforms.com/api/submit, and every submission lands in your inbox and dashboard for free.
Eight production-grade templates are ready below — contact, product inquiry, wholesale, customer service, newsletter, order, refund, and contest — including Liquid sections that auto-inject product and shop context. Replace one access key, paste, ship.
For: Every Shopify store — the /pages/contact default
The classic three-field contact form. Paste into a Custom HTML block on any page (Online Store → Pages → HTML editor) or a Liquid section. Works on every Shopify plan, including Basic.
For: Product pages — shoppers asking about a specific item
A Liquid section that auto-injects the product title, product URL, variant ID, and price into every submission — so you always know which product a shopper is asking about. Drop it into a new section and add {% section 'product-inquiry-form' %} to your product template.
sections/product-inquiry-form.liquid
{% comment %} sections/product-inquiry-form.liquid — add to product template {% endcomment %}
<div class="product-inquiry">
<h3>Ask a question about this product</h3>
<form action="https://splitforms.com/api/submit" method="POST">
<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY" />
{% comment %} Auto-injected product context {% endcomment %}
<input type="hidden" name="product" value="{{ product.title }}" />
<input type="hidden" name="product_url" value="{{ shop.url }}{{ product.url }}" />
<input type="hidden" name="variant_id" value="{{ product.selected_or_first_available_variant.id }}" />
<input type="hidden" name="price" value="{{ product.price | money }}" />
<input type="hidden" name="subject" value="Inquiry: {{ product.title }}" />
<label>Your name <input type="text" name="name" required /></label>
<label>Email <input type="email" name="email" required /></label>
<label>Question <textarea name="message" rows="4" required></textarea></label>
{% comment %} Optional newsletter opt-in (fire a webhook to Klaviyo) {% endcomment %}
<label>
<input type="checkbox" name="newsletter_optin" value="yes" />
Email me when this product is back in stock or on sale
</label>
<input type="checkbox" name="botcheck" style="display:none" tabindex="-1" />
<button type="submit">Send question</button>
</form>
</div>
{% schema %}
{
"name": "Product inquiry form",
"presets": [{ "name": "Product inquiry form" }]
}
{% endschema %}
03 / 08
Wholesale inquiry form
For: B2B / trade — separate sales pipeline from retail support
Capture qualified wholesale leads with business name, resale certificate, product interest, and monthly volume. Use a separate access key so wholesale submissions route to your sales inbox, not your support queue.
A structured support intake with order number, issue type, description, and an optional photo attachment. Connect Storage to accept file uploads (5 files, 5 MB each), then point a webhook at Front, Help Scout, or Zendesk to auto-create tickets.
For: Footer / popups — push to Klaviyo or Mailchimp via webhook
Email-only signup for your store's mailing list. Pair with a webhook to push new addresses into Klaviyo, Mailchimp, or ConvertKit automatically — no separate signup app required.
A lightweight order form for products that don't fit the standard cart — custom goods, made-to-order items, or wholesale line items. Collect the product, quantity, and customer details, then follow up with a draft order or invoice.
For: Returns / RMA — structured intake for faster resolution
Capture everything support needs to action a refund in one pass: order number, refund type, reason, and the customer's preferred resolution. Cuts back-and-forth emails and speeds up resolution.
For: Marketing campaigns — grow your list with a giveaway
Run a giveaway or contest and collect entries cleanly. Captures name, email, and the entry answer, with an optional opt-in for marketing emails. Export entries from the dashboard or pipe them to a spreadsheet via the Google Sheets integration.
contest-entry.liquid
<form action="https://splitforms.com/api/submit" method="POST">
<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY" />
<input type="hidden" name="subject" value="New contest entry" />
<label>Your name <input type="text" name="name" required /></label>
<label>Email <input type="email" name="email" required /></label>
<label>Answer to win
<textarea name="entry_answer" rows="2" placeholder="In one sentence, why do you want to win?" required></textarea>
</label>
<label>
<input type="checkbox" name="marketing_optin" value="yes" />
Yes, send me product news and future offers
</label>
<input type="checkbox" name="botcheck" style="display:none" tabindex="-1" />
<button type="submit">Enter the contest</button>
</form>
Why not use a Shopify app?
Shopify form apps work, but they add JavaScript that slows your store, lock your submissions inside the app, and charge $5–29 every month. A paste-in form posts directly from the browser to splitforms — no app weight, fully exportable data, free up to 500 submissions per month.
Factor
Shopify app
splitforms
Monthly cost
$5–29/mo
$0 (500/mo free)
Store weight
App JS slows the storefront
Zero — just HTML
Customization
Limited to app settings
Full HTML & Liquid control
Data ownership
Locked inside the app
Export anytime, your data
Setup
Install + configure app
Paste one section, done
How to add a contact form to Shopify (no app)
01
Get your free access key
Create a splitforms account and copy your access key from the dashboard. The free tier includes 500 submissions per month with spam filtering — no credit card.
02
Paste a template into Shopify
Pick a template above. In Shopify Admin: Online Store → Themes → Edit code → Sections → Add a new section (or a Custom HTML block on a page). Paste it, replace YOUR_ACCESS_KEY with your key, save.
03
Test it once, live on the store
Open the page and submit the form yourself. The botcheck honeypot stays empty for real visitors, so a genuine test submission should arrive within seconds — if it doesn't, double-check the access key.
04
Submissions land in your inbox
Every submission is emailed to you free on every plan and saved in the dashboard with spam filtering applied. Add a webhook or the Slack, Google Sheets, or Mailchimp integration to route it further.
Explore more
Related Shopify guides, Formspree alternatives, and form templates for other platforms.
Can I add a contact form to Shopify without an app?
Yes. Create a custom Liquid section or a Custom HTML block on a page, paste an HTML form with the action pointing at splitforms, and submissions are collected without any Shopify app or plugin. It works on every Shopify plan, including the cheapest Basic tier — no Shopify Plus required.
Do these forms work on Shopify's Basic plan?
Yes. The forms are pure HTML and Liquid placed in your theme — they do not call Shopify's billing or app APIs, so they run on every plan. You do not need Shopify Plus or any premium tier.
Should I use a Liquid section or plain HTML?
Use a Liquid section (a .liquid file under Sections) when you want Shopify to inject context automatically — product title, variant ID, price, or shop URL. Use plain HTML in a Custom HTML block when you just want a simple form on a page and do not need dynamic Liquid values. Both post to the same splitforms endpoint.
How much does a Shopify form cost?
With splitforms it is free — 500 submissions per month, no Shopify app fees, no credit card. Most Shopify form apps charge $5–29 per month. A hosted form backend eliminates that recurring cost; if you outgrow the free tier, Pro is $5/month.
Can I accept file uploads (photos, screenshots) on Shopify forms?
Yes. Add enctype="multipart/form-data" to the form and a file input, then connect the Storage integration in your splitforms dashboard. You can accept up to 5 files per submission at 5 MB each. Storage is a paid feature; plain-text fields work on the free tier.
Can I send submissions to Klaviyo or Mailchimp?
Yes. Add a webhook on the form pointing at Klaviyo's Track API or Mailchimp's inbound endpoint. Every submission fires the webhook automatically — no separate signup app. The newsletter signup and product inquiry templates above are pre-wired for this with an opt-in checkbox.
Can I run multiple forms on the same Shopify store?
Yes. Create multiple forms in your splitforms dashboard, each with its own access key, and paste each snippet into a different page or section. Use separate access keys to route submissions to different inboxes — for example, wholesale to sales and support to a help desk.
Is this better than a Shopify form app?
For most stores, yes. Form apps add JavaScript that slows your store, lock your submissions inside the app, and charge $5–29/month. A paste-in form posts directly from the browser to splitforms, adds no app weight, keeps your data exportable, and is free up to 500 submissions per month.
Add a form to Shopify — free
No app, no plugin, no monthly fee. 500 submissions per month, spam filtering, and the dashboard included.