Skip to main content

CUSTOMCART

Shopping Cart for Joomla + YOOtheme Pro

Documentation

Changelog: v1.4.1 - September 6, 2026

CustomCart Changelog

Version 1.4.1

September 6, 2026
  • Fix Fixed the dashboard reporting "Unable to check for updates (HTTP )". The version check read a response property that was removed in the HTTP library Joomla 6 ships, so the status never arrived. It now works on both Joomla 5.4 and Joomla 6.
  • Fix A failed update check now names the actual HTTP status and records the reason in the Joomla log instead of failing silently.
  • Fix Fixed the in-app changelog running all entries in a category together on one line; each entry is now listed separately.
  • Fix The in-app changelog now shows every category Joomla defines. Changes, security notes, language updates and notes were previously hidden.
  • Fix Fixed the cart tracking cookie losing its path, domain, secure and HTTP-only flags on Joomla 6, where Joomla removed support for the older way of setting cookies.
  • Fix Removed an unused PDF export routine that referred to a library Joomla no longer ships.

Version 1.4.0

September 5, 2026
  • Addition Refund sync with Stripe: refunds you issue in the Stripe Dashboard now flow back into the order automatically — the refunded amount, payment status, order status and order history all update on their own. A refund that fails or is reversed at Stripe puts the order back to Paid.
  • Addition Chargeback alerts: if a customer disputes a payment, the order shows a red "Disputed" tag in every staff order list (never on customer pages) and a Dispute card with the disputed amount, reason, status, evidence deadline with a day countdown, and a button that opens the dispute in Stripe. You are emailed when a dispute opens and again when it is won or lost.
  • Addition Evidence Pack: a printable, self-contained record of the order for submitting to Stripe — dispute details, customer and addresses, items with options and uploaded files, amounts and payments, fulfillment, carrier, tracking and delivery status, checkout agreement, the captured digital signature and the full order history.
  • Addition New "Send Dispute Alerts (Admins)" setting on the Emails tab, on by default.
  • Addition Seven new Stripe webhook events to add for refund and dispute tracking. The list is shown in Settings, the Setup wizard and WEBHOOK_SETUP.md. Nothing changes until you add them in Stripe.
  • Addition The digital signature pad now works on the full-page cart, so customers can complete checkout from that page.
  • Addition All 52 new text strings are translated into the 14 bundled languages.
  • Change Prices are now set by the server. Item prices, option prices, quantity tiers and quantity limits are verified and recalculated on the server at checkout, so a shopper can no longer change a price in their browser or pass off an expensive option as a cheap one.
  • Change The front-end Admin Orders page now requires Manager, Administrator or Super User when no user group is set on the menu item. Previously any logged-in user could view every order.
  • Change Running more than one store on the same Stripe account now works automatically — each store stamps its own checkouts, so orders can no longer cross over between sites.
  • Change Admin refunds and Stripe refunds now follow the same rules: same statuses, same history entries, and open payment links are voided on a full refund.
  • Change Backups no longer contain your Stripe, Turnstile, Carto, Google Sheets or download ID secrets, and admin logs moved out of publicly reachable folders.
  • Change Updated to Stripe API version 2026-08-26.dahlia, with support for delayed payment methods and large orders.
  • Change EasyPost updated: current package list, stricter address verification, automatic retry when rate requests are throttled, and clearer error messages.
  • Change Google and Mailchimp connections hardened, including a reconnect notice if Google revokes access and more accurate marketing opt-in.
  • Change Now requires Joomla 5.4 or newer, and is compatible with Joomla 6 and PHP 8.5.
  • Change Wording and consistency pass across every setting, email and document. "Local Dropoff" settings are now labelled "Local Delivery" to match what customers see.
  • Change Database update 2.9.8 adds refund and dispute tracking, and repairs itself automatically on sites where the update did not run.
  • Fix The digital signature is no longer lost when the cart changes, and an old leftover signature no longer blocks checkout.
  • Fix In responsive display mode, the mobile cart now shows pickup and delivery details and has a working signature pad. Choices made in one view carry over to the other.
  • Fix The full-page cart's pickup and delivery date/time picker and location list now work the same as the modal cart.
  • Fix Tips are no longer counted in the order subtotal, so subtotal plus shipping, tax and tip minus discount equals the total again.
  • Fix Restoring a backup no longer wipes your orders. Restore is now all-or-nothing and includes payment history and shipping label history.
  • Fix Opening a shared order link no longer empties the visitor's shopping cart.
  • Fix Confirmation emails sent from the front-end admin page now include items, statuses, store details and the real shipping status.
  • Fix Shipping labels created and orders deleted from the front-end admin page now behave the same as in the backend, including label history and voiding open payment links.
  • Fix The "send customer email" and "send admin email" switches are now honored for payment received emails.
  • Fix Shipping notification emails no longer show blank item names and zero prices.
  • Fix The customer order page no longer shows the raw {customcart_full_customer_layout} text when shortcodes are turned off in Settings.
  • Fix Front-end account and full-page cart pages now show your configured currency instead of always showing a dollar sign.
  • Fix Opening a deleted or missing order in the admin now shows "Order not found" instead of an error page.
  • Fix Saving or resetting email templates no longer fails with an error.
  • Fix Marketing consent from Stripe is recorded correctly, so customers are no longer all marked as opted in, and accepting terms is no longer treated as a newsletter signup.
  • Fix Stores connected to Google Sheets no longer receive every order twice.
  • Fix Several Stripe checkout errors fixed, including a tax rate conflict, the cancel return with "empty cart on cancel", and the order data used by search engines.
  • Fix Product element: hidden fields are no longer added to the cart, pricing tiers only apply when the tier switch is on, and minimum quantity is enforced at checkout instead of only on the page.
  • Fix Uninstalling now removes every CustomCart table, and upgrades no longer fail on MySQL 8.
  • Fix Fresh installs now include the Carto prompt file and the default customer email template.
  • Fix Customer-supplied text is escaped everywhere it is displayed, and CSV and Excel exports are protected against spreadsheet formula injection.

