Title: Codlino – COD Order Forms for WooCommerce
Author: tahabelmezrar
Published: <strong>October 5, 2026</strong>
Last modified: October 8, 2026

---

Search plugins

![](https://ps.w.org/codlino-cod-order-forms/assets/banner-772x250.png?rev=3746266)

![](https://ps.w.org/codlino-cod-order-forms/assets/icon-256x256.png?rev=3746266)

# Codlino – COD Order Forms for WooCommerce

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

[Download](https://downloads.wordpress.org/plugin/codlino-cod-order-forms.0.7.17.zip)

 * [Details](https://srd.wordpress.org/plugins/codlino-cod-order-forms/#description)
 * [Reviews](https://srd.wordpress.org/plugins/codlino-cod-order-forms/#reviews)
 *  [Installation](https://srd.wordpress.org/plugins/codlino-cod-order-forms/#installation)
 * [Development](https://srd.wordpress.org/plugins/codlino-cod-order-forms/#developers)

 [Support](https://wordpress.org/support/plugin/codlino-cod-order-forms/)

## Description

New in 0.7.0: manage and delete forms, drag to reorder fields, increment/decrement

quantity with on-screen arrows, preload products before searching, toggle the COD
badge, maintain a site-wide phone/IP blacklist, and enable a built-in premium thank-
you page separately for each form.

Arabic dashboard, multiple independently configured forms, Elementor shortcode
 [
codlino_form id=”123″], RTL layout and responsive styling. Each form orders a published
simple or variable WooCommerce product, with an optional quantity selector. Orders
use WooCommerce CRUD APIs, COD, on-hold status, stock handling and the standard 
receipt page; HPOS declared.

Start a new form with no fixed fields and create up to 30 fields: text, textarea,

email, phone, number or select. Use a small required checkbox under each field. 
Choose optional price display and colors for the box, fields, field borders, button
and button text. Fields are visible in WooCommerce order details. Optional role 
mapping populates customer name, city, phone, address and email. Legacy fixed fields
migrate to editable/deletable fields without changing existing form IDs.

Three ready-made styles (Classic, Express, Premium) apply their palette and layout

without replacing fields. Select Arabic/Latin fonts, button text size, vertical 
padding, width, gap above the button and optional gentle shake animation. Remote
selected fonts load from Google Fonts; Janna must be loaded by your site. Reduced-
motion preferences disable animation. Optional Moroccan mobile format validation
accepts 06/07 and 212/+212/00212 international formats on the server.

Optional phone/IP duplicate blocking lasts 24 hours after an accepted order,
 with
editable messages. Optional HTTPS JSON webhooks run asynchronously with up to three
attempts. Webhook failure never cancels an accepted WooCommerce order. Powered by
Taha Belmezrar.

### Operational details

 * One product per form; optional quantity (1–100 maximum, subject to stock).
 * Variable products support up to 200 variations. Configure attributes, prices,
   
   stock and variation images in WooCommerce. Choose buttons, colors, images or 
   select lists per attribute in Codlino. Prices displayed are per unit.
 * No coupons, shipping-zone pricing or upsells.
 * Assign a field role to map it to customer details; unmapped fields are metadata.
   
   Email role populates billing email; WooCommerce handles notifications. One field
   per role is allowed. Publishing requires at least one field. The builder uses
   JavaScript.
 * Store country is used. No state/postcode mapping; verify tax rules for this model.
 * Delivery line costs zero. On-hold orders are unpaid.
 * Site font is the default. Janna is local; Cairo, Tajawal, Noto Sans Arabic, Inter,
   
   Poppins and Open Sans use Google Fonts only when selected (internet required).
 * Duplicate protection counts accepted Codlino submissions where protection was
   
   enabled, across protected forms on this site. Historical orders and orders from
   other checkout flows are not scanned. Cancellation does not remove the 24h block.
 * Phone protection makes phone required. It normalizes common country-code formats;
   
   Moroccan validation is a separate optional switch; it checks syntax, not ownership
   or whether a number is allocated/active. A mapped phone is required for either
   switch.
 * IP means public network address: several customers may share one IP. REMOTE_ADDR
   
   is used; trusted proxies require the codlino_client_ip filter configured by an
   admin.
 * Generic webhooks require direct HTTPS JSON endpoints returning 2xx without redirects.
   
   Google Sheets mode includes an Arabic setup guide, generated Apps Script receiver,
   copy button and admin-only test. It follows only Google content redirects via
   GET and verifies a matching JSON write acknowledgment. Each form uses a private
   token. Tests add a dummy Sheet row, never a WooCommerce order. WP-Cron runs real
   delivery/retries.
 * A guard table is created on upgrade. Expired blocks stop blocking by timestamp,
   
   even before daily cleanup. WP-Cron also retires temporary request records.
 * Request retry protection lasts 48 hours. AJAX refreshes nonce/request IDs for
   
   cached pages. Without JavaScript, exclude form pages from full-page caching.
 * Deactivation/removal preserves forms, orders and configuration.

### External services and privacy

Codlino does not phone home to its author and has no analytics or licensing
 connection.
A merchant can use the form and create orders with all external integrations disabled.
The default font uses the site’s own styles.

#### Google Fonts (optional)

Selecting Cairo, Tajawal, Noto Sans Arabic, Inter, Poppins or Open Sans loads a

stylesheet from fonts.googleapis.com and font files from fonts.gstatic.com. Requests
happen in the admin preview and visitors’ browsers where that font is used. Google
receives the browser IP address and normal HTTP request information. Choose the 
site font or locally supplied Janna to avoid these Google requests. Service: https://
fonts.google.com/ Terms: https://policies.google.com/terms Privacy: https://policies.
google.com/privacy

#### Google Apps Script and Google Sheets (optional)

The merchant configures and deploys the bundled receiver using their own Google

account and spreadsheet. Enabling the integration sends accepted order data from
the WordPress server to the configured script.google.com/macros/s/…/exec endpoint.
New orders export only the selected business fields: Name, Phone, City, Date, Time,
Product (including quantity), IP, Device, OS, Browser, Landing URL, UTM Source and
UTM Medium. Status, Address and Notes stay blank for manual entry. The visible sheet
has exactly 16 columns in this order; a hidden _CodlinoEvents tab prevents duplicate
deliveries. Transport event/order identifiers authenticate and identify delivery.
Device/OS/browser are best-effort user-agent classifications; landing URL and UTM
fields are supplied by the browser and are not verified. Queued pre-0.7.1 orders
retain their original payload format. A private per-form receiver token authenticates
the POST. Google may serve its response at script.googleusercontent.com/macros/echo;
Codlino reads it by GET without forwarding the POST body or token. Google also receives
the server IP address and normal HTTP request information. Clicking Test sends synthetic
sample data and creates a test row, with no WooCommerce order. Real delivery and
retries run through WP-Cron. Service: https://developers.google.com/apps-script 
Terms: https://policies.google.com/terms Privacy: https://policies.google.com/privacy

#### Merchant-configured generic webhooks (optional)

Enabling a webhook sends the same order payload, without the Sheets token, to
 the
merchant’s own HTTPS endpoint. Clicking Test sends synthetic sample data. The endpoint
provider’s terms/privacy policy apply; merchants must review them and disclose relevant
processing to shoppers before enabling their integration.

#### Local storage

Orders and customer details are stored in WooCommerce. Form settings, webhook
 endpoints
and receiver tokens are stored in the WordPress database. Order metadata keeps submitted
form fields, selected attributes and delivery state; enabled delivery stores its
endpoint, selected columns, available selected tracking values and token with the
order for retries. No visitor tracking values are saved to order metadata when the
integration is disabled. Landing URLs may contain query parameters; disclose this
processing in your store privacy policy. Duplicate phone/IP guards use salted HMAC
identifiers with 24-hour expiry; request records expire after 48 hours. Orders retain
the WooCommerce customer IP and submitted details subject to the merchant’s WooCommerce
retention policy. Deactivation/removal preserves settings, forms and orders. Merchants
manage WooCommerce customer-data retention and any external spreadsheet/webhook 
copies.

### Extension points

codlino_validate_submission($error, $fields, $form_id)
 codlino_order_created($order,
$form_id) codlino_client_ip($ip) Order metadata retains _codflow_form_id, _codflow_full_name,
_codflow_request_id, _codflow_fields and optional webhook delivery metadata for 
upgrade compatibility.

### Third-party resources

Tajawal by Boutros International, copyright 2018. SIL Open Font License 1.1.
 Source:
https://github.com/google/fonts/tree/main/ofl/tajawal License: assets/fonts/tajawal/
OFL.txt The dashboard uses bundled local fonts; no external font request is made.

### PixelYourSite compatibility

Requires active PixelYourSite Free with Meta Pixel and WooCommerce InitiateCheckout/
Purchase enabled.
 Reference API inspected in PixelYourSite Free 11.4.2.1. Older
versions require a live verification. No second pixel is initialized. PixelYourSite
controls consent, status exclusions, values and CAPI. Order-received URLs use the
WooCommerce secret key. COD Purchase represents order placement. The browser repeat
guard covers the same tab session; it is not a global exactly-once guarantee. Do
not configure a second custom Purchase for this form. Verify consent, reload and
real order value in Meta Test Events before relying on ad reports. No real Meta 
delivery was tested locally.

## Screenshots

[⌊Codlino admin workspace with organized form settings and navigation.⌉⌊Codlino 
admin workspace with organized form settings and navigation.⌉[

Codlino admin workspace with organized form settings and navigation.

[⌊Organized custom fields with drag handles, mapping and required controls.⌉⌊Organized
custom fields with drag handles, mapping and required controls.⌉[

Organized custom fields with drag handles, mapping and required controls.

[⌊Built-in thank-you page with confirmation steps and customer details.⌉⌊Built-in
thank-you page with confirmation steps and customer details.⌉[

Built-in thank-you page with confirmation steps and customer details.

[⌊WooCommerce offer cards with a preselected six-pack and live prices.⌉⌊WooCommerce
offer cards with a preselected six-pack and live prices.⌉[

WooCommerce offer cards with a preselected six-pack and live prices.

## Installation

 1. Activate WooCommerce 8.2+ and enable Cash on delivery.
 2. Upload codlino-cod-order-forms-0.7.17.zip. When upgrading from CODFlow, deactivate
    CODFlow first, then install and activate Codlino.
 3. Create a published simple or variable product. Include delivery in its price; for
    physical products leave COD shipping-method restrictions empty.
 4. Open Codlino, create/edit a form, choose its product and save as published.
 5. Embed its shortcode in Elementor or a WordPress Shortcode block.
 6. Verify orders and enabled integrations on staging before live traffic.

## FAQ

### Do I need a license key or an account?

No. All features included in this plugin work without a paid license key or an
 
author account. Google integrations require the merchant’s own Google account.

### Is Elementor required?

No. Use [codlino_form id=”123″] in a WordPress Shortcode block or an Elementor
 
Shortcode widget. WooCommerce is required; Elementor is optional.

### Does disabling the webhook stop WooCommerce orders?

No. Orders are saved directly in WooCommerce. External delivery is optional.

### Does installing this plugin send data to the author?

No. Optional Google Fonts and merchant-configured integrations are described
 under
External services and privacy.

### How do I use Janna?

Install a licensed Janna webfont on your site using your theme’s font settings,

Elementor Custom Fonts or your existing font-loading setup. Name its font family
Janna or Janna LT, then choose Janna in the form appearance settings. Installing
Janna on your computer alone does not load it for website visitors. The plugin does
not redistribute Janna; an unavailable font falls back to sans-serif.

### How does the blacklist work?

Codlino > Blacklist stores exact phone numbers and IP addresses for all Codlino

forms. Phone checks require a field mapped to the order phone number; IP checks 
use the actual peer address or a trusted-proxy configuration. The normal WooCommerce
checkout is unaffected. No CIDR ranges are supported.

### How do I enable the premium thank-you page?

Edit a form, open Thank You PREMIUM and switch it ON, then save. New orders from

that form receive a built-in confirmation page authenticated by their order key.
OFF uses WooCommerce’s normal order-received page. No WordPress page creation is
needed. Previously placed orders retain their original confirmation route.

### What happens when I delete a form?

The form is sent to WordPress Trash where supported; existing WooCommerce orders

are preserved. Its shortcode no longer accepts new orders. If WordPress Trash is
disabled, WordPress’s deletion behavior applies.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Codlino – COD Order Forms for WooCommerce” is open source software. The following
people have contributed to this plugin.

Contributors

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

[Translate “Codlino – COD Order Forms for WooCommerce” into your language.](https://translate.wordpress.org/projects/wp-plugins/codlino-cod-order-forms)

### Interested in development?

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

## Changelog

#### 0.7.17

Retry only the Google confirmation GET after a timeout; never repeat the POST.
 
Expose sanitized transport error codes without response URLs or secrets.

#### 0.7.17

Google Sheets appends after the current last occupied row, including after trailing

orders are deleted or cleared. Completed event history no longer creates gaps. Pending
row reservations and completed delivery deduplication remain preserved. Redeploy
the generated Apps Script as a new Web App version to apply this change.

#### 0.7.17

Start the Purchase guard independently and wait up to 60 seconds for delayed
 PixelYourSite
initialization. Repeated bootstraps cannot wrap the API twice.

#### 0.7.17

Install the Meta native Purchase repeat guard inline immediately after PixelYourSite

instead of relying on a footer script. Also recognize native events by order identity.

#### 0.7.17

Recognize authenticated Codlino confirmations as WooCommerce order-received pages

for PixelYourSite, including root-level endpoints and custom checkout configurations.
Initialize order-received context early, reject conflicting native/custom secret
keys.

#### 0.7.17

PixelYourSite Free integration: initiate checkout on form interaction through its
consent-aware API.
 Keep the Codlino confirmation design on the standard keyed WooCommerce
order-received URL so PixelYourSite generates its native Purchase event from the
saved order. Suppress repeat native Meta Purchase browser events in the same tab
session.

#### 0.7.17

Bundle Tajawal Regular, Medium and Bold locally for consistent dashboard typography.

Fonts are distributed under SIL OFL 1.1; the license is included in assets/fonts/
tajawal/OFL.txt.

#### 0.7.17

 * Disabled variation UI orders the server-selected child directly instead of requiring
   hidden parent attribute choices.

#### 0.7.17

 * Normalize numeric WooCommerce attribute values and sparse option lists when variations
   are OFF.

#### 0.7.17

 * Toggle variation choices on/off while preserving saved offers.
 * Disabled choices use the featured or first available variation, validated server-
   side.

#### 0.7.17

 * Download portable form JSON and import it as a new draft on another site.
 * Preserve fields, appearance and offer customizations without integration credentials.

#### 0.7.17

 * Per-form offer names, savings, right-to-left order and featured default selection.

#### 0.7.17

 * Order offers from the right, highlight green prices and reduce image size.
 * Show actual WooCommerce regular-to-sale savings for discounted variations.

#### 0.7.17

 * Show variation images inside offer cards and preselect the middle offer.
 * Preserve explicit variation selection with server-side parent, attributes and
   stock validation.

#### 0.7.17

 * Automatically refresh generated Google Sheets script when heading language changes.
 * WooCommerce variation offer cards with live prices and a preselected six-pack
   offer.

#### 0.7.17

 * Immediate emerald export checkboxes, Arabic/French/English Sheet headings, animated
   connection feedback, refined dashboard spacing and navigation.

#### 0.7.1

 * Compact quantity control before checkout, live quantity prices, redesigned confirmation
   page, selected 16-column Sheets export, and Arabic/French/English interface selector.

#### 0.7.0

New form management, field drag ordering, preloaded product search, coordinated

controls, quantity arrows, optional COD badge, site-wide blacklist and keyed premium
order confirmation. Merge price visibility into general settings.

#### 0.6.1

Refined admin and storefront styling with consistent emerald, ivory and ink
 palettes,
responsive spacing, clear focus states and coordinated presets. Existing merchant
color settings remain preserved.

#### 0.6.0

Rename to Codlino – COD Order Forms for WooCommerce with text domain
 codlino-cod-
order-forms. Add allowlisted, typed request sanitizers and explicit permission/nonce
checks at admin save endpoints. Replace manual core admin header/footer loading 
with redirects and per-user admin validation notices. Retain persisted identifiers
and legacy shortcode/cron compatibility.

#### 0.5.6

Constrain the admin menu icon to 20px on every WordPress admin screen.

#### 0.5.5

Selected Codlino icon in the admin menu, dashboard header and information section.

Soft section backgrounds and clearer navigation colors.

#### 0.5.4

Admin dashboard refresh: emerald brand header, distinct section accents, clearer

inputs, cards, focus states and responsive navigation. Frontend styling unchanged.

#### 0.5.3

Set the enqueued Google font resource version and place the documented Apps Script

response-host analyzer exception at the validated host literal. No delivery or security
behavior changes.

#### 0.5.2

Plugin Check fixes: translator comments, prefixed template variables, safe field

attributes, WordPress font enqueue/late printing, sanitized server input and prepared
SQL identifiers. Document narrowly scoped analyzer exceptions for nonce-verified
delegation, read-only navigation and atomic uncached guard queries. Google Sheets
acknowledgment handling is unchanged and documented as service communication. Tested
up to reflects the merchant-reported WordPress 7.1 site.

#### 0.5.1

Publication preparation: document optional external services and local storage,

clarify account requirements, and correct the 0.4.1 changelog version.

#### 0.5.0

Save in place and advance through setup sections. Empty forms save as drafts with

an Arabic popup. WooCommerce variations with colors/images/sizes and optional quantity.
Server-authoritative variation prices, eligibility and stock. Product names and 
quantities appear in the selected Product column.

#### Can I change the interface language?

Choose Arabic, French or English in the Codlino dashboard and click Apply.
 This
store-wide choice covers Codlino administration, built-in customer messages and 
the thank-you page. It does not change WordPress language, product content or merchant-
authored form titles, labels and button texts. Janna remains supplied by the merchant
site; no Janna font file is bundled.

#### 0.4.1

Light dashboard refresh: white surfaces, quiet green accent, numbered sections,

clearer text and controls, mobile navigation and refined frontend presentation.

#### 0.4.0

Built-in Google Sheets setup guide and Apps Script generator, private per-form
 
receiver token, verified Google response handling and admin webhook test.

#### 0.3.0

Fields from scratch, per-field required checkbox and customer role mapping.
 Three
templates, font selection, button size/gap/motion and Moroccan phone validation.

#### 0.2.0

Arabic dashboard and branding, custom field builder, configurable colors,
 optional
HTTPS webhook, optional 24-hour phone/IP duplicate blocking.

#### 0.1.1

RTL layout, hidden required markers, optional fields and price visibility.

#### 0.1.0

Initial MVP.

## Meta

 *  Version **0.7.17**
 *  Last updated **6 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.5 or higher **
 *  Tested up to **7.1.3**
 *  PHP version ** 7.4 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/codlino-cod-order-forms/)
 * Tags
 * [cash on delivery](https://srd.wordpress.org/plugins/tags/cash-on-delivery/)[elementor](https://srd.wordpress.org/plugins/tags/elementor/)
   [forms](https://srd.wordpress.org/plugins/tags/forms/)[woocommerce](https://srd.wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://srd.wordpress.org/plugins/codlino-cod-order-forms/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/codlino-cod-order-forms/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/codlino-cod-order-forms/reviews/)

## Contributors

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

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/codlino-cod-order-forms/)