splitforms.com

Form template · Small Business Order Form Template

Small Business Order Form Template

Updated · plan facts checked against /pricing

A small business order form takes orders for your products or services and lets you confirm stock, timing and price before the customer pays. This free HTML template has three line items with quantities, a needed-by date, pickup or delivery, and how the customer wants to pay. Each order is emailed to you with a Lead number to quote back.

  • 500 free total
  • No PHP · no SDK
  • One POST endpoint
Small Business Order Form Template — copy-paste form template

This template is one of our free HTML form templates. See more form templates by industry. Want customers to pay when they order? Use the order form with Stripe checkout. Need a plain HTML version to copy? See the free HTML order form template.

Overview

Most small businesses start taking orders through Instagram DMs, texts and email, and lose one eventually. This order form gives every order the same shape: line items with quantities, a needed-by date, pickup or delivery, and a payment preference. It is plain HTML that posts to one splitforms endpoint (https://splitforms.com/api/submit) with a hidden access_key, so it works on any site that lets you add custom HTML. Each order is emailed to you on every plan with the customer's email as the reply-to, so confirming an order is one reply.

No backend code

No server, API route, or SDK — your Small Business Order Form posts straight to one endpoint.

Straight to your inbox

Every submission is emailed to you and saved to a searchable dashboard — spam filtered before it reaches you.

Copy-paste ready

It's plain HTML you own — paste the Small Business Order Form snippet, swap in your access key, and ship.

Copy and ship

Your Small Business Order Form, ready to paste.

Plain HTML that posts to the /api/submit endpoint. Replace YOUR_ACCESS_KEY with the key from your dashboard; that's the only edit.

Get your free access key
small-business-order-form.html
<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 order request">
  <input type="hidden" name="form_loaded_at" id="form_loaded_at">

  <p>We confirm every order by email within one business day. Nothing is charged until we confirm.</p>

  <fieldset>
    <legend>Your order</legend>
    <label>Item 1
      <select name="item_1" required>
        <option value="">Choose an item</option>
        <option>Sourdough loaf ($9)</option>
        <option>Box of 6 cookies ($14)</option>
        <option>Seasonal pie ($28)</option>
        <option>Custom cake (we'll quote)</option>
      </select>
    </label>
    <label>Quantity <input type="number" name="qty_1" min="1" max="99" step="1" value="1" required></label>

    <label>Item 2 (optional)
      <select name="item_2">
        <option value="">None</option>
        <option>Sourdough loaf ($9)</option>
        <option>Box of 6 cookies ($14)</option>
        <option>Seasonal pie ($28)</option>
        <option>Custom cake (we'll quote)</option>
      </select>
    </label>
    <label>Quantity <input type="number" name="qty_2" min="1" max="99" step="1"></label>

    <label>Item 3 (optional)
      <select name="item_3">
        <option value="">None</option>
        <option>Sourdough loaf ($9)</option>
        <option>Box of 6 cookies ($14)</option>
        <option>Seasonal pie ($28)</option>
        <option>Custom cake (we'll quote)</option>
      </select>
    </label>
    <label>Quantity <input type="number" name="qty_3" min="1" max="99" step="1"></label>

    <label>Custom details (writing, colors, size, anything we should know)
      <textarea name="custom_details" rows="3"></textarea>
    </label>
  </fieldset>

  <fieldset>
    <legend>When and where</legend>
    <label>Needed by <input type="date" name="needed_by" required></label>
    <label>Time of day
      <select name="needed_time">
        <option>Morning</option>
        <option>Afternoon</option>
        <option>Evening</option>
      </select>
    </label>
    <label><input type="radio" name="fulfillment" value="Pickup" required> Pickup</label>
    <label><input type="radio" name="fulfillment" value="Delivery"> Delivery (local only)</label>
    <label>Delivery address (only for delivery)
      <textarea name="delivery_address" rows="2" autocomplete="street-address"></textarea>
    </label>
  </fieldset>

  <fieldset>
    <legend>Your details</legend>
    <label>Full name <input type="text" name="name" autocomplete="name" required></label>
    <label>Email <input type="email" name="email" autocomplete="email" required></label>
    <label>Phone <input type="tel" name="phone" autocomplete="tel" required></label>
    <label>How would you like to pay?
      <select name="payment_preference" required>
        <option value="">Choose one</option>
        <option>Send me an invoice or payment link</option>
        <option>Pay at pickup or delivery</option>
      </select>
    </label>
  </fieldset>

  <!-- honeypot: leave empty -->
  <input type="checkbox" name="botcheck" style="display:none" tabindex="-1" autocomplete="off">

  <button type="submit">Send my order</button>
</form>
<script>
  document.getElementById('form_loaded_at').value = Date.now();
</script>

Field by field

What each field collects.

confirm-first line (top)
Tells the customer that sending the form is a request, not a purchase. It sets the expectation that you reply before anything is charged, which is the point of this template.
item_1 to item_3 + qty_1 to qty_3
Three fixed line items cover most small orders. Each item and quantity becomes its own column, so you can count how many pies are due on Saturday. Put prices in the option text so customers see them; the form does not total them.
custom_details (textarea)
Where the message on the cake or the color of the ribbon goes. Keep it separate from the line items so the items stay clean for counting.
needed_by (date, required) + needed_time
The date you plan by: search the dashboard for it, or sort by it in the CSV or Google Sheet (paid plans). A date picker avoids '2/3' meaning February or March. The time-of-day dropdown is enough for planning without promising an exact slot.
fulfillment + delivery_address
Pickup or delivery. Plain HTML cannot require the address only for delivery, so check it before confirming. Say on the form if delivery is local only.
phone (required)
Required here because order questions ('we're out of rye, is white OK?') are fastest by text or call on the day.
payment_preference (required)
Tells you whether to send an invoice or payment link with your confirmation or expect payment at pickup. Never ask for card numbers or bank details in the form itself.

How to add it

How to add this form to your site.

To add a Small Business Order Form to your site you need three things: a free splitforms access key, the HTML snippet above, and your key pasted into it. No backend, database, or CAPTCHA library — the form posts to one URL and every submission lands in your inbox and dashboard.

Put in your own items

Replace the example items with what you sell, prices in the option text, and add or remove line items to suit your typical order. Swap in your access key and add the form to your site.

Confirm each order by reply

Each order is emailed to you with a Lead number and the customer's email as the reply-to address. Reply to confirm availability, the date and the total, quoting the Lead number.

Collect payment and fulfil by date

Send an invoice or payment link to customers who asked for one. Search the dashboard for a date to see what is due that day, or on paid plans send each order to Google Sheets as a row you can sort by needed_by and mark done.

What's included

What's included.

Bakeries, florists, makers, caterers and print shops usually can't take an order the way a web store does. Stock changes daily, some items need a date that may already be full, and half the orders include a custom request that changes the price. A confirm-first order form fits that: the customer says what they want, how many, by when and how they'd like to pay, and you reply to confirm before money changes hands. The three fixed line items keep orders comparable instead of free-text paragraphs, and the needed-by date lets you line up the week's orders by when they are due (search the dashboard for a date, or sort the column in a spreadsheet), not by when they arrived. Confirm first, then take payment: built for made-to-order and limited stock.

  • Small business order form: 3 line items with quantities, custom details, needed-by date and time, pickup or delivery, address, name, email, phone and payment preference
  • Plain HTML with labelled fieldsets — paste it into any site
  • One POST endpoint, no SDK — honeypot and spam scoring, no CAPTCHA
What's included with the Small Business Order Form Template

Where submissions go

Where submissions go.

Reply-to is wired to the visitor's email, so one tap on Reply answers them directly — while the built-in honeypot and automatic spam scoring filter out bots before they reach you. Every submission is emailed to your inbox and can forward to a webhook or Slack the moment a visitor hits send.

  • Reply-to wired to the visitor's email — reply straight from your inbox
  • Honeypot and automatic spam scoring filter bots, no CAPTCHA friction
  • Live dashboard, CSV export, and signed webhooks on paid plans
Spam-filtered submissions from the Small Business Order Form Template

How SplitForms works

What happens after someone submits your form?

splitforms receives the submission, filters spam, saves it to your dashboard and emails you — then, on paid plans, sends it on to your webhooks and integrations. No backend infrastructure to build.

A SplitForms contact form submission launching straight to your inbox

Add your endpoint

Point your form to your unique SplitForms endpoint. That's it.

HTML form pointing at a SplitForms submit endpoint

Receive submissions

We instantly capture and organize every submission in your inbox.

Submissions inbox with searchable leads and status pills

Route anywhere

Send data to email, spreadsheets, CRMs, webhooks, and 7,000+ apps.

Generic integration tiles for email, sheets, chat, CRM, automate, and webhook

No credit card required. Set up in under 60 seconds.

Connect & automate

Where can submissions go besides email?

On paid plans, submissions can also go to Slack, Discord, Google Sheets, Notion, Airtable, Zapier or any signed webhook — and splitforms works on the platforms you build on, from WordPress and Shopify to Next.js. With Stripe connected, your forms can take payments too.

Connect your SplitForms form to Slack, Google Sheets, Mailchimp, Zapier and more
NewTake payments on your formsDeposits, bookings, order forms — submitters check out through Stripe and the money goes straight to your Stripe account. Included on every paid plan.See payment forms →Need time slots? Online booking →

Setup guides for the stacks you use

Questions

Frequently asked questions.

View all FAQs
Can I use this order form for services instead of products?

Yes. Change the line items to your services (a window clean, a tune-up, a logo package), relabel quantity as hours or units if that fits, and use the custom details box for the job description. Keep the needed-by date: it is just as useful for booking work as for baking.

How many products can I list?

As many as you like in each dropdown; it is plain HTML. If customers often order more than three different items, copy an item and quantity pair to add a fourth line. Every line you add becomes its own column in the export (paid plans).

Will the customer get a confirmation automatically?

On paid plans, turn on the auto-reply and each customer gets an email right after ordering. Its template can include {{ lead_number }}, so they receive the same reference you see. On the Free plan you get the order email and reply to the customer yourself.

How is spam kept out of my orders?

A hidden honeypot field and a rule-based content filter run on every plan, with no CAPTCHA for real customers to solve. If a form keeps getting targeted, you can add Google reCAPTCHA v2 or Cloudflare Turnstile, which splitforms verifies on the server.

What is a small business order form?

It is a form customers fill in to request products or services from a small business: what they want, how many, when they need it, pickup or delivery, and how they'll pay. Unlike a web store checkout, you review and confirm each order before taking payment, which suits made-to-order goods and changing stock.

Can customers pay on the form instead?

Yes, on paid plans. A Stripe payment form saves a price for each item and quantity, calculates the total on the server and sends the customer to Stripe Checkout after they submit. Use it when prices are fixed and you can always fulfil. For custom or limited items, keep this confirm-first form and send a payment link after you confirm.

How do I give customers an order number?

Every submission gets a sequential Lead number on every plan. It appears in your notification email and in the dashboard search, so quote it in your confirmation reply and use it as the order reference.

Simple pricing

How much does splitforms cost?

Free gives you 500 submissions for $0 — no card, no time limit. Pro is $5/month for 5,000 submissions a month, and Annual is $49/year for 15,000 a month with every Pro feature.

Free

$0— 500 submissions
 

No card, no time limit

Best for testing

For side projects and indie devs.

  • 500 free submissions
  • Unlimited forms
  • Email notifications included
  • Smart spam filtering
  • Submissions dashboard
  • Redirect after submit
  • MCP server included

Annual

$49/ year
About $4.08 per month, billed yearly
Best value

Every Pro feature with triple the volume — $0.27 per 1,000 at full use.

  • 15,000 submissions per month
  • Unlimited forms
  • Everything in Pro
  • File uploads with 5 GB storage
  • 3 team seats
  • Priority email support

No credit card required on Free • Cancel anytime • Full pricing and FAQ