Version 1.3.0

September 4, 2026
  • Addition Request Payment: add items or change shipping, tax or discount on an order that has already been paid, then email the customer a secure Stripe link for only the outstanding balance. The payment attaches to the same order and the order returns to Paid automatically.
  • Addition Payment ledger: every payment on an order is now recorded — the original checkout, invoices, balance requests and manual "marked as paid" entries — with the amount, date and status. Existing paid orders are filled in automatically on update.
  • Addition New "Partially Paid" payment status (amber). A paid order whose total grows after an edit shows Paid and Balance Due lines, and flips back if you undo the change.
  • Addition Order lists and the dashboard show a "Balance Due $X" tag under the total while money is owed.
  • Addition The customer order page shows Paid and Balance Due, a "Pay Balance" button while a request is open, and a payment history once more than one payment has been made.
  • Addition Payment Received emails: a customer receipt with a View Order button, plus a store notice, sent for balance payments instead of a duplicate order confirmation.
  • Addition Open payment links are voided automatically when an order is marked paid by hand, fully refunded, or edited so the balance changes, so a customer can never pay an outdated amount.
  • Addition Random order numbers: new Order Number Format setting (Sequential or Random) with a code length of 5 to 12 characters. Random numbers look like UVM-7K3Q9D, skip look-alike characters, and are checked against existing orders. Existing orders keep their numbers and switching back to Sequential is safe.
  • Addition My Packages: define your own mailers and boxes with a name, dimensions and optional empty weight. They appear at the top of the label wizard with the dimensions already filled in.
  • Addition Hide carrier packages you never use, and set a Default Package that is pre-selected whenever the label wizard opens.
  • Addition Weight helper in both label wizards: the weight field accepts decimals, is pre-filled from your default weight, and shows a live reference in pounds, ounces and kilograms. A preset's empty package weight is added for you, and the order's items are listed on the weight step.
  • Addition All 45 new text strings are translated in every bundled language.
  • Change Order lists everywhere now show the amount after refunds — backend orders, front-end admin orders and cards, dashboard, admin module and the customer's account views — with the original total struck through and a red Refunded or Partially Refunded tag. Orders without refunds look exactly as before.
  • Change Both label wizards now share one package list, and the front-end wizard uses the same grouped dropdown as the backend instead of fixed Letter, Flat and Parcel buttons.
  • Change Removed the artificial delay when opening the shipping label wizard.
  • Change Refunds are now allowed on partially paid orders, and "Full refund" means everything the customer paid across all payments.
  • Fix Fixed checkout failing with a "URL must be 2048 characters or less" error on products that use a generated preview image. Previews are now saved to your site and the customer still sees them at checkout and on the order.
  • Fix A used invoice or balance payment link is cleared from the order once the payment completes, so it is no longer offered on the order pages.
  • Fix A repeated Stripe notification can no longer create a duplicate order, revive a refunded order, or reset a partially refunded order's payment status.
  • Fix Orders created manually and later paid through an invoice link now store the real Stripe payment ID, which is needed for refunds.
  • Fix Discount errors while creating an invoice link are now reported instead of silently sending a link without the discount.
  • Fix Fixed the Total column styling on the front-end admin orders list.

