Help & Guide

Everything you need to know about logging in, securing your account, and managing order forms with EZFormz.

Website issue? Submit a support ticket. Use support for EZFormz technical problems only. Form, payment, order, refund, shipping, and seller-specific questions must go to the form owner. Open Support →

Login & Email Codes

EZFormz uses email login codes by default. There is no account password to remember for normal production sign-in.

How normal login works

  1. Go to ezformz.net/login.
  2. Enter the email address for the account you want to use.
  3. EZFormz sends a 6-digit code to that email address.
  4. Enter the newest code on the login page. Codes expire after 15 minutes.

The email comes from noreply@ezformz.net. The subject line includes the code, like 123456 is your EZFormz login code.

If the email code is not showing up

  • Make sure you are using the exact email address that owns the form. Separate emails are separate EZFormz accounts.
  • Search Gmail or your mail app for EZFormz, noreply@ezformz.net, or login code.
  • Check Spam, Promotions, Updates, All Mail, Trash, and any filtered folders.
  • Use the newest code only. Requesting a new code replaces the previous one.
  • Check whether your mailbox has blocked or filtered messages from noreply@ezformz.net.
If EZFormz says a code was sent but you cannot find it, contact support with the account email and the approximate time you requested the code. We can check delivery, bounce, and complaint logs.

Email code vs. 2FA code

The normal email login code and a two-factor authentication code are different.

  • Email code — sent to your email inbox. This is the default login method.
  • 2FA code — generated by an authenticator app such as Google Authenticator, Authy, 1Password, Bitwarden, or another TOTP app. This is only required if you enabled 2FA in Account → Security.

If 2FA is enabled, the login flow is: email address → email code → authenticator app code.

If an authenticator code is rejected, check that your phone time is set automatically, then wait for the next code in the app and try again on the same screen. After too many invalid attempts or if the sign-in expires, request a fresh email code.

Recovery codes

When you enable 2FA, EZFormz shows 10 recovery codes one time. Save them somewhere safe. If you lose access to your authenticator app, click Use a recovery code instead at the second-factor screen and enter one of those saved codes.

Each recovery code works once. If you can still log in, you can regenerate recovery codes from Account → Security.

If you lose your authenticator and recovery codes

2FA cannot be reset automatically by email. That is intentional: if someone broke into your email, an email-only reset would let them bypass 2FA. Submit a support ticket; you will be asked to verify ownership of the account before 2FA is reset.

Passkeys

A passkey lets you sign in with your device or password manager instead of waiting for an email code. Use Account → Security → Passkeys to add, rename, or remove passkeys. If your password manager syncs passkeys across devices, one saved passkey can work on multiple devices.

Multiple accounts

Forms stay with the account email that created or owns them. If you accidentally create two accounts, log in with the email that owns the form you need. Contact support if an unused account should be deleted or if ownership needs to be reviewed.

Account Setup & Preferences

The Account page controls your profile, reusable defaults, saved payment methods, security, sessions, exports, and connected apps. Open it from the top-right account menu or go directly to ezformz.net/account.

Profile and saved checkout info

Profile is where you manage your account email, display name, business name, and saved checkout profile. Saved checkout info can speed up buyer forms when you are signed in, but it does not overwrite a seller's required form questions.

If you change your account email, EZFormz sends a verification code to the new email first. If 2FA is enabled, you also need your current authenticator code or a recovery code.

Account notifications

Notifications controls account-level email preferences. Form-level order notifications are still managed inside each form's settings, so one form can notify you differently than another.

  • Use account notifications for broad account alerts and platform messages.
  • Use form settings for order emails, buyer confirmation emails, and form-specific alerts.
  • If expected emails are missing, check spam, filters, blocked senders, and the exact account email in use.

Timezone

Your account timezone is used for account-facing dates and defaults when EZFormz needs to show or prepare a local time for you. Individual forms can still have their own scheduled open and close timezone settings.

If order times, scheduled launches, or dashboard dates look off by hours, check Account → Timezone first.

Form defaults

Form Defaults lets you set reusable defaults for new forms. These settings help new forms start closer to how you normally work.

Changing form defaults does not rewrite forms you already created. Open an existing form's builder settings to change that form.

Saved payment methods

Payments stores reusable payment methods such as Venmo, Cash App, PayPal, Zelle, Wise, Apple Pay, crypto wallets, QR images, buyer notes, logos, and surcharges. In the builder, the Saved payments button copies selected account methods into the current form.

Copied payment methods are independent per form. You can change buyer visibility, transaction limits, and form-specific settings without changing the saved account version.

Connected apps

Connected Apps shows external tools that have been connected to your account, such as AI builder/API connections. Revoke access here if you no longer use a tool or if you do not recognize a connection.

Revoking an app stops that app from making future account actions. It does not delete your forms or orders.

Export data

Export Data creates a download of your account data for backup or review. Use this before deleting an account or when you want a local copy of your forms, products, orders, and account settings.

Sessions

Sessions lists active sign-ins for your account. If you used a shared device, lost a device, or see a session you do not recognize, sign that session out from this page.

Changing your login email, resetting security settings, or removing suspicious sessions can help lock down the account after a concern.

Invite-only form access

Invite-only access is set inside the form builder under Settings → Security. Buyers must be invited by email before they can access the form. You can send, revoke, and limit invites per form.

  • Public means anyone with the link can open the form.
  • Password means buyers need the form password.
  • Invite-only means only invited buyer emails can unlock the form.
Sharing an invite-only form link is not enough by itself. The buyer also needs an active invite for their email address.

Contact Support

EZFormz support is for website technical support only: account access, site errors, broken tools, upload problems, or bugs on ezformz.net.

Do not use EZFormz support for questions about a specific form, payment, order, refund, shipping, pickup, product, event, seller rule, or anything else that belongs to the form owner. Contact the person or business that owns the form. Non-website support tickets are deleted without a reply.

Submit Support Ticket My Support Tickets

Use My Support Tickets to see status, a conversation-style reply thread, and uploaded screenshots. When EZFormz support replies, you will also receive a short email notice with a secure ticket link; the email does not include the reply text. Add follow-up details in the ticket instead of sending support emails.

What to include

  • The account email you are using.
  • The EZFormz page URL where the technical issue happens.
  • What you clicked or changed right before the issue appeared.
  • The exact error text, if there is one.
  • A screenshot or screen recording when the issue is visual or hard to describe.

Login and code issues

For login-code problems, include the account email and the approximate time you requested the code. EZFormz can check whether the message was accepted, bounced, blocked, or marked as delivered.

Security resets

Two-factor authentication and passkey recovery may require ownership checks before an admin can reset anything. That protects the account if someone else gains access to the email inbox.

Abuse and fake-payment reports

If you report a fake payment proof, payment dispute, impersonation, spam, or other abuse, include the order link and any screenshots or transaction details you have. You can also use the public Report an issue page, which asks for your email, the reported party, category, summary, details, and optional evidence files. EZFormz keeps the report, order, timeline, and uploaded proof available for support review.

When support confirms abuse, the reported account or email may be blocked from logging in, using connected-app access, and submitting new orders. Historical orders and reports stay in place so sellers and support can review what happened.

System status

Before reporting a possible outage, check System status. It runs live checks for the public API, auth service, and static assets, then refreshes automatically about once per minute.

Feedback and widget requests

Use Submit Support Ticket for EZFormz bug reports, feature requests, or website technical notes. The dashboard also has a widget request form for suggesting a new dashboard card or metric; include the exact decision you want that widget to help with.

Supporting EZFormz

The Support EZFormz page lists optional donation methods. Donations help keep the free service running and improving, but they are not required to use EZFormz and do not change account access.

Quick Start

Get your first order form live in under 5 minutes:

  1. Create an account at ezformz.net/signup (free).
  2. Click "New Form" on your dashboard. Give it a name and pick a template (or start blank).
  3. Add your products by clicking the Products block, then adding product names, options, and prices.
  4. Add fields from the left sidebar — drag them onto the canvas or click to add.
  5. Customize the look — open Settings → Appearance to pick a theme or customize colors, fonts, and more.
  6. Save and publish — click Save, go to the PUBLISH tab, toggle the form to "Open", and share the link.
Choose the "Standard Order Form" template to get a pre-built form with products, customer info, address, payment instructions, and payment proof blocks already added.

Creating a Form

From your Dashboard, click the "+ New Form" button. You'll be asked for:

  • Form Title — the name your buyers will see at the top of the form.
  • Template — choose a starting point:
TemplateIncludes
Blank FormEmpty canvas — build from scratch
Standard Order FormProducts, Name & Email, Address, Payment Instructions, Payment Proof
Simple Product FormProducts, Name & Email, Payment Instructions
Contact FormName & Email, Subject (text), Message (textarea)

You can also save any form as a custom template and select it when creating new forms.

Editing Your Form

The form builder has three main areas:

  • Left sidebar — Contains all available form elements. Click or drag to add them to your form.
  • Canvas (center) — Shows a live preview of your form. Click any block to select it.
  • Properties panel (right) — Appears when you select a block. Configure labels, options, styles, and more.

Inline Text Editing

For text-based blocks (Form Header, Heading, Text Box, Agreement), you can edit text directly on the canvas:

  1. Click the block — a formatting toolbar appears at the top.
  2. Click on the text to place your cursor and start typing.
  3. Use the toolbar to change font, size, bold, italic, underline, alignment, and colors.
  4. Click the gear icon in the toolbar to open the full properties panel.

Reordering Blocks

Click a block to edit it. To reorder, use the ☰ grab icon in the block header: on desktop, drag it to open a compact section picker so you can drop the block anywhere in the form without scrolling through full cards; you can also drop directly on the canvas. On phones, long-press the grab icon to open the same picker, drag to the desired spot, and release to place it. You can also use the up/down arrows in the block header, or the double-up arrow to move a block to the top of its page.

Duplicating & Deleting

Each block header has a Copy button to duplicate it and an × button to delete it. Singleton blocks (like Products or Name & Email) cannot be duplicated.

Merging fields into a group

You can group adjacent fields into a single visual container with one shared title (e.g. combine a date field + a notes field under "Pickup Details"). On the canvas, click the ↕ Merge slot button between any two consecutive cards to merge them — or drag a field into the drop zone of an existing group to add it. A merged group moves as one boundary: when you move another block up/down or drop it near the group, it lands above or below the whole group unless you deliberately use the group's internal drop zone. The group has its own editable title input and a × Unmerge button on each slot to undo. On the live form the group renders as one labeled box with the fields stacked inside (each field's individual heading is suppressed so your group title is the only one visible). Works for both simple inputs (date, text, number, dropdown, etc.) and complex blocks (Customer Info, Shipping Address, Payment Info, Payment Proof).

Saving

Click the Save button (or press Ctrl+S). The save button shows an orange dot when you have unsaved changes.

Undo

Click Undo or press Ctrl+Z to revert your last change. EZFormz keeps up to 30 undo steps per session.

Preview

Click the PREVIEW tab to see how your form looks to buyers. Preview uses the same public form renderer as the live page and includes your current builder state: theme, header/background images, every field type, merged groups, products, shipping options, product sale/bulk settings, buyer low-stock display, payment methods, coupons, and multi-page steps.

Built-in Sections

Sections are the core building blocks of your form. Most are singletons — you can only have one per form.

Form Header

Displays the form title, description, and optional header image at the top of your form. Edit the title and description directly on the canvas. Use the gear icon to upload a header image.

Products

Displays your product catalog with images, descriptions, options/variants, and prices. Buyers select products and quantities here. See the Products section below for full details.

Name & Email

Collects the buyer's full name and email address. Both fields are required by default and can be made optional in the properties panel. Turn on Confirm Email to add a second "re-enter your email" field that must match before the buyer can submit — a simple guard against typos that would otherwise bounce the confirmation email. You can also collect platform usernames for Telegram, Discord, WhatsApp, TikTok, or a generic supported platform; selected platforms render as separate labeled fields on orders, receipts, and Sheets exports.

Shipping Address

Collects a shipping address. By default, the public form uses the US address layout with a State dropdown and ZIP Code field. Turn on Accept International Addresses in the Shipping Address properties panel to add a Country selector, allow province/region text, and use Postal Code wording for non-US buyers.

All fields except Street 2 are required by default for US addresses. International addresses require Street, City, and Country; province/region and postal code stay optional because not every country uses the same format. The entire section can still be made optional.

Payment Instructions

Displays your payment instructions to the buyer. New blocks default to Methods mode — a structured picker where you add one card per payment rail (Venmo, CashApp, Zelle, PayPal, Wise, Apple Pay, Stripe, crypto, and custom, etc.) with handle / address / surcharge fields. Buyers see a clean list of payment options on the public form and can click to copy the address. Switch to Text mode in the props panel for free-form payment notes; that mode uses a rich-text editor in the props panel (Bold / Italic / lists / links). The block no longer supports inline editing on the canvas — click the block to open the props panel.

In Methods mode, each payment method can be shown or hidden without deleting its saved handle/address. You can also set a transaction limit so a method automatically disappears from the buyer form after that many active orders choose it. Cancelled, failed, and refunded orders do not count against the limit. If two methods share the same buyer-facing name, EZFormz uses the saved handle, address, or network behind the scenes so preview, checkout, emails, and pay links keep the selected method straight.

For pay-before-submit forms, checkout confirms current product, sale, shipping, coupon, and payment-method pricing before showing payment details, accepting payment proof, or submitting. If a buyer keeps a form open while prices change, EZFormz refreshes the cart and asks them to review the current total before they pay.

Turn on Request payment later when you want buyers to submit orders first and pay only after you review totals, MOQ, or availability. Buyers see your custom pay-later message at checkout instead of payment options. From the orders page, click Request Payment on one order or use the bulk action bar to send payment links to selected orders.

Crypto methods can also opt into Run on-chain check after submit, which checks future submitted crypto payments after checkout or balance payment and shows the advisory result on the Orders page. See Crypto Payments & Verification for the full setup and review flow.

Payment Proof

Requires the buyer to upload a screenshot or image as proof of payment. Accepts JPG, PNG, GIF, and WebP up to 25MB. Buyers can also add another proof or TXID later from My Orders; that follow-up modal shows the form's active payment methods so the seller can see which option the buyer used. For crypto methods, proof upload remains required even when transaction ID collection or on-chain checking is enabled; the on-chain result is a review aid, not a replacement for proof review.

Optional: turn on Auto-mark paid when verified in the Payment Proof block or in Settings → Payment Proof. After you verify a proof on a pending order, EZFormz can move that order to Paid/Confirmed and sync the status to Google Sheets. The first time you verify proof with the setting off, the Orders page asks whether you want to enable the shortcut for that form.

Coupon Code

