Skip to main content

CUSTOMCART

Shopping Cart for Joomla + YOOtheme Pro

Documentation

Changelog: v1.1.1 - January 8, 2026

CustomCart Changelog

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