Version 1.2.0

August 20, 2026
  • Addition Send Invoice: Create draft or manual orders and email the customer a secure Stripe payment link, with a custom message, invoice history tracking, and the ability to resend with a fresh link.
  • Addition Pay Now button on the customer order page for unpaid invoiced orders.
  • Addition Payment link management: Disable a previously sent payment link so it can no longer be used.
  • Addition Invoices now support discounts, and manual orders can auto-calculate tax with a configurable rate and taxable states list.
  • Addition Multiple shipping labels per order: Create, download, track, and delete separate labels for split shipments, reprints, or reships.
  • Addition Print status tracking: A checkbox on each order line item cycles through printing in process (yellow), completed (green), and issue (red) — saved per item, with an option to disable the feature in settings.
  • Addition Private admin notes on each order line item with autosave — visible only to admins, never to customers.
  • Addition Partial refunds: Issue full or partial Stripe refunds from a new refund modal (permission-controlled), tracked in the order notes, order history, and payment status.
  • Addition Refund amounts and net payment now display in the Order Summary.
  • Addition File uploads on order item options: Attach art files (images, ZIP, PDF, AI, and more) to any line item option, with inline image previews.
  • Addition Image picker on Create Order and order item rows for quickly assigning product images.
  • Addition Unavailable state for product field options, including crossed-out color swatches and an optional tooltip.
  • Addition Quick filter toggles on the orders list (All, Not Paid, Not Shipped, Not Completed).
  • Addition Login Takeover setting (disabled by default): CustomCart only replaces Joomla's login pages when explicitly enabled. CustomCart login menu items always work when visited directly.
  • Addition The CustomCart login page now uses your Brand Colors settings and displays the user's Gravatar when available.
  • Addition The Webhook Configuration panel in Options now shows your site's actual webhook URL with a copy button, the full list of Stripe events to listen for, and the recommended API version.
  • Change Upgraded the Stripe API to version 2026-07-29.dahlia across all payment, refund, and checkout calls.
  • Change Print status and private item notes are also available in the front-end admin orders view.
  • Change Joomla multi-factor authentication pages keep their native design unless Login Takeover is enabled.
  • Change Added CSRF protection to the login, logout, and password reset forms, and excluded login/logout pages from page caches (JCH Optimize and LiteSpeed safe).
  • Change Translated all new features and previously untranslated strings across all 16 supported languages, including the permission names shown in the Permissions tab.
  • Fix Fixed checkout failing on large orders with many different products (Stripe metadata limit) — big carts now check out normally with all product options preserved.
  • Fix Fixed duplicate order numbers that could occur after upgrading the plugin.
  • Fix Fixed a fatal error after a customer paid an invoice, and the "Order Not Found" page shown after successful invoice payments.
  • Fix Invoice payments are now confirmed directly with Stripe when the customer returns to the site, so orders are marked paid even if the webhook is delayed.
  • Fix Fixed a Stripe error that delayed webhook processing on invoice payments with discounts.
  • Fix Fixed the Joomla login module and two-factor authentication being broken by the login redirect — login form submissions and logout links are never intercepted.
  • Fix Fixed logout links redirecting to a redundant page, and guarded against logout redirect loops.
  • Fix Customer-uploaded images on order options now preview inline instead of downloading when clicked.
  • Fix Fixed the refund window not opening on paid orders.
  • Fix Fixed invisible text in the Send Invoice From field in dark mode.
  • Fix Fixed a shipping label error on the customer order page.

