Description
Tanzeel Order Forms & Payments is an order form plugin for service businesses, agencies and freelancers who sell packages, not products. It is not a general purpose contact form builder and it is not a shop. It covers the part in between: taking an order, getting it paid, and following up when it is not.
What makes it different
- Unpaid order recovery, built in. When a customer clicks “Proceed to Checkout” the order is saved as Pending with its Order ID. If it is still unpaid after the delay you choose, you and the customer each get one email. The customer’s email carries a signed link that reopens their own order on the payment step, with every field and the chosen package already filled in, so the Order ID never changes and nothing is typed twice.
- No duplicate orders. Repeated clicks, retries and slow connections update the same pending order instead of creating new ones. The link between a visitor and their order is a server side signed key.
- Sequential Order IDs per form with your own format (for example
Order [ID2326]) and a start number, shown in emails, exports and the payment description at Stripe and PayPal. - Package cards with deep links. Priced options render as selectable package cards, and a link like
?package=goldopens the form with that package already selected. - Safe test page. Every form has a private, unindexed preview page. With PayPal sandbox keys saved, orders placed there pay through the sandbox while the live form keeps the live keys.
- Optional orders portal. A noindexed front end dashboard where a team member can follow and manage orders without a WordPress account.
Form builder
- Drag and drop builder with 17 field types: text, email, phone, URL, number, date, paragraph text, dropdown, radio, checkboxes, file upload, image upload, full address block, hidden field, heading, paragraph and notes.
- Full width or half width fields, side by side.
- Required fields, placeholders, default values and help text.
- Copy fields from one form and paste them into another.
- Preview any form on a private, unindexed test page before it goes live.
Payments
- Stripe Checkout and PayPal (PayPal button plus debit or credit card).
- Priced options shown as package cards, or a fixed price per form.
- Two step checkout: details first, then an order summary with the payment buttons.
- Prices are always computed on the server from the saved form, never trusted from the browser.
- Every payment is confirmed with the gateway (and the Stripe webhook) before an order is marked paid.
- Separate PayPal sandbox keys for the preview page, so test orders never move real money.
- Package links:
?package=goldpreselects an option.
Orders
- Sequential Order IDs with your own format, for example
Order [ID2326], and a per form start number. - Entries screen with search, filters, charts and CSV export.
- Unpaid order reminders: if an order is still pending after a delay you choose, you and the customer each get one email. The customer’s email carries a secure link that reopens their order on the payment step.
Emails
- Branded HTML emails for the admin and the customer, editable in a template editor with live preview and a test send.
- Placeholders such as
{order_id},{customer_name},{amount},{fields_table}and{payment_summary}.
Orders portal (optional)
An optional, noindexed front end page where a team member can follow orders without a WordPress account: dashboard, order list, order details, resend emails and CSV export. It is off by default; turn it on and choose its address and login in Settings.
Elementor
A “Tanzeel Order Form” widget with detailed style controls for the form box, labels, fields, buttons, the total box and errors. The shortcode works everywhere else:
[tanzeel_order_form id="1"]
Security
- Nonces and capability checks on every admin action.
- Rate limiting and a honeypot against spam submissions.
- Uploads restricted by type and size, stored with unguessable file names.
- Prepared SQL statements throughout.
External services
This plugin connects to the payment services below only when you add their API keys in Tanzeel Order Forms > Settings and enable them on a form. Without keys, no data is sent anywhere.
Stripe
Used to take card payments through Stripe Checkout.
- When a customer pays, the plugin sends the order amount, currency, a description (form title, chosen package and Order ID), the internal order number as metadata, the customer’s email address and the return and cancel URLs to the Stripe API (api.stripe.com) to create a Checkout Session. The customer is then sent to Stripe’s hosted payment page.
- When the customer returns, and when Stripe sends a webhook request to your site (only if you set a webhook signing secret), the plugin asks the Stripe API for the session status to confirm the payment.
- Service provided by Stripe, Inc. Terms of service, Privacy policy.
PayPal
Used to take PayPal and card payments through PayPal Checkout.
- On pages with a payment form, the PayPal JavaScript SDK is loaded from www.paypal.com with your public client ID and currency. The SDK runs in the visitor’s browser and connects to PayPal directly, so PayPal receives the visitor’s IP address and browser details.
- When a customer pays, the plugin sends the order amount, currency, order description, the internal order number, the return and cancel URLs and your site name to the PayPal REST API (api-m.paypal.com, or api-m.sandbox.paypal.com in sandbox mode) to create and capture the order.
- Service provided by PayPal. User agreement, Privacy statement.
Credits
- Sora font by the Sora Project Authors, bundled in
fonts/under the SIL Open Font License 1.1 (seefonts/OFL.txt).
Installation
- Upload the
tanzeel-order-forms-paymentsfolder to/wp-content/plugins/, or install the plugin from the Plugins screen. - Activate the plugin.
- Go to Tanzeel Order Forms > Settings and add your Stripe secret key and/or PayPal client ID and secret.
- For Stripe, add a webhook for the
checkout.session.completedevent pointing to the URL shown in Settings. - Go to Tanzeel Order Forms > Add New, build a form and save it.
- Add the form to a page with the shortcode
[tanzeel_order_form id="1"]or the Elementor widget.
FAQ
-
Do I need Stripe and PayPal both?
-
No. Use either one, both, or neither. A form without payment works as a normal form.
-
Can I test payments without real money?
-
Yes. Add PayPal sandbox keys in Settings, then open the form’s Preview page. Orders placed there use the sandbox. For Stripe, use your test secret key (sk_test_).
-
Where are uploaded files stored?
-
In the
submitflowfolder inside your WordPress uploads directory, with a random prefix on every file name. -
What happens to my data if I delete the plugin?
-
Nothing, unless you check “Delete all data on uninstall” in Settings first. Then deleting the plugin removes all forms, entries and settings.
-
Does it work with page caching?
-
Yes. The form refreshes its security token before submitting, so it works on cached pages.
Reviews
Contributors & Developers
“Tanzeel Order Forms & Payments” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Tanzeel Order Forms & Payments” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.0.1
- Review fixes: input sanitizing and output escaping throughout.
- Order numbers now work on every database, including SQLite.
- Refreshed admin, settings and email designs.
1.0.0
- First public release.