Adds a coupon code field. Manage coupons (create codes, set percentage or fixed discounts, set max uses) in the properties panel. Discounts are applied to the order total. By default, buyers can use one coupon code at a time; applying another accepted code replaces the current one.

Multiple coupons: turn on Allow Multiple Coupon Codes in the Coupon Code block when a form should let buyers stack up to 5 codes on one order. Each applied coupon shows as a removable chip under the field, and the cart lists one discount line per code. Discounts don't compound: each percent coupon applies to its own eligible item subtotal (so a 20% coupon on category A and 15% on category B each discount their own items), and the combined discount can never exceed the items subtotal. Use limits are tracked per code, and cancelling an order releases every coupon it used. Unlimited coupons can be used on repeat orders by the same buyer. Sellers can also add/remove individual coupons or manual discounts from an order via the Edit Order modal.

What a coupon can do: when you create a coupon you can combine any of these effects on a single code — a product discount (percent or fixed, whole order or specific categories), a shipping discount (percent off, fixed off, or free shipping), and waiving the payment surcharge. For example one code can be “10% off products + free shipping + no card fee.” The product discount is optional, so you can make a free-shipping-only or no-surcharge-only code. Shipping discounts are capped at the order's shipping cost, and waiving surcharges removes any payment-method/option fee from the total.

Question Fields

Fields are input elements for collecting information from buyers. You can add as many as you need.

FieldWhat It DoesWhat You Can Customize
HeadingDisplay-only section titleText (edit directly on canvas)
Short AnswerSingle-line text responseLabel, placeholder hint, required or optional
Long AnswerMulti-line text responseLabel, placeholder hint, required or optional
NumberNumeric inputLabel, placeholder text, required or optional
DropdownSelect one option from a listLabel, list of choices, required or optional
Single ChoiceRadio buttons — pick oneLabel, list of choices, required or optional
CheckboxesCheckboxes — pick severalLabel, list of choices, required or optional
Image ChoicePick from clickable image cardsLabel, images with captions and optional description lines, allow one or multiple, required or optional
Multiple ChoiceSearchable dropdown, pick multipleLabel, list of choices, required or optional
PollPoll-style voting with resultsLabel, list of choices, optional description lines, required or optional, allow multiple selections, ask quantity per option, show option images, image size
PhonePhone number with auto-formattingLabel, placeholder text, required or optional
Price / CurrencyCurrency amount with $ prefixLabel, placeholder text, required or optional
DateDate pickerLabel, required or optional
TimeTime pickerLabel, placeholder text, required or optional
SliderDraggable slider for a numberLabel, min/max value, step size, starting position, show/hide value, required or optional
Star Rating1–5 star ratingLabel, required or optional
File UploadFile upload (images)Label, required or optional
AgreementCheckbox the buyer must checkText (edit on canvas), required by default
Text BoxDisplay-only text (disclaimers, info)Content (edit directly on canvas)
HyperlinkClickable linkLink text, URL
Hidden FieldInvisible — captures data automaticallyName, default value, URL parameter
CalculationAuto-calculated from other fieldsLabel, formula, display as number/dollars/percent
Countdown TimerDisplay-only timer that counts down to a date and timeLabel, helper text, target date/time, timezone

Dropdown, Single Choice, and Checkboxes Options

After adding one of these fields, click it to open the properties panel. You'll see an options list where you can:

  • Type an option name and press Enter or click + Add
  • Click the × next to an option to remove it
  • Drag options to reorder them

Calculation Fields

Calculation fields let you auto-compute values from other numeric fields. In the formula, reference fields by their label in curly braces:

  • {Quantity} * {Price} — multiply two fields
  • {Subtotal} * 1.08 — add 8% tax
  • ({Rating} / 5) * 100 — convert rating to percentage

Output formats: Number, Currency ($), or Percent (%).

Hidden Fields

Hidden fields are not visible to buyers. Set a URL parameter name (like ref) and when someone opens your form via ezformz.net/f/slug?ref=google, the hidden field automatically captures "google". You can also set a default value as a fallback.

Content & Layout Blocks

Divider

A horizontal line to visually separate sections of your form.

Image

Display an image on your form. Paste a URL or upload an image file. Great for banners, product photos, or instructions. Use the Display size setting (Full / Large / Medium / Small) to control how big the image appears — smaller sizes are centered so a large image does not dominate the page.

Collapsible Section

An expandable/collapsible content block with a clickable title bar. Buyers can click the header to show or hide the section's content. Configure the title, body text, and whether it starts expanded or collapsed.

Countdown Timer

Adds a live countdown inside the form. Set the text, target date and time, and timezone; buyers see days, hours, minutes, and seconds until the selected moment.

Page Break

Splits your form into multiple pages. See Multi-Page Forms for details.

Products

The Products block is the core of any order form. Here's how to set it up:

Adding Products

  1. Click the Products block on the canvas to open its properties.
  2. Click "+ Add Product" at the bottom of the products list.
  3. Enter the product name, description (optional), and category (optional).
  4. Click the image placeholder to upload a product photo.
  5. Add at least one variant/option with a label and price (e.g., "Small - $19.99").

Product photos

Each product can have up to 8 photos. Upload additional photos from the product image area, add a short description/alt line for each photo, and mark any photo as featured. The featured photo still populates the legacy image_url field for older integrations, while the full ordered gallery is saved with the product.

Buyer-facing product photos are contained so the full image stays visible instead of being cropped. When a product has more than one photo, buyers see a carousel — one photo at a time with left/right arrows, dot indicators, and swipe on touch — instead of a thumbnail grid. Tapping the photo enlarges it, and the enlarged view can be paged through every photo (arrows, keyboard, or swipe) starting on the one tapped. The existing Products block Image Size setting still controls the gallery frame shape.

Large product lists

When a form has several products, the Products tab shows a product/category list beside the product cards on desktop. Drag the thin handle between that list and the product cards to make the list wider or narrower; drag it all the way left to collapse it, and double-click the handle to reset the width. The width is remembered per form in your browser.

Variants & Pricing

Each product has one or more variants (also called options). Each variant has:

  • Label — what the buyer sees (e.g., "5mg vial", "Large", "Bundle of 3")
  • Price — the price for this variant
  • Stock — leave blank for unlimited, or enter a number to limit total availability
  • Low Alert — get an email alert when stock drops to this number
  • Max/Order — the most a single customer can buy of this variant in one order. Blank = no limit. Use this when you want to keep things fair on limited drops ("1 per customer", "max 2 per order", etc.)
When a variant's stock reaches zero, it shows "Out of Stock" and can't be selected. Low Alert is the seller/internal alert number for that specific variant; it is separate from what buyers see.

Shared inventory

Open Inventory from the main dashboard navigation when multiple forms should sell from the same quantity on hand. During beta, Inventory only appears for enabled accounts. Create an inventory set, add items and quantities, then link a form to that set. A form uses either local stock or one shared inventory set; v1 does not mix local and shared stock on the same form.

The Inventory page opens on the Items workspace, where you can search, sort, and filter items by all, low stock, out of stock, linked, or unlinked. Use the Audit Trail tab to search and review quantity changes without crowding the item and form management controls.

For large shared-inventory sets, use Import CSV on the Inventory page. The Inventory CSV template accepts name, sku, quantity_on_hand, low_stock_threshold, and note. It creates or updates inventory items in the selected set only; it does not create form products or link forms.

To reuse an existing form's products, use Import From Form on the inventory set. This copies that form's product options into the selected inventory set without linking the form. Use Import + Link when you want to copy a selected form's products into the set and review the shared quantity links in the same step.

To add inventory items to a linked form, open that form's Products block and click Add From Inventory. The builder opens a picker with items from the linked inventory set. Select the items to add, or group selected items as variants under one visible $0 product. Edit prices and details before sending buyers to active forms. Inventory also has an Add To Form tool for managing selected items from the inventory workspace.

When a form uses shared inventory, product prices, photos, sales, max/order, and product copy still belong to the form. Stock quantity and Low Alert become read-only in product settings and are managed from Inventory. Checkout, order edits, cancellations, deletes, restock alerts, and low-stock widgets use the shared quantity on hand.

Products CSV import cannot change stock or Low Alert for shared-inventory forms. CSV export leaves the writable stock columns blank and adds read-only inventory columns so you can review the linked item and current quantity without accidentally overwriting QOH.

Variant costs for Profit & Loss

Owners can add an optional cost on each variant from the Products block P&L tab or Account → Profit & Loss. These fields are private to the owner, do not show to buyers, and do not change checkout prices.

New orders save the cost snapshot that applied at the time of order, so later cost changes affect future orders instead of rewriting old profit history. Collaborators cannot see or edit cost fields.

Buyer low-stock display

To control the public "X left" label, open the form in the builder, click the Products block, then go to Products Properties → Display → Buyer Low Stock Display. The default is 5, meaning buyers see "5 left", "4 left", etc. when stock reaches that number. Set it to 0 to hide the buyer-facing low-stock label while still keeping seller Low Alert notifications on each variant.

If Max/Order is set on a variant, the qty picker is capped and the buyer sees a small "Max N per order" hint next to the price.

Sale Pricing

Each variant can have a sale price with optional start and end dates:

  • Sale Price — the discounted price shown to buyers (original price shows with a strikethrough)
  • Sale Starts — when the sale becomes active (leave blank for immediately)
  • Sale Ends — when the sale ends (leave blank for no end date)

Click "Clear Sale" to remove a sale and revert to the regular price.

For product or variant bulk pricing, percent tiers reduce each matching unit by that percent. Fixed-dollar tiers subtract once from the qualifying line total: for example, Buy 10+: $25 off on a $20 variant makes 10 units total $175 before shipping, coupons, and payment fees.

Product info, size labels, and sold goals

  • Volume / Size — add a display-only line under the product name for capsule counts, vial sizes, bottle volume, pack size, etc.
  • Product info / CoA link — attach a public link to product details, lab reports, instructions, or any other supporting page. Full http:// / https:// URLs and normal bare domains are accepted.
  • Sold-goal bar — show a public progress bar like 40/100. The count is display-only and comes from existing order history; it does not change stock, totals, checkout, or payment status.

Required Products & Fixed Quantity

  • Required — toggle this on to require buyers to select this product before submitting. This applies even when the Products section itself is not marked required — a required product must be added to the cart before checkout.
  • Fixed Quantity — forces quantity to 1 (buyers can only add or remove, not change quantity)

Publish status & scheduled visibility

Each product carries a small status pill in its header so you can tell at a glance whether buyers can see it right now.

  • Unpublish — hide a single product from the live form without deleting it. Toggle it back on to publish again. (The same Unpublish / Publish action is available in bulk — see below.) Unpublished products show an Unpublished pill.
  • Scheduled visibility — set a Show after date/time, a Hide after date/time, or both, to make a product appear and/or disappear automatically. The pill reflects the state: Starts <date> before it opens, the active window while it's live, and Ended <date> once it closes. Times use the timezone shown in the picker. Great for timed drops or limited-window items without having to babysit the form.
Unpublish/schedule controls hide the product from buyers but keep all of its history, stock, and settings intact — nothing is lost, and existing orders for that product are unaffected.

Minimum spend before shipping

Open Settings → Limits and set Minimum Spend Before Shipping when a form needs a minimum order value. Buyers see the required amount in the Order Summary and cannot submit until their product subtotal reaches it.

The check uses product prices after active sale and bulk pricing, but before coupons, shipping, shipping discounts, and payment fees. Existing orders and seller edits are not recalculated against a new minimum; it only gates new checkout submissions.

Form-wide sales and free shipping

Click the Products block, then open the Sales tab to set discounts that apply across the whole form. You can add product-subtotal tiers (for example, $100+ gets 5%) and item-quantity tiers (for example, 5+ items gets $10 off), using percent or fixed discounts. When more than one tier matches, the highest-value matching discount is used.

The sale calculation uses product subtotal and product quantity only. Shipping, shipping add-ons, quote-after-order shipping, payment surcharges, and coupon discounts do not count toward the sale threshold. You can choose whether the form-wide sale uses the best available price alongside existing variant sales/bulk discounts, or overrides those product-level discounts while the sale is active.

The same Sales tab can unlock free shipping after a product-subtotal threshold. Choose which shipping method becomes the free default and whether buyers may pay to upgrade to a different method. Shipping add-ons stay paid, and quote-after-order methods are not made free automatically. You can also choose whether coupon codes are allowed when a form-wide sale benefit applies.

When the sale is active, buyers see a compact sale banner above the product list that summarizes the current subtotal tiers, quantity tiers, and free-shipping threshold.

Bulk Add Products

Click "Bulk Add" to paste a list of products. Supported formats:

  • Product Name - $29.99
  • Product Name, 29.99
  • Product Name | Description | Category | $29.99

Each line becomes a product with one variant.

CSV Export

The Products tab has a CSV ▾ dropdown with an Export option that downloads your entire catalogue as a spreadsheet. The export round-trips losslessly through the CSV import flow — every column the importer accepts comes back out, including product gallery photos, sale prices, sale start/end dates, low-stock thresholds, max-per-order caps, and bulk-discount tiers. Filename pattern is {form-title}-products-{YYYY-MM-DD}.csv. Edit it in your spreadsheet of choice and re-import to update the catalogue in bulk.

CSV Import

For large catalogs, use "Import CSV". Download the template CSV first to see the expected format. Columns:

ColumnRequiredDescription
product_nameYesName of the product
descriptionNoProduct description
size_labelNoVolume / Size line shown under the product name
product_urlNoOptional product info / CoA link. Full http(s) URLs or bare domains like www.example.com are accepted.
product_url_labelNoPublic label for the product link
show_sold_goalNoUse 1/yes to show a public sold-goal progress bar
sold_goal_quantityNoGoal target shown as sold / goal; display-only
categoryNoProduct category for filtering
image_urlNoFeatured/legacy product photo URL
product_imagesNoJSON array of up to 8 product photos, such as [{"url":"https://example.com/front.jpg","alt_text":"Front"}]
option_labelYesVariant name (e.g., "Small")
priceYesPrice (number, no $ sign)
stockNoStock quantity (blank = unlimited)

Multiple rows with the same product_name are grouped as variants of the same product.

Display Options

  • Variant Display — "Dropdown" (select from a list) or "Individual" (show each variant with its own quantity input)
  • Image Size — Rectangle, Square, Portrait, or Auto
  • Quantity Input — "Number" (type any amount) or "Dropdown" (pick from 1 to max). On the public form, every Number qty input gets tappable − / + stepper buttons on either side so phone buyers don't have to fight iOS Safari's tiny native steppers.
  • Category Filter — If products have categories, buyers can filter by category tabs

MOQ Progress block