Version 1.1.2

January 30, 2026
  • Fix Resolved an issue where order items would show "no items" in emails, order status pages, and admin views, even though the items appeared correctly in Stripe
  • Fix Improved the reliability of fetching order details from Stripe during checkout completion
  • Fix Images added in YOOtheme Pro builder now display correctly in the shopping cart
  • Fix Order confirmation emails now correctly display product images when using relative paths

Version 1.1.1

January 8, 2026
  • Addition Edit Order Summary: Admins can now manually edit shipping, tax, and discount amounts on orders
  • Addition Edit Order Summary: Available in both backend admin and frontend admin orders views
  • Addition Edit Order Summary: Enable via CustomCart Options → "Allow Order Summary Editing"
  • Addition Edit Order Summary: All changes logged to order history
  • Fix Order total calculation now correctly includes tip and discount amounts
  • Fix Order items not being saved to database after Stripe checkout
  • Fix Customer and admin email notifications not including order details
  • Fix Added fallback mechanism for retrieving line items from Stripe API
  • Fix Stripe API version to 2025-12-15.clover (latest)

Version 1.1.0

January 2, 2026
  • Addition Admin dashboard changelog viewer
  • Addition Quick Stats section with date filtering
  • Addition Lifetime order and customer counters
  • Addition Login, Profile, and Register menu items
  • Addition MFA and Passkey authentication support
  • Addition Logout menu item type
  • Addition Guest order linking to accounts
  • Addition Resend Shipping Email action
  • Addition Email logging system
  • Addition Order summary in email templates
  • Addition Custom buttons on profile page
  • Addition Back to Profile button on My Orders
  • Addition Gravatar avatars with initials fallback
  • Addition YOOtheme Pro dynamic content sources
  • Addition Frontend order view layout options
  • Addition Page-specific Turnstile options
  • Addition 3,000+ translation strings across 14 languages
  • Change Dashboard layout with boxed stats sections
  • Change MFA uses modal interface
  • Change Security hardening
  • Change Full Joomla 5/6 and PHP 8.1+ compatibility
  • Change Email as username for registration
  • Change EasyPost status formatting improved
  • Change Joomla login URLs redirect to CustomCart
  • Change Frontend toolbar matches backend style
  • Fix Dashboard stats calculations
  • Fix Order emails not sending
  • Fix Order items missing from orders
  • Fix Order total and discount display
  • Fix Discount row styling consistency
  • Fix Shipping label price discrepancy
  • Fix Email shipping address and promo codes
  • Fix MFA modal and passkey handling
  • Fix EasyPost webhook status updates
  • Fix HTML content in YOOtheme elements
  • Fix Language file duplicates and missing keys
  • Fix Minor CSRF and security vulnerabilities

Version 1.0.7

December 19, 2025
  • Addition Media Selector for Email Logo: The email logo setting now uses Joomla's media manager instead of a URL text field. You can browse your media library and select images directly - no more copying and pasting URLs
  • Fix CustomCart now properly appears in Joomla's "Update Sites" page (System → Update → Update Sites), allowing you to receive update notifications when new versions are available.

Version 1.0.6

December 16, 2025
  • Addition Updated User-Agent strings for Stripe/EasyPost API calls
  • Fix Mobile checkout/clear buttons not working in all situations
  • Fix Double clear cart prompt on mobile
  • Fix Responsive mode terms checkbox - Now checks both modal and offcanvas checkbox variants
  • Fix Cart images too large on mobile - Reduced from 120px to 80px on small screens

Version 1.0.5

December 15, 2025
  • Addition Emergency webhook logging for easier troubleshooting
  • Addition Better error tracking when processing payments
  • Removed Removed outdated Stripe API version that caused webhook failures
  • Fix Fixed orders not being created when completing checkout
  • Fix Fixed order confirmation emails not sending after payment
  • Fix Fixed compatibility issue with newer Stripe accounts
  • Fix Fixed price formatting in order notification emails

Version 1.0.4

