System requirements
WordPress
Version 6.0 or later
WooCommerce
Version 8.0 or later
PHP
Version 8.0 or later (7.4 minimum)
Database
MySQL 5.7+ or MariaDB 10.3+
If WooCommerce is not active when the plugin initializes, all plugin functionality is suppressed and an admin notice is displayed: UTB Product Builder requiere que WooCommerce esté instalado y activo.
Installation steps
Upload the ZIP
In the WordPress admin, go to Plugins → Add New → Upload Plugin and select the
utb-product-builder.zip file. Click Install Now.Alternatively, extract the ZIP and upload the utb-product-builder/ folder to wp-content/plugins/ via FTP/SFTP.Activate the plugin
Go to Plugins → Installed Plugins and click Activate next to UTB Product Builder.On activation, the plugin:
- Creates the six database tables (see below).
- Sets default option
utb_pb_table_config. - Initializes
utb_pb_flow_assignmentsas an empty array. - Creates the private uploads directory at
WP_CONTENT_DIR/utb-private-uploads/with.htaccessprotection. - Calls
flush_rewrite_rules().
Add required constants to wp-config.php
Open
wp-config.php and add the following constants before the /* That's all, stop editing! */ line:| Constant | Required | Description |
|---|---|---|
UTB_API_KEY | Yes | Authenticates external requests to the REST API (X-UTB-API-Key header). |
UTB_WEBHOOK_SECRET | Recommended | Signs outbound webhook payloads with HMAC. Falls back to wp_salt('auth') if not set. |
UTB_API_LOGGING | Optional | When true, logs successful API accesses to WP_CONTENT_DIR/utb-api-access.log and failed auth attempts to WP_CONTENT_DIR/utb-api-failed-auth.log. |
Verify database tables were created
Go to UTB Builder → Dashboard. The plugin creates these tables on activation:
If the tables are missing (e.g., after a ZIP upload that bypassed the activation hook), the plugin automatically re-creates them on the next
| Table | Purpose |
|---|---|
wp_utb_certificates | Academic certificate catalog |
wp_utb_certificate_prices | Certificate pricing matrix (level × format) |
wp_utb_programs | Academic programs for certificate requests |
wp_utb_cep_programs | CEP continuing education programs |
wp_utb_cep_inscriptions | CEP enrollment log |
wp_utb_webhook_logs | Outbound webhook audit trail |
plugins_loaded call when it detects utb_pb_db_version < 3.0.1.Web server configuration for private uploads
Uploaded identity documents are stored inWP_CONTENT_DIR/utb-private-uploads/ and must not be publicly accessible.
Apache
The plugin writes an.htaccess file to the private uploads directory on activation:
/wp-content/utb-private-uploads/ directly — it must return a 403.
Nginx
Nginx does not read.htaccess files. You must add a location block to your site configuration. The plugin writes an example to WP_CONTENT_DIR/utb-private-uploads/nginx.conf.example:
Verify installation checklist
- Admin notice absent — No “WooCommerce required” banner on the WordPress admin dashboard.
- Tables created — All six
wp_utb_*tables visible in the database. - Constants defined —
UTB_API_KEYandUTB_WEBHOOK_SECRETinwp-config.php. - Private uploads protected — Direct HTTP access to
/wp-content/utb-private-uploads/returns 403 (Apache) or 404 (Nginx). - REST API accessible —
GET /wp-json/utb/v1/orderswithX-UTB-API-Key: {UTB_API_KEY}returns 200. - CEP form renders — A product assigned to the
utb_cep_programsflow displays the enrollment form. - Certificates form renders — A product assigned to
certificados_academicosdisplays the certificate request form. - db_version option set —
utb_pb_db_versionoption equals3.0.1(check via Tools → Site Health → Info orwp option get utb_pb_db_version).