Skip to content

License & updates

€99 one-time. Lifetime updates included. No yearly renewal, no support contract upsell — every future v3.x and v4.x release ships to your composer repository the moment we publish it, and your license stays valid forever.

You receive your license key and Composer token only after purchase — there’s no separate trial download. The plugin’s storefront and admin start working immediately on install. To activate without waiting for the daily cron:

  1. Open Stores → Configuration → CDA → Custom Fields → Licensing
  2. Paste your license key into License Key
  3. Click Save Config, then Verify Now

Status flips to ACTIVE in one round-trip.

One license = one production domain. On the first heartbeat from a “production” host, the license binds permanently to that domain in our database. Future heartbeats from a different production host are rejected with:

License is already bound to example.com. Email office@creativdigital.ro to transfer this license to newshop.com.

Any hostname EXCEPT loopback and private-network IPs:

Exempt (no binding consumed)Counts as production
localhostmyshop.com
127.0.0.0/8staging.myshop.com
10.0.0.0/8magento.test resolved to public IP
172.16.0.0/1251-12-95-149.sslip.io
192.168.0.0/16(anything else)
::1

So localhost and 127.0.0.1 are safe dev environments — they never consume your binding. Other dev hostnames mapped via /etc/hosts to a private IP work too.

Email office@creativdigital.ro from the email address on your Stripe receipt, with your license key and the reason for the transfer (rebrand, hosting move, migration). We reset the binding within 1 business day — your next heartbeat will re-bind to the new domain automatically.

Heartbeat — how license verification works

Section titled “Heartbeat — how license verification works”

Every day at 03:30 UTC, your store runs the cda_customfields_license_heartbeat cron job:

  1. Reads your license key from core_config_data (encrypted at rest).
  2. POSTs to https://magento.creativdigital.ro/api/heartbeat with your license key, domain, Magento version, and active CDA modules.
  3. Receives one of: ACTIVE, INVALID, SUSPENDED, EXPIRED, FAILED.
  4. Saves status to cda_customfields/licensing/status.

The heartbeat retries with throttling:

  • ACTIVE status → re-check weekly
  • Failed status → re-check daily until it succeeds

If our licensing server is unreachable (DNS hiccup, your firewall blocks egress, our outage), the cron retains your previous status. A single failed call never flips a healthy ACTIVE license to LOCKED. Only an explicit non-ACTIVE response from our server (e.g. a refunded or transferred license) downgrades you.

Don’t want to wait until 03:30? In Stores → Configuration → CDA → Custom Fields → Licensing, after saving your license key, click Verify Now. It runs the heartbeat synchronously and shows the result inline:

License verified — status: ACTIVE.

After purchase you have a Composer token (cda_tok_…). Updates are just:

Terminal window
composer update cda/magento2-custom-fields
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:flush

This pulls the latest version from our Composer repository (magento.creativdigital.ro). The token authenticates your install; the same token works forever (or until you ask us to rotate it).

Each new release is tagged on our git repo and built into a downloadable ZIP automatically via GitHub Actions. You’ll see all available versions when you run composer require or composer update.

What stops working if my license becomes INVALID or EXPIRED?

Section titled “What stops working if my license becomes INVALID or EXPIRED?”

Same as trial-expired:

  • Storefront fields keep rendering.
  • Existing field admin edits still work.
  • New field creation, Quick-Add presets, and Use Case template application are paused until status returns to ACTIVE.

We never touch your data — your cda_custom_field_* tables are inviolate regardless of license state.

If something doesn’t work, email office@creativdigital.ro within 30 days of purchase. We’ll either fix it or refund you, no questions about why. Stripe fees are non-refundable (~€0.30 + 1.4%) but we eat them — you get the full €99 back.