December 11, 2025
  • Addition Stronger protection against spam and automated attacks
  • Addition Improved security on all cart communications
  • Addition Better validation when editing orders in the admin panel
  • Addition Faster detection when external payment services are slow or unavailable
  • Removed Removed outdated code that was causing color picker settings to hide
  • Fix Clicking on products in the YOOtheme page builder now works properly
  • Fix Product images with spaces in the filename now display correctly everywhere
  • Fix Color picker options now show the hex color field as expected
  • Fix Resolved a compatibility warning with PHP 8
  • Fix Email template preview now loads more reliably

Version 1.0.3

December 4, 2025
  • Addition Introducing Carto - the CustomCart AI Assistant in the back-end of CustomCart
  • Fix Updated CC Product Element image and panel settings with more options and better layout
  • Fix Updated cart fulfillment layout and shipping prices

Version 1.0.2

December 3, 2025
  • Change Added uk-form-small styling to all cart fulfillment dropdowns
  • Fix Image Placement setting now correctly hidden when using 2 or 3 column layouts
  • Fix Height Expand panel setting now properly fills available column space
  • Fix Box Shadow & Box Decoration no longer get cut off by container margins
  • Fix Pricing Tiers now correctly disable quantity controls in the cart
  • Fix Dropdown order options now display in correct order (1st, 2nd, 3rd, 4th, 5th)

Version 1.0.1

December 2, 2025
  • Addition Cache refresh function when a language is changed
  • Addition Option to change the alert box style on the cart when additional shipping methods are used
  • Change Additional language strings added and translated for the front-end and back-end

Version 1.0.0

December 1, 2025
  • Addition CustomCart - First Release

1. Getting Started

What is CustomCart?

CustomCart is a complete e-commerce solution for Joomla 5/6 that provides shopping cart functionality with integrated Stripe payment processing, comprehensive order management, EasyPost shipping labels, and a custom YOOtheme Pro product builder all-in-one element. Build beautiful product pages and manage orders seamlessly from your Joomla admin.

System Requirements

  • Joomla: 5.1+ (Recommended: 5.4+ or 6+)
  • PHP: 8.1+ (Recommended: 8.4+)
  • MySQL: 5.7+ or MariaDB 10.3+
  • YOOtheme Pro: 4+ (Recommended: 4.5+)
  • Web Server: Apache 2.4+ or Nginx 1.18+
  • SSL/HTTPS: Required for Stripe
  • PHP Extensions: cURL, JSON, Session, MySQLi/PDO, OpenSSL, mbstring, fileinfo
  • Stripe Account: Required (test mode OK for development)
  • EasyPost Account: Optional (for shipping labels)

Package Contents

CustomCart consists of three extensions that install together as a single package:

  • Component (com_customcart): Admin dashboard, order management, email templates, and all configuration settings
  • System Plugin (plg_system_customcart): Frontend shopping cart functionality, Stripe integration, and AJAX handlers
  • YOOtheme Plugin (plg_system_yootheme_customcart): All-in-One custom element for building products

Download the package file in your account: pkg_customcart-vX.X.X.zip

Architecture Overview

CustomCart uses a centralized configuration system where ALL settings are stored in the component. The plugins automatically read these settings - no plugin configuration needed!

  • Session-based Cart: Fast, secure server-side storage
  • Three-Extension Architecture: Component for admin, plugins for functionality
  • Stripe API Integration: Direct cURL implementation (no SDK dependency)
  • InnoDB Database: Three tables with foreign key constraints
  • Multi-language Support: 14+ languages included

Pre-Installation Checklist

Before installing CustomCart:

  • Verify Joomla 5.0+ is installed and running
  • Confirm PHP 8.1+ with all required extensions enabled
  • Install and activate YOOtheme Pro
  • Configure SSL certificate (HTTPS required)
  • Backup your site and database
  • Create a Stripe account (test mode is fine for setup)

2. Installation

Fresh Installation

Follow these steps for a fresh CustomCart installation:

  • Login to back-end area of your Joomla CMS site using a super administrator account
  • Navigate to System → Extensions → Install → Upload Package File
  • Drag and drop the file or click the green button to browse. The file name will be: pkg_customcart-vX.X.X.zip
  • After installation completes, you should see: "Custom Cart has been successfully installed!"
  • The package automatically installs all three extensions (component + 2 plugins)

Upgrading from Previous Version