Add the standalone MOQ Progress block when you want buyers to see group-buy progress without changing how products are selected. The block can show all products with sold goals, or only the specific products you select, with one progress row per product.

Multi-select, category moves, bulk edits, bulk delete, and sort

Each product card has a checkbox in its header. Pick any number of products and the bottom bulk-action bar surfaces N selected · Move to category · Bulk change · Select all visible · Clear · Delete selected.

Use Bulk change to apply the same setting to every selected product. Available actions include Set Low Alert, Clear Low Alert, Set Stock Qty, Set Stock Unlimited, Set Max/Order, Clear Max/Order, Mark Required, Mark Not Required, Unpublish, and Publish. Variant-level changes apply to every variant inside the selected products, so EZFormz shows a confirmation warning before changing more than one product.

Use the category dropdown to move selected products into an existing category, create a new category, or send them back to Uncategorized without opening each product. The toolbar's Sort dropdown lets you reorder the catalogue by Manual order, Name A→Z / Z→A, Price low→high / high→low, or Stock low→high / high→low. Sorting commits the new order to the form on save, so buyers see it on the public form too. A second sort section ("Categories") appears when you have 2+ categories, with Manual / A→Z / Z→A. Both sort selections persist per-form across reloads.

Free / zero-priced products

You can have variants priced at $0 (free samples, included extras, etc.). Buyers see "Free" on the public form instead of "$0.00", can select them like any other variant, and the order line records as $0. Products with no variants at all also render on the public form (name + image + description, no qty input) so a placeholder / "contact for pricing" listing isn't silently hidden — the builder shows a yellow "No variants" warning chip on those so you know they aren't orderable.

Email-only restock alerts

When a variant is out of stock, buyers see a Notify me when it's back link below the variant row. They drop in their email — no buyer account required — and EZFormz emails them within an hour of the seller restocking that variant. Anonymous, deduped per (variant, email), and rate-limited 5 per IP per hour. The buyer email links straight back to the form for one-tap reorder. Untracked-stock and in-stock variants don't show the link.

Form Shipping Options

Add shipping methods and add-ons to your form. The shipping editor is found in the Products block properties panel.

Shipping Methods vs. Add-ons

TypeHow It WorksExample
MethodRadio buttons — buyer picks exactly oneStandard ($5), Express ($15), Overnight ($25)
Add-onCheckboxes — buyer can select multiple, with optional quantityInsurance ($3), Signature Required ($2), Gift Wrap ($5)

Methods are mutually exclusive (pick one). Add-ons stack on top of the selected method.

Setting Up Shipping

  1. Click the Products block, then scroll to the Shipping Options section in the properties panel.
  2. Click "+ Add Shipping Option".
  3. Enter a label, price, and select the type (Method or Add-on).
  4. For international methods where the exact rate depends on the destination, turn on Quote after order. Buyers can submit the order with that method, the shipping line is saved at $0, and you can request the final balance after review.
  5. For add-ons, choose whether buyers may select more than one, whether the add-on is required, and whether it should be auto-selected when the buyer opens the form.
  6. Optionally upload an image for the option.
  7. Drag to reorder options.

Shipping costs are added to the order total and shown in the cart summary. Quote-after-order methods do not add to the checkout total until you request payment later. Required add-ons are enforced when the buyer submits, so stale browser tabs cannot skip a required insurance/admin-fee style add-on.

For order-value free shipping, use the Products block Sales tab. It can make a selected shipping method free once the buyer reaches a product-subtotal threshold, with an option to allow or block paid upgrades.

Shipping with EasyPost (built-in)

EZFormz has a built-in shipping integration powered by EasyPost. Once connected, you can compare USPS / UPS / FedEx / DHL rates and buy labels directly from the orders page — no separate dashboard, no copying tracking numbers. Use this if you want to fulfill orders without leaving EZFormz.

Step 1 — Connect your EasyPost account

  1. Create a free account at easypost.com.
  2. In EasyPost, go to Account → API Keys and copy your Production key (starts with EZAK) or a test key (EZTK) if you're just trying it out.
  3. Back in EZFormz, open Account Settings → Shipping Integration.
  4. Paste the API key and click Verify. The key is encrypted at rest and never returned to your browser once saved.

Step 2 — Set your return address

In the same settings section, fill in the From Address (name, company, street, city, state, ZIP, phone, email). This is the return address printed on every label you buy. Click Save Shipping Settings.

Step 3 — Add package presets (optional but recommended)

Under Package Presets, add the box sizes you use regularly (e.g. Small Flat Rate, Padded Envelope, 8×6×4). Each preset stores dimensions, weight, and an optional default carrier/service. At ship time you'll pick a preset from a dropdown instead of retyping everything.

Step 4 — Buy a label for one order

  1. Open the form's Received orders page and expand the order you want to ship.
  2. Click the Ship button. A modal opens with the customer's ship-to address already filled in.
  3. Pick a package preset (or enter dimensions + weight manually).
  4. EZFormz fetches live rates from USPS, UPS, FedEx, and DHL. Click the rate you want.
  5. Click Buy Label. EZFormz charges your EasyPost account, downloads the label PDF, writes the tracking number to the order, flips status to Shipped, and emails the customer the tracking number automatically.

Step 5 — Batch shipping (multiple orders at once)

  1. On the Received orders page, tick the checkbox on every order you want to ship.
  2. Click Batch Ship in the bulk action bar.
  3. Pick a package preset to apply to all selected orders.
  4. EZFormz buys labels for each order, saves the tracking numbers, ships the orders, and sends confirmation emails in one pass.
  5. When the batch finishes you're asked "Print all labels now?" — choose Yes to open every label it just created as one multi-page PDF in a new tab. Print the whole stack in a single print job (Cmd/Ctrl‑P), or save it as one file.

Step 6 — Reprint labels later

Need the labels again — the print didn't take, or you're printing later in the day? Tick the orders on the Received orders page and click 🖨 Print Labels in the bulk action bar. EZFormz rebuilds one combined PDF of every selected order's purchased label. Orders with no label yet are skipped. This doesn't re-buy or re-charge anything; it just re-renders labels you already paid for.

Tip: the combined label PDF is one page per label sized for 4×6 thermal labels. For packing slips instead, use 🖨 Print Receipts in the same bulk action bar.

Costs

EZFormz doesn't charge for shipping — you pay EasyPost directly at their published rates (typically the lowest commercial rate available, often below what a retail post office charges). Fund your EasyPost wallet in their dashboard; each label purchase is deducted from that balance.

EasyPost vs. Shippo vs. PirateShip

  • EasyPost (built-in): Best for sellers who want one dashboard for everything. Buy labels inline, tracking + emails auto-populated.
  • Shippo (built-in): Same inline experience as EasyPost, but bills through your own Shippo account and carrier rates. Pick this if Shippo is already your shipping home.
  • PirateShip: Best if you already use PirateShip, want their UI, or ship in very large batches. Use the PirateShip round-trip to export orders and import tracking back.
Orders can show multiple tracking numbers, but extra tracking numbers are manual for now. If one order ships in multiple packages, add the additional tracking numbers from the order's tracking field after buying or importing the first label.

Shipping with Shippo (built-in)

Prefer Shippo and your own carrier accounts? EZFormz has a second built-in shipping integration that works exactly like the EasyPost one — compare USPS / UPS / FedEx / DHL rates and buy labels directly from the orders page — except labels are bought through your own Shippo account at your Shippo rates. Everything else (presets, single + batch buy, reprint, auto-tracking emails) is identical.

EasyPost and Shippo are interchangeable inline providers — pick whichever account you already have. You connect one at a time in Account Settings → Shipping Integration by choosing the provider in the dropdown. If you'd rather not connect any API and just want a CSV round-trip, use PirateShip instead.

Step 1 — Connect your Shippo account

  1. Create or sign in to your account at goshippo.com.
  2. In Shippo, go to Settings → API and generate an API token. Use a Live token (starts with shippo_live_) to buy real labels, or a Test token (shippo_test_) to try it out.
  3. Back in EZFormz, open Account Settings → Shipping Integration and set the Shipping Provider dropdown to Shippo.
  4. Paste the API token and click Verify. The key is encrypted at rest and never returned to your browser once saved.

Step 2 — Set your return address and presets

Fill in the From Address (the return address printed on every label) and click Save Shipping Settings. Add your common box sizes under Package Presets — the same presets work for whichever provider is connected, so you don't re-enter them if you switch.

Step 3 — Buy labels from the orders page

  1. Open the form's Received orders page and click Ship on an order (or tick several and use Batch Ship).
  2. Pick a package preset or enter dimensions + weight. Carrier-box presets such as USPS Flat Rate boxes work with Shippo too; EZFormz sends Shippo the matching parcel template and only needs the package weight. EZFormz then fetches live rates from your Shippo-connected carriers.
  3. Click the rate, then Buy Label. EZFormz charges your Shippo account, saves the tracking number, flips the order to Shipped, and emails the buyer the tracking automatically.
  4. Reprint later with 🖨 Print Labels in the bulk action bar — this re-renders labels you already paid for and does not re-charge.

Costs

EZFormz doesn't charge for shipping — you pay Shippo directly at your account's rates. Fund and manage your balance inside the Shippo dashboard; each label purchase is deducted there.

You can have either EasyPost or Shippo connected as your inline provider. Switching providers in the dropdown and saving a new key replaces the active connection; previously purchased labels and their tracking numbers stay on their orders.

Fulfilling with PirateShip

If you prefer PirateShip over the built-in EasyPost integration, EZFormz lets you export your open orders to a PirateShip-compatible CSV, buy labels in PirateShip, then import the shipment report back to automatically set tracking numbers and mark orders as shipped.

📄 Download the PDF setup guide

PirateShip does not send us tracking events. Status stays as "Shipped" once the CSV is imported — carrier tracking updates happen inside PirateShip.
Multiple tracking numbers are supported on the order, but PirateShip import only applies the first tracking pass for now. If an order needs more than one package, add the extra tracking numbers manually on the EZFormz order after import.

Step 1 — Export orders to PirateShip format

  1. Open the form's Received orders page.
  2. Click PirateShip CSV. The download includes every non-cancelled order that does not already have a tracking number, regardless of whether you currently stage it as pending, paid, ordered, or completed.
  3. To ship only certain orders, tick those order checkboxes first and use the bulk bar's PirateShip CSV button. EZFormz exports only the selected orders that are still eligible for tracking.
  4. The EZFormz order ID is placed in the Order Number column — don't edit it. Matching on import depends on this value staying intact.

Step 2 — Upload to PirateShip and buy labels

  1. Sign in at ship.pirateship.com.
  2. Go to Ship → Import a Spreadsheet and upload the CSV you downloaded.
  3. Map the columns if prompted (PirateShip usually detects them automatically). Make sure Order Number is mapped to "Order Number" or "Reference".
  4. Buy labels as you normally would. Your EZFormz order ID travels with each shipment.

Step 3 — Export the shipment report from PirateShip

Important: PirateShip's default export is missing the columns we need to match orders reliably. Add Order ID (and optionally address columns) before exporting, or matches will fall back to email/name only.
  1. In PirateShip, click the Ship tab in the left sidebar.
  2. Click the magnifying glass (search) to show your previous labels.
  3. Add these columns: click any column header, scroll to the bottom of the menu, click Columns, and tick all of Order ID, Address 1, Address 2, City, State, ZIP, and Country. The more fields we can verify, the cleaner every match — and you'll rarely have anything in the Review pile.
  4. Click Export and save the file. PirateShip exports as an Excel spreadsheet (.xlsx) — upload it as-is; EZFormz parses Excel and CSV.

PirateShip's own docs on customising export columns →

Step 4 — Import tracking back into EZFormz

  1. Back on the Received orders page, click Import tracking.
  2. Choose the shipment file from PirateShip (.xlsx or .csv).
  3. Review the preview. Rows where every field matches (order ID, name, email, address) are listed as Ready to apply and pre-checked.
  4. Rows matching on order ID or email but with any other field difference show up under Needs review with a side-by-side diff. Tick the ones you want to apply anyway.
  5. Click Apply selected. EZFormz writes the tracking numbers, flips each order to Shipped, and sends the standard shipping-confirmation email to each customer.
  6. If the same order has more than one package, apply the first tracking number from PirateShip, then open the order in EZFormz and add each additional tracking number on its own line.

Matching rules

EZFormz walks down this ladder for every CSV row until it finds a unique match:

  • Order ID (if you enabled the column in PirateShip) — direct 1-to-1 match. Auto-applies when the remaining fields also agree.
  • Email — if exactly one order has that email, auto-apply.
  • Name + ZIP — if both match a single order. Always routed to Needs review.
  • Name alone — unique-name fallback. Always routed to Needs review.
  • Ambiguous name — two orders share the name and no address to disambiguate → No match, resolve manually.
If you enable Order ID in the PirateShip export, almost everything auto-applies and you rarely have to touch the Review pile. Skip it and you'll be reviewing every row by hand.

Sales Tax

If you need to know how much sales tax you owe per order — to report and pay it yourself — connect your own TaxJar or TaxCloud account. EZFormz sends each order into your tax account; your provider calculates the tax and produces the reports you file from.

EZFormz never charges your buyers sales tax and never stores tax amounts or rates. It's a one-way pipe to your tax provider, which is the system of record. To add sales tax as a line item buyers actually pay, use a Payment Info surcharge or a price field instead — that's separate from this feature.

What you'll need

  • A TaxJar account (API token) or a TaxCloud account (API key and Connection ID).
  • Your nexus states set up inside your provider account. That's where the “what you owe” numbers come from — EZFormz does not decide nexus or rates.

Connect it

  1. Go to Account → Sales Tax.
  2. Pick your provider and paste your API credentials. Click Verify to confirm they work, then Save. Your key is encrypted and never shown back to you.
  3. Choose when an order is sent to your tax account: when it's marked paid/confirmed (recommended), as soon as it's placed, or when it's shipped/completed.
  4. Tick which of your forms should sync.

How orders flow in

Once connected, qualifying orders are recorded in your tax account automatically (within a few minutes of meeting your chosen trigger). If you edit an order it's updated; if you cancel or refund it, it's reversed in your provider so your filing stays accurate. Orders shipping outside the US are skipped.

Report on past orders

Use Run Backfill to send qualifying past orders (last 30 days up to 3 years) into your tax account so you can report on prior periods. It's safe to run more than once — it won't double-count.

Where you see the numbers

Your sales tax totals and reports live in your TaxJar/TaxCloud dashboard — including TaxJar's “Expected Sales Tax Due” report, which estimates what you owe even though you didn't collect it from buyers. EZFormz only shows the connection status here.

This is a calculation and reporting convenience powered by your tax provider, not tax advice from EZFormz. You're responsible for your nexus determination and filings.

