The licensing meter
Per authenticated user or per anonymous page view, plus capacity add-ons. The cost scales with your success instead of the value you get, and it renews every year.
WBS Dataverse Connect is a Dataverse integration for WordPress: publish Microsoft Dataverse records as pages, lists and detail views, capture submissions straight back into your tables, and keep every record exactly where it already lives. No portal license. No second copy of your data.
Already running in production on this site. See it live. Documentation: docs.
The uncomfortable part
The product works. The economics are the problem. The moment a portal gets real traffic or real users, per-user and per-page-view licensing turns a simple public site into a line item nobody wants to defend at renewal. Your records already live in Dataverse. The front end does not have to cost like this.
Why teams are moving
Portals solved a real problem in their day. For most public-facing sites, the trade-offs no longer make sense.
Per authenticated user or per anonymous page view, plus capacity add-ons. The cost scales with your success instead of the value you get, and it renews every year.
Liquid templates and a fixed component model. Real design, real interactivity and modern tooling end up fighting the platform instead of running on it.
A portal is another surface to secure, patch, monitor and buy capacity for, separate from the website your marketing team already owns and knows.
Portals are not built like a modern marketing site. Control over markup, page speed and your SEO stack is limited, exactly where public traffic is won or lost.
The front end and the data are welded together. Moving off means rebuilding, so the invoice keeps arriving because leaving is made expensive.
The theme, the plugins, the skills and the workflow already exist. A portal asks a capable team to start over on an unfamiliar platform.
The solution
WBS Dataverse Connect reads and writes Dataverse from WordPress through the official Web API, on the server, with an app registration you control. The records never leave Dataverse.
Tables and columns you choose render as WordPress collection lists and detail pages, cached for speed. It reads the same records your model-driven apps use, and edits show up on the next cache refresh.
Enquiries, applications and requests submitted on the site land straight in your Dataverse tables as typed records, with a honeypot and rate limiting on every write. No inbox in the middle.
Shortcodes and blocks drop collections, detail views and forms into any page. Templates are override-able, so the output is your brand, your markup and your SEO stack. Nothing new to relearn.
What it does
Everything a public-facing Dataverse site needs, delivered as clean WordPress you own end to end. Version 1.5.0 adds search, filters, sort and paging, typed forms with an edit mode, block editor support, image and file columns, and webhooks.
Updated September 2026, changelog on WordPress.org.
Name the table, the columns and an optional status filter, and the rows render as a responsive card grid. Visitors get a search box, filter dropdowns, sort choices and Previous and Next paging that keep their state, all without JavaScript. A status filter such as statecode eq 0 keeps drafts and internal records off the public site, including on direct links.
Column labels come from the table's display names in Dataverse, and choices, money, dates and lookups arrive already formatted in the environment's locale.
Collections documentationA record opens on its own detail view with a readable URL. Point the collection at a slug column and links read ?dvc=stadthaus-am-park instead of a record id; old id links keep working. The same page renders the grid and the single record, so the site stays simple.
Pictures come from a Dataverse Image column and downloads from File columns, both served through your own site so nothing points at Dataverse directly. Only records that pass the status filter are served.
See a live detail pageA form is an ordered list of typed fields: text, email, phone, multi-line, number, money, date, date and time, choice, multi-select choice, yes/no, lookup and hidden. Values are validated and converted on the server, lookups can be picked by name, and metadata fills in labels, options and required flags.
Update mode prefills a form from the record on the page and saves changes back, limited to records the bound collection exposes. Set a success message or a redirect, and switch on Cloudflare Turnstile per form.
Forms documentationDataverse Collection, Dataverse Record and Dataverse Form are dynamic blocks that wrap the three shortcodes. Editors pick a configured collection or form from a dropdown, set records per page, columns and the search, filter and sort switches, and see a server-rendered preview in the editor.
Blocks and shortcodes share one code path, the same templates and the same theme overrides. Elementor users place the shortcode in a Shortcode widget.
Blocks documentationWhen a request to Dataverse fails, an email goes out right away to the alert address and an optional second recipient, and again when the connection recovers. Repeats during one episode are held back by a cooldown.
A scheduled probe tests the connection twice a day with a fresh token. An expired client secret is the classic silent failure: on a quiet site it used to surface as broken forms weeks later. Now it is reported within hours.
Health alerts documentationA webhook posts a JSON message to a URL of your choice when a form creates a record (form.created) and when the connection fails or recovers (health.failure, health.recovery). Set a secret and every message carries an X-WBS-Signature header, an HMAC of the body the receiver can verify.
Every webhook has a Test link that sends a test.ping and shows the HTTP status the endpoint answered with. Typical receiver: a Power Automate flow with an HTTP request trigger.
The plugin authenticates server-side with an Entra app registration and a Dataverse application user scoped to least privilege. Secrets live in your WordPress configuration or a vault, never in a page or a script. Reads are limited to the tables and columns you expose, and writes go only where you allow.
See the connectionOutput runs through six PHP templates you can copy into your theme and edit: card, list, toolbar, pagination, record detail and form. The toolbar and pagination templates are new in 1.5.0. Markup, classes and design are yours, inside the site your team already builds, with the same header, footer, navigation and SEO tooling.
Reads are cached with a site-wide lifetime, and each collection can set its own, down to zero for data that must be live. When Dataverse is unreachable the page shows a short notice instead of an error page, and it catches up on the next refresh.
Templates and hooksHow it works
Connect once, model what goes public, drop a shortcode or a block, and ship. The data stays in Dataverse the whole way.
An Entra app registration and a Dataverse application user with least-privilege access. Credentials go in your WordPress config or a vault.
Point the plugin at the tables and columns you want on the web. A status filter keeps everything else private.
Add a collection, record or form shortcode to any page, or insert the matching block. Override the templates in your theme so the markup and design are yours.
Pages are cached and SEO-ready. Health alerts and webhooks tell you when the connection breaks, and edits in Dataverse show up on the next refresh.
Side by side
You stay on the Microsoft stack. Dataverse remains the single source of truth. Only the front end changes.
Compared with DataPress
DataPress by AlexaCRM serves the same purpose. The facts that decide most evaluations, side by side.
| Criterion | WBS Connect 1.5 | DataPress 2.95 |
|---|---|---|
| Minimum PHP | 8.0 | 8.2 with intl |
| Setup without a Dataverse solution | Yes | Premium needs the DataPress solution |
| License check | Offline token, no phone-home | Registration and activation server |
| No-code admin for lists and forms | Yes | Twig required on the free tier |
| Readable detail URLs | Slug column | GUID or alternate key |
| Health alerts and connection probe | Yes | No |
| Price for two sites per year | EUR 190 Pro | USD 490 Pro |
Both plugins use the Dataverse Web API and a server-side application user. Prices as published on 7 September 2026.
Pricing
The core plugin is free on WordPress.org. Pro adds the portal-grade features at a flat per-site price - no per-user or per-page-view metering.
Invoice billing, prices net of VAT. Licenses are per site with offline activation - no phone-home.
Not a slide
This is running in production on the site you are reading now. Property listings are published straight from Dataverse through this plugin, and enquiries are written back as records. No portal license involved.
See it liveOn kraftfahrer-jobs.com, Leopold Michel recruits drivers with application forms in German, English and Croatian. Each one writes a typed record into Dataverse through the WBS Forms bridge. It replaced a legacy integration whose secret had expired unnoticed.
kraftfahrer-jobs.comQuestions
Yes. The plugin is a front end for an environment you already own and administer. It ships with no data and no Microsoft account. Free developer environments are available from Microsoft through the Power Apps Developer Plan.
Power Pages is Microsoft's hosted portal product with per-user and per-page-view licensing. WBS Connect serves the same Dataverse data from your own WordPress site on standard hosting, through the official Dataverse Web API. Dataverse remains the single source of truth; only the front end moves to WordPress.
DataPress by AlexaCRM is a plugin in the same category. As of 7 September 2026, WBS Connect runs on PHP 8.0 without the intl extension, needs no Dataverse solution, checks its Pro license offline, configures lists and forms in wp-admin without Twig, uses a slug column for readable detail URLs and ships health alerts with a connection probe. DataPress offers FetchXML queries, saved views and Ninja Forms support, which WBS Connect does not have yet. The comparison table above lists the details.
Yes. The block editor gets three blocks: Dataverse Collection, Dataverse Record and Dataverse Form, each with a dropdown of your configured collections and forms and a live preview. In Elementor, place the shortcode in a Shortcode widget; the output and the templates are the same.
No. Your WordPress site talks directly to your own Microsoft endpoints: login.microsoftonline.com and your environment's dynamics.com URL. Nothing is sent to us, and the plugin contains no tracking or telemetry of any kind.
Preferably as constants in wp-config.php, which lock the matching settings fields and keep the secret out of the database entirely. Alternatively the settings page stores them in the WordPress options table; the secret is never displayed again after saving. Credentials are only ever used server-side and never reach the browser.
Two things, both to your own Microsoft tenant: the configured credentials during token requests, and the data of form submissions written to your Dataverse environment. Record data flows the other way, from your environment to your site. If you switch on Cloudflare Turnstile for a form, that form also sends the challenge token and the visitor's IP address to Cloudflare for verification. Webhooks you configure post to the URLs you enter and nowhere else.
Any table the application user can read, standard or custom. A collection needs the table's logical name, its entity set name, a name column and the columns to display. Forms write to any table the application user may create or update records in, with every field typed for its column: choices, dates, numbers, money, yes/no and lookups are converted on the server.
Only through an update-mode form, and only records that are visible through the collection the form is bound to. The application user needs Write on that table. Records that fail the collection's status filter cannot be opened or changed.
Yes. Copy any file from the plugin's templates directory into your-theme/wbs-connect-for-dataverse/ and edit the copy. The theme version wins, and child themes work too.
Get started
If your team runs a Power Pages portal, we will map what it does, price the WordPress and Dataverse alternative, and show you the migration path on your own tables. If you are starting fresh, we will stand up the first collection with you.
Built and supported by WOODS Business Solutions. Runs entirely inside your Microsoft tenant and your WordPress site.