Troubleshooting
Install errors
Section titled “Install errors”Class "Magewirephp\Magewire\Component" not found at setup:di:compile
Section titled “Class "Magewirephp\Magewire\Component" not found at setup:di:compile”You installed cda/module-custom-fields-hyva-compat on a store without Hyvä Checkout. Either install Hyvä:
composer require hyva-themes/magento2-hyva-checkoutOr disable the compat module:
bin/magento module:disable CDA_CustomFieldsHyvaCompatbin/magento setup:upgrade401 Unauthorized when running composer require
Section titled “401 Unauthorized when running composer require”Your Composer token isn’t being picked up. Check:
composer config -l | grep bearerYou should see [bearer.magento.creativdigital.ro] = <token>. If not, re-add with:
composer config bearer.magento.creativdigital.ro YOUR_TOKENCould not create an acl object at admin login
Section titled “Could not create an acl object at admin login”A custom ACL XML elsewhere is re-nesting CDA resources under Magento_Backend::admin. Magento 2.4.9 / Mage-OS 3 enforces unique resource IDs across the ACL tree. Open vendor/cda/module-custom-fields/etc/acl.xml — every resource should declare flat under Magento_Backend::admin, not re-nested under parent paths. If you’ve modified the file, restore from the original.
License errors
Section titled “License errors”Heartbeat completed — status: INVALID after Save Config + Verify Now
Section titled “Heartbeat completed — status: INVALID after Save Config + Verify Now”- Confirm your license key is exactly what was emailed (no extra spaces, no quotes).
- Open the field again to re-paste — Magento’s “obscure” field type hides characters, so type errors are easy. Use a text editor first.
- If still INVALID, your license may have been refunded or transferred. Email office@creativdigital.ro with your license key.
License is already bound to <other-domain>
Section titled “License is already bound to <other-domain>”One license = one production domain. To transfer:
- Email office@creativdigital.ro with the license key and new domain.
- Wait for our confirmation reply (1 business day).
- Run
bin/magento cache:flushon the new domain and click Verify Now in admin — the heartbeat will re-bind to the new host.
Status: FAILED persists after Verify Now
Section titled “Status: FAILED persists after Verify Now”Check the Magento exception log:
tail -50 var/log/exception.log | grep -i 'cda\|heartbeat'Common causes:
- Firewall blocks outbound HTTPS — the heartbeat needs to reach
magento.creativdigital.ro(port 443). If your server is in a locked-down VPC, allow this domain in egress. - DNS not resolving — try
curl -I https://magento.creativdigital.ro/from your Magento server. IfCould not resolve, your DNS resolver is broken. - Outdated cron job — make sure Magento cron is running. The heartbeat is the daily cron
cda_customfields_license_heartbeat. Runbin/magento cron:runmanually to test.
Admin / authoring errors
Section titled “Admin / authoring errors””Trial expired” banner won’t go away after entering license
Section titled “”Trial expired” banner won’t go away after entering license”Click Verify Now explicitly after Save Config. The banner reflects the cached license status until the next heartbeat — Verify Now forces an immediate check.
Preset chips open the create form with empty fields
Section titled “Preset chips open the create form with empty fields”You’re on v3.9.4 or earlier. Upgrade to v3.9.5+ — the form data shape was wrapped under field.* which the UI Component framework couldn’t unwrap, so prefilled values silently failed to render.
composer update cda/magento2-custom-fieldsbin/magento cache:flushAdmin pageloads throw TypeError: ltrim() ... LicenseMessage given
Section titled “Admin pageloads throw TypeError: ltrim() ... LicenseMessage given”You’re on v3.9.0. The license-warning notification was registered with the wrong DI item type. Upgrade to v3.9.1+:
composer update cda/magento2-custom-fieldsbin/magento setup:di:compilebin/magento cache:flushStorefront rendering issues
Section titled “Storefront rendering issues”Field doesn’t appear on the storefront
Section titled “Field doesn’t appear on the storefront”Walk through these checks in order:
- Is the field active? Field grid shows status as a green dot.
- Does
applies_tomatch the surface you’re testing? Cart-page fields don’t render on PDP, etc. - Visibility scoping — are you logged in as a customer group that’s allowed? On a store view that’s allowed? Try the Not Logged In group on the default store first.
- Cache — run
bin/magento cache:flushafter any field config change. - For Hyvä themes — confirm
CDA_CustomFieldsHyvaCompatmodule is enabled and your theme’s Tailwind config includes CDA template paths.
Field appears but data isn’t saved
Section titled “Field appears but data isn’t saved”Check that the observer ran:
tail -50 var/log/system.log | grep -i 'cda\|observer'Common cause: the form posted but the customer-account observer hasn’t fired because you’re saving outside the standard customer registration / save flow. The cart-page surface saves on checkout_cart_save_after; the PDP saves on checkout_cart_product_add_after; etc. Custom checkout flows may bypass these observer triggers.
Storefront field styling doesn’t match theme
Section titled “Storefront field styling doesn’t match theme”CDA renders using the theme’s own CSS classes (.field, .label, .control, .input-text on Luma; Tailwind utilities on Hyvä). If field styling looks off, it’s almost always because:
- Theme has unusually-specific CSS overrides that target only first-party form fields by ID.
- Custom child theme removed default form CSS without re-adding it.
To debug: open a field in your browser DevTools, compare the rendered HTML to a stock Magento field on the same surface. The classes should match.
File upload issues
Section titled “File upload issues”Upload returns “File type not allowed”
Section titled “Upload returns “File type not allowed””The file’s MIME type, detected from its actual byte content (NOT extension), isn’t on the allow list. Check:
Stores → Configuration → CDA → Custom Fields → File & Image Uploads → Allowed MIME TypesAdd the type to the comma-separated list and Save Config.
Upload succeeds but download link returns 403
Section titled “Upload succeeds but download link returns 403”The 4-tier ownership ladder is rejecting the requester. Most likely the file was uploaded during a guest session and the customer logged in afterwards (session changed), or the order hasn’t been placed yet (only quote/admin paths match).
For admin testing: log into admin and the download will work via the admin-session path.
Still stuck?
Section titled “Still stuck?”Email office@creativdigital.ro with:
- Your license key
- Magento version (output of
bin/magento --version) - CDA version (output of
composer show cda/module-custom-fields | grep versions) - Theme + Hyvä installed or not
- The exact error message and the last 30 lines of
var/log/exception.log
We reply within 1 business day. If it’s a bug we can reproduce, the fix ships in the next patch release that auto-flows to your composer update.