Block Styling & Formatting

Most blocks support style customization. Select a block and check the Style section in the properties panel (or use the inline toolbar for text blocks).

Per-Block Style Options

OptionValues
Font28 fonts across 5 categories: Sans-serif (Inter, Roboto, Open Sans, Lato, Poppins, Montserrat, Nunito, Raleway, Source Sans 3, DM Sans, Quicksand, Rubik), Serif (Playfair Display, Merriweather, Lora, Georgia, PT Serif, Crimson Text, EB Garamond), Display (Bebas Neue, Oswald, Abril Fatface), Handwriting (Pacifico, Dancing Script, Caveat, Sacramento), Monospace (JetBrains Mono, Fira Code)
Text Size15 presets from 10px to 64px
WeightRegular, Medium, Semi-bold, Bold
AlignmentLeft, Center, Right
Letter SpacingTight, Normal, Wide, Extra Wide
Line HeightCompact, Normal, Relaxed, Double
Font ColorAny color (hex picker)
Background ColorAny color (hex picker)
Text DecorationNone, Underline, Strikethrough, Italic
Opacity10% to 100%

Inline Toolbar (Quick Styling)

When you click a Heading, Form Header, Text Box, or Agreement block, a toolbar appears with the most common formatting options. Click the gear icon in the toolbar to open the full properties panel for advanced options.

Themes & Appearance

The Theme Engine lets you customize the look and feel of your entire form at once. Find it in Settings → Appearance.

Global Colors

Set your primary/accent color (used for buttons, links, and focus rings), page background, form card background, and text color. Page Background Color controls the solid layer around the form; if a gradient, pattern, or image background is active, choose a Solid Color under Background or use Reset to Default Background so the solid color is visible.

Typography

Choose a font family that applies to the entire form. Individual blocks can still override it with per-block styles. Header text can also use display effects such as shadow, letterpress, ink stamp, outline, neon, foil, and prism while body text stays readable.

Buttons

Customize button background color, text color, corner shape (square, rounded, or pill), and optional border.

Input Fields

Style all text inputs, dropdowns, and textareas at once — border color, background color, focus ring color, and corner shape.

Section Boxes

Control section appearance: background color picker (overrides the auto-tint derived from your Primary / Accent colors — reset to fall back to the auto-tint), border color, width, style (solid, dashed, dotted, double, none), corner roundness, and shadow intensity.

Product Cards

Customize product card border color, corner roundness, and shadow intensity. The Category bars sub-leaf themes the collapsible brand / category rows in your product list ("Creed · 5 items") independently — background, text color, border color, border width, and corner roundness, separately from the cards themselves.

Rendered Backgrounds

Pick built-in texture and depth backgrounds such as velvet, suede, marble, frosted glass, hammered metal, plaster, leather grain, quilted satin, pearl sheen, water, resin, wax, gemstone, and ceramic glaze without uploading your own image.

Form Layout

Set the form width (narrow, medium, standard, wide, or full width) and the spacing between sections (compact, normal, relaxed, or spacious).

Submit Button

Style the form's primary submit button separately from the rest of the theme when you want it to stand out or match a specific brand color.

Page Border

Add a decorative border around the entire form. Choose color, width, style (solid, double, dashed, dotted, groove, ridge), and corner shape.

Dividers & Cart

Customize divider line color and style, as well as the cart summary box's border and background colors.

Shipping

Customize shipping option amount text and the selected option background. If you reset the selected background, EZFormz auto-matches it to the visible section box color so selected shipping rows stay readable on custom themes.

Theme Presets

Pick a one-click preset to instantly style your form. Available presets:

  • Standard: Default, Dark Mode, Minimal Light, Warm & Friendly, Ocean Blue, Elegant, Modern, Forest, Sunset Glow
  • Seasonal/Holiday: Christmas, Valentine's, Halloween, 4th of July, Easter, Thanksgiving, St. Patrick's, New Year's, Memorial Day, Veterans Day

You can fine-tune any preset after applying it. You can also save your own custom themes to reuse across forms.

Multi-Page Forms

Split long forms into multiple pages to improve the buyer experience.

Adding Pages

Click the "+ Add Page" button above or below any page on the canvas. This inserts a page break — all blocks after the break appear on the next page.

How It Works for Buyers

  • Each page shows a progress bar: "Step 1 of 3"
  • Buyers click Next to advance (fields on the current page are validated first)
  • A Back button lets them return to previous pages
  • The final page has the Submit button

Removing Pages

Click "× Remove Page" in the page header. The blocks from that page merge into the previous page.

Conditional Logic

Show or hide fields based on what the buyer enters in other fields.

Setting Up a Condition

  1. Select the field you want to conditionally show/hide.
  2. In the properties panel, scroll to Conditional Logic.
  3. Click "+ Add condition".
  4. Choose the source field (the field whose value determines visibility).
  5. Choose an operator: equals, does not equal, contains, does not contain, starts with, ends with, is empty, or is not empty. Number, currency, rating, slider, calculation, date, and time sources also support greater-than / less-than comparisons.
  6. Enter the target value (for dropdown/radio/checkbox sources, a dropdown of options appears).

Multiple Conditions

Add multiple conditions and choose:

  • ALL — the field shows only when every condition is met
  • ANY — the field shows when at least one condition is met
Hidden fields are skipped during validation. If a required field is hidden by a condition, it won't block form submission.

Smart Value Matching

The value input adapts to the source field type:

  • Dropdown, radio, checkbox, image choice, and multi select — dropdown of their options
  • Date — date picker
  • Time — time picker
  • Rating — 1–5 star dropdown
  • Slider, number, currency, and calculation — number input for exact or greater-than / less-than comparisons
  • Payment method — exact method label or broad method type, such as "Any Crypto method"
  • Agreement — "Checked" or "Unchecked"
  • Coupon — "Applied" or "Not Applied"
  • Text and number — plain text input

Form Settings & Limits

Click the SETTINGS tab in the builder header to access all form settings.

Notifications

Choose how you're notified when orders come in:

  • Off — no email notifications
  • Every order — instant email for each submission (default)
  • Daily digest — one summary email per day with new orders
  • Weekly digest — one summary email per week

Thank You Page

  • On by default — Shows a thank-you page after submission
  • Custom — Set a custom heading, message, or redirect URL in Settings

The default confirmation page also includes an always-visible order summary card (every product line, coupon discount, shipping lines, and total) so the buyer doesn't have to wait for the email to confirm what they just bought. The card uses fixed system styling so it's readable on every theme.

Confirmation Email

  • On by default — Buyer confirmation emails are enabled for new forms unless you turn them off
  • Simple message — Add your own message above the standard EZFormz order summary, submitted fields, and action buttons
  • Full custom layout — Build the email body yourself and place the order details with variables

Use Preview Email before saving custom confirmation emails. The preview uses sample order data and shows the same final layout buyers will receive, including warnings if a full custom layout is missing key variables.

VariableReplaced With
{{customer_name}}Buyer's name
{{customer_email}}Buyer's email
{{total}}Order total
{{form_title}}Your form's title
{{order_id}}Order ID
{{items_table}}Formatted table of ordered items
{{payment_instructions}}Your payment instructions
{{edit_order_button}}Edit-order button, when an edit link is available
{{payment_proof_button}}Payment/proof-upload button, when a payment link is available

In Simple message mode, EZFormz keeps the receipt sections even if you do not include {{items_table}}. In Full custom layout mode, EZFormz only sends what you put in the body, so add {{items_table}}, {{payment_instructions}}, or buttons wherever you want them to appear.

Form Limits

  • Max Submissions — Automatically close the form after this many orders (0 = unlimited)
  • Max Items Sold — Automatically close the form after the total quantity sold reaches this number (0 = unlimited)
  • Minimum Spend Before Shipping — Require the buyer's product subtotal to reach a set amount before checkout is allowed. Shipping, coupons, shipping discounts, and payment fees do not count toward the minimum.
  • Open Date — Publish the link now, but show buyers a countdown until orders are allowed
  • Close Date — Automatically close the form at a specific date and time

Security

  • Password Protection — In Settings → Security, use the Access control to choose Public, Password, or Invite-only. Password mode requires buyers to enter the form password before the form loads. Switching back to Public fully removes password protection, so the public link opens without asking for a password.

Order Edits

Toggle "Allow customers to request edits to their orders" (default on). When off, the buyer-facing edit-order flow is disabled for this form — the confirmation email omits the edit CTA, the My Orders page hides the button, and the public edit page returns a friendly "owner has disabled edits" message. See Order Editing for the full review workflow.

Payment Proof

Use Auto-mark paid when verified in Settings → Payment Proof when your workflow treats a manually verified payment proof as final payment acceptance. The setting only applies when a seller verifies proof from the Orders page; buyer uploads and automatic crypto checks still require review.

Appearance

The Appearance section contains the full Theme Engine. You can also set:

  • Background — Set a full-page uploaded image, generated image preset, solid color, gradient, or simple pattern behind the form. Choose a Solid Color here when you want the page background to be truly solid; it clears older gradient/pattern layers that can cover the Page Background Color swatch. The Display Mode dropdown picks how image backgrounds lay out: Cover (default, full bleed; may crop), Contain (whole image visible with letterboxing), Centered (intrinsic size, no resize), or Tile (image repeats across the page — with a Tile Size slider for hero images).

Google Sheets

Connect a Google Sheet to automatically sync orders. See Google Sheets Integration for setup details.

Templates

Templates save your form layout and products so you can reuse them.

Saving a Template

In the builder, go to SETTINGS → scroll to the Tools section → click "Save as Template". Give it a name, and your current blocks and products are saved.

Loading a Template

Click "Load Template" in Settings. Choose from built-in presets or your saved templates.

Loading a template overwrites all current blocks and products. Save your form first if you want to keep your work.

Backup & Restore

In Settings → Tools, click "Download Backup" to save your entire form as a JSON file. This includes all blocks, products, shipping options, settings, and theme configuration. To restore, click "Restore from Backup" and upload a previously downloaded file.

Backups save everything about your form (including settings and theme). Templates save only the block layout and products.

Sharing Your Form

Click the PUBLISH tab in the builder header to access all sharing options.

Share Link

Your form's public URL: ezformz.net/f/your-form-slug. Click Copy Link to copy it to your clipboard. You can edit the slug in Settings.

QR Code

A scannable QR code is generated automatically for your form link. You can:

  • Download — save the QR code as an image
  • Print — open a print-ready version
QR codes are great for flyers, business cards, and in-store displays.

Embed Code

Get an iframe embed code to add your form to any website. Copy the code and paste it into your site's HTML. The embed is responsive and adjusts to the container width and form height.

Your form theme still applies inside the embed, including checkout buttons, payment-method choices, and the optional button-link code from the Publish tab.

Embedded forms send resize messages to the parent page as { source: 'ezformz', context: 'iframe.resize', height, slug }. The default embed code includes the listener that applies that height to the iframe.

Toggling Form Open/Closed

Toggle the form between Open (accepting orders) and Closed from the Publish tab or the dashboard. Closed forms show a "Form Closed" message to visitors.

Use Settings → Submission Limits → Open Date when you want to announce a drop before it starts. The form can stay published and shareable, but buyers see a countdown page until the scheduled open time. When the countdown reaches zero, the page reloads and the normal order form appears.

Crypto Payments & Verification

Crypto payment verification is an optional seller review tool for crypto payment methods. It helps compare what the buyer submitted against public blockchain data, then shows the result on the order's payment proof card. EZFormz does not custody funds, connect to buyer wallets, or replace your final manual review. On-chain checks do not mark orders paid by themselves; only a seller proof-verification action can use the optional auto-mark-paid setting.

Treat every on-chain result as advisory. Open the Explorer link, compare the payment proof, confirm the order context, and mark the payment verified only when you are confident the payment belongs to that order.

What it checks

When Run on-chain check after submit is turned on for a crypto method, EZFormz saves the expected payment details at the moment the buyer submits or pays a balance: token, network, receiving wallet, expected amount, confirmation setting, and any transaction ID. After the payment row is saved, EZFormz runs the on-chain check in the background and writes the advisory result to the payment proof card. Sellers can still click Verify on-chain later to run the same check again.

Saved detailWhy it matters
TokenPrevents accepting the right dollar amount in the wrong asset. Example: PYUSD expected, but the transaction sent USDC or native SOL.
NetworkPrevents accepting a payment on the wrong chain. Example: USDC on Solana expected, but the buyer sent USDC on Ethereum.
Receiving walletConfirms the payment went to the wallet saved on the payment method, not to the wrong address.
AmountChecks that the received stablecoin amount is enough for the order total or balance due.
ConfirmationsLets the check wait for network confirmation before showing a match.
Transaction IDWhen present, checks one exact transaction and links directly to it in the network explorer.

Supported automatic checks

Automatic on-chain matching currently supports stablecoin transfers on these networks:

NetworkSupported tokensExplorer
SolanaUSDC, USDT, PYUSDSolscan
EthereumUSDC, USDT, PYUSDEtherscan
BaseUSDCBaseScan
PolygonUSDCPolygonScan

BTC, ETH, SOL, custom tokens, custom networks, and unsupported token/network combinations can still be used as manual crypto payment methods. EZFormz will collect proof and transaction IDs if configured, but automatic matching falls back to manual review instead of guessing.

Setup for sellers

  1. Open your form in the builder and click the Payment Instructions block.
  2. Use Methods mode, add or open a payment method, and set the type to Crypto.
  3. Enter a buyer payment name. For simple buyer wording, use a label like PYUSD, USDC only, or Crypto.
  4. Choose the exact Token and Network. This is the internal verification target, even if you keep the buyer-facing name simple.
  5. Paste the receiving wallet address for that token/network. Use the wallet that should receive buyer payments for this form.
  6. Use Show network in name only if you want the method label to include the network. If it is off, the method name stays simple, but the selected payment box still shows the saved network for safety.
  7. Turn on Ask buyer for transaction ID if you want a dedicated transaction ID field during checkout or balance payment.
  8. Turn on Run on-chain check after submit if you want future payments using this method to run the on-chain check automatically after submission and show the result on the Orders page.
  9. Save the form and check Preview or the public form to make sure the buyer wording is clear.
Existing forms can turn this on. It applies to future payments after the method is saved. Older orders keep their existing proof data and may not have enough saved verification metadata for automatic checking.

Buyer experience

Buyers do not connect a wallet to EZFormz. They choose your crypto method, copy the wallet address, send payment from their own wallet or exchange, upload proof, and optionally paste the transaction ID.

  • The method name can stay simple, such as PYUSD or USDC only.
  • The selected payment box always shows the saved network, for example Network: Solana, so buyers know which chain to use even when the method label hides the network.
  • If transaction ID collection is enabled, buyers see a clear field asking for the transaction hash / TXID from their wallet.
  • If transaction ID collection is off, buyers can still submit proof. The saved on-chain check may use wallet monitoring if Run on-chain check after submit is enabled and the token/network is supported.

