Abuja Digital Studio · Est. 2018
Start a Project
← All plugins
Live · v1.0.0 · Premium

OPWA

Turn any WordPress site into a Progressive Web App. Dynamic manifest generation, configurable service worker with five caching strategies, offline support with cached-page list, push notifications via your own VAPID keys, background sync for offline form replay, and a smart install prompt. All in one admin panel, all on your server.

WP 6.0+PHP 7.4+3 database tables9 admin pages
0SW page-views today
0Cache-hit rate
5Caching strategies
Lifetime updates
~ opwa / sw.log
● live

Audit a domain.
See if it’s PWA-ready.

A UI simulation of OPWA’s built-in Lighthouse audit panel, showing exactly what the tool looks and feels like inside your WP admin. When installed, it runs the four checks against your live site and surfaces every fix in one click.

Audit a domain.
Read the report.

Simulated demo. Runs automatically as you scroll. The real plugin runs the four checks against your live origin and surfaces each fix inline.

Demo simulation
Manifest valid·awaiting audit
Service worker·awaiting audit
HTTPS + headers·awaiting audit
Lighthouse PWA·awaiting audit

Everything PWA,
nothing extra.

One plugin. No external services unless you want them. No tracking pixels phoning home. Your data, your server, your rules.

// 22 features · 3 database tables · 9 admin pages
Dynamic web app manifest at /manifest.webmanifest
Manifest also at /manifest.json (legacy)
Auto icon generation (10 sizes + maskable)
App screenshots in manifest
Web Share Target API support
Configurable service worker at /sw.js
Cache-first strategy (assets, fonts)
Network-first strategy (pages, API)
Stale-while-revalidate strategy
Network-only and cache-only options
Per-route strategy override (filterable)
Custom precache URL list
Offline page with cached-pages list
Background sync (offline form replay)
Push notifications via your own VAPID
Subscriber storage in your database
Scheduled push campaigns
Click-through analytics per campaign
Smart install prompt (visit / scroll / delay)
iOS A2HS instructions overlay
90-day analytics dashboard
WP-CLI for cache, push, and audits

Click around.
It’s all real.

Six interactive previews of the actual OPWA admin. No screenshots; these are working mock-ups of what ships in the plugin.

Manifest

App identity, icons, screenshots, theme color, display mode. Served at /manifest.webmanifest and /manifest.json for legacy clients.

318BManifest size
10Icon sizes
3Screenshots
ValidLighthouse PWA
Manifest previewlive
nameOrravo PWA Demo
short_nameOrravoPWA
displaystandalone
theme_color#ff5a1f
background_color#0a0a0a
start_url/
scope/
orientationportrait-primary
share_targetenabled

Service Worker

Five caching strategies, per-route overrides, custom precache list. Click Simulate run to watch a request flow through. Click any card to make it the active step.

Request /blog/x/Browser asks the SW for /blog/x/. Strategy lookup matches network-first for pages.
Network raceSW fires the network request with a 3s timeout. Cached copy held in reserve.
Network winsFresh HTML returned in 480ms. Response stored in pages cache, capped at 100 entries.
Beacon dispatchedSW fires a beacon to /wp-json/opwa/v1/beacon. cache_misses incremented.
Configured routes5 strategies
/ (pages)network-first · 3s timeout · 24h max-ageactive
/wp-content/ (assets)cache-first · 7d max-age · 120 entriesactive
/wp-content/uploads/ (images)cache-first · 30d max-ageactive
/api/ (custom)stale-while-revalidate · 5m max-ageactive

Push notifications

VAPID keys generated on your server. Subscribers stored in wp_opwa_subscribers. Send to all, by device, or by segment.

120Subscribers
50Android
40Desktop
30iOS
Recent campaignslive sample
TitleStatusSentOpened
New release: v2 dashboardsent12051 (43%)
Weekend reading: 5 PWA patternssent11738 (32%)
New article: shipping fastersent11842 (36%)
Office hours tomorrow at 3pmscheduled+1d·
Black Friday: 30% off lifetimescheduled+5d·
Draft: thank-you notedraft··

Install prompt

A2HS prompt for Android and desktop. iOS instructions overlay for Safari. Trigger on visit count, scroll depth, or a fixed delay.

VisitsTrigger mode
2Visits before show
7dDismiss snooze
iOS A2HSOverlay enabled
Install funnel · last 30 daystrending up
Install events by platformlast 30 days
Android (Chrome)148 prompts shown62 installs (42%)
Desktop (Chrome / Edge)92 prompts shown34 installs (37%)
iOS (Safari A2HS overlay)71 overlays shown18 installs (25%)

Offline + background sync

A custom offline page, a list of pages still readable from cache, and an IndexedDB queue (opwa-sync) that replays POST requests when connectivity returns.

/offline/Fallback URL
4Precached routes
OnForm queue
OnShow cached pages
Pending sync queuelive
POST /wp-json/contactqueued 4m agoawaiting reconnect
POST /wp-json/comments/v1/submitqueued 12m agoawaiting reconnect
POST /wp-json/ordersreplayed 2m ago200 OK
POST /wp-json/newsletterreplayed 18m ago200 OK

