Five systems, one record, no integration in between.
Oneop is 329 database tables, 275 of them tenant-scoped, in one PostgreSQL database with one tenant boundary. A deal, its quote, its invoice, the stock it reserved and the ledger entry it posted are rows in that one database — not five products stitched together with sync jobs and webhooks that can silently drift out of agreement.
Every handoff is a place where the number changes
When a CRM, a help desk, a warehouse system and an accounting package are separate products, every field that appears in two of them is a copy, not a fact — and a copy can disagree with its source.
An integration between separate systems does not remove that risk, it schedules it: a webhook that fails silently, a sync job that runs every fifteen minutes instead of instantly, a mapping that was correct on the day it was built and has quietly drifted since. Oneop's approach is not a faster sync — it is not having a handoff to sync at all. The order, the invoice and the shipment are the same row set, updated in the same transaction, by the same code.
Static illustration of the architectural difference.
Follow one order from a chat message to a closed period
Five stages, one record, no step where the data is copied out of one system and into another.
LEAD-00042 — from a per-tenant, gap-free sequence. A quote becomes a sales order without re-entry, and every document in the chain appears on the account's sales-history tab because they share one lineage, not a foreign key that only sometimes resolves.Quotes require Starter and above.One record is a schema property, not a marketing word
329 tables, 275 of them carrying a tenant_id. The 54 that don't are the operator console, global reference data like tax jurisdictions, and child rows that reach their tenant through a foreign key. The tenant boundary is not a filter applied at the API layer after the fact — it is a column on the table.
Three separate session principals exist in the same codebase — the tenant application, the operator console, and the client portal — each signed with its own distinct secret. Production refuses to boot if those secrets are not distinct, which is a stronger guarantee than a code comment promising they'll be kept apart.
Thirteen custom field types are available across ten entity types, and tasks attach polymorphically to twelve entity types — a task on a deal and a task on a ticket are rows in the same table, not two separate task systems that happen to look alike.
Static illustration of the tenant boundary.
The four things underneath that are hard to fake
A general ledger, not a revenue chart
P&L, balance sheet, trial balance, cash flow, GL detail, and AR/AP aging all read posted journal rows directly — there is no separate reporting cube that could show a different number than the ledger itself.
Opt-in module
A warehouse system, not a stock field
Multiple warehouses, bin locations, lot and batch tracking, variants, transfers and cycle counts. Purchase orders carry landed cost; inventory is costed weighted-average or FIFO. Demand forecasting uses Holt's double exponential smoothing — a statistical method, stated plainly as statistical rather than dressed up as AI.
On by default.
Statutory tax, not a rate field
Pakistan's 13 federal and 4 provincial rates, all 27 EU member states, Canada's federal scheme plus 9 provincial HST/PST/QST variants, and Egypt. Live filing connections to HMRC in the UK and FBR/PRAL in Pakistan, with offline retry. The UAE, Bahrain, the US and EU OSS are export-only; Saudi ZATCA support covers Phase 1 only.
Opt-in module
Localization that reaches the documents
Eight fully translated languages including Arabic and Urdu, both genuinely right-to-left. Invoice, bill and credit-note PDFs render with an embedded Arabic typeface, a mirrored layout and locale-correct money formatting — not a translated button label sitting on top of a left-to-right document. Fields can be renamed per tenant, and individual records can carry per-language translations.
Where Oneop meets your customers
Two channels, both landing in one shared inbox against the record everything else on this page is about.
Web chat
- One script tag on your own site, or the official WordPress plugin.
- Bot flows hand off to a human with the visitor's place in the queue preserved, and both sides of the conversation persist through one code path.
- A chat that becomes a deal creates a native CRM contact, not a "chat lead" to convert later.
- Two-way, from each rep's own Gmail, Microsoft 365 or SMTP/IMAP mailbox.
- Transactional mail out through SendGrid or Postmark, with inbound verified and fail-closed.
- Replies thread onto the ticket, so the conversation and the record stay one thing.
What has shipped and what is next is dated and public: see the roadmap →.
Half of this product is off until you turn it on
Off means off. It is not a nag screen sitting on top of a feature you haven't paid for — the routes 404, the background schedulers do not run, and the navigation entry is not there at all.
| Capability | Default |
|---|---|
| Finance and accounting | Off until you ask |
| Statutory tax filing | Off until you ask |
| Project management | Off until you ask |
| Sales sequences | Off until you ask |
| Email-to-ticket | Off until you ask |
| Two-factor authentication | Off until you ask |
| E-signature | Off until you ask |
| AI Workforce finance and stock actions | Off until you ask |
The last row is the clearest statement of the posture. Even on a workspace where an agent is set to fully autonomous, and even where a human has approved the specific action, a finance or stock write from the AI Workforce stays blocked until that switch is explicitly turned on.
One layer is different from all of these: prompt-injection blocking and PII redaction on every AI model call cannot be turned off. There is no switch, no plan tier and no administrator setting that disables them.
Questions people ask first
Which channels do customers reach you on?
A website chat widget and email. The widget goes up with one script tag or the official WordPress plugin, and email runs both directions from each rep's own Gmail, Microsoft 365 or SMTP/IMAP mailbox. Both feed one shared inbox against the same customer record.
Is Oneop really one system, or separate products behind one login?
One PostgreSQL database, one tenant boundary, 329 tables of which 275 carry a tenant_id. A deal, its invoice and the stock movement it triggered are rows in that one database, not records synced between separate services. The proof is mechanical: voiding an invoice reverses its ledger entry and releases the stock it reserved, in the same action, because both live in the same transaction boundary.
Which AI model does Oneop use?
Google Gemini. One provider, reached through one metered router, which is what makes AI spend attributable per workspace. Business plans can supply their own Google AI key.
Why do I have to ask for the finance module?
Because a general ledger is not something to turn on by accident. Finance is off in every new workspace until someone opts in deliberately. The same posture applies to statutory tax filing, and to AI agents touching finance or stock, which stays blocked regardless of the agent's autonomy setting or a human approval.
How is my data protected?
By architecture you can check control by control: scrypt password hashing, AES-256-GCM encryption of stored third-party credentials, three separate session principals whose signing secrets production refuses to boot without, an SSRF guard re-run on every redirect hop, and fail-closed webhook signature verification. The Security page names each one.
Can I use only the parts I need?
Yes. Finance, project management and sequences stay off until you ask for them, and off is not cosmetic — the routes 404, the schedulers do not run, and the navigation entry is not there. Inventory and the core CRM and support modules are on from day one, because most workspaces need them.
See for yourself
See whether it holds up
Open a free workspace, create a real deal, and follow it through to an invoice yourself. The record either holds together or it doesn't — that's a five-minute check, not a sales conversation.
Sign-up opens when the app launches. We will email you once — no marketing list.