IMPORTANT: If upgrading from a previous version, you must perform a complete uninstall first due to architectural changes.

  • Backup your Stripe API keys from component settings
  • Navigate to System → Manage → Extensions
  • Search for "Custom Cart" and uninstall ALL three extensions:
    • Custom Cart Component (com_customcart)
    • System - Custom Shopping Cart (plg_system_customcart)
    • System - YOOtheme Custom Cart (plg_system_yootheme_customcart)
  • Go to System → Clear Cache → Check All → Delete
  • Proceed with fresh installation steps above

Post-Installation Verification

After installation, verify everything is configured correctly:

  • Go to System → Plugins and find "System - Custom Shopping Cart"
  • Click to open it and verify you see ONLY ONE TAB called "Plugin" with a blue info box
  • If you see multiple tabs (Basic, Stripe, etc.), the installation failed - repeat uninstall steps
  • Ensure both plugins are Enabled:
    • System - Custom Shopping Cart
    • System - YOOtheme Custom Cart
  • Go to Components → Custom Cart to verify the component loads

Create Upload Directory

Create the upload directory for product file uploads:

  • Directory: images/uploads/cart/
  • Permissions: 755 (writable)
  • The plugin automatically creates a .htaccess file to prevent script execution

Using SSH/FTP:

mkdir -p /path/to/joomla/images/uploads/cart
chmod 755 /path/to/joomla/images/uploads/cart

Uninstall CustomCart

To remove CustomCart completely:

  • Navigate to System → Manage → Extensions → Manage
  • Search for "Custom Cart"
  • Select the checkbox next to the Custom Cart Package
  • Click the dropdown in the Actions menu and choose Uninstall
  • This will remove all three extensions automatically

Warning: Uninstalling will delete all orders, settings, and database tables. Ensure you have a backup if needed.


3. Configuration

Accessing Settings

All CustomCart settings are centralized in the component Options panel:

  • Path 1: Components → Custom Cart → Options button (toolbar)
  • Path 2: System → Global Configuration → Custom Cart

The component stores all configuration - plugins read these settings automatically. No plugin configuration needed!

Basic Settings Tab

Currency
Default currency for transactions (USD, EUR, GBP, etc.)
Default: USD
Order Number Prefix
Prefix for order numbers (e.g., ORDER-001)
Default: ORDER
Upload Max Size
Maximum file upload size in MB
Default: 22 MB
Allowed Extensions
Comma-separated list of allowed file types
Default: jpg,jpeg,png,tif,tiff,webp
Success URL
Redirect URL after successful payment
Default: Empty
Cancel URL
Redirect URL if payment is cancelled
Default: Empty
Debug Mode
Enable detailed logging to administrator/logs/customcart.log
Default: No

Cart Display Tab

Cart Position
Position of floating cart icon (Top Right, Top Left, Bottom Right, Bottom Left)
Default: Top Right
Cart Display Mode
How cart opens: Modal, Offcanvas, or Responsive (auto-switches on mobile)
Default: Modal
Cart Button Text
Text on checkout button
Default: Checkout
Auto Open Cart
Automatically open cart when item is added
Default: Yes
Show Item Images
Display product images in cart
Default: Yes
Empty Cart Message
Message shown when cart has no items
Default: Your cart is empty
Require Terms
Show terms & conditions checkbox before checkout
Default: No

Stripe Integration Tab

CRITICAL: Configure your Stripe API keys to enable payment processing.

Stripe Mode
Switch between Test and Live mode. Both sets of keys are saved separately.
Default: Test
Test Publishable Key
Your Stripe test publishable key (starts with pk_test_)
Required for test mode
Test Secret Key
Your Stripe test secret key (starts with sk_test_)
Required for test mode
Test Webhook Secret
Webhook signing secret for test mode (starts with whsec_)
Required for order creation
Live Keys
Same fields for live mode. CAUTION: Live mode processes real payments!
Use only when ready for production
Allow Promotion Codes
Enable discount codes at checkout
Default: No

Note: You must also configure webhooks in your Stripe Dashboard. See Troubleshooting section for webhook setup guide.

Checkout Options Tab

Collect Billing Address
Address collection at checkout (Required, Optional, Auto)
Default: Required
Collect Shipping Address
Shipping address collection (Required, Optional)
Default: Optional
Collect Phone Number
Request customer phone number
Default: No
Payment Methods
Allowed payment methods (multi-select): Card, PayPal, Klarna, and more
Default: Card
Allowed Countries
Restrict shipping to specific countries
Default: All countries

