Enterprise WordPress development
We build WordPress for businesses with integrations, high uptime requirements or a lot of content.
- What customers seeCustom theme and Gutenberg blocks, pages served from cacheGutenbergCDN
- The applicationBusiness logic in controllers and modelsWPFluentPHP 8.4
- Background jobsEmail and accounting sync run in queuesRedis queuesTripletex
- Data and searchDatabase, cache and product searchMySQLRedisMeilisearch
- HostingSeveral instances behind the load balancerFrankenPHPTraefikCI/CD
When your WordPress sitehas outgrown what it was built for
Many WordPress sites were built for a much smaller job than the one they do today. The online shop had fifty products and now has a thousand, or the website has become a tool the sales team uses all day. The usual way of building WordPress, with a plugin for every need and a bit of custom code in between, wasn't designed for that.
Typical signs are an admin panel that slows down when someone saves, and plugin updates that get put off because an earlier one broke something in the shop. Search also can't find products that are in stock.
Switching platform rarely fixes this, because the problem lies in how the site is built. It's the way the site is put together that has to change, so it can handle being the important work tool it has become.
client.no/wp-adminReview- Of all websites use WordPress
- 40%
- Server response time on FrankenPHP
- <30ms
- Share of requests served from the cache
- 97%
- Plugins installed "just in case"
- 0
Custom WordPress pluginsfor features you can't buy ready-made
We build what you can't find ready-made, such as a customer portal with order history, invoices and support tickets. Other examples are an integration with Tripletex, Power Office or a business system only you use, and chatbots that answer customers based on your documentation.
When a need would otherwise take several generic plugins that each cover part of it, we'd rather write one plugin on our WPFluent architecture. It's small, tested and kept in version control, and it doesn't bring along code nobody uses.
pxl-tripletexIn reviewLivefinal readonly class CreditNoteSync{public function __construct(private TripletexClient $tripletex,) {}public function handle(WC_Order_Refund $refund): void{$this->tripletex->creditNotes()->create(CreditNote::fromRefund($refund),);}}
- PHPStan, level 9
- Pest46 tests
- Migration on staging
- Screenshot test32 pages
We also build custom content blocks for the editor, integrations that exchange data with other systems in real time, and logged-in pages where each user sees what they have access to.
Why conventional WordPress development runs into trouble as the site grows
Conventional WordPress development usually means finding a plugin that almost fits and filling the rest with a bit of custom code. Each shortcut is cheap at the time, but together they make every later change more expensive.
- The way WordPress stores product data is flexible but slows down as the data grows. Filtering 1,000 products by colour, size and stock status puts a heavy load on the server
- Without a fixed structure, the code ends up spread around the theme and in small add-ons. Eventually nobody knows what a small change will affect
- The built-in search can't cope with typos or synonyms, and it doesn't sort by what fits best. A customer types "Ifone" and gets no results, even though you have a hundred phones in stock
- Plugins with known security holes stay in place because updates can cause new conflicts. Without structure, every round of maintenance is a risk
We can go through your current setup and tell you where its limits are, before you decide anything.
WPFluent: WordPress development with a fixed structure
We've built our own framework for WordPress, WPFluent, modelled on Laravel. It gives the code a fixed structure (MVC), where the logic, the database lookups and the display of content are kept apart.
- 01 / 04
The same structure in every project
All our projects are put together the same way. The structure is predictable enough that a new developer can find their way around the code in their first week.
- 02 / 04
Tidy dependencies
Each part of the code gets what it needs from one place (dependency injection). That makes the code easier to test, and a change in one place doesn't break something somewhere else.
- 03 / 04
Testable code
Components are kept separate, and each one is tested automatically with PHPUnit before it's published. If the Tripletex integration fails, the rest of the site isn't affected.
- 04 / 04
No vendor lock-in
The code follows familiar patterns from Laravel, so an experienced PHP developer can pick it up without training. That means you can change provider without changing platform.
app/Http/Controllers/OrderController.php- kundeportal
- app/Http/Controllers
- OrderController.php
- app/Models/Order.php
- app/Services/TripletexClient.php
- routes/web.php
- tests/OrderControllerTest.php
- plugin.php
final class OrderController extends Controller{public function __construct(private readonly TripletexClient $tripletex,) {}public function index(Request $request): View{$orders = Order::query()->forCustomer($request->user())->latest()->paginate(20);return view('orders.index', compact('orders'));}}
A server setupfor heavy traffic
When traffic doubles, the server is often the bottleneck. Shared hosting at NOK 99 a month isn't made for that much traffic.
We run WordPress on FrankenPHP, with Traefik in front and Redis for caching. With this setup, response times typically drop from 200–300 ms to 20–30 ms.
Traefik also makes it possible to publish without downtime. New code can be published in the middle of the day without customers losing their baskets.
40 ms195 ms97% hits18 queriesThe technology we use in operations
FrankenPHP Worker Mode
WordPress starts once and stays ready in memory on PHP 8.4. With classic PHP-FPM the whole of WordPress starts again for every page view, and Worker Mode saves you that time.
Traefik spreads the traffic
Several copies of the site run at the same time. Traefik spreads traffic between them and handles SSL. On release, the new version starts alongside the old one, and traffic moves across once it's ready.
Redis for caching and background jobs
Answers to heavy database lookups are cached, and baskets are kept in memory. Email and syncing with the ERP system run in the background, so visitors don't have to wait.
Version control and automated tests
All code is in Git. Automated tests run before every release, and the test environment is set up the same way as the live site. Routine tasks are automated, and nobody uploads files by hand.
The same site on PHP-FPM and FrankenPHP
Fjelljakke Pro Gore-TexNOK 3,499
Fjelljakke Pro Gore-TexNOK 3,499Load time affects whether visitors stay. Google has measured that longer load times lead to fewer conversions, because more people give up before the page has loaded [1].
Security from the start
Around 90% of hacked CMS sites run WordPress. That says more about how the sites are maintained than about the platform itself. Most break-ins come from plugins that were never updated, passwords reused across services, or a theme from a dubious source. That's why we plan security from the start of the project.
Website firewall (WAF)
Known attack methods are stopped before they reach WordPress. The protection sits in the server setup, so you don't need yet another plugin to keep updated.
Automated security updates
WordPress and its plugins are updated in the test environment first, tested and then published. Security updates go out the same day, and other updates follow a fixed schedule.
Daily backups
Every night we take a full copy of the whole setup, with both files and database. We regularly test that the copy can be restored, and the site can be back up within minutes.
Monitoring and alerts
We monitor uptime, response times and suspicious activity around the clock. We usually get the alert before your customers notice anything. Read more about our maintenance agreement.
WordPress product searchwith Meilisearch
The built-in WordPress search only looks for exactly the words the customer types. If a customer types "winter boots women" and the product is called "Boots, Winter 2026", the results page is empty. That's why we run Meilisearch as a separate search engine alongside WordPress.
Meilisearch copes with typos, sorts by relevance and updates filters as the customer types. With AI, the search engine can also understand what the customer means. Then "something warm for my feet" finds the winter boots too.
Search updates as soon as something changes in WordPress, and it responds in under 12 milliseconds.
Winter ankle boots 2026FjellsportNOK 1,89996 %
Nord women's winter bootFjellsportNOK 1,49993 %
Thick wool socks, 2-packVardeNOK 24988 %
Gore-Tex winter walking shoeNorheimNOK 2,19984 %
something warm→Lined or woolfor my feet→Shoes, boots and socksboots→Ankle boots count too- Response time
- 9 ms
- Relevance
- 94%
- Products indexed
- 1,240
Traditional, hybrid or headless WordPress?
| Traditional | HybridWe recommend this | Headless | |
|---|---|---|---|
| Response time | Slow (2–5 s) | Fast (under 200 ms) | Fast (under 100 ms) |
| Day-to-day editing | Simple | Simple | Needs a developer |
| Content preview | Yes | Yes | Limited |
| Gutenberg editor | Yes | Yes | No |
| Plugin support | Full | Partial | Minimal |
| Capacity during traffic peaks | Limited | High | Very high |
| Cost to build | Low | Medium | High |
| Long-term maintenance | Simple | Moderate | Complicated |
Norwegian requirements you need to meet
Privacy and GDPR
The Norwegian Data Protection Authority pays attention to where personal data is stored and who processes it. If your site sends form data to American third parties without a data processing agreement, that may breach data protection rules. We store the data in the EU/EEA.
Accessibility (WCAG)
The Norwegian accessibility regulations have been tightened. We build to WCAG 2.1 AA from the first sketch, because fixing accessibility afterwards costs more.
Norwegian integrations
We connect WordPress to Tripletex, Power Office, HubSpot, Vipps, BankID and Altinn, the government's portal for business reporting. Off-the-shelf plugins often struggle with Norwegian date formats, organisation numbers and VAT rates, so we build the integrations ourselves.
Consent and form handling
Forms often collect personal data that has to be handled under data protection rules, and newsletters require consent. We build the forms into the site, so the data doesn't pass through a free plugin to a server in the US.
What enterprise WordPress development costs
The price depends on how complex the project is and how many integrations it needs. After a first conversation you get a concrete estimate that we stick to. If an ordinary business website is enough, the prices are on our website page.
Ordinary business website
FromNOK 50,000
Custom theme and accessibility, no integrations
Enterprise WordPress
FromNOK 150,000
CRM/ERP integrations, dedicated search, test environment and automatic publishing
Enterprise WooCommerce
FromNOK 200,000
Dedicated search, servers that handle campaign traffic, Vipps and Klarna
Maintenance and SLA
FromNOK 2,500/month
Monitoring, security, updates, agreed response time
How an enterprise WordPress project runs
The same team follows the project from the first meeting into operation, so knowledge about the project doesn't get lost in a handover.
Discovery and planning
First we get to know the business: the traffic, which systems need connecting and what isn't working today. Then we make a plan for how the solution will be built, and explain why we choose as we do.
Development with automated tests
The code is in Git from the first line, and every change goes through automated tests. You follow the work in the test environment and give feedback directly there.
Launch without downtime
We handle publishing, moving the domain, the SSL certificate and the security settings. Once you've approved it, we put the site live.
Operation after launch
Once the site is live, we look after it under the maintenance agreement. It covers monitoring, automatic updates and an agreed response time.
Who enterprise WordPress is for
Most businesses don't. If you have five information pages and moderate traffic, an ordinary business website will do. If the points below sound familiar, though, it's worth taking a closer look at how the site is built:
At that point it's more about infrastructure than an ordinary website. This is the kind of project we do most.
- The business depends on the site, and downtime means lost revenue
- Development has stalled because the standard setup can't keep up
- The database keeps growing, and search results keep getting worse
- You need integrations with Norwegian systems such as Tripletex, HubSpot or a booking system
- The contracts you sign set firm requirements for security and compliance
- You want to own the code yourself, so you can change provider if you choose to
Eight questions to ask a WordPress developer
- Is the code in Git, so you can see what has changed and who changed it?
- Is there a test environment, or are changes tested directly on the live site?
- Can they show measured performance figures, rather than just saying the site "is fast"?
- How do they handle security beyond updating WordPress and plugins?
- Do they write their own plugins, or put together ready-made ones from the marketplace?
- What do you get after launch? Is there a maintenance agreement with an SLA and an agreed response time?
- Do they have references from Norwegian businesses with similar needs?
- Will you own the code afterwards, and will you have access to it yourself?
Tell us how the site is used today and what's coming, and we'll say what we think needs to change and what it will cost.
Frequently asked questions
Can WordPress handle large websites?
Yes. Time, TechCrunch and The New Yorker use WordPress and have millions of page views a month. How much a site can take depends on how it's built and run. In our setup, FrankenPHP Worker Mode keeps the application ready in memory, and Redis caches heavy database lookups. Search goes to a separate search engine, so the database doesn't carry that load.
What's the difference between WPFluent and traditional WordPress development?
WPFluent gives WordPress a fixed structure modelled on Laravel. The logic, the database lookups and the display of content are kept apart, and each part is tested automatically before it's published. The code is easier to learn and to change, which keeps maintenance cheaper.
Why FrankenPHP instead of traditional Apache/Nginx?
With Worker Mode the application stays started and ready in memory. Each request skips the start-up that classic PHP-FPM repeats for every page view. Response times fall from a couple of hundred milliseconds to well under thirty, and the server handles traffic peaks with less hardware. That means lower running costs day to day and more capacity when a campaign sends a thousand visitors at once.
Should I choose headless or hybrid?
Both move parts of the site out of WordPress, but to different degrees. With headless, a separate frontend builds the whole site and fetches the content from WordPress through an API. That gives the best performance, but you lose content preview and the Gutenberg editor, and frontend changes need a developer. Hybrid keeps the WordPress theme and editing tools and uses a separate frontend only where there's a clear gain. The table above compares them point by point.
Can you modernise an existing WordPress site?
Yes. First we map what's actually in use. Then we remove plugins nobody needs and move the custom code into WPFluent. Content and design come across as they are. Before anything is published, we test thoroughly, and the switch happens without downtime. To visitors, the site looks the same as before.
What does enterprise WordPress development cost?
Enterprise WordPress with CRM or ERP integrations costs from NOK 150,000, and enterprise WooCommerce with dedicated search and load balancing from NOK 200,000. If an ordinary business website is all you need, the price starts at NOK 50,000. Where your project ends up depends on the number of integrations and how much custom logic is needed. After a first conversation you get a concrete estimate. Our pricing overview lists prices for the other WordPress services.
What's the difference between theme development and plugin development?
The theme decides how the site looks. Plugins decide what it can do, such as logged-in pages, connections to other systems and custom content types. We build both but keep them apart, because the functionality belongs in plugins. If the logic lives in the theme, it disappears when the design changes and has to be rebuilt. With two separate layers you can change the look without touching the functionality.
Can you integrate WordPress with Tripletex or HubSpot?
Yes. We connect WordPress to Tripletex, Power Office, HubSpot and booking systems with our own integrations built on WPFluent. We avoid ready-made connector plugins from the marketplace, because they often stop working after an update and can leave data missing. An integration written for you follows your data model and handles Norwegian organisation numbers and VAT rates correctly. It can sync continuously, so you don't wait for an overnight batch.
Do I need headless WordPress?
Probably not. For most businesses, hybrid gives a site that's almost as fast, with much less complexity, and editors keep the tools they know. Headless costs more to build and maintain, and the gain is often smaller than expected. We only recommend it when concrete performance figures or frontend requirements justify it.
What is WordPress Bedrock, and do you use it?
Bedrock gives WordPress dependency management with Composer, environment variables and a tidy project structure to start from. WPFluent builds on the same principles and also adds a fixed structure for the code itself and automated tests. Bedrock sorts out how the files are organised, while WPFluent sets out how the application itself is built. In projects where Bedrock fits, we use parts of it alongside WPFluent.
Talk to a developer about your WordPress site
Write a few lines about what you want to achieve, and we'll get in touch.