OForms
Lightweight form builder and workflow automation engine for WordPress. Build forms with 23 field types, wire 10 conditional-logic operators, fire 11 workflow action types on every submit, post HMAC-signed webhooks to Zapier / Make / n8n, expose entries over a read+write REST API with key auth. Clean namespaced PHP, ten database tables, one admin surface.
Test a form.
See what it can do.
This is a UI simulation of OForms’ built-in capability inspector, showing you exactly what the tool looks and feels like inside your WP admin. When installed, it reads the actual schema of every form on your site.
Test a form.
See what it can do.
Simulated demo. Runs automatically as you scroll. The real plugin reads live data from your forms.
Everything forms,
nothing extra.
One plugin. No external services unless you want them. No tracking pixels phoning home. Your data, your server, your rules.
Click around.
It’s all real.
Six interactive previews of the actual OForms admin. No screenshots; these are working mock-ups of what ships in the plugin.
| Form | Fields | Entries (30d) | Workflows | Last entry |
|---|---|---|---|---|
| Contact | 5 | 418 | 2 active | 2m ago |
| Newsletter Signup | 2 | 612 | 1 active | 14m ago |
| Demo Request | 11 | 184 | 3 active | 1h ago |
| Bug Report | 8 | 92 | 1 active | 3h ago |
| Job Application | 14 | 318 | 2 active | 5h ago |
| Support | 7 | 218 | 2 active | 8h ago |
| Form | Status | Workflow | When | |
|---|---|---|---|---|
| Contact | adaeze@velluma.com | new | send-confirmation | 2m ago |
| Demo Request | tunde.b@northrise.io | read | tag-and-route | 14m ago |
| Newsletter | m.okafor@craftshop.ng | read | subscribe-omailer | 1h ago |
| Bug Report | dev@labs.ng | new | fire-webhook | 3h ago |
| Job Application | ifeoma@studiof.co | spam | none | 6h ago |
| Send confirmation email | Contact form · all entries | active |
| Route enterprise demos | Demo Request · team_size = 50+ | active |
| Subscribe to newsletter | Newsletter Signup · all entries | active |
| Fire webhook to Slack | Bug Report · severity = high | paused |
| Tag and route applications | Job Application · all entries | active |
| hooks.zapier.com/of/contact | entry.created | active |
| crm.example.com/of/demos | entry.created · workflow.completed | active |
| n8n.example.com/webhook/of | all events | active |
| legacy.example.com/api | entry.created | retrying |
| Endpoint | Event | Status | Latency |
|---|---|---|---|
| hooks.zapier.com | entry.created | 200 OK | 118ms |
| crm.example.com | workflow.completed | 200 OK | 92ms |
| n8n.example.com | entry.created | 200 OK | 204ms |
| legacy.example.com | entry.created | 503 retry | 1,841ms |
| hooks.zapier.com | entry.created | 200 OK | 108ms |
| recaptcha_enabled | true · score >= 0.5 | active |
| honeypot_enabled | true · field _of_website | active |
| SMTP detection | WP Mail SMTP detected | healthy |
| REST API base | /wp-json/of/v1 | live |
| API keys (wp_of_api_keys) | 3 active · last used 2m ago | active |
| email_async (wp_of_email_queue) | cron · 60s tick · rate 30/min | healthy |
| Workflow queue (wp_of_queue) | cron · 60s tick · 0 backlog | healthy |
| data_retention_days | 365 days, GdprManager purges nightly | active |
What you get
vs. what they sell you.
Most form plugins for WordPress are a free shell with paid add-ons for everything that matters (logic, workflows, webhooks, exports). OForms ships the whole surface in one install with a one-time price.
| Gravity Forms | Contact Form 7 + extras | Formidable Forms | OForms | |
|---|---|---|---|---|
| Visual form builder | ✓ | no | ✓ | Built in |
| Field types out of the box | 40+ | ~6 | 30+ | 23 essentials |
| Conditional logic operators | 6 | no | 8 | 10 operators |
| Multi-step forms with progress bar | ✓ | no | paid add-on | Built in |
| File upload, signature, address, repeater fields | paid add-on | no | paid add-on | Built in |
| Workflow automation (11 action types) | paid add-on | no | paid add-on | Built in |
| Outbound webhooks (Zapier / Make / n8n) | paid add-on | no | paid add-on | Built in |
| REST API (read + write) | ✓ | no | ✓ | Built in |
| REST API key authentication | paid add-on | no | paid add-on | Built in |
| Partial entries + abandonment capture | paid add-on | no | paid add-on | Built in |
| Async email queue with retry | paid add-on | no | paid add-on | Built in |
| CRM integrations (Mailchimp / HubSpot / Brevo / ActiveCampaign / ConvertKit) | paid add-on | no | paid add-on | Built in |
| reCAPTCHA v3 + honeypot | ✓ | add-on | ✓ | Built in |
| Conversion analytics with view tracking | paid add-on | no | paid add-on | Built in |
| Email notifications with merge tags | ✓ | ✓ | ✓ | Built in |
| Entry inbox with status (new / read / spam) | ✓ | no | ✓ | Built in |
| CSV / JSON / XLSX export | ✓ | paid add-on | ✓ | Built in |
| Form templates (6 starter forms) | ✓ | no | ✓ | Built in |
| Elementor widget | paid add-on | no | ✓ | Built in |
| GDPR consent + retention | paid add-on | no | paid add-on | Built in |
| Hooks for every event | ✓ | limited | ✓ | Built in |
| Pricing model | $59 yr / 1 site | Free + paid extras | $39.50 yr / 1 site | $49 once |
Clean public API.
Read the source.
PSR-4 namespaced classes under OForms\\, helper functions for the common stuff, REST endpoints at /wp-json/of/v1, WP-CLI commands, and a hook surface that lets you extend any subsystem without forking.
// Build a form in PHP, save it to wp_of_forms via FormRepository. use OForms\Forms\FormRepository; $repo = new FormRepository(); $form_id = $repo->create('Demo Request', [ 'success_message' => 'Thanks. We will reach out shortly.', 'redirect_url' => '/thanks', 'theme' => 'card', '_recaptcha_enabled' => true, ]); $repo->save_fields($form_id, [ ['type' => 'text', 'config' => ['label' => 'Full name', 'required' => true]], ['type' => 'email', 'config' => ['label' => 'Work email', 'required' => true]], ['type' => 'dropdown', 'config' => ['label' => 'Team size', 'options' => ['1-10', '11-50', '50+']]], ['type' => 'textarea', 'config' => ['label' => 'What you want demoed']], ['type' => 'gdpr_consent', 'config' => ['label' => 'Sales contact OK']], ]); // Embed anywhere with [oform id="{$form_id}"] or the oforms/embed block.
Choose your plan.
Lifetime or monthly.
No annual renewal tax. No tiers based on submission count. Pay once, install on the sites in your tier, get every future update free.