Email Tab

Enable Customer Email
Send order confirmation to customers
Default: Yes
Enable Admin Email
Send new order notification to admin
Default: Yes
Admin Email Address
Where to send admin notifications
Default: Site admin email
From Email / From Name
Sender information for emails
Default: Site settings
Email Logo URL
Logo image URL for email header
Default: Empty

Edit email templates at: Components → Custom Cart → Emails

Available placeholders: {order_number}, {customer_name}, {customer_email}, {order_total}, {order_items}, {billing_address}, {shipping_address}, {tracking_code}

EasyPost Shipping Tab

Optional: Only configure if you need shipping label creation via EasyPost.

EasyPost Mode
Test or Production mode
Default: Test
Test/Production API Keys
Your EasyPost API keys for each mode
Required for shipping labels
Ship-From Address
Your default shipping origin (company name, address, city, state, ZIP, country, phone)
Required for label creation
Default Weight
Default package weight in ounces
Default: 16 oz
Default Package
Choose from 16 predefined package types or use custom dimensions
Default: Custom

4. Features & Usage

YOOtheme Pro Element

CustomCart provides a custom All-in-One YOOtheme Pro element for building product pages. The element is found in the Modern Designs element group.

  • CC Product: Main product container with title, price, image, quantity selector, and add-to-cart button
  • CC Product Field: Custom input fields for product personalization (10+ field types)
  • CC Product Option: Price variations and options (size, color, etc.)

Simply drag the element into your YOOtheme Pro layout to create product pages.

CC Product Element

The CC Product element is the parent container for product displays:

Product ID
Unique identifier for the product (required)
Example: poster-001
Product Name
Product title displayed to customers
Example: Custom Poster
Base Price
Starting price without options or quantity discounts
Example: 25.00
Product Image
Main product image (supports zoom on hover)
Recommended: High resolution
Description
Rich text editor for product details
Supports HTML formatting
Quantity Pricing (9 Tiers)
Set different prices based on quantity ranges
Example: 1-5 = $25, 6-10 = $22, 11+ = $20
Add to Cart Button
Customizable text, icon, and style
Default: Add to Cart

Adding Product Fields

Add custom input fields to your products (is a child of CC Product element):

Available Field Types:

  • Text Input (with min/max length validation)
  • Text Area (for longer text)
  • Dropdown (single choice)
  • Checkboxes (yes/no or agreement)
  • Radio Buttons (visual selection)
  • Toggle (yes/no or agreement)
  • Color Picker (provide color swatch options)
  • Date/Time Picker (collect time and date)
  • Upload File (images, documents with size/type validation)
  • Display Text (Read-only html or plain text)
  • Sublayout (Add any additional elements)

Conditional Visibility: Show/hide fields based on other field values. Example: Show "Frame Color" field only if "Add Frame" is checked.

Product Options

Add options that modify the product price (is a child of CC Product element):

Option Group
Group name (e.g., "Size", "Frame Type")
Example: Size
Option Values
Add multiple values with price modifiers
Example: Small (+$0), Medium (+$5), Large (+$10)
Display Mode
Radio buttons or select dropdown
Default: Radio buttons

Example Setup:
Base Price: $25
+ Medium Size: +$5
+ Premium Frame: +$50
= Total: $80

Admin Dashboard

Access the admin dashboard at: Components → Custom Cart → Dashboard

Features:

  • Revenue charts (daily, weekly, monthly)
  • Order count statistics
  • Recent orders widget
  • Quick status overview
  • Date range filtering

Order Management

Manage orders at: Components → Custom Cart → Orders

List View Features:

  • Column visibility toggle (saved per session)
  • Advanced filtering (status, payment status, date range)
  • Search by order number, customer, email
  • Sort by any column
  • Bulk status updates
  • Export to PDF via browser print

Single Order View:

  • Edit all fields (customer info, addresses, products, status, notes)
  • Link order to Joomla user account
  • Process full refunds via Stripe API
  • Create shipping labels with EasyPost (4-step wizard)
  • View complete order history (audit log)

Shipping Labels

