Title: Talabi Order Form for WooCommerce
Author: mouatheee
Published: <strong>September 18, 2026</strong>
Last modified: September 19, 2026

---

Search plugins

![](https://ps.w.org/talabi-order-form-for-woocommerce/assets/icon.svg?rev=3703447)

# Talabi Order Form for WooCommerce

 By [mouatheee](https://profiles.wordpress.org/mouadbmh/)

[Download](https://downloads.wordpress.org/plugin/talabi-order-form-for-woocommerce.2.6.0.zip)

 * [Details](https://wordpress.org/plugins/talabi-order-form-for-woocommerce/#description)
 * [Reviews](https://wordpress.org/plugins/talabi-order-form-for-woocommerce/#reviews)
 *  [Installation](https://wordpress.org/plugins/talabi-order-form-for-woocommerce/#installation)
 * [Development](https://wordpress.org/plugins/talabi-order-form-for-woocommerce/#developers)

 [Support](https://wordpress.org/support/plugin/talabi-order-form-for-woocommerce/)

## Description

Cash on delivery is how most of North Africa and the Gulf buys online, and the
 
standard WooCommerce checkout was not built for it. Asking a shopper to add to cart,
open the cart, go to checkout and fill in a billing address loses most of them before
the order exists.

This plugin replaces that journey with a single form on the product page. Name,

phone, city, address, order. No account, no cart, no payment step.

Built by WooCodForm ( https://woocodform.com/ ).

**The form**

 * Popup or embedded on the product page, or placed anywhere with a shortcode.
 * Every field can be reordered, renamed, made optional, or switched off.
 * As many custom fields as you need — a delivery window, a size, a gift note.
 * Drag the blocks of the form into the order you want, and write your own
    heading
   for each one in each language.
 * Full right-to-left layout, with Arabic, French, English, Spanish and Portuguese
   translations built
    in — no `.po` files to compile, and every string editable
   from the admin.
 * Works with simple and variable products.

**The order button**

 * Its own text, colours, radius, border, shadow, icon and animation.
 * Replaces the Add to cart button, or sits beside it.
 * Optionally sticks to the bottom of the screen on a phone.
 * A second button for WhatsApp or any link of your own.

**Delivery**

 * One flat fee, free delivery, or your own named options — “In Casablanca 15,
    
   outside Casablanca 35” — each with a note under it.
 * Your own list of cities and regions, each with its Arabic name.

**Keeping the bad orders out**

 * A honeypot field no real shopper ever fills in.
 * A minimum time on the form, which no bot spends.

**Everything is checked twice**

Every price is worked out again on the server before the order is written, from

your settings and the product — never from what the browser sent. The amount the
courier collects always matches what was on screen.

**Built for cached sites**

Saving a setting clears LiteSpeed, WP Rocket, W3TC, WP Super Cache, WP Fastest
 
Cache, Autoptimize, SiteGround Optimizer, Cache Enabler and Breeze, so changes appear
straight away. An expired security token on a cached page is refreshed and the order
retried, instead of failing.

#### Premium

The premium add-on adds the parts that grow an order rather than take it:
 quantity
offers with a colour and size picker for each piece, order bumps, post-purchase 
upsells, a delivery rate table by city or region, WooCommerce shipping zones, ready-
made city lists for nine countries, fraud blocklists and rate limits, an analytics
dashboard, abandoned checkouts, webhooks, Google Sheets, and the Meta, TikTok, Snapchat,
GA4 and Google Ads pixels.

It is a separate plugin that installs on top of this one. Nothing in this
 plugin
is switched off to sell it: the features above are not here at all.

## Screenshots

[⌊The order form on a real product page.⌉⌊The order form on a real product page.⌉[

The order form on a real product page.

[⌊The popup: the offer, the delivery method, and the shopper's details.⌉⌊The popup:
the offer, the delivery method, and the shopper's details.⌉[

The popup: the offer, the delivery method, and the shopper’s details.

[⌊The rest of the popup: an add-on offer and the recalculated total, ready to place.⌉⌊
The rest of the popup: an add-on offer and the recalculated total, ready to place
.⌉[

The rest of the popup: an add-on offer and the recalculated total, ready to place.

[⌊General settings: popup or embedded, and where the order button goes.⌉⌊General
settings: popup or embedded, and where the order button goes.⌉[

General settings: popup or embedded, and where the order button goes.

[⌊Order settings: status, stock, and quantity limits.⌉⌊Order settings: status, stock,
and quantity limits.⌉[

Order settings: status, stock, and quantity limits.

[⌊Which products show the form, and whether it opens on its own.⌉⌊Which products
show the form, and whether it opens on its own.⌉[

Which products show the form, and whether it opens on its own.

[⌊Design settings, with a live preview beside them.⌉⌊Design settings, with a live
preview beside them.⌉[

Design settings, with a live preview beside them.

[⌊Every colour in the form, one setting each.⌉⌊Every colour in the form, one setting
each.⌉[

Every colour in the form, one setting each.

[⌊The colour and size pickers, styled to match your store.⌉⌊The colour and size 
pickers, styled to match your store.⌉[

The colour and size pickers, styled to match your store.

[⌊Layout: labels, the product summary, and the font.⌉⌊Layout: labels, the product
summary, and the font.⌉[

Layout: labels, the product summary, and the font.

## Installation

 1. Upload the `talabi-order-form-for-woocommerce` folder to `/wp-content/plugins/`.
 2. Activate it through the Plugins screen.
 3. Go to **COD Form  Settings** and work through the tabs.
 4. Enable WooCommerce’s Cash on delivery gateway under WooCommerce  Settings  Payments,
    so orders carry the right payment title.

## FAQ

### Does it work with variable products?

Yes. The shopper picks the colour and size with WooCommerce’s own selector on the

product page and the form follows along, updating the price and the image.

### Will the customer ever be charged a different amount than the form showed?

No. Every price is recalculated on the server from the product and your saved
 settings
before the order is written, and the order total is pinned to the figure the shopper
agreed to.

### Does it work with taxes?

Yes. With taxes enabled the form shows tax-inclusive prices and the order line
 
items store the net amount, so WooCommerce records the tax correctly and the totals
still match.

### Can I use it with a page builder?

Yes. Use `[talorf_form]` for the full form or `[talorf_button]` for a button that
opens
 the popup. Both accept a `product_id`.

### What happens to my data if I delete the plugin?

All of it goes — settings and tables. Your WooCommerce orders are never touched.

Untick **Delete all data on uninstall** on the Advanced tab first if you would rather
keep it.

### I bought the premium add-on. Do I remove this one?

No. The add-on extends this plugin and does nothing without it. Keep both active.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Talabi Order Form for WooCommerce” is open source software. The following people
have contributed to this plugin.

Contributors

 *   [ mouatheee ](https://profiles.wordpress.org/mouadbmh/)

[Translate “Talabi Order Form for WooCommerce” into your language.](https://translate.wordpress.org/projects/wp-plugins/talabi-order-form-for-woocommerce)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/talabi-order-form-for-woocommerce/),
check out the [SVN repository](https://plugins.svn.wordpress.org/talabi-order-form-for-woocommerce/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/talabi-order-form-for-woocommerce/)
by [RSS](https://plugins.trac.wordpress.org/log/talabi-order-form-for-woocommerce/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 2.6.0

 * Spanish and Portuguese join Arabic, French and English in the built-in
    catalog:
   every label, placeholder, button and message on the form, with no .po files to
   compile. Both are overridable per string on the Translations tab like the other
   three. The premium add-on 2.4.0 ships the matching region and city lists for 
   Mexico, Colombia and Brazil.

#### 2.5.2

 * Security: the “minimum time on the form” bot check trusted a timestamp
    the browser
   sent back, so a bot could leave it out or send an older one and skip the wait.
   The timestamp is now signed by the server when the form is rendered; a submission
   that arrives without a genuine signature is treated as a bot. Nothing changes
   for stores that have the check set to 0.
 * A product page cached before this update still carries the old, unsigned
    stamp.
   The form recognises that, fetches a fresh one, waits out the configured minimum,
   and sends the order — so page caches do not need flushing on upgrade.

#### 2.5.1

 * Fixed: the 2.5.0 rename left three file paths naming a file that was never
    actually
   renamed — `class-talorf-install.php` instead of the real class-cfu-install.php,
   and the same for the settings class and the storefront’s own stylesheet and script.
   On some installs this made activation fail outright with a fatal error, and on
   others it left the form unstyled with none of its JavaScript running. All three
   are corrected, and a new check now runs before every release that confirms every
   path a file references actually exists on disk.

#### 2.5.0

 * Renamed every internal identifier from the three-letter `cfu` prefix to
    talorf—
   class names, hooks, options, the AJAX actions, the admin page slugs, the two 
   shortcodes. WordPress.org no longer accepts a prefix shorter than four characters.
   An existing shop keeps its settings, its analytics and its abandoned checkouts:
   on update the settings option is copied across and the three tables are renamed
   in place. Pages built with [cod_form] still work — it stays as an alias where
   nothing else has taken it.
 * The Font family setting on the Design tab is now restricted to what a real
    font
   stack is made of. Its value goes straight into an inline stylesheet, and a crafted
   one could have closed the rule and injected CSS of its own.
 * A form field submitted as an array — name[]=x — no longer reaches a string
    sanitiser
   and throws a TypeError on PHP 8; it is treated as absent.
 * A filtered form section is printed through wp_kses with a form-safe
    allow-list
   rather than echoed as-is.

#### 2.4.1

 * The “Best value” ribbon on a highlighted quantity offer had no setting at
    all—
   its colour was written into the stylesheet directly, so the only way to change
   it was to edit the plugin. It is now a colour field on the Design tab, next to
   the other tier colours, and shows in the live preview like everything else there.

#### 2.4.0

 * The Design tab now shows a live preview of the form beside the settings.
    It 
   is the real form, drawn with the storefront’s own markup and stylesheet, and 
   it restyles itself as you drag a colour or type a size — so choosing a colour
   no longer means saving, opening the shop, looking, and coming back. The preview
   also makes plain which control does what, which several of them did not say on
   their own.
 * Add-ons can now re-price what they drew on screen when a shopper picks a
    variation.
   A quantity offer’s card is built when the page is, from the parent product, which
   is right until a size with its own price is chosen — from then on the card and
   the total underneath disagreed. The new `talorf_totals_response` filter hands
   the add-on the resolved product on every recalculation, and the form puts the
   new figures back on the cards.

#### 2.3.9

 * Fixed heavy-looking bold Arabic text in the form — the product name, the
    total,
   the quantity-offer badges and prices, the submit button. An Arabic font’s Bold
   and ExtraBold weights render visibly thicker than the same numbers do in Latin
   script; this is true of the font files themselves, not a missing weight or a 
   broken setting, so it showed up however the shop’s theme was configured. Arabic
   text in the form now uses SemiBold instead, which reads just as emphasised without
   the extra weight. English and French are unaffected.

#### 2.3.8

 * Renamed from CodForm for WooCommerce to Talabi Order Form for WooCommerce,
    and
   the slug from codform-for-woocommerce to talabi-order-form-for-woocommerce, at
   the WordPress.org review team’s request — the old name matched an existing product’s
   too closely. Nothing about the plugin changed but its identity: same settings,
   same behaviour, same option names.
 * Removed the Custom CSS field. A shopkeeper could paste arbitrary CSS into it,
   
   which the directory’s guidelines no longer allow — the styling controls that 
   remain cover colours, radius, spacing and font, which was already how most of
   the Design tab worked.
 * A submitted variation id is now checked against the product it claims to
    belong
   to, and the product itself against the shop’s own include/exclude list, before
   either is trusted to price an order.
 * The three places that printed a `<style>` or `<script>` tag directly now
    register
   them properly instead.
 * Declared WooCommerce as a dependency via `Requires Plugins`, and dropped a
    translation-
   loading call WordPress.org has not needed since 4.6.

#### 2.3.7

 * Fixed the empty white half a popup could show after ticking an add-on, which
   
   2.3.6 introduced. Stopping the wrapper from scrolling was right, but it was done
   with `overflow: hidden`, and hidden still leaves an element scrollable to the
   browser itself — so the same focus scroll simply moved down a level and slid 
   the form up out of the dialog. Both now use `overflow: clip`, which clips without
   being scrollable at all, and the popup pins itself back for browsers too old 
   to know it.

#### 2.3.6

 * Fixed the popup jumping when an add-on was ticked — the real cause this time,
   
   found by reproducing it rather than guessing. Clicking an add-on focuses its 
   checkbox, and a browser scrolls every scrolling ancestor to bring a focused element
   into view. The popup wrapper was a scroll container carrying hundreds of pixels
   of range that nothing was drawn in, so it scrolled through that and shoved the
   dialog off the top of the screen. It is no longer a scroll container; the form
   inside it is the only thing that scrolls.
 * The popup is also no longer sized against 100vh, which on a phone measures the
   
   space behind the browser toolbars and made the dialog taller than the screen.

#### 2.3.5

 * Fixed the popup jump once more, from its actual cause this time: the browser’s
   
   own scroll-anchoring feature was quietly re-scrolling the popup right after our
   own code put the scroll position back, since it runs later in the same frame 
   and a popup nested two scrolling boxes deep is exactly the layout it trips over.
   Switched it off on both boxes rather than continuing to fight it.

#### 2.3.4

 * Fixed the popup still jumping when a garment add-on’s size and colour pickers
   
   appeared. The 2.3.2 fix only steadied the delivery list; the pickers reveal is
   now steadied the same way, and against every scroll position involved — the popup’s
   own overlay, its body, and the page — not just one of them.

#### 2.3.3

 * Fixed a critical error on the product page as soon as the premium add-on’s
    quantity
   offers were configured — introduced in 2.3.2, and hit both the popup and the 
   embedded form. A value that had always come back empty was suddenly a real one,
   and the line reading it had never been written to expect that.

#### 2.3.2

 * Fixed the form jumping back to the top when an add-on was ticked. The delivery
   
   list is now only redrawn when the delivery options have actually changed.
 * Fixed add-on settings being read before add-ons had registered them, which
    could
   leave a configured feature quietly doing nothing for the whole request.
 * Add-ons that are variable products can now carry their own size and colour,
    
   and the order is written against that exact variation.

#### 2.3.1

 * Tested against the current WordPress release, and the readme title now matches
   
   the plugin name exactly, as the directory scanner requires.

#### 2.3.0

 * The premium features now wait for a licence. Installing the add-on used to
    unlock
   everything on its own; the locked tabs stay locked until a key is entered, and
   a notice says so rather than leaving you to wonder.
 * Fixed: the button for entering a key answered “you are not allowed to access
   
   this page”. It pointed at a screen that only exists once somebody has opted in
   to the licensing service, which this plugin deliberately never asks them to do.
   It now opens the key dialog directly.

#### 2.2.2

 * The menu is ours again: Contact Us, Account, Pricing and Affiliation are no
    
   longer added to it by the licensing library. Licence has its own item, and Add-
   Ons stays because that is where the premium is found.

#### 2.2.1

 * Fixed: with the premium add-on installed, submitting the form failed with
    “something
   went wrong”. A helper the add-on needs to price delivery was not reachable from
   outside its own class, so every submission hit a fatal error.
 * Licence now has its own item in the menu, not only a settings tab.
 * The button for entering a key opens the box you type it into, instead of
    dropping
   you back on the settings page.

#### 2.2.0

 * A Licence tab: what the licence on this site is, how many of its sites are in
   
   use, when it runs out, and a button to activate a key. It says so plainly when
   the add-on is not installed rather than showing an empty form.
 * The plugin no longer asks anything on activation. It used to show an opt-in
    
   screen before you could get on with it; now it just works, and opting in for 
   updates and support is a choice you make later from the Licence tab.

#### 2.1.0

 * The plugin now counts the orders it takes, and shows the tally on the new
    Go
   Premium screen. Nothing is ever limited by it — it is there so you can see how
   the form is doing without paying for anything.
 * A quiet, dismissible note at 25, 100 and 500 orders in a month, suggesting
    what
   shops that size usually reach for next. It appears once per milestone.
 * A Go Premium screen that lays out, feature by feature, what is in this plugin
   
   and what the add-on brings, so the line between them is not a guess.

#### 2.0.1

 * Named delivery options, drag-and-drop form layout, per-language section
    titles,
   unlimited custom fields and custom CSS are all part of this plugin now. They 
   were briefly held back for the add-on, which is not how a plugin in this directory
   should work — a feature that ships should run.
 * The features that are genuinely sold separately no longer ship here at all:
    
   their code lives in the add-on rather than sitting switched off in this one.

#### 2.0.0

 * First release as two plugins. This one is the form: everything needed to take
   
   a cash-on-delivery order, in Arabic, French or English, free and complete.
 * The features that grow an order — quantity offers, order bumps, upsells,
    delivery
   rates by city, analytics, abandoned checkouts and integrations — moved to a premium
   add-on that installs on top of this one. The tabs stay visible here, showing 
   what each does, until the add-on unlocks them.
 * Settings are shared between the two, so nothing is retyped and nothing is lost
   
   in either direction.

## Meta

 *  Version **2.6.0**
 *  Last updated **1 month ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.8 or higher **
 *  Tested up to **7.1.3**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [cash on delivery](https://wordpress.org/plugins/tags/cash-on-delivery/)[checkout](https://wordpress.org/plugins/tags/checkout/)
   [cod](https://wordpress.org/plugins/tags/cod/)[order form](https://wordpress.org/plugins/tags/order-form/)
   [woocommerce](https://wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://wordpress.org/plugins/talabi-order-form-for-woocommerce/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/talabi-order-form-for-woocommerce/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/talabi-order-form-for-woocommerce/reviews/)

## Contributors

 *   [ mouatheee ](https://profiles.wordpress.org/mouadbmh/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/talabi-order-form-for-woocommerce/)