Orders page flow

  1. Open the form's Received orders page and expand the order.
  2. Find the payment proof card under Payments. It shows the proof image, amount label, payment method, transaction ID if present, duplicate warning if the same TXID appears elsewhere on the form, and any saved verification result.
  3. Open the proof card's menu to open Explorer, run Verify on-chain, replace the active proof/TXID, clear bad active evidence, or request a corrected upload from the buyer.
  4. Read the result shown on the payment card. If it matched, still review the Explorer transaction and proof image before marking the proof verified.

Transaction ID check vs. wallet monitoring

ModeWhen it runsWhat it doesBest use
Transaction ID checkThe buyer pasted a TXID, or an existing short-answer field named like Transaction ID / TXID / hash captured one.Looks up that exact transaction and compares token, network, recipient wallet, amount, and confirmations.Fastest and clearest review path when buyers can provide a TXID.
Wallet monitoringNo TXID was submitted, but the payment method has Run on-chain check after submit enabled and the saved token/network is supported.Scans recent inbound stablecoin transfers to the saved receiving wallet and looks for a unique payment that matches the expected token, amount, and confirmation rule.Fallback for buyers who upload proof but do not know where to find the TXID.

Wallet monitoring is intentionally conservative. If no payment is found, more than one payment could match, the amount is short or over, confirmations are still pending, or the provider cannot be reached, EZFormz shows a review-needed result instead of choosing a transaction for you.

Result labels

ResultMeaningWhat to do
On-chain matchedThe transaction ID check matched the expected token, network, wallet, amount, and confirmation rule.Open Explorer, compare proof and order details, then mark verified if everything looks right.
Wallet matchNo TXID was provided, but wallet monitoring found one recent matching inbound payment.Open Explorer and review carefully before accepting it.
ConfirmingThe payment appears to match but has not reached the saved confirmation setting yet.Wait and run the check again later.
Amount shortThe correct wallet/token/network may be involved, but the received amount is below the expected order amount.Ask the buyer to resolve the shortfall or review manually if there is a known reason.
Amount overThe correct wallet/token/network may be involved, but the received amount is above the expected order amount.Confirm the extra amount belongs to this order before marking verified. EZFormz does not automatically apply the overage to another balance.
Wrong walletThe transaction did not pay the saved receiving wallet.Do not mark verified unless you intentionally changed wallets and can independently prove the payment is yours.
Wrong assetThe transaction used a different token than the saved method expected.Review manually; this often means the buyer sent the wrong coin or token.
Wrong networkThe transaction is not on the expected network.Review manually; this often means the buyer used the wrong chain.
Not foundThe TXID or wallet scan did not find a matching transaction.Check that the TXID is complete, wait for indexing, or ask the buyer for the correct transaction.
Invalid TXIDThe submitted value does not look like a valid transaction hash/signature for that network.Ask the buyer to copy the transaction hash from their wallet or exchange.
Duplicate TXThe same transaction ID appears on another payment/order for this form.Compare both orders before accepting either payment.
Provider errorThe network RPC/provider could not be reached or returned unreadable data.Open Explorer manually or try again later. Do not treat the check as verified.
Manual reviewThe method is unsupported, incomplete, or too ambiguous for automatic matching.Use the proof image, Explorer, and your own wallet history to verify.

Safety behavior

  • Opt-in only: On-chain checking runs only for crypto payment methods where you turn on Run on-chain check after submit.
  • Future payments only: The verifier needs saved payment metadata. Existing forms can enable it, but old orders may not have the metadata needed for automatic checking.
  • Fail-closed: EZFormz shows provider errors, unsupported networks, duplicate TXIDs, and ambiguous wallet matches as review-needed states instead of approving them.
  • No automatic status changes from chain data: On-chain results do not change order status, mark proof verified, update totals, release stock, or overwrite your Google Sheet status by themselves. If Auto-mark paid when verified is enabled, the status change happens only after a seller marks the proof verified.
  • Duplicate guard: Reused transaction IDs are flagged so the same payment cannot quietly be accepted on multiple orders.
  • Privacy: EZFormz does not ask buyers to connect a wallet and does not receive wallet keys. It checks public chain data using the saved receiving wallet and/or submitted transaction ID.

Troubleshooting

ProblemLikely causeFix
No Verify on-chain buttonThe on-chain check setting is off, the method is not crypto, the order was created before metadata was saved, or the token/network is unsupported.Turn on Run on-chain check after submit for future payments and use manual review for older or unsupported payments.
Buyer sent native SOL, ETH, or BTCThe method expected a stablecoin token but the buyer sent the network's native coin.Do not rely on automatic matching. Review manually and decide whether to accept or ask the buyer to resend correctly.
Network is set to CustomCustom networks do not have a known RPC/explorer/token contract map.Use custom methods for manual review, or choose Solana, Ethereum, Base, or Polygon for automatic checks.
Buyer says they paid but wallet scan says Not foundThe payment may be on the wrong chain, below the expected amount, too old for the recent scan window, not indexed yet, or sent to a different wallet.Ask for the TXID and open Explorer manually.
Provider errorThe public RPC provider was unavailable, blocked, or returned an unexpected response.Try again later and use the Explorer link/manual wallet history in the meantime.

Managing Orders

Click "View Orders" from the builder or dashboard to see all submissions for a form.

Order Information

Each order shows:

  • Submission date and time
  • Customer name and email
  • Shipping address (if collected)
  • Items ordered with quantities and prices
  • Shipping selections and costs
  • Order total (with any coupon discount applied)
  • Responses to custom fields (text, dropdowns, checkboxes, etc.)
  • Payment proof image (if uploaded)

Order Statuses

Each order has a status you can update:

StatusMeaning
ReceivedNew order received, awaiting your action
On holdA neutral holding state for back-orders, pre-orders, or group buys waiting on quantity. It does not mark the order paid or fulfilled.
PaidPayment received, ready to process
Ordered from vendorItems have been ordered from your supplier or are being processed before shipment
PackingYou're preparing the order to ship (between Paid and Shipped).
Ready for pickupOrder is packed and waiting for the buyer to collect (local pickup). Treated like Shipped: counts as fulfilled and locks buyer self-edits.
ShippedOrder has been shipped
Direct Vendor ShippedDrop-shipped directly from your vendor rather than passing through your hands. Buyers see this label too, with the same shipped-status email as a normal shipment.
CompletedOrder delivered and finished
CancelledOrder was cancelled

Use the dropdown on each order card to change its status. When an order is marked Paid for the first time, the buyer receives a Payment Received email with the order number, form title, customer name/email, and saved item, option, and quantity summary. When an order is first marked Shipped or Direct Vendor Shipped without a tracking number, the buyer receives a shipped-status email with the saved order summary. Re-saving an already-notified status does not send another copy. You can also use bulk operations to update or delete multiple orders at once.

Sorting, bundles, and shipping copy

The payment-method summary cards on the Orders page use the actual recorded payment rows. If a buyer originally paid with one method and later pays an add-on or balance with another, each amount is counted under the method used for that payment.

The orders page can sort by date, customer name, amount, status, payment method, and bundles-first ordering. Select multiple orders from the same form to create a fulfillment bundle: EZFormz keeps the backend orders separate, but shows one grouped packing unit with shared status, tracking, request-payment, print, select, and unbundle actions. The copy icon on an order row copies the buyer name, full shipping address, phone, and email in one block for manual paste into PirateShip or another shipping tool.

Tracking Numbers

Add tracking numbers to any order. Put one tracking number per line for split shipments; buyers see each number as its own tracking link, and connected Google Sheets store them together in the Tracking column. When you save a new tracking number, EZFormz marks the order Shipped and the buyer automatically receives an email notification with the tracking links plus the order summary, including products, options, quantities, totals, and submitted form fields when available. If you mark an order Shipped without adding tracking, EZFormz sends the shipped-status email instead.

When buying multiple EasyPost labels from the Orders page, EZFormz now previews the selected orders by the checkout shipping method each buyer chose. You can buy labels for all eligible selected orders or only one method group, choose the package preset, enter optional carrier/service preferences, and include detected insurance add-ons before any labels are purchased. Orders that already have labels, have no address, have no checkout shipping method, are cancelled, or used quote-after-order shipping are skipped before the carrier is charged.

For orders shipped through the built-in EasyPost integration, the seller-side tracking widget includes a Refresh tracking ↻ button that pulls the current tracker state straight from EasyPost — useful when a webhook was missed or you just want the latest scan. EZFormz also runs a daily 4 AM UTC fallback sweep over in-flight shipments so anything the webhook drops gets caught automatically. The seller's "View public tracking page →" link now deep-links to the official carrier page (USPS, UPS, FedEx, DHL, Canada Post, OnTrac), with the link text reflecting the carrier (e.g. "Track on USPS →").

Seller Notes

Add private notes to any order. These are only visible to you (the seller) and are never shown to the buyer.

Payment proof verification

Proof cards in the Payments section can be marked verified after review. If the form has Auto-mark paid when verified enabled, verifying proof on a pending order changes the order to Paid/Confirmed, records the status event, and syncs the connected Google Sheet status. Unchecking proof verification does not automatically downgrade the order.

If a buyer uploaded the wrong proof or TXID, use the proof card menu to replace the active evidence, clear the bad active evidence, or email the buyer a one-time corrected-proof link. EZFormz keeps the original evidence in the payment history trail and resets proof verification/on-chain status when active evidence changes, so the order only shows the currently trusted proof while the audit trail stays intact.

Duplicate Check

The Duplicate Check button in the orders toolbar scans every loaded order on the form for repeated transaction or hash IDs — the kind a buyer might reuse to claim two orders were paid with one payment. It groups any matches and links straight to each affected order so you can compare them before accepting either. This is a manual, form-wide sweep; it's separate from (and complements) the per-order Duplicate TX flag that the crypto verification tool raises on a single payment proof.

Custom Messages

Send a custom email to any customer directly from the order card. The message is sent from your form's email address.

Resend Confirmation

Resend the order confirmation email to the buyer (and optionally to yourself).

Edit Orders

