Why WordPress?
A popular CMS that grew into a development platform
WordPress started as a blogging tool and became a full website development platform, with a huge community of third-party plugins that extend it.
It's everywhere
WordPress powers a huge share of the web, so your team and your customers already know it.
It's customer-facing
It's built to publish, so your business application lives right on your public website.
It's quick
Proven building blocks get you to launch faster than starting from a blank page.
A vast plugin library
Thousands of free and affordable plugins cover ecommerce, forms, learning, events and more.
Easy to staff
Front-end developers who know WordPress are easy to find.
It's open source
No license fees and no vendor lock-in. You own the platform.
The business case
Free, popular and extensible, but not quite that simple
The idea is appealing: take a free, hugely popular open-source platform with affordable extensions, combine a few plugins, and get a strong customer-facing business platform. For simple needs, that works.
Sophisticated businesses have complex business rules and need tools that work together. A real end-user business application usually needs:
Single sign-on. Users authenticate against your in-house system.
Custom business rules. Out-of-the-box features adjusted to how you actually operate.
Workflows. One step or feature leads to the next, such as a purchase that unlocks an exam.
Integration. Connections to the business systems you already run.
Data sharing and reporting. Accurate answers about who is where, and what happened.
On paper, WordPress seems to do all of this. In practice, there are real challenges.
The challenges
Where plugin-based sites break down
Uneven plugin quality
Coding style and code quality vary widely, and that directly affects how easily a plugin can be extended.
No authoritative data
When plugins are strung together, each one controls a small piece of the data, and nobody owns the whole record.
Weak reporting
“How many people are in step two of the XYZ process?” WordPress can't answer questions like that without help.
Inconsistent architectures
Every plugin has its own way of hooking in, its own implementation style and its own database design.
Inefficient data storage
User and post meta is slow. Some plugins add tables, others use custom posts, and serialized metadata makes database joins impossible.
Plugin madness
One plugin covers 90%, a paid extension covers a bit more, then another… until you have 100 plugins and a fragile setup nobody can maintain.
Our solution
Orchestrate the plugins instead of piling them up
Our approach avoids plugin explosions. Instead of stringing plugins together, we put one custom plugin in charge:
An orchestration plugin that controls the other plugins you want to use.
A data model that fits your business and acts as the central authority.
Extensions to existing plugins through their hooks, so they meet your business rules.
Integrations with your existing systems for a seamless customer experience.
We know how WordPress stores data, and how to get top performance out of a platform that can easily become bloated and slow.
Rapid development
Proven components shorten the build cycle.
Lower cost
Low-cost and open-source building blocks do the heavy lifting.
Less maintenance
One organized system instead of a tangle of add-ons.
Plugins we work with
Reliable, extensible building blocks
This approach depends on high-quality plugins we can extend. Here are some we use often:
WooCommerce
A high-quality ecommerce engine. We extend products with custom attributes, let order workflows trigger outside events such as API key creation, and let outside events such as shipments update orders.
WooCommerce Subscriptions
Subscriptions on top of WooCommerce, with a customer-facing UI for managing plans and payment methods, and hooks we extend for custom plan types.
Uncanny Automator
Automation “recipes” that connect plugins and systems. Our favorite part: it's easy to add custom triggers and actions.
LearnDash
A capable but complex LMS that's hard to hook into, and still the best option we've found. With Tin Canny Reporting, it deploys existing xAPI and SCORM learning packages.
The Events Calendar
We create events dynamically from data feeds or workflow events, and embed forms such as course enrollment directly into events.
Fluent Support
A full support ticketing system inside WordPress, for clients without Salesforce or Zendesk, or who want ticketing woven into the customer experience.
Gravity Forms
Our data-entry workhorse. Custom feeds push entries into other systems, such as opening support tickets or sending data to a CRM, and forms attach to events and products.
Gravity Flow
Workflow on top of Gravity Forms. We add custom workflow steps that push data through feeds or trigger other automated actions.
GravityView
Dynamic, filterable views of form entries for members and staff.
OpenID Connect Generic
Connects WordPress to an external single sign-on provider such as Keycloak or AWS Cognito.
Not every plugin suits every need. For each project we evaluate the options, find their hooks, review their architecture and decide how best to integrate them.
Selected project · Linescape
Container shipping data, sold by subscription on WordPress
We migrated Linescape from an Angular application we had built earlier to a new WordPress solution, powered by a custom plugin and theme. The site serves container shipping data from Linescape's proprietary backend database and API, through a search engine we built into the theme.
Subscription ecommerce
WooCommerce products extended with account tiers, each unlocking more data and deeper search.
Custom API search
Search across schedules, ports, vessels and carriers from Linescape's API, cached in Redis for speed.
Custom subscription tiers
WooCommerce Subscriptions extended for web and API plans, plus multi-user Enterprise plans.
Usage limits. A custom PHP session-based system keeps each customer within their account level.
AWS Lambda. Creates API keys automatically when a subscription is purchased.
DynamoDB and Cognito. Migrated existing customer data, such as company info and favorites, and moved users just in time from the old user pool to the new one.
Mailchimp. Connected for customer email.