Create shipping labels directly from order edit screen:

4-Step Process:

  • Select Package: Choose from 16 predefined packages or enter custom dimensions (L×W×H)
  • Enter Weight: Weight in ounces (auto-calculated for common items)
  • Verify Addresses: Ship-from (settings) and Ship-to (order) with EasyPost validation
  • Select Rate: Compare rates from multiple carriers, select, and purchase label

After purchase, tracking code and label PDF URL are automatically saved to the order.


5. Troubleshooting / FAQs

Cart icon not visible on frontend

Checklist:

  • Verify system plugin is enabled: System → Plugins → System - Custom Shopping Cart
  • Clear Joomla cache: System → Clear Cache
  • Clear browser cache (Ctrl+Shift+Delete)
  • Check browser console for JavaScript errors (F12)
  • Verify YOOtheme Pro is active and UIKit is loaded
  • Check cart position setting in component Options

Test in Console:
Open browser console (F12) and type: console.log(window.CustomCart);
Should show object, not undefined.

Items not adding to cart

Debug Steps:

  • Open browser console (F12)
  • Enable Debug Mode: Component Options → Basic → Debug: Yes
  • Try adding item again
  • Check console for error messages
  • Check Network tab for failed AJAX requests
  • Review logs at: administrator/logs/customcart.log

Common Causes:

  • CSRF token missing (clear browser cache)
  • Session issues (check PHP session configuration)
  • Invalid product data (missing ID or price)
  • Plugin disabled

How do I setup Stripe webhooks?

CRITICAL SETUP: Webhooks are required for orders to be created. Without proper webhook configuration, payments will succeed but orders won't appear in your admin.

Step 1: Get Webhook URL

https://yoursite.com/index.php?option=com_ajax&plugin=customcart&task=webhook

Step 2: Configure in Stripe Dashboard

  • Login to Stripe Dashboard
  • Go to Developers → Webhooks
  • Click Add endpoint
  • Paste your webhook URL
  • Select events:
    • checkout.session.completed
    • checkout.session.async_payment_succeeded
    • checkout.session.async_payment_failed
  • Click Add endpoint

Step 3: Copy Webhook Secret

  • Click on your webhook endpoint
  • Find "Signing secret" and click "Reveal"
  • Copy the secret (starts with whsec_)
  • Paste into: Component Options → Stripe Integration → Webhook Secret

Step 4: Test Webhook

  • Place a test order in your shop and you will see the order in the back-end if setup correctly as well as get an email (if emails are setup).

Orders not appearing after payment

Cause: Webhook not configured properly or webhook secret is incorrect.

Debug Steps:

  • Verify webhook is configured in Stripe Dashboard (see above)
  • Confirm webhook secret matches in component Options
  • Check webhook delivery in Stripe Dashboard → Webhooks → View events
  • Enable Debug Mode and check: administrator/logs/customcart.log
  • Look for webhook errors in logs

Common Errors:

  • "Invalid signature": Wrong webhook secret
  • "Session not found": Stripe API key mismatch (test vs live)
  • "Database error": Check table structure

File upload fails

Checklist:

  • Upload directory exists: images/uploads/cart/
  • Directory is writable (755 permissions)
  • File size within limits (check component Options)
  • File type is allowed (check component Options)
  • PHP upload limits not exceeded

Create Upload Directory:

mkdir -p /path/to/joomla/images/uploads/cart
chmod 755 /path/to/joomla/images/uploads/cart

Check PHP Limits (php.ini):

upload_max_filesize = 32M
post_max_size = 64M
max_execution_time = 300
memory_limit = 256M

Plugin shows multiple settings tabs

Problem: Plugin shows multiple settings tabs instead of single info tab

Cause: Old plugin configuration not properly removed during upgrade

Solution:

  • Go to System → Manage → Extensions
  • Uninstall ALL three CustomCart extensions
  • Clear Joomla cache: System → Clear Cache
  • Clear browser cache (Ctrl+Shift+Delete)
  • Reinstall package
  • Verify plugin now shows single "Plugin" tab with blue info box

Josh Gilson

Need Help?

Something not working or quick question?
Email me: This email address is being protected from spambots. You need JavaScript enabled to view it.

Join our community for quick help on our
Discord Server