Click Edit on any order to modify items, quantities, customer info, address, notes, or tracking number. The edit modal also includes a Submitted Form Fields section that lets you correct any custom field the buyer filled in — phone numbers, platform display name + @handle, dropdown picks, single / multi choice, dates, times, sliders, hidden fields, etc. (Agreement, file upload, calculation, rating, and coupon fields are intentionally read-only since editing them post-submit doesn't make sense.) The order total is automatically recalculated when items change, and edits flow through to your connected Google Sheet in the same atomic save.

When you edit an order and choose Request balance from buyer, EZFormz checks whether the original payment has already been credited. Paid orders get a top-up link for only the added amount. Pending/unpaid orders get a payment link for the full updated order total so buyers are not asked to pay only the edit difference.

CSV Export

Export all orders to a CSV file. The export modal lets you choose which columns to include, and supports expanded columns for custom fields and individual product quantities.

PDF Receipts

Download a professional PDF receipt for any order. The receipt includes all order details, items, totals, and your form branding.

When you click PDF Receipt (or bulk Print Receipts — see below), a chooser modal asks for the page size: Letter / A4 (the standard layout) or 4×6 Thermal Label for sellers running a Rollo / DYMO / Zebra thermal printer. Your last size choice is highlighted the next time, but you can choose either size every time you print. EZFormz then asks whether to print a priced Receipt or a Packing Slip; packing slips keep fulfillment details but hide item prices, discounts, shipping amounts, and totals. The thermal format is its own compact layout: form title at the top, ship-to block (with the buyer's platform @handle right-aligned next to their name when present), buyer notes and fulfillment notes beside the address when present, item lines with quantity, product, and variant, then optional tracking.

Bulk Print Receipts

Tick the checkboxes on any number of orders, then click Print Receipts in the bulk action bar. EZFormz builds a single multi-page PDF with one receipt or packing slip per selected order and opens it in a new tab — hit Cmd/Ctrl-P from there to print. Same Letter / A4 vs 4×6 Thermal chooser and Receipt vs Packing Slip prompt as the single-order PDF Receipt button.

Repair underpaid orders

If an edit raises an order's total without a balance request — or if a payment-method surcharge or shipping change leaves the stored total below what the items + shipping + surcharges actually come to — a yellow Repair this order banner appears on the affected order. Two buttons:

  • Repair & email buyer — corrects the total, mints a one-time pay-balance link, and emails the buyer for the difference.
  • Fix silently — corrects the total without contacting the buyer (useful for small differences you'd rather forgive).

Overpaid orders aren't flagged — the buyer paid the price they were quoted, so no action is needed.

Request payment after order review

If a form is set to request payment later, orders can be submitted without checkout payment proof. After you review MOQ, inventory, or the final order, click Request Payment on the order card to email the buyer a pay link. The buyer chooses from your currently available payment methods, any method surcharge is calculated into the final total, and they upload proof or enter a transaction ID.

Use the order checkboxes and the bulk action bar to request payment for many selected orders at once. Request Payment sends payment links for orders that are waiting for their original payment; if an order already has an active balance-due link, EZFormz resends that existing link instead of creating a duplicate request. The red balance-due card also has Resend and Clear actions: Resend emails the active link again, while Clear voids the active balance link and removes the balance-due card without changing the order total.

Use Adjust Product Payments when a product's cost changed after buyers already ordered. Choose the product/option, enter the added amount per item quantity and the required reason, then preview. EZFormz finds every current non-archived, non-cancelled order on that form containing the product, shows the quantity math for each buyer, and applies only the previewed eligible set when you send. Use Adjust + Send from the selected-orders bar for flat per-order adjustments. The reason appears in the buyer's balance email and payment-link breakdown, and orders that already have an active payment or balance link are blocked so each order has only one active payment obligation at a time.

For fulfillment bundles, open the bundle card and click Request Payment to send links for the included orders without using the bulk bar. Once a buyer has selected a method, use Change Payment or the balance workflow for later payment changes. If an order already has a red balance-due card, click Resend on that card to email the active balance link again.

Change a buyer's payment method

You can switch the payment method on an existing order from the order card — useful when a buyer asks to pay via a different rail than they originally picked. EZFormz emails the buyer a fresh full order confirmation with the new payment info, the recomputed total (the new method's surcharge is folded in automatically), and a Pay & Upload Proof button. Their pay-balance page is filtered to the method you selected, so they can't accidentally pay through a different rail.

Poll & Checkbox Results

If your form includes Poll, Checkbox, or Multiple Choice fields, the orders page shows aggregate results as bar charts — see how respondents voted across all orders.

Product Summary

View aggregate product quantities across all orders to see which items are most popular.

My Orders (Customer View)

Logged-in buyers can view all their placed orders at ezformz.net/my-orders.

  • Orders are grouped by form
  • Each order shows a status progress bar (Received → Paid → Shipped → Completed)
  • Click an order to expand and see full details: items, shipping, custom fields, tracking info
  • Tracking numbers are shown with links to carrier tracking pages (USPS, UPS, FedEx, DHL, Canada Post, OnTrac, or the EZFormz fallback page)
  • Download a PDF receipt for any order
  • The customer name renders above the shipping address so buyers placing orders for multiple recipients can tell at a glance which order is for whom
  • Agreement / disclaimer fields and file-upload echoes are hidden from the order view (the seller still sees both); legacy unlabeled custom fields render with friendly type names like "Phone", "Choice", or "Selection" instead of raw block IDs

Mark as Received

For orders that don't have automated EasyPost tracking, the order detail panel shows a ✓ Mark as Received button (alongside Download Receipt / Edit Order / Reorder) on orders in confirmed, ordered, or shipped status. One click + a confirm prompt flips the order to Completed and syncs the change to the seller's Google Sheet. The button is hidden on orders that have an EasyPost tracker, since the carrier-delivered webhook will auto-complete those.

Cleaning up the page

Once you have a few orders, the toolbar gives you ways to keep the main view focused on what's still active:

  • Hide completed (default on) — orders marked delivered, completed, or cancelled drop off the main list automatically.
  • Show archived — toggles between your active orders and your personal archive.
  • Per-order Archive button — hide an order from your view. The seller still sees it on their end; this is just a personal hide.
  • Multi-select — checkbox on every order. Pick a batch and use the bar at the top to Archive selected, Restore selected, Select all visible, or Clear.
  • Archive all completed — one-click prompt that appears whenever you have completed orders to clean up.

Leaving a review

Any order that is paid or beyond shows a ☆ Leave review button in the order header (within 30 days of being marked paid). Click it to leave a 1–5 star rating + optional text on the seller's account — not on the form. One review per form. You can edit your review for 30 days.

Already reviewed? The button changes to ☆ Your review (gold) and the modal opens pre-filled for editing.

Reviews

Reviews are account-scoped, not per-form. They follow you across every order form you create — helpful trust signal that compounds over time.

Turning it on

  1. Go to Account → Reviews.
  2. Flip the Public reviews toggle. EZFormz auto-generates your public page at ezformz.net/r/your-slug.
  3. Use the Review URL field in the same card if you want a different public link. Review URLs can use letters, numbers, and hyphens.
  4. Optionally turn on Auto-show review rating on all my forms to drop a small chip near each form's title that links to your reviews page.

Who can review

  • Verified buyers only — they must have at least one paid order on one of your forms.
  • The Leave review button appears within 30 days of an order being marked paid.
  • One review per form per buyer (a buyer can review you once per form, not once per order).
  • Buyers can edit their review for 30 days. After that it's locked.

Managing reviews

Open the dashboard's Reviews widget or visit /reviews to see every review (including spam-flagged):

  • Reply — one public reply per review, editable.
  • Mark as spam — hides the review from your public page. You can restore it any time.
  • Only EZFormz admin can fully delete a review (for genuine policy violations like slurs or doxing). Sellers can't delete reviews unilaterally.

What buyers see

Your public page (/r/your-slug) shows your average rating, a star-distribution histogram, and every public review with seller replies. The on-form chip shows your average + review count and links to that page in a new tab.

Email alerts

You get an email every time a new review lands so you can reply quickly.

Order Editing & Edit Requests

After placing an order, buyers receive an edit link in their confirmation email. They can request changes to items, quantities, shipping method, address, and notes — the seller approves or rejects each request inline on the orders page.

How It Works

  1. Buyer clicks the edit link in their confirmation email and submits a request with their proposed changes.
  2. The buyer-facing edit page warns them not to send extra payment yet and shows a required confirmation popup before the request can be submitted. The edit must be reviewed first, and if more money is owed after approval, EZFormz sends a new email with the payment link.
  3. You see the request on the affected order with a full before / after diff: old total → new total with a colored delta, per-line item add / remove / qty changes, shipping changes, and any address / customer info / notes changes (unchanged fields are hidden).
  4. The buyer is emailed automatically when you approve or reject.

Approval options

When the requested edit raises the total, you get two approve buttons:

  • Approve & Request Balance — mints a one-time pay-balance token and emails the buyer a balance-due notification with the surcharge-aware new total, your payment instructions, and a one-click upload link. The connected Google Sheet's Proof of Payment column flips to "Balance due $X" until they pay, then "Top-up paid".
  • Approve only — applies the edit without emailing for the difference. EZFormz pops a confirm dialog warning you the buyer won't be billed, so it's hard to pick this one by accident.

When the edit lowers the total, the refund-owed amount is logged to the order's payment history and you see a "Refund of $X owed" toast on approve. Same-total edits get a single Approve button.

Edit Requested filter

The orders page has an amber Edit Requested filter tab right after "All". It only appears when at least one active order has a pending edit request, and clicking it filters to just those orders so you can review the queue in one batch instead of scrolling.

Disabling edit requests per form

If you'd rather not let buyers request edits at all, open the form's Settings panel → Order Edits and turn off "Allow customers to request edits to their orders" (default on). When off, the confirmation email omits the edit CTA, the My Orders page hides the button, and the public edit-order page returns a friendly "owner has disabled edits — contact them" message. Pending requests already in your queue stay reviewable either way; this only blocks NEW requests.

Info edits after a form closes

Closed or inactive forms normally block buyer edit links. To keep cleanup edits available, open Settings → Order Edits, turn on "Allow buyer info edits after close", then choose which non-product fields buyers can request: name/email, shipping address, phone/usernames/submitted info fields, or notes. Product, shipping option, payment method, and total-changing edits stay locked.

Closed-form info edits always require your manual approval, even if auto-approve edit requests is turned on, and stop once the order is shipped, completed, cancelled, or has a tracking number.

Auto-approving edit requests

If you don't want to manually review every request, turn on "Auto-approve edit requests" in the same Settings panel → Order Edits section (default off). A checklist appears so you decide which kinds of change auto-approve:

  • Item additions & quantity increases — stock is re-checked; a higher total sends the buyer a payment link.
  • Item removals & quantity decreases — lowers the total and logs a refund-owed record automatically.
  • Name, email, address & notes — contact and shipping-address corrections, no price impact.
  • Shipping-option changes — may affect an already-purchased label.
  • Payment-method changes — recomputes any surcharge.

A request auto-approves only when every change it contains is on your checklist — if a buyer's request mixes an allowed change with one you didn't check, the whole request waits for your manual review. Approved edits run through the exact same logic as the manual Approve button (stock, totals, surcharges, refund records, payment links), and you always get a notification (and email, if enabled) so you know what changed. Leave everything unchecked and nothing auto-approves; check only the safe ones to keep control where it matters.

Edit links expire after 30 days. Only one pending edit request is allowed at a time.

Order Messages

Every order has a built-in message thread so buyers and sellers can talk on EZFormz instead of relying on email delivery. Messages stay attached to the order, and both sides see unread badges and bell notifications.

For sellers

  • Open any order on the orders page and click Message (under Payment + Buyer) to view the thread or send a message.
  • Orders with unread buyer messages show a red 💬 chip on the order row — click it to jump straight into the thread.
  • Each message you send also emails the buyer with a link back to the thread, so they see it even if they're not logged in.

For buyers

  • On My Orders, expand an order and click 💬 Message Seller to ask questions or share updates about that order.
  • Replies from the seller show as a red chip on the order card and a bell notification, plus an email ping.
  • Checked out without an account? Sign in with the same email you used at checkout and your orders — and their message threads — appear automatically.

Notifications

The email ping is controlled by the "Order message received" row in Account → Notifications. Turn the email column off if you only want the in-site bell.

Messages are limited to 2000 characters. Threads are private between the buyer and the seller of that order.

Analytics

Each form has its own analytics page showing performance data. Access it from the dashboard or builder.

  • Conversion Rate — percentage of form views that result in an order
  • Revenue Chart — daily revenue and order count over time (7, 30, or 90 day views)
  • Top Customers — your most active buyers ranked by order count and total spending

Profit & Loss

The Profit & Loss page gives sellers a seller-only view of sales, product cost, manual adjustments, estimated profit, and margin. Open it from the dashboard or orders account menu, the orders header, the dashboard P&L widget, or go to /pnl.

Before using it

Turn on P&L per form from Form Settings → Profit & Loss. Forms with P&L off are not included in reports and do not show order cost editing.

Add variant costs from Account → Profit & Loss or in the builder from the Products block P&L tab near Shipping. Costs are private to the owner, do not affect buyer pricing, and can be left blank when a variant cost is unknown.

To update costs from a spreadsheet, use the Profit & Loss page's Missing Costs section and choose one P&L form before uploading or pasting cost rows. Use columns for product name, variant/size, and unit cost. The review step matches what it can automatically, lets you choose the right product/variant for rows that need help, and updates only existing variant costs. The builder Products CSV importer is for adding catalog products and can create new products.

For older orders or one-off corrections, expand an order on the Orders page and use the P&L costs panel under the item table. That updates the saved cost snapshot for that order only; it does not change the order total, buyer price, stock, coupon usage, or payment state.

Report controls

  • Range — choose 7 days, 30 days, 90 days, 12 months, or all time.
  • Form — review all P&L forms together or focus one enabled form.
  • BasisPaid orders is the default; Submitted orders includes non-cancelled submitted orders too.
  • Shipping cost — ignore shipping cost, use shipping charged to the buyer, use actual purchased label cost, use manual shipping expense adjustments, or use per-order manual shipping costs.
  • Insurance — when actual label cost is selected, choose whether purchased label insurance is included as a shipping cost.
  • Payment fees — use Payment Fee Rules in the Settings section to set account defaults, form overrides, and payment-method overrides. Rules can be none, flat, percent, or percent plus flat.

Use the Settings section to save account-level defaults for shipping cost mode, insurance, date basis, category basis, and P&L Sheets behavior. Form-level overrides can be saved when one form needs different reporting defaults.

Expenses and exports

Add one-off income or expenses for supplies, fees, shipping, refunds, or other corrections. For per-order shipping costs, open the Shipping & Fees section on the P&L page and enter the manual cost next to each order. These values are private P&L entries and do not change order totals, labels, tracking, buyer receipts, or Sheets order exports.

Use recurring rules for repeat costs such as subscriptions, packaging, storage, or software. EZFormz generates the matching occurrence inside the selected report window without creating endless permanent rows. A seller can skip a single occurrence, edit just that occurrence, or convert it into a one-off adjustment.

Payment fee rules are also private P&L estimates. They calculate from the saved order total for reporting only. Buyer-paid payment surcharges can be counted as revenue, used to offset the estimated fee, or ignored for profit, based on the seller's setting.

The report includes product, form, order, adjustment, and shipping source fields. Use Export combined CSV for one file with every table, or Export table CSV for a single table.

In Sheets & Export, a seller can enable P&L Sheets sync for a form that already has a connected Google Sheet. Sync now rebuilds dedicated P&L Summary, P&L Orders, P&L Products, P&L Categories, and P&L Expenses tabs. Auto-sync can be turned on per form for safe P&L-impacting edits such as cost saves, backfills, and manual shipping-cost updates.

Collaborators do not see P&L by default. Owners can grant custom View Profit & Loss or Manage Profit & Loss costs access for a specific form. Google Sheet connection and collaborator management remain owner-only.

Google Sheets Integration

Sync every order to a Google Sheet automatically — handy for accounting, sharing with a team, or piping into other tools (Zapier, Make, etc.). Setup takes about a minute.

Setup

  1. Create a new (or open an existing) Google Sheet.
  2. In the sheet, click Share (top-right) and add this email as an Editor:
    ezformz-sheets@ezformz-integrations.iam.gserviceaccount.com
  3. Copy the sheet's URL from the browser address bar.
  4. In EZFormz, open your form in the builder.
  5. Click SETTINGS in the top bar, then select the Integrations section.
  6. Paste the sheet URL into the Google Sheet URL field.
  7. A column picker appears — tick the columns you want synced (Select All is the default).
  8. Save the form, click Verify connection, then use Reconcile now or Rebuild from scratch to sync existing orders. Every new order after setup will append a row automatically.

Available Columns

Standard columns: Order ID, Date, Customer Name, Email, Status, Items, Shipping, Coupon, Total, Shipping Address, Notes, Tracking, Payment Method, and Proof of Payment.

The Order details section also includes an optional Transaction ID column, listed next to Payment Method and Proof of Payment. It is off by default — tick it in the column picker to sync the recorded crypto/payment reference (TXID/hash) captured for each order through your payment setup. If an order has more than one recorded reference (for example an initial payment plus a balance top-up), they appear together in that one cell.

Plus dynamic columns that expand automatically:

  • Custom field columns — every form field (text, dropdown, checkbox, poll, etc.) gets its own column. Multi-select fields expand into one column per option so you can tally them.
  • Product columns — each product + variant combo gets its own column showing the quantity ordered, so totals are easy.

EZFormz also maintains a TOTALS row under the header with sum formulas for product quantities and count formulas for checkbox/poll options.

Every connected sheet also gets derived Product Summary and Order Items tabs that rebuild from the current EZFormz order data.

Bulk-syncing existing orders

When you first connect a sheet, existing historical orders wait for you to click Reconcile now or Rebuild from scratch. This prevents a pasted URL from immediately backfilling an unverified sheet. Duplicate rows are detected by order ID and skipped, so Reconcile is safe to run more than once.

Status changes and tracking updates made in EZFormz are written back into the matching row — the sheet stays in sync with your orders page automatically.

Sheet layout

The current Sheets setup uses one standard layout: one row per order on the main Orders tab, plus Product Summary and Order Items tabs. Use Rebuild from scratch when you want an older sheet rewritten into the current layout.

Granular sync controls

Once a sheet is connected, the Integrations panel shows toggles for fine-grained control:

  • Auto-sync new orders — turn off if you only want to bulk-sync manually.
  • Auto-update on status / tracking change — independent toggles so you can keep the sheet "frozen" while still receiving new orders.
  • Pause all auto-sync — one-click pause for when you're manually editing the sheet and don't want EZFormz to overwrite.
  • Reconcile now — pushes missing orders, refreshes existing rows, updates headers/totals, and rewrites the derived Product Summary and Order Items tabs.
  • Verify connection — read-only health check that surfaces the actual Google error if access is broken.
  • View sync history — last 50 sync events for the form (success / error with the actual error message).

Order-level sync indicators

The orders page shows a per-order chip:

  • In Sheets — click to jump straight to that row.
  • Failed — click to retry; hover to see the exact error.
  • Pending — click to force a sync.

A health banner at the top of the orders list shows totals: "X of Y synced · Z failed", with a Retry button for unsynced orders. EZFormz also runs a 5-minute retry cron with exponential backoff for any failed syncs.

Troubleshooting

  • "Failed to write to sheet" — the service account isn't an Editor on your sheet. Re-share the sheet with the email above and make sure the access level is Editor, not Viewer. Use Verify connection to confirm.
  • Sheet is missing columns or shows an old layout — click Reconcile now to refresh headers, formulas, current rows, and derived tabs. If the sheet is too far out of sync, use Rebuild from scratch to wipe EZFormz data rows and re-append orders in the current layout.
  • Changed your mind on columns — edit the tick boxes in the Integrations settings, save, then use Reconcile now so existing rows catch up to the current column selection.

Airtable Export

Connect a form to Airtable when you want a structured export with separate tables for orders, order items, payments, products, product options, coupons, shipping options, and a form summary. Airtable is export-only: EZFormz remains the source of truth.

Setup

  1. Create or open the Airtable base you want EZFormz to write into.
  2. In EZFormz, open your form in the builder.
  3. Click SETTINGS in the top bar, then select the Integrations section.
  4. In the Airtable card, click Connect Airtable and approve EZFormz in Airtable.
  5. Return to the builder, choose an authorized Airtable base, pick the managed tables you want EZFormz to maintain, and leave the auto-sync options on unless you only want manual exports.
  6. Click Create/repair tables. EZFormz creates any missing managed tables and stores their Airtable table IDs.
  7. Click Sync now once to backfill the current form data. After setup, EZFormz automatically refreshes Airtable for new orders, order updates, and catalogue changes when those auto-sync options are enabled.

What EZFormz Manages

  • Orders — one row per order with status, totals, shipping, customer, and payment summary fields.
  • Order Items — one row per purchased product or option line.
  • Payments — one row per recorded payment/proof entry.
  • Products and Product Options — current catalog rows for the form.
  • Coupons and Shipping Options — current coupon and shipping setup.
  • Form Summary — a single summary row with current order and revenue totals.
EZFormz only creates and updates its managed Airtable tables. It does not delete your Airtable base, remove unrelated Airtable tables, or import edits from Airtable back into EZFormz.

Auto-Sync

Airtable auto-sync is configured per form. New orders, later order/status/payment/tracking updates, and catalogue changes each have their own checkbox in the Airtable setup card. Sync now remains available for first-time backfills, retries after an Airtable outage, or repairs after changing the managed table selection.

Troubleshooting

  • No bases appear — reconnect Airtable and make sure you authorize access to the base you want to use.
  • Sync says setup is not ready — choose a base and click Create/repair tables before syncing.
  • Rows look stale — confirm the matching auto-sync checkbox is on, then click Sync now to force a repair/backfill.
  • Deleted EZFormz data still appears in Airtable — managed rows are marked with Deleted At instead of being removed, so you keep an audit trail.

Collaboration & Transfer

Use collaboration when someone should help manage a form while you remain the owner. Use transfer only when ownership should move to another EZFormz account.

Invite collaborators

  1. Open the dashboard, find the form, and choose Collaborators from the form's … menu.
  2. Enter the collaborator's EZFormz account email.
  3. Pick a role and optional access-expiration date.
  4. Send the invite. The recipient accepts or declines from their dashboard.

Collaborators see shared forms on their dashboard with a Shared badge. The form owner can revoke access from the same collaborators modal.

Roles

RoleBest For
View onlySomeone who needs read-only access to form and order details.
Fulfill ordersHelpers who pack orders, update status/tracking, message buyers, and export order data.
Manage inventorySomeone updating product stock, prices, products, options, shipping, and coupons.
Edit formSomeone editing form fields/design and products, without owner-only publishing or Sheets controls.
ManagerA trusted helper who can edit the form, manage orders, message buyers, export data, and view analytics.
Co-ownerA trusted operator with broad form/order access who also receives order notification emails when the form's notification setting is enabled.
CustomPick exact permissions, including whether that collaborator receives order notification emails.
Destructive ownership controls stay with the owner: delete, duplicate/copy, transfer, Google Sheets connection/sync, and collaborator management.

Internal discussion

Shared forms include an internal discussion panel so owners and collaborators can coordinate on that form without exposing notes to buyers.

Transfer a form

Transfer is available from the dashboard form … menu when a form has no orders. It moves the form definition, products, options, shipping options, coupons, theme, and custom thank-you settings to another existing EZFormz user. The recipient has 7 days to accept or decline. Once accepted, the original owner loses access.

Save & Continue Later

Buyers can save their progress on a long form and come back later to finish.

How It Works

  1. The buyer clicks "Save Progress" at the bottom of the form.
  2. They enter their email address.
  3. A resume link is emailed to them.
  4. When they click the link, the form reopens with all their previous entries pre-filled.
Saved progress expires after 7 days. The buyer must complete their order before the link expires.

AI Form Builder

Describe what you want to sell in plain English and AI builds the entire form — products, pricing, photos, theme, shipping options, everything. EZFormz works with both ChatGPT and Claude; use whichever you already have.

Click the Build with AI button on your dashboard to open the picker, or head to Account Settings → AI Builder to see setup instructions for each.

Option 1 — Build with ChatGPT

  1. On the dashboard, click Build with AI → ChatGPT (or go to Account Settings → AI Builder → ChatGPT).
  2. Click "Open Form Builder in ChatGPT". The EZFormz GPT opens in ChatGPT.
  3. The first time you use it, ChatGPT asks you to sign in to EZFormz — approve the connection with your normal EZFormz login.
  4. Describe your form in the chat. The GPT creates it and gives you the live URL.

Requirements: a free ChatGPT account. No paid subscription, no API key.

Option 2 — Build with Claude

  1. On the dashboard, click Build with AI → Claude (or go to Account Settings → AI Builder → Claude).
  2. In Claude, go to Settings → Connectors and click Add custom connector.
  3. Name it anything (e.g. EZFormz) and paste this URL: https://ezformz.net/mcp
  4. Claude prompts you to sign in to ezformz.net — approve with your normal EZFormz login.
  5. Open any Claude chat, enable the EZFormz connector, and describe the form you want.

Requirements: a paid Claude plan (Pro, Max, Team, or Enterprise — Custom Connectors aren't on the free tier). No API key needed; the connector authenticates via OAuth.

Want to use a static token instead of OAuth (e.g. for automation)? Create an API key in Account Settings → AI Builder → API Keys and use it as a Bearer token when Claude asks for credentials.

What AI Can Do

  • Create forms from scratch — describe your products and the AI builds the full form with blocks, pricing, and layout.
  • Find real product photos — the AI searches the web for actual product images and uploads them to your form.
  • Upload your photos — send images directly in the chat and the AI attaches them to your products.
  • Apply custom themes — request any color scheme, font, or style and the AI configures the visual settings.
  • Set up shipping & coupons — add shipping methods, add-ons, and discount codes.
  • Edit existing forms — ask the AI to change products, update prices, swap images, or restyle an existing form.
  • Manage orders — look up orders, update status, apply tracking numbers.

Example prompt (works in either)

"Build me an order form for my bakery. I sell cupcakes ($3 each — vanilla, chocolate, red velvet), cookies ($2 each), and cake slices ($5 each). Flat rate $5 shipping. Payment via Venmo @mystore. Use warm pink and brown colors. Find real product photos for each item."

How the sign-in works (OAuth 2.0)

Both ChatGPT and Claude use OAuth 2.0 — the same secure sign-in flow as "Sign in with Google" or "Sign in with GitHub". Here's what happens the first time you connect:

  1. The AI tool (ChatGPT or Claude) redirects you to a consent page on ezformz.net.
  2. If you're not signed in, you'll be asked to log in with your email.
  3. You see exactly what the AI will be able to do with your account.
  4. You click Approve to grant access, or Deny to cancel.
  5. You're redirected back to the AI, which can now build forms on your behalf.

What the AI can and can't access

Once connected, the AI can:

  • Create, edit, publish, and delete your forms
  • Add products, shipping options, and discount coupons
  • Upload and host product images
  • Apply visual themes and styling
  • View your orders and analytics
  • Update order status and tracking

It cannot access your email, password, login sessions, payment details, or any other accounts you've connected (like Google Sheets).

How to revoke access

  1. Go to Account Settings → Connected Apps.
  2. Find "ChatGPT" or "Claude" (or whichever app) in the table.
  3. Click Revoke and confirm.
  4. Access is revoked immediately. The tool will have to sign in again the next time you want to use it.

Token expiration

Access tokens expire after 30 days. Both ChatGPT and Claude automatically renew them using a refresh token (lasts 1 year). You won't need to sign in again unless you revoke the connection or don't use it for a year.

The AI Form Builder is in beta. The AI does its best to follow your instructions but you may need to fine-tune the form in the builder afterwards — especially for tricky layouts or unusual themes.

API Access

EZFormz has a full REST API that lets you create and manage forms programmatically. This is useful for developers, automation tools, and advanced integrations.

Getting an API Key

  1. Go to Account Settings → AI Builder → API Keys tab.
  2. Click "+ Create Key".
  3. Give your key a name (e.g., "My Integration") and click Create.
  4. Copy your key immediately — it will not be shown again.
Keep your API key secret. Anyone with your key can create and modify forms on your account. If a key is compromised, revoke it immediately from Account Settings.

Using the API

The API base URL is https://ezformz.net/api/v1/. All requests require your API key in the Authorization header:

Authorization: Bearer ezf_live_your_key_here

Key Endpoints

ActionMethodEndpoint
List formsGET/api/v1/forms
Create formPOST/api/v1/forms
Get form detailGET/api/v1/forms/{id}
Update formPUT/api/v1/forms/{id}
Publish formPOST/api/v1/forms/{id}/publish
Add productsPOST/api/v1/forms/{id}/products
List ordersGET/api/v1/orders
Update orderPATCH/api/v1/orders/{id}

Interactive Documentation

Full interactive API documentation is available at ezformz.net/api-docs. You can explore all endpoints, see request/response schemas, and try requests directly from your browser.

Self-Documenting API

Call GET /api/v1/ (no authentication required) to get the complete API reference including all 34 block types, theme options, product structure, and example payloads. This is useful for AI agents and automation tools that need to discover the API capabilities.

Rate Limits

The API is limited to 60 requests per minute per API key. Rate limit information is included in response headers: X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset.

Dashboard

Your Dashboard is the home base for managing all your forms and getting a quick overview of your business.

Widgets

The dashboard features customizable widgets you can rearrange and collapse:

  • Today's Revenue / Weekly & Monthly Revenue — quick income snapshots.
  • Profit & Loss — 30-day paid-order profit, margin, sales, product cost, and missing-cost warnings with a link to the full P&L page.
  • Pending Orders — orders awaiting action.
  • Orders by Status — segmented bar of every status across forms.
  • Shipping Queue — confirmed orders ready to ship.
  • My Forms — all your forms with quick actions (see below).
  • Reviews — your average rating + 3 most-recent reviews + buttons to your public page and the manage page.
  • Revenue by Form — bars for top-earning forms.
  • Product Breakdown — full-width per-form chart of product / variant performance. Form picker, range filter (all-time or 30 days), granularity toggle (per variant or per product), metric toggle (qty or revenue), and a chart toggle (bar or pie). Top 10 + an "Other" bucket with an expand-to-see-all button.
  • Top Products / Coupon Usage / Low Stock Alerts — tactical lists.
  • Repeat Customers / Avg Order Value — customer + order benchmarks.

Drag widgets to reorder them. Click the collapse caret to minimize any widget. Your layout is saved automatically. To pick which widgets are visible, click the labeled Widgets button in the dashboard header (it sits alongside Build with AI, + New Form, and Community). If the metric you need is not available, use the dashboard's widget request form to describe the missing widget and the decision it would support.

My Forms widget

Two layouts to pick from (toggle in the toolbar — Cards | List):

  • Cards (default) — refined cards with a colored status rail, quiet "Earning / Active / Inactive" status chip, an On/Off toggle switch, a 3-up to 5-up stats panel with serif numerals, single-line URL with copy / open / QR icons, primary "Edit form" + secondary "View orders →", and a … menu for Preview / Export CSV / Duplicate / QR / Transfer / Delete.
  • List — dense one-row-per-form view with a 7-day order sparkline (color-coded earning / steady / idle), grouped by Earning · Live no orders · Inactive. Auto-defaults to this view when you have 8+ forms.

Stats picker

The "STATS SHOWN" bar above the cards lets you pick up to 5 stats from this menu: Views, Orders, Revenue, Conversion %, Avg order, Last order, Repeat buyers, Total orders, Pending. Drag chips left/right to reorder — works on desktop and on touch with an insertion line showing the exact drop spot. Reset returns to defaults. Choices save to your account.

Toolbar

  • Search — filter forms by name.
  • Filter chips — All / Active / Drafts / Has orders, with live counts.
  • Sort — Newest, Oldest, Most orders, Highest revenue, A→Z.
  • View toggle — switch between Cards and List.

Quick actions on a form

  • Toggle a form on/off via the chip or the On/Off switch.
  • Copy the public URL, open it in a new tab, or generate a QR code from the URL row icons.
  • Edit, view orders, sync to Google Sheets (when connected), preview, export CSV, duplicate, transfer, or delete via the … menu.
  • A gear icon next to View Orders jumps you straight to the form's Settings panel — no need to click into the builder and find the tab. Settings deep-links work too: /edit/{id}#settings/orderEdits opens the Order Edits subsection directly.
  • Each card has a chevron pinned to its top-right corner — click to collapse the card to just the title row + action buttons (stats, URL, and empty-state nudge hide). Each form remembers its own collapsed/expanded state across reloads.
  • Brand-new forms (0 views, 0 orders) show a "Share your link to start collecting orders" coaching nudge instead of a row of dim zeros.

Account Data & Deletion

Manage your account at ezformz.net/account.

Change account email

Use Account → Profile → Change beside your email address. EZFormz sends a verification code to the new email before the login address changes. If you have 2FA enabled, you also need your current authenticator code or a recovery code before the verification email is sent.

Changing your account email keeps your forms, orders, passkeys, API keys, and collaborations on the same account. Historical buyer emails and old audit rows stay as they were recorded.

Auto-Delete

For privacy, you can configure automatic data deletion:

  • What to delete — Orders only, Orders + Forms, or Everything
  • After how long — 30, 60, 90, 180, or 365 days of inactivity

Auto-delete runs daily. Deleted data cannot be recovered.

Delete Account

Permanently delete your account and all associated data (forms, products, orders, images, templates, themes). This action is irreversible.

Saved Payments

Use Account → Payments to save reusable payment methods you commonly add to forms. Saved methods can include the same core payment details from the builder payment properties: method type, handle or wallet, buyer label, logo, QR image, buyer note, surcharge, and crypto transaction settings.

Saved payments are copied into forms, not linked live. In the builder, click a Payment Instructions block, use Payment methods mode, then click Saved payments to choose one or more saved account methods. After copying, each form keeps its own independent copy so you can set form-specific buyer visibility, transaction limits, and sales behavior without changing the account-saved version.

If a saved method looks like one already on the form, EZFormz warns you but still lets you add it. This is useful when you intentionally need similar payment options on the same form.

Security: 2FA & Passkeys

Sign-in defaults to a 6-digit email code. If your email is ever compromised, the attacker has your account too — the email code alone isn't enough. Two-factor authentication and passkeys both add a second layer that the attacker won't have.

Find both options at ezformz.net/account#security.

Two-Factor Authentication (2FA)

2FA adds a 6-digit code from an authenticator app on your phone, in addition to the email code. Compatible with Google Authenticator, Authy, 1Password, Bitwarden, and any other TOTP app.

To enable:

  1. Go to /account → Security
  2. Click Enable two-factor authentication
  3. Scan the QR code with your authenticator app (or paste the manual secret)
  4. Enter the 6-digit code your app shows
  5. Save your 10 recovery codes — they're shown ONCE. Use them to sign in if you ever lose your phone.
  6. Check the saved-codes box and click Enable 2FA. Your account stays email-code-only until this final step.

Sign-in flow with 2FA on: email → email code → authenticator code → in.

If the authenticator code is rejected, check that your phone time is set automatically, then wait for the next code in your app and try again. You only need to request a new email code if the sign-in expires or too many invalid codes are entered.

Lost your phone? Enter one of your recovery codes at the second-factor prompt instead. Each code works once.

Want to change phones? Disable 2FA from settings (you'll need a code or recovery code), set up your new phone, then enable 2FA again.

Passkeys

Passkeys are the modern replacement for passwords. You tap your phone, laptop, or hardware key with biometric (Touch ID, Face ID, Windows Hello) and you're signed in. No email code needed.

The big security win: passkeys are phishing-resistant. A fake site that looks like EZFormz can't get a valid signature from your device — the browser checks the domain itself.

To register a passkey:

  1. Go to /account → Security
  2. Scroll to Passkeys → click + Add a passkey
  3. Your browser asks for biometric / hardware key — authenticate
  4. Name it (e.g. "iPhone", "ProtonPass", "YubiKey") so you can identify it later

Where the passkey lives — and why one is usually enough

Your passkey is stored by your password manager (or your device's built-in keychain). If that manager syncs across your devices, the same passkey works everywhere you're logged into that manager. You don't need to register a separate passkey per device.

Common synced password managers that handle passkeys:

  • iCloud Keychain — syncs across iPhone, iPad, Mac
  • Google Password Manager — syncs across Android + Chrome on every device
  • ProtonPass, 1Password, Bitwarden, Dashlane — sync across every device the app is installed on

So registering once in your password manager is typically all you need.

When to register more than one passkey

  • Hardware key backup — e.g. a YubiKey kept in a safe place, in case your phone breaks and your synced manager is unreachable
  • Multiple password managers — e.g. ProtonPass on your work laptop + iCloud Keychain on your personal devices
  • Device-bound (non-syncing) keys — some Windows / Linux setups create per-device passkeys; in that case you'd register one per device

None of this is required. One synced passkey is fine.

On the login page, click Sign in with passkey — your browser will offer whichever credential matches your domain. If you have multiple registered, it'll let you pick.

Using both 2FA and Passkeys

You can have 2FA and passkeys enabled. Recommended setup:

  • One passkey saved in your synced password manager — works across all your devices
  • 2FA on as a backup if you ever lose access to that password manager
  • Recovery codes saved somewhere safe (download as .txt at enrollment)

If you lose any one device, the others still work.

Recovering a lost account

In order of preference:

  1. Use another registered passkey — if you have multiple devices set up
  2. Use a recovery code at the second-factor prompt
  3. Contact admin if all the above are gone: You'll be asked to verify your identity through a few questions about your account (forms you own, recent orders, payment handles, etc.) before MFA is reset. This isn't automated by design — if it were automated via email, anyone with email access could disable your 2FA.

Why we don't allow email-based 2FA reset

Many platforms let you click an email link to disable 2FA. We deliberately don't — email compromise would then equal 2FA bypass, defeating the entire feature. Industry leaders (GitHub, 1Password, Apple) take the same line. Manual admin reset with identity verification is the trade-off for actually-meaningful 2FA.

Removing the last passkey or disabling 2FA

If you try to delete your only passkey while you don't have 2FA on, EZFormz refuses with a warning. Same the other way around. Add a backup factor first, or you'll lose your second-factor protection without realizing.

Email notifications on changes

Every time MFA or your account email changes — 2FA enabled/disabled, passkey added/removed, account email changed — you get an email with the IP address and timestamp. If you didn't make the change, that email is the canary that tells you to act fast.

Keyboard Shortcuts

ShortcutAction
Ctrl+SSave form
Ctrl+ZUndo last change
EscapeDeselect current block / exit inline editing
Ctrl+BToggle bold (while inline editing)
Ctrl+IToggle italic (while inline editing)
Ctrl+UToggle underline (while inline editing)

On Mac, use Cmd instead of Ctrl.

Security & Privacy

Hosting & Infrastructure

EZFormz runs on Cloudflare Workers — a global edge compute platform spanning 300+ cities. Your forms are served from the nearest data center to your customers, with built-in DDoS protection and CDN active on every request.

  • Database: Cloudflare D1 (SQLite at the edge)
  • File Storage: Cloudflare R2 (product images, payment proof uploads)
  • Compute: Cloudflare Workers (serverless, no traditional servers to hack)

Data Protection

  • HTTPS everywhere — All traffic is encrypted in transit via TLS
  • Passwordless authentication — No passwords stored. Login uses secure 6-digit codes sent to your email
  • Secure sessions — HttpOnly, Secure, SameSite cookies — inaccessible to JavaScript
  • Form passwords hashed — SHA-256 hashed before storage
  • Server-side price verification — All order totals are recalculated from the database, never trusted from the browser
  • Atomic stock deduction — Stock levels can't go negative, even under concurrent orders
  • Rate limiting — Login, order submission, file uploads, and coupon validation are all rate-limited to prevent abuse
  • CORS restricted — Authenticated API endpoints only accept requests from ezformz.net

Privacy

  • No ad tracking — No Google Analytics, Facebook Pixel, ad-retargeting scripts, or customer-data resale.
  • No data selling — Your data and your customers' data are never shared or sold
  • Spam protection — Honeypot fields block automated spam without CAPTCHAs
  • Auto-delete option — Configure automatic data deletion on your schedule

Frequently Asked Questions

Does EZFormz process payments?
No. EZFormz is an order form builder only. You provide your own payment instructions (bank transfer, Venmo, crypto, etc.) and buyers upload proof of payment. You handle payment verification and fulfillment yourself. The optional crypto on-chain check can help compare supported stablecoin payments against public blockchain data, but it does not process, hold, or refund funds. If you turn on Auto-mark paid when verified, a pending order changes status only after a seller manually verifies the proof.
How do crypto payment checks work?
In a crypto payment method, turn on Run on-chain check after submit. For future payments, EZFormz saves the expected token, network, receiving wallet, amount, confirmation setting, and transaction ID if one is submitted. After checkout or balance payment, EZFormz checks the exact TXID when available, or scans the saved receiving wallet for one recent matching stablecoin transfer when no TXID was provided. The result appears on the payment proof card for seller review, and the seller can rerun it with Verify on-chain.
Does the crypto on-chain check mark orders paid automatically?
No. It never changes the order status, marks proof verified, edits totals, or approves a payment by itself. It shows an advisory result such as On-chain matched, Wallet match, Amount short, Amount over, Duplicate TX, Provider error, or Manual review. The seller still opens the Explorer link, reviews the proof image and order context, then manually marks the payment verified if appropriate.
Which crypto payments can be checked automatically?
Stablecoin checks currently support USDC, USDT, and PYUSD on Solana; USDC, USDT, and PYUSD on Ethereum; USDC on Base; and USDC on Polygon. BTC, native ETH, native SOL, custom tokens, custom networks, and unsupported combinations can still be collected as manual crypto methods, but EZFormz will fail closed and tell you to review manually instead of guessing.
Is EZFormz free?
Yes, EZFormz is completely free. You can create unlimited forms, products, and collect unlimited orders.
Can I use my own domain?
Not currently. All forms are hosted at ezformz.net/f/your-slug. Custom domains may be available in the future.
Can buyers save their progress and come back later?
Yes. Buyers can click "Save Progress" on the form, enter their email, and receive a resume link. When they click the link, the form reopens with all their previous entries pre-filled. Saved progress expires after 7 days.
Can buyers edit their orders after submitting?
Yes. Each order confirmation email includes an edit link. Buyers can request changes to items, quantities, shipping, and address. Changes require your approval before they're applied. Edit links expire after 30 days.
How do I add shipping options?
Click the Products block, then scroll to "Shipping Options" in the properties panel. Add shipping methods (buyer picks one) and/or add-ons (buyer can select multiple). Add-ons can be optional, required, auto-selected, or allow quantities. Each option has a label, price, and optional image. Methods can also use Quote after order when you need to review the final shipping cost before collecting it.
Can I collect payment after I review orders?
Yes. In the Payment Instructions block, turn on Request payment later and customize the message buyers see at checkout. After orders come in, use Request Payment on one order or the bulk action bar to email pay links. The buyer chooses an available method, surcharges are calculated, and proof is attached to the order for your review.
Can I invite someone to help manage a form?
Yes. Use form collaboration from the dashboard to invite another EZFormz user with scoped permissions. Collaborators can help with the form or orders depending on the role you choose, and shared forms include an internal Discussion panel for form-specific notes.
How do I set up sale pricing?
For one variant, click a product, expand its variant/option, and set a Sale Price. For a sale across the whole form, click the Products block and open the Sales tab. Form-wide sales can discount by product subtotal or item quantity, unlock free shipping after a product-subtotal threshold, and optionally block coupons while the sale applies.
How do I connect Google Sheets?
In the builder, go to Settings → Integrations. Paste your Google Sheet URL, share the sheet with the EZFormz service account as an Editor, choose columns, then save and click Verify connection. Use Reconcile now or Rebuild from scratch to sync existing orders; new orders append automatically after setup.
How do I connect Airtable?
In the builder, go to Settings → Integrations. Click Connect Airtable, approve EZFormz in Airtable, choose an authorized base, select the managed tables and auto-sync options, then click Create/repair tables and Sync now. After setup, EZFormz automatically refreshes Airtable for enabled order and catalogue changes. Airtable is an export target only; edits in Airtable do not update EZFormz.
How do I set up coupon codes?
Add the Coupon Code section to your form, then click it to open properties and choose Manage Coupons. You can create one code or paste multiple codes separated by commas or new lines. A coupon can discount products, discount shipping or make shipping free, and waive payment surcharges in any combination. Buyers use one coupon code at a time by default; turn on Allow Multiple Coupon Codes if the form should allow up to 5 accepted codes, removable chips, and one discount line per code. Optional max uses and expiration dates still apply, expired coupons are rejected at submit time, and Products → Sales can block coupons while a form-wide sale benefit applies.
What happens when a product goes out of stock?
If you set a stock quantity on a variant and it reaches zero, that variant shows "Out of Stock" and buyers can't select it. When stock is 5 or fewer, it shows "X left" to the buyer. You can set a low stock threshold to get email alerts before stock runs out.
Can I export my orders?
Yes. On the orders page, click "Export CSV" to download all orders as a spreadsheet. You can choose which columns to include. You can also download individual PDF receipts for any order, or sync orders to Google Sheets for live reporting.
Can I limit how many orders my form accepts?
Yes. In Settings → Form Limits, set a max number of submissions or max items sold. You can also set an open date for a countdown launch and a close date to automatically stop accepting orders at a specific time.
How do calculation fields work?
Add a Calculation field and write a formula using other field labels in curly braces. For example: {Quantity} * {Price}. The result updates automatically as buyers fill in the form. You can format the output as a number, currency ($), or percentage (%).
Can I show or hide fields based on what the buyer selects?
Yes, use Conditional Logic. Select a field, scroll to the Conditional Logic section in the properties panel, and set rules like "show this field when Payment Method equals Crypto". You can combine multiple conditions with ALL or ANY logic.
How do I customize the look of my form?
Go to Settings → Appearance to access the Theme Engine. You can change colors, fonts, button styles, input styles, product card appearance, form width, spacing, borders, and more. Pick a one-click preset or build your own theme from scratch. You can also save custom themes to reuse across forms.
Can I embed my form on my website?
Yes. Go to the PUBLISH tab in the builder and click the Embed tab. Copy the iframe code and paste it into your website's HTML. The embed is responsive, adjusts to fit your page, and keeps the form's checkout button theme.
What's the difference between Checkboxes and Multiple Choice?
Both let buyers pick multiple options. Checkboxes shows all options as visible checkboxes. Multiple Choice shows a compact dropdown with search and removable tags. Use Checkboxes for short lists (2–6 options) and Multiple Choice for longer lists.
What is the AI Form Builder?
The AI Form Builder lets you describe a form in plain English and have ChatGPT or Claude create the entire thing for you — products, prices, photos, shipping, themes, everything. Go to Account Settings → AI Builder to get started. No coding or API key needed for the OAuth setup.
Do I need a paid ChatGPT subscription to use the AI Form Builder?
No. The AI Form Builder works with any free ChatGPT account. You sign in with your EZFormz account directly — no API key or special setup required.
Does EZFormz have an API?
Yes. EZFormz has a full REST API at ezformz.net/api/v1/ with 30+ endpoints for creating forms, managing products, tracking orders, and more. Create an API key in Account Settings → AI Builder → API Keys tab. Full interactive docs are available at ezformz.net/api-docs.
Can I use Claude to build forms?
Yes. Go to Account Settings → AI Builder → Claude for setup instructions. In Claude, add https://ezformz.net/mcp as a custom connector and sign in with your EZFormz account — no API key needed. Requires a paid Claude plan (Pro, Max, Team, or Enterprise).
Can I be logged in on multiple devices at the same time?
Yes. EZFormz supports unlimited concurrent sessions. Log in on your phone, laptop, tablet — all stay active. Logging out on one device does not affect your other sessions.