What is WebTend Service Catalog Builder?
WebTend Service Catalog Builder gives service-based businesses everything they need to showcase their offerings, present pricing plans, and capture qualified leads — all in one lightweight, self-hosted plugin. No SaaS subscriptions, no phone-home, no third-party dependencies beyond WordPress itself.
The plugin ships with a custom Services post type, a visual Pricing Table builder, an Inquiry Form with spam protection and email notifications, Gutenberg blocks, Elementor widgets, and shortcodes for any page builder.
System Requirements
WebTend Service Catalog Builder is lightweight with minimal hard dependencies. Elementor and WooCommerce are both optional — the plugin fully works without them.
| Component | Minimum | Recommended |
|---|---|---|
| WordPress | 6.2 | 7.0 |
| PHP | 7.4 | 8.2+ |
| MySQL / MariaDB | 5.6 / 10.0 | 8.0 / 10.6 |
| Elementor | Optional — Free or Pro | Latest stable |
| WooCommerce | Optional — any version | 8.0+ |
| Browser (admin) | Chrome 90+, Firefox 88+, Safari 14+ | Latest stable |
Installation
Method A — WordPress Plugin Directory (Recommended)
Search in WordPress Admin
Go to Plugins → Add New and search for WebTend Service Catalog Builder or webtend-service-catalog-builder.
Install & Activate
Click Install Now on the plugin card, then click Activate. The plugin creates its database table and flushes rewrite rules on first activation.
Create Your First Service
Navigate to Service Builder → Add New Service in the admin menu to create your first service entry.
Method B — Manual Upload
Download & Upload
Download webtend-service-catalog-builder.zip from wordpress.org/plugins. Go to Plugins → Add New → Upload Plugin and install the ZIP.
Activate
Click Activate Plugin. You will see the Service Builder menu appear in your WordPress admin sidebar.
Re-save Permalinks
Go to Settings → Permalinks and click Save Changes to ensure service URLs work correctly.
plugins/webtend-service-catalog-builder/templates/ into {your-theme}/webtend-service-catalog-builder/ and edit freely. Your changes survive plugin updates.
Quick Start
After activation you will find Service Builder in your WordPress admin menu. Follow this order to get your service catalog live in minutes.
- Go to Service Builder → Add New Service and create your first service with a tagline, icon, and feature list
- Go to Service Builder → Pricing Tables and build a pricing table with 2–3 plans using the visual builder
- Attach the pricing table to your service in the Service Details meta box
- Add the
[wscb_services]shortcode (or the Gutenberg block) to any page to display the services grid - Embed
[wscb_pricing_table id="X"]on your pricing page - Configure notification email in Service Builder → Settings → Inquiry Form
Services Custom Post Type
The plugin registers a wscb_service Custom Post Type with full meta box support. Each service has its own URL (/services/web-design/), archive page, and single template — all overridable from your theme.
Service Meta Fields
| Field | Description | Example |
|---|---|---|
| Short Tagline | One-line description shown on cards and schema markup | Professional web design for modern brands |
| Duration / Delivery Time | Estimated project timeline shown on the card | 2–4 weeks |
| Starting Price Label | Display price text — freeform, not connected to WooCommerce unless linked | From $299 |
| CTA Button Text | Default: "Learn More". Overridable per-service or via shortcode | Get Started |
| CTA Button URL | URL for the CTA — falls back to the service permalink | https://example.com/contact |
| Service Icon | Image upload, inline SVG code, or icon font class (e.g. dashicons-admin-site) | SVG / image / font class |
| Feature List | Repeatable bullet rows with configurable icon style (check, star, bolt, etc.) | Up to 4 shown on card |
| Gallery | Multi-image gallery via WP Media Library | portfolio shots, process images |
| FAQ Accordion | Repeatable Q&A pairs — rendered as an accordion with FAQPage schema | How long does it take? / 2–4 weeks |
| Related Services | Multi-select of other services to display in the "You may also like" section | — |
| Linked Pricing Table | Attach a pricing table post to display on the single service page | ID of wscb_pricing_table post |
| WooCommerce Product | Link to a WC product for live price + Buy button (optional) | Product ID |
Taxonomies
| Taxonomy | Slug | Usage |
|---|---|---|
| Service Category | wscb_service_cat | Group services by type (Design, Development, Marketing, etc.) |
| Service Tag | wscb_service_tag | Cross-cutting labels (e.g. "Fast turnaround", "Enterprise ready") |
WSCB_SVG_Sanitizer class before saving. This strips disallowed elements and attributes to prevent XSS.
Pricing Table Builder
Create pricing plans with a visual drag-and-drop interface. Each pricing table is a separate post type (wscb_pricing_table) that can be embedded on any page and attached to any service.
Plan Builder Features
- Drag-and-drop reordering of plans
- Monthly / Annual billing toggle with automatic savings badge calculation
- Mark any plan as "Highlighted / Recommended" — gets accent styling automatically
- Per-plan feature list with tooltip-ready rows
- Feature comparison table across plans
- Custom CTA per plan: open a URL or trigger the inquiry form for that plan
Service Inquiry Form
A fully self-hosted inquiry and lead capture form. Submissions are stored in a custom database table (wp_wscb_inquiries) and optionally emailed to your notification address. No third-party form plugins required.
Form Fields
| Field | Required | Notes |
|---|---|---|
| Name | Yes | Stored as submitted |
| Yes | Used as Reply-To in notification email | |
| Phone | No | Optional contact number |
| Budget Range | No | Dropdown — configured in settings |
| Message | Yes | Free-text enquiry body |
| Service / Plan | Auto | Pre-filled from service_id and plan_id shortcode attributes |
| Honeypot | Hidden | Invisible field — bots fill it, humans don't. Submissions with a value are silently discarded. |
Inquiries Admin Panel
All submissions appear under Service Builder → Inquiries with status tracking (New / Read / Replied / Archived).
| # | Name | Service | Plan | Budget | Date | Status |
|---|---|---|---|---|---|---|
| 3 | Jane Smith | Web Design | Professional | $1k–$5k | Today | New |
| 2 | Mark Owens | SEO Audit | Starter | Under $1k | Yesterday | Read |
| 1 | Lisa Chen | Branding | Enterprise | $10k+ | 2 days ago | Read |
wp_footer(), as the plugin enqueues its scripts there. Classic themes and all tested modern themes work correctly.
Display Options
The plugin offers three ways to embed content — use whichever fits your workflow.
Gutenberg Blocks
Search for "WebTend" in the Gutenberg block inserter to find three native blocks:
- Services Grid — filterable by category/tag, configurable columns and display options
- Pricing Table — select any saved pricing table to embed it
- Inquiry Form — select a service and optionally pre-select a plan
Elementor Widgets
When Elementor is active, three widgets appear in the WebTend widget category:
- Services Grid Widget — same options as the Gutenberg block with live Elementor preview
- Pricing Table Widget — select table by ID, toggle billing switch visibility
- Inquiry Form Widget — embed form with service and plan pre-selection
elementor/loaded action. If Elementor is not installed, no Elementor code runs at all.
SEO & Schema Markup
WebTend Service Catalog Builder outputs structured data automatically on every single service page. No Yoast or RankMath required — though both are compatible.
schema.org/Service
Injected into <head> on single service pages as a application/ld+json script block.
{
"@context": "https://schema.org",
"@type": "Service",
"name": "Web Design",
"description": "Professional web design for modern brands",
"url": "https://example.com/services/web-design/",
"serviceType": "Design, Development",
"provider": {
"@type": "Organization",
"name": "Your Agency",
"url": "https://example.com"
},
"offers": {
"@type": "Offer",
"description": "From $299"
}
}
FAQPage Schema
If a service has FAQ accordion entries, a FAQPage schema block is also injected automatically — no configuration needed.
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How long does the project take?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Typically 2–4 weeks depending on scope."
}
}
]
}
/services/ to anything you like in Service Builder → Settings → General → Service URL Slug. After saving, go to Settings → Permalinks and click Save to flush rewrite rules.
WooCommerce Integration
The WooCommerce integration is completely optional and activates automatically when WooCommerce is installed. No manual configuration is required to enable it.
- Link any service to a WooCommerce product using the WooCommerce Link meta box on the service editor
- The service card and single page display the product's live WooCommerce price automatically
- A Buy button is shown alongside the regular CTA — clicking it adds the product to the WooCommerce cart
- The integration registers a Service product type in the WC product editor, letting you mark products as services for organisation
Shortcodes
All three shortcodes work in any editor — Gutenberg classic block, Elementor HTML widget, WPBakery, Divi, or the Classic Editor.
[wscb_services]
[wscb_services] [wscb_services category="design" columns="2" show_price="no"] [wscb_services limit="6" orderby="date"]
[wscb_pricing_table id="123"]
post=123.[wscb_inquiry_form service_id="456"]
All Settings
All settings are stored in a single wscb_settings option as a serialized array. Access them at Service Builder → Settings.
General
| Setting | Key | Default |
|---|---|---|
| Service URL Slug | service_slug | services |
| Archive Page Title | archive_title | Our Services |
| Archive Grid Columns | archive_cols | 3 |
Inquiry Form
| Setting | Key | Default |
|---|---|---|
| Notification Email | inquiry_email | admin email |
| Email Subject | inquiry_subject | New Service Inquiry – {service_name} |
| Success Message | inquiry_success | Thank you! We'll be in touch within 24 hours. |
| Redirect After Submission | inquiry_redirect | empty (show success message) |
Schema / SEO
| Setting | Key | Default |
|---|---|---|
| Enable Service Schema Markup | schema_enable | Yes (1) |
| Service Provider Name | schema_provider | Site name from WordPress |
Use get_option( 'wscb_settings', array() ) to read all settings. Missing keys always return safe defaults. Use placeholders {service_name} and {plan_name} in the email subject line.
Hooks & Filters
Extend or customise the plugin without editing core files. All hooks are documented below.
Filters
| Hook | Arguments | Description |
|---|---|---|
| wscb_service_schema | $schema, $post_id |
Modify the JSON-LD Service schema array before it is output to <head>. Return the modified array. |
| wscb_load_frontend_assets | $load |
Return false to prevent frontend CSS/JS from loading on any given page. Useful for manual asset management. |
| wscb_after_service_cta | $post_id |
Action fired immediately after the service CTA button is output on a service card. Use to append custom HTML (e.g., a wishlist button). |
Actions
| Hook | Description |
|---|---|
| wscb_inquiry_submitted | Fires after an inquiry is saved to the database. Passes $inquiry_id, $data. |
| wscb_before_services_grid | Fires before the services grid HTML is output. Passes $atts (shortcode attributes). |
| wscb_after_services_grid | Fires after the services grid HTML. Passes $atts. |
Example: extend the Service schema
/** * Add areaServed to the Service schema. */ add_filter( 'wscb_service_schema', function( $schema, $post_id ) { $schema['areaServed'] = get_post_meta( $post_id, '_service_area', true ) ?: 'Worldwide'; return $schema; }, 10, 2 );
Example: hook into new inquiry submissions
/** * Send a Slack notification when a new inquiry arrives. */ add_action( 'wscb_inquiry_submitted', function( $inquiry_id, $data ) { $webhook = 'https://hooks.slack.com/services/YOUR/WEBHOOK'; wp_remote_post( $webhook, [ 'body' => json_encode([ 'text' => 'New inquiry from ' . $data['name'] . ' — ' . $data['email'], ]), 'headers' => [ 'Content-Type' => 'application/json' ], ]); }, 10, 2 );
Privacy & GDPR
The plugin is designed with privacy-first principles. All data stays on your server — nothing is sent to Webtend or any third-party service.
Data collected by the Inquiry Form
| Data Field | Purpose | Stored Where |
|---|---|---|
| Name | Identify the submitter | wp_wscb_inquiries |
| Email address | Reply-To on notification; contact | wp_wscb_inquiries |
| Phone number | Optional contact number | wp_wscb_inquiries |
| Budget range | Project scoping | wp_wscb_inquiries |
| Message | Inquiry content | wp_wscb_inquiries |
| IP address | Basic spam/abuse mitigation | wp_wscb_inquiries |
| Service ID & Plan ID | Context for the inquiry | wp_wscb_inquiries |
Frequently Asked Questions
Does this work without Elementor?
Does this work without WooCommerce?
Can I customise the service and pricing templates?
plugins/webtend-service-catalog-builder/templates/ into {your-theme}/webtend-service-catalog-builder/ (creating the folder if it does not exist). Your copied file takes precedence and will not be overwritten by plugin updates.How do I change the /services/ URL slug?
Where are inquiry submissions stored?
{prefix}_wscb_inquiries, created on plugin activation using dbDelta(). They are visible under Service Builder → Inquiries and are included in WordPress's Personal Data Export/Erase tools.Is the plugin translation ready?
webtend-service-catalog-builder text domain and a .pot file is included. Load your translation files via the standard load_plugin_textdomain() path, or use Loco Translate / WPML's translation tools.What happens to data when the plugin is uninstalled?
uninstall.php file removes the wscb_settings option and drops the wp_wscb_inquiries table when the plugin is deleted via the Plugins screen. Deactivating (without deleting) does not remove any data.How do I get support?
Changelog
register_block_type[wscb_services], [wscb_pricing_table], [wscb_inquiry_form] with full attribute support{theme}/webtend-service-catalog-builder/ to customise.pot file included, text domain webtend-service-catalog-builder