Custom product data in WooCommerce is the structured information that makes a specialized product understandable and manageable. A strong data model gives every value one owner, one format, and one destination, so editors can create products faster and customers can evaluate them with less friction.
For a Service Package, that model might combine native WooCommerce pricing, a Service Details tab, controlled service fields, a service taxonomy, and selected customer inputs. The architecture matters more than the number of fields.
The six layers of WooCommerce product data
| Layer | Purpose | Service example |
|---|---|---|
| Core commerce | Price, SKU, stock, shipping, tax | Service price |
| Product-type data | Stable information unique to the model | Duration and response time |
| Taxonomy | Hierarchical browsing | Consulting > WooCommerce |
| Attribute | Shared description or filtering | Delivery language |
| Variation | A defined purchasable version | Standard and Premium packages |
| Customer input | A value supplied for one purchase | Project brief or uploaded file |
Assigning each value to the correct layer prevents duplicate data and keeps the product editor understandable as the catalog grows.
Keep core commerce data in WooCommerce
WooCommerce already provides controls for title, description, regular and sale price, SKU, stock, weight, dimensions, shipping, and tax. Keep those values in their native controls when they accurately represent the offer.
Creating a second custom field for the same price, SKU, or dimension produces two sources of truth. Editors can update one and forget the other, leaving contradictory information on the storefront.
Use product-type data for the specialized model
Product-type data describes what every product in a specialized family needs. For a Service Package, useful values could include:
- Service duration.
- Delivery method.
- Response time.
- Included revisions.
- Follow-up availability.
- Preparation requirements.
These values are controlled by the store and reused whenever the product page is viewed. They belong in the product model rather than in a form completed by the buyer.
Build the Service Details model in the plugin
With Custom Product Type for WooCommerce, open the Service product type through WooCommerce > Product Types. Then:
- Open Back-end Fields.
- Enable Admin Fields.
- Set Admin Fields Tab Label to Service Details.
- Add the smallest field set needed by every service.
- Enable Show In Front only for buyer-relevant values.
- Select a Position In Front that supports the purchase decision.
The complete field-building workflow appears in How to Add Custom Fields to a WooCommerce Product Type.
Choose a field format that protects consistency
| Field type | Use it for | Example |
|---|---|---|
| Text | A short value that cannot be usefully constrained | Response time |
| Textarea | Longer plain-text guidance | Preparation requirements |
| Select | One controlled value from a longer list | Delivery method |
| Radio | A small choice set editors should see immediately | Communication channel |
| Checkbox | A true-or-false product property | Follow-up included |
| Number | A numeric value | Included revisions |
Use Select or Radio when editors should choose from a stable vocabulary. Controlled values prevent “Video Call,” “video,” and “Zoom meeting” from becoming three labels for the same delivery method.
Use taxonomies for browsing, not specifications
A taxonomy organizes products into browsable terms. If customers need a dedicated path such as Consulting > WooCommerce, a hierarchical service taxonomy can support that journey.
Duration and response time are not strong taxonomy candidates when visitors only need to read them on a product page. Store those values as fields. A useful rule is: taxonomy for navigation, field for a product specification.
Use attributes when products share filterable values
Attributes work well for values shared across products, especially when customers filter or compare by them. Delivery language or service location can be attributes when those values support catalog discovery.
A value can be important without becoming an attribute. If it belongs only to the Service model and does not support filtering or variations, a product-type field keeps the architecture simpler.
Use variations for commercial versions
A variation represents a defined version that can carry commercial differences. Standard and Premium service packages may be variations when each version has a distinct price, SKU, stock rule, or image.
Do not turn every service specification into a variation. Duration can remain a product field when it describes the offer. It becomes part of a variation only when the customer is selecting between real purchasable versions.
Use customer inputs for order-specific information
Customer input belongs to the buyer, not the reusable product record. A project brief, preferred date, uploaded document, or personalization note can change with every purchase.
| Value | Correct owner |
|---|---|
| Service duration | Product-type data |
| Included revisions | Product-type data |
| Project description | Customer input |
| Uploaded source file | Customer input |
| Premium package price | Purchasable version |
This ownership rule is the fastest way to prevent product specifications and buyer forms from becoming mixed together.
Plan frontend output as part of the data model
Every product field needs a visibility decision. Enable Show In Front for details that improve confidence or reduce pre-sale questions. Keep internal preparation notes and business-only values in the dashboard.
Verified Position In Front choices include:
- Before Add to Cart.
- After Add to Cart.
- Before Product Meta.
- After Product Meta.
- Single Product Summary.
Place duration, delivery method, and included revisions near the buying action. Place secondary reference information around Product Meta. Use the frontend display guide to plan the final positions.
Create a data dictionary before scaling
Document each field in a compact table:
| Name | Owner | Format | Required? | Public? |
|---|---|---|---|---|
| service_duration | Store | Text | Yes | Yes |
| delivery_method | Store | Select | Yes | Yes |
| internal_preparation | Store | Textarea | No | No |
| customer_brief | Buyer | Customer text | As needed | Purchase input |
This document gives editors a shared standard and makes future changes easier to evaluate.
Test the model with complete and incomplete products
- Create one Service Package with every field populated.
- Save and reopen it to confirm the editing workflow.
- Inspect the selected frontend positions on desktop and mobile.
- Create a second service with optional fields empty.
- Confirm the page remains useful and uncluttered.
- Ask another editor to create a third product using only the field labels and descriptions.
The model is ready when it guides the editor, presents useful data consistently, and makes the next product faster to create.
Product data should make the catalog easier to operate
A strong WooCommerce data model preserves native commerce controls, gives specialized information a dedicated structure, uses classification only where it helps discovery, and keeps buyer inputs separate from product facts.
Start with the custom product type framework, then use Custom Product Type for WooCommerce to turn the approved model into reusable tabs, fields, and storefront output.
Frequently asked questions
What counts as custom product data in WooCommerce?
It is structured information beyond the standard commerce fields that describes or supports a specialized product model, such as instructor, duration, venue, or response time.
Should the same value be stored as an attribute and a custom field?
Avoid duplicate sources. Choose the structure that owns the value and render it where needed.
Which product fields should appear publicly?
Show values that help customers understand, compare, or trust the offer. Keep internal operational and business data in the dashboard.
When should I use a Select instead of Text?
Use Select when editors must choose one value from a controlled vocabulary. Use Text when the value cannot be constrained meaningfully.
How do I know the data model is ready?
Test realistic products, optional empty fields, desktop and mobile output, and a second editor’s ability to create a product consistently.