Analytics

Beacon-based, first-party. Daily aggregates for SW page-views, cache hits, offline sessions, install prompts, and installs. 90-day rolling window.

11,420SW page-views
78%Cache-hit rate
114Installs (90d)
418Push opens (90d)
Cache hits vs. misses · last 8 weeksgrowing
Top metricsaggregated 90d
SW registrations914healthy
Page-views with SW9,884 of 11,420 (87%)healthy
Offline sessions318tracked
Install prompts shown1,212tracked
Installs114 (9.4% conversion)tracked
Read the developer docs

What you get
vs. what they sell you.

Most "PWA for WordPress" plugins are a free shell with the real features locked behind a yearly pro license. OneSignal handles push, but only push, and your subscribers live on their servers. OPWA ships everything in one install, with a one-time price.

PWA for WPSuper PWAOneSignalOPWA
Dynamic web app manifestnoNative
Auto icon generation (10 sizes + maskable)paid propaid pronoBuilt in
App screenshots in manifestpaid prononoBuilt in
Web Share Target APInopaid pronoBuilt in
5 caching strategies (cache-first, network-first, SWR, etc.)paid pro2 onlynoAll 5
Per-route cache strategy overridepaid prononoBuilt in
Background sync (offline form replay)paid prononoBuilt in
Custom offline pagenoBuilt in
Cached pages list on offline viewnononoBuilt in
Push notifications (VAPID, self-hosted)paid add-onpaid procore featureBuilt in
Push subscriber storage (your DB, no third party)nonotheir serversYour DB
Scheduled push campaignspaid pronoBuilt in
Click-through analytics per campaignpaid pronoBuilt in
Install prompt (Android + desktop)noBuilt in
iOS A2HS instructions overlaypaid prononoBuilt in
Visit / scroll / delay prompt triggerspaid prononoBuilt in
WP-CLI commandsnononoBuilt in
Lighthouse PWA audit hooksnononoBuilt in
REST API for SW + manifestnononoBuilt in
Cache + analytics admin dashboardbasicBuilt in
Pricing modelFree + $99 proFree + $99 pro$120/mo per app$79 once

Clean public API.
Read the source.

PSR-4 namespaced classes, helper functions for the common stuff, REST endpoints, WP-CLI commands, and a hook surface that lets you extend any subsystem without forking.

// Configure the service worker per route. Filter runs at SW build time.
add_filter('opwa_service_worker_routes', function($routes) {
    $routes['/api/'] = [
        'strategy' => 'network-first',
        'timeout'  => 3000,
        'max_age'  => 300,
    ];
    $routes['/products/'] = [
        'strategy'    => 'stale-while-revalidate',
        'max_age'     => 3600,
        'max_entries' => 200,
    ];
    return $routes;
});

Choose your plan.
Lifetime or monthly.

No tiers based on subscriber count. No per-seat tax. Pay once, install on the sites in your tier, get every future update free.

// lifetime
One-time payment. All future updates included.
₦159K
≈ ₦80K
// monthly
Cancel any time. No lock-in.
≈ ₦4K/mo

Asked & answered.

Will OPWA conflict with my caching plugin (WP Rocket, W3 Total Cache)? +
No. OPWA serves the manifest and service worker through WordPress hooks at request time. Page caches store the HTML; the service worker is a separate script that the browser fetches once and runs locally. We provide a filter to exclude /sw.js and /manifest.webmanifest from any plugin that strips query strings or compresses scripts in a way that breaks SW registration.
Does push work on iOS? +
Yes, on iOS 16.4 and above, after the user installs the app to their home screen. iOS doesn't allow push from unInstalled web pages. OPWA detects the platform, shows the iOS A2HS instructions overlay first, and only requests push permission once the app is installed. Older iOS users see no push UI at all.
How big is the service worker? +
About 6KB minified. The cached payload depends on your settings: by default, OPWA precaches the homepage, the offline page, and the icons (under 50KB total). Subsequent visits cache pages and assets according to the strategies you choose, capped at the max_entries limit you set in admin (default 100).
Can I use my own VAPID keys? +
Yes. Generate the key pair on the server of your choice (the admin includes a one-click generator that uses PHP's openssl extension), paste the public key into JavaScript and the private PEM into OPWA settings. We never transmit your private key off your server. If you switch keys later, OPWA invalidates existing subscriptions and prompts users to re-subscribe on next visit.
What happens to push subscribers if I deactivate OPWA? +
The wp_opwa_subscribers table stays intact (we only drop tables on uninstall, not on deactivate). Reactivate later and your subscribers reconnect on their next visit, since the endpoint and keys are still valid. If you uninstall, the table is dropped; subscriptions become orphaned and the user re-subscribes on a future visit.
Refund policy? +
14-day no-questions refund. We're a small studio in Abuja and we'd rather you tell us what didn't work and let us fix it, but we won't argue if you'd rather have your money back.

Stop bolting plugins together.
Ship your WordPress site as an app.

Get OPWA for ≈ ₦80K one-time