3.0.0 — 2026-02-19
Added
- Dynamic Validation and Connection Engine:
- 100% dynamic Integration Hub for connecting multiple APIs and managing tokens and credentials.
- Validation rule generator in the admin UI.
- Interactive UI in the Form Builder for mapping rule variables to form fields.
- Rules evaluated dynamically in
RulesEnginevia JSON Path evaluation.
Fixed
- Universal Webhooks: Resolved a bug in
OrderDataBuilder.phpthat prevented reading the webhook-send configuration for products without an assigned flow. Webhooks now operate and send globally regardless of product type.
This is a major release. The following items are breaking changes or significant removals.
Removed
- CEP hardcodes: Removed all CEP-API-specific coupled logic from the Rules Engine and OAuth managers, making the system 100% agnostic.
- Cleaned up pre-release version history to initialize this major release to Stage.
2.5.0 — 2026-02-19
Added
-
Role Management System: New full functionality for creating and managing the
UTB Product Managercustom role.- Admin page: UTB Builder → Roles & Permisos (visible to administrators only).
- Create, update, and delete the custom role with plugin capabilities.
- Assign and remove users from the role.
- View list of users with the active role.
- Automatic menu hiding: users with this role only see plugin and WooCommerce menus.
-
Custom plugin capabilities:
utb_manage_settings— Dashboard and general configuration.utb_manage_flows— Assign flows to products.utb_view_webhooks— View and manage webhooks.utb_manage_programs— Manage CEP programs.utb_manage_certificates— Manage certificates.utb_view_orders— View order metadata.
-
PermissionsHelperclass: Helper functions for flexible permission validation.- Methods:
can_manage_settings(),can_manage_flows(),can_view_webhooks(), etc. - Backward compatibility: administrators retain full access automatically.
- Methods:
-
WooCommerce permissions included for the role:
- Products:
read_product,edit_product,edit_products,edit_published_products. - Orders:
read_shop_order,edit_shop_order,edit_shop_orders,edit_others_shop_orders. - Restricted: cannot publish or delete products/orders.
- Products:
Changed
- Admin menus now use custom capabilities instead of only
manage_options:- Dashboard →
utb_manage_settings - Assign Flows →
utb_manage_flows - Webhooks →
utb_view_webhooks - Order Metadata →
utb_view_orders - Inscription Logs →
utb_view_orders - Data Sources →
manage_options(admin only) - Roles & Permissions →
manage_options(admin only)
- Dashboard →
- Permission validation: All admin pages now use
PermissionsHelperto verify access.
Documentation
docs/roles-system.md: Complete guide to the roles system including capabilities, usage instructions, troubleshooting, and code examples.
Files created
includes/admin/pages/RolesManagerPage.php(400+ lines)includes/utils/PermissionsHelper.php(80 lines)docs/roles-system.md(250 lines)
Files modified
includes/admin/AdminRouter.php— Menus with capabilities + hide-menus hook.includes/admin/ajax/FormBuilderAjax.php— AJAX permission validation.includes/admin/pages/DashboardPage.phpincludes/admin/pages/FlowAssignmentPage.phpincludes/admin/pages/WebhooksPage.phpincludes/admin/pages/OrderMetadataPage.php
2.4.2.5 — 2026-02-18
Fixed
- CEP price display: Resolved an issue where the program price did not appear visually due to residual jQuery styles (
visibility: hidden,height: 0px) blocking the animation.- Solution: Force direct display with inline
!importantstyles to override any jQuery animation block. - Impact: Price now appears immediately when a program is selected.
- Solution: Force direct display with inline
- Debug system security: Added permission validation for debug mode.
- Only authenticated users with
AdministratororEditorrole can activate debug. - Anonymous users or users without permission cannot activate debug even if they know the URL.
- Activation: add
#debugor?debug=1to the product URL (requires WordPress login). - If a user without permissions attempts to activate debug, it is silently ignored.
- Only authenticated users with
Removed
- Mass cleanup of deprecated files (19
.mdfiles, 3 test files). Retained:README.md,CHANGELOG.md,CONTRIBUTING.md,PROJECT_STATUS.md,UTB_HANDOVER_README.md,ROADMAP_CONEXION.md.
Technical notes
cep-flow.js: Price display usesattr('style', '...!important')instead of.slideDown()to avoid jQuery animation conflicts.CEPFlow.php: Backend validatescurrent_user_can('manage_options')orcurrent_user_can('edit_posts')before allowing debug.cep-debug.js: JavaScript checkswindow.UTB_CEP.debug_allowedbefore activating debug mode.
2.4.2 — 2026-02-18
Fixed
- CEP program selector: Added
.off('change')before registering the event to prevent conflicts with external theme scripts that were blocking the price update. - Duplicate validation message: Removed duplicate “Diligencia el formulario…” message in the “Programa Académico” section (the same message already exists at the top of the form).
Changed
- Simplified Webhooks UI: Removed the confusing “Integration Type” selector (Webhook / REST API / Both).
- Reason: The REST API is always active (requires only
UTB_API_KEYinwp-config.php) and is not “activated” per product. - Change: Each product now has only an ON/OFF toggle for automatic webhooks.
- REST API info: Added a collapsible
<details>element per product showing the endpoint, API Key, filters, and link to docs.
- Reason: The REST API is always active (requires only
Technical notes
- REST API:
/wp-json/utb/v1/orders— Global, always active, authenticated withX-UTB-API-Key. - Webhooks: Optional per-product configuration (automatic notifications).
- Not modified: document validation, discount calculation, AJAX logic, or backend endpoints.
2.4.0 — 2026-02-18
Added — REST API and Webhooks
-
Full REST API with namespace
utb/v1:GET /wp-json/utb/v1/orders— Order list with filters and pagination.GET /wp-json/utb/v1/orders/{id}— Specific order with complete data.- Authentication with API Key (
X-UTB-API-Keyheader). - Secure hash comparison (prevents timing attacks).
-
Automatic webhooks on order completion:
- Automatic POST when
woocommerce_order_status_completedfires. - Retry logic: 3 attempts (delays: 5s, 15s, 60s).
wp_utb_webhook_logstable for audit trail.- HMAC signature for integrity validation.
- Per-product configuration via
_utb_order_metadata.
- Automatic POST when
-
Pagination and filters:
per_page(default 50, max 100)page(pagination)status(pending, completed, etc.)flow_id(utb_cep_programs,utb_certificados_academicos)date_from/date_to(YYYY-MM-DD)
-
OrderDataBuilder— Data enrichment:- Complete JSON with order, customer, and items.
program_detailsenriched from the database.uploaded_fileswith secure URLs.form_submissionwith all form fields.
-
OrderWebhookSender— Automatic sending:- Hook on order completion.
- Scheduled events for retries.
- Complete logging of successes and failures.
-
Optional API logging (
UTB_API_LOGGINGconstant):- Logs successful accesses to
WP_CONTENT_DIR/utb-api-access.log. - Logs failed auth attempts to
WP_CONTENT_DIR/utb-api-failed-auth.log.
- Logs successful accesses to
Fixed
-
.htaccessmissing rewrite rules: WordPress REST API was returning 404.- Added
mod_rewriterules manually. - Critical line:
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
- Added
- Plugin version updated to 2.4.0 (was showing 1.0.0 in the header and constant).
Technical
- Namespace
UTB\ProductBuilder\APIadded to the Autoloader. - Table
wp_utb_webhook_logsadded to the DB schema. Plugin::init_webhooks()for automatic registration.OrderWebhookControllerextendsWP_REST_Controller.wp_schedule_single_eventfor scheduled retries.- Hash comparison with
hash_equals()to prevent timing attacks. - HMAC signing with
wp_salt('auth')orUTB_WEBHOOK_SECRET.
Testing
- 9 automated tests with
test_api.sh: namespace registered, auth without API Key (401), auth with API Key (200), pagination (per_page,page), filters (status,flow_id, dates), combined filters, valid JSON responses — all passing.
Unreleased
In development
- Admin UI for visual product management.
- Drag-and-drop form editor.
- Reusable template system.
- Dashboard with metrics.
1.0.0-beta — 2026-02-05
Added
- Dynamic flow system (
AbstractFlow,FlowRegistry). CertificadosFlowwith JSON-driven rendering.CEPFlowwith JSON-driven rendering.FormConfigManagerfor configuration management.- Data repositories (
CertificatesRepository,ProgramsRepository, etc.). - Database schema with 6 tables.
- Dynamic pricing system.
- Server-side validations.
- Basic conditional logic.
- Migration script for Certificates.
- Fixes for database column mapping.
- Version control on GitHub.
Fixed
- Incorrect mapping of
tiempo_expedicionanddescripcioncolumns. - Certificate quantity validation (now validates slug patterns only).
- Price AJAX returns
pricefield correctly. - Conversion of NULL to empty string in
data-*attributes.
Technical
- Organized folder structure (
admin/,core/,data/,flows/). - PSR-4 Autoloader.
- Repository pattern for data access.
- Abstract classes for extensibility.
UTB\*namespace to avoid conflicts.