Support

Need help?

Most answers are already written down. For everything else, Oneop does not publish a response time — there is no SLA instrument behind one — so the fastest thing you can do is send a complete first message.

Search the help centreEmail support@oneop.ioOpen your workspace

Worth including

  • The email you log in with
  • The URL of the screen it happened on
  • What you expected, and what happened instead

Goes somewhere else

Automation

Let work move without chasing the next person.

Most of what slows a small company down is not the work. It is the gap between one person finishing and the next person finding out. A deal closes and somebody has to remember to open the project. A ticket goes quiet and somebody has to notice.

Oneop closes those gaps with automations you build by picking, not scripting — and some of them can wait a day, or stop and ask a person, without losing their place.

No credit card. Free plan, 2 seats. Automation included.

  • 7

    Step types in the workflow builder

  • 12

    Distinct events an automation can start from

  • 48

    Steps one run may take before it stops itself

  • 8

    Model calls one run may make, however it branches

  • 0

    Automation features behind a paid plan

Define what should happen. Oneop keeps the record of what did.

An automation is four things: what starts it, what has to be true, what it does, and what it left behind. Only the first three are yours to design. The fourth is the part that makes an automation something you can trust in a month’s time.

  • Something happensA record changes, a ticket moves, an SLA target is missed, or a schedule comes round. Twelve of them, listed one at a time below — because they do not all behave the same way, and averaging them would be the easy lie to tell here.
  • The rules that match runConditions are checked before anything happens. A rule that does not match is not a failure and is not silence — the run is recorded as skipped, so “why didn’t that fire” has an answer rather than a theory.
  • Steps execute — and some of them stopUpdate fields, branch, open work, call a webhook, send an email, ask a model. Or wait a day. Or hold until a named role approves it. The waiting kind is where the engineering actually is.
  • The run is written downEvery run that reaches an end writes its trace: which steps it attempted, in what order, what each one decided, and where it stopped. Including the failures, with the error attached.
  1. A change

    A record moves, a target is missed, or a schedule comes round
  2. Rules match

    Conditions first — a rule that does not match records that it did not
  3. Steps run

    Update, branch, create, call out — or wait, or ask a person
  4. Written down

    What it attempted, in order, and where it stopped

What starts it, what it does, and what it costs you to be wrong

Four mechanisms, in the order a piece of work passes through them — including the two places where Oneop makes a weaker promise than the category usually does, both stated here rather than left for you to discover in production.

Step 1

Twelve things can start an automation, and they do not all work the same way

The sentence every tool in this category wants to write is “when something happens, your automation runs”. We are not going to write it, because the right-hand column of this table would make it untrue. Three different mechanisms are represented here, and the difference between them is the difference between a nice demo and a thing you can put a business on.

Every event that can start an Oneop automation, which module it comes from, and how it reaches the automation
What starts itWhere it comes fromHow it reaches the automation
A contact is createdCRMImmediately, as the record is saved
A deal moves to another stageCRMImmediately, as the record is saved
A project is createdProjectsImmediately, as the record is saved
A milestone is completedProjectsImmediately, as the record is saved
A ticket is raisedHelp desk and the customer portalImmediately, and the ticket waits for it to finish
A ticket changes hands, status, priority or closesHelp deskImmediately, alongside the change rather than as part of it
An SLA target is breachedHelp deskOn a five-minute sweep — claimed first, so one breach fires once
A schedule you setThe clockOn a recurring scan, at the cadence you chose

Two of those rows are stronger than the rest and are marked. A raised ticket waits for its automations to finish before the response comes back, so nothing races the reply. And an SLA breach is claimed before it fires, which makes it fire exactly once even if two sweeps overlap — a breach is a condition rather than an event, and firing it twice would escalate the same ticket twice.

Step 2

Watch it do nothing first

A workflow can update a field, branch on a condition, log an activity, open a project, send an email or call a webhook. A ticket automation can set status, priority, owner or tags, escalate, notify, reply to the customer, ask a model, wait, or hold for an approver. What matters more than either list is that you can point one at a real ticket and watch the whole thing execute with nothing written and nothing sent.

A dry run is not a preview of your configuration — it is the run, against real data, with the writes withheld. Which is why it is worth being precise about the two kinds of step, because the difference changes what the trace can tell you.

What each kind of automation step does on a live run compared with a dry run
StepOn a live runOn a dry run
Conditions and branchingDecides which path the run takesIdentical — evaluated against the real ticket
Set status, priority, owner or tagsWrites to the ticketComputed exactly as it would be, then discarded unwritten
Assign to an agentPicks an agent by the rule you choseReports that it would assign — it does not run the picker
Notify someoneSends the notificationReports who it would have gone to
Reply to the customerPosts the reply on the ticketReports the reply and its length, and posts nothing
An AI stepCalls a model and spends creditsDerives the same fields without a model call, and costs nothing
A waitPauses the run for as long as you setPasses straight through, so you see the whole flow at once
An approvalPauses and waits for a personPasses straight through, marked as the point it would have stopped

The marked rows are computed exactly as they would be live. The rest report what they would have done rather than doing it — so a dry run will tell you that it would assign the ticket, and not which agent the rule would have picked. That is a real limit of the simulator and knowing it is the difference between reading the trace correctly and misreading it.

Step 3

The two steps that stop, and why one of them is hard

An automation that has to finish in one go is not much use for the things you actually want automated. “Wait a day and then follow up if nobody replied” and “do this, but only once a manager says so” are both ordinary requests, and both mean the run has to stop and come back.

Stopping to ask a person is the easy one: the run is put away with a question attached, and a named role answers it. The rank is checked at the moment of the decision rather than when the button is drawn, so the wrong person is refused rather than merely not shown the control.

Waiting is the one worth judging a product on. The naive version is a timer, and a timer is a thing your server forgets the moment it restarts. Here the pause is a row: the step it stopped at, the variables it had gathered, the trace so far, and a copy of the flow as it was when the run began. A restart cannot lose it, because the process was never holding it.

Step 4

A model can be a step. It is not the engine.

An AI step can read the tone of a ticket, sort it into a category with a priority and tags, summarise it, or draft text. What comes back becomes variables, and your own conditions branch on them. The model informs a decision. Your rules make it.

That ordering is the whole design. It means the thing you audit is your flow, not a model’s judgement, and it means an automation stays explicable to somebody who did not build it.

Every call is metered against your workspace’s credits, exactly like every other model call in Oneop, and a single run is capped at eight of them however many branches it takes. Prompts pass through the same guardrail layer as the rest of the product, which refuses a manipulated instruction outright rather than passing it along. How models are constrained and governed across Oneop is one page:AI governance.

One thing we will describe accurately rather than flatteringly. You can set a certainty threshold on an AI step, and today that threshold is a reading rather than a brake: the run records how sure the model was and what a threshold would have done about it, and then carries on. Turning that into a refusal is a change to how existing automations behave, so it is being proved against real traffic before it becomes the default. Until it is, we are not going to call it a refusal.

Connected with Oneop

A trigger in one module can act in another, with nothing in between

Automation is not a module you connect to the others — it is the wiring underneath all of them. A deal reaching closed won can open a project. A ticket breaching its SLA can escalate it and tell an owner. A project milestone can raise the invoice conversation. None of that is an integration, there is no connector to configure and no credentials to store, because every one of those steps is reading and writing the same tables the rest of Oneop already uses, inside the same workspace, on the same run. That is the difference between automating across your business and automating between your tools.

You are hereAutomationA trigger in one module can act in another without an integration between them.

The other 6 modules sit on the same record, and reach Automation the same way:

Beyond the four

A run either finishes or rolls back

Workflow steps run inside one transaction, so a failure at step four undoes the field updates from steps one to three. The honest edge: an email or webhook already delivered at step two stays delivered. Nothing can call those back.

Ceilings that stop a runaway

Forty-eight steps and eight model calls per run, counted across every branch rather than per path, and a webhook step that gives up rather than holding a run open. A loop you wrote by accident stops itself.

Templates, not a blank canvas

Install a working automation for triage, routing, escalation or follow-up and edit it. Templates that need a capability your workspace has not turned on are not offered, rather than installed and quietly inert.

Approvals with a rank check

A step can pause until a named role approves it. The rank is checked when the decision is made, not when the button is drawn, so approving is refused server-side rather than merely hidden from the wrong person.

Rules can be paused, not just deleted

Take a rule out of service and put it back without rebuilding it. A paused rule is skipped at the point of matching, so it stops producing runs immediately rather than at the end of whatever it had already started.

Automations reach into every module

A ticket automation can move a deal; a workflow can open a project. Neither is an integration and neither leaves the product — they read and write the same tables the rest of Oneop does, in the same workspace.

The integrations fill the tables. The automations watch them.

Automation has almost nothing to connect to, because the records it watches are already here. What the integrations below do is put rows in front of it: deals synced from HubSpot, orders from WooCommerce, payments through Stripe, leads captured on WordPress, meetings from a calendar. A row arriving that way triggers an automation exactly like a row somebody typed. In the other direction there is one route out — a webhook step, for the systems Oneop does not talk to natively.

See all integrations
  • Webhooks
  • HubSpot
  • WooCommerce
  • Stripe
  • WordPress
  • Gmail
  • Microsoft 365
  • Google Calendar

For the technical evaluator

A wait is a row, not a timer.

It is claimed before it runs and marked done only after it returns — and there is one thing that does not make true, named below rather than left for you to find in production.

What the claim covers, and the limit it does not

Why a timer is the wrong shape. The obvious way to build “wait 24 hours” is to hold the run in memory and come back to it. That works until the process ends, which it does on every deploy, every restart and every crash — and when it does, the work does not fail, it simply never happens. Nothing is logged, because nothing went wrong; the run was just gone. It is one of the quieter ways for a business to become wrong about itself, because the absence is invisible.

What we do instead. When a run reaches a wait it is written down and let go of: the step index it stopped at, the variables it had gathered so far, the trace of everything it had already done, and a copy of the flow as it was at the moment the run started — so editing the automation tomorrow does not change what a run that started yesterday will finish doing. The row carries the time to come back. No process is holding anything, so there is nothing for a restart to lose.

Claimed before it runs. A separate pass looks for rows that are due. Before executing one it claims it — a single conditional write that both takes the row and pushes its due time forward, which hides it from every other pass in the same instant. Two workers cannot pick up the same waiting run, and neither can two copies of the application during a rolling deploy. Claiming is one operation, not a read followed by a write, which is what makes it safe under concurrency rather than merely unlikely to collide.

Marked done after it returns, not before. This ordering is the entire correctness argument and it was the other way round once. Marking the row complete and then executing means a crash in between loses the rest of the run permanently. Marking it complete afterwards means a crash in between leaves the row claimed but unfinished, and the claim expires, and it runs again. Losing work and repeating work are both failures, but only one of them is visible, and only one of them is recoverable.

The limit: a resumed run restarts the step it was interrupted in.Because the claim expires rather than the work being tracked step by step, a run that dies mid-step comes back at the start of that step. If the step had already posted a reply, sent a notification, escalated a ticket or called a model, that effect can happen a second time — and a model call would be charged again. What is guaranteed is that two runs cannot execute concurrently. That is not the same guarantee as “the action cannot happen twice”, and we would rather draw the distinction than let a reader assume the stronger one. Practically: after a wait, prefer steps that are safe to repeat, and put anything irreversible as early in the flow as you can.

And the part before the wait is a weaker promise. The first stretch of a run — from the trigger to the first pause — is not represented by a row. It starts when the record changes and runs there. If that fails, nothing retries it, and for five of the ticket triggers a failure is recorded rather than surfaced. So the honest summary is that Oneop has two delivery semantics inside one product: the run up to the first wait happens at most once, and everything after a wait happens at least once. Most automation products have exactly this shape. Rather fewer will tell you where the line is, and the line is the thing you need in order to design around it.

Why this is the guarantee we surface. Because it is the one that decides whether automation is a demo or infrastructure. Everything else on this page — the branching, the templates, the dry run, the AI step — is a feature you can evaluate in an afternoon. Whether a wait survives a Tuesday deploy is a thing you find out six weeks later, when a follow-up somebody was relying on turns out to have silently not existed since the last release.

What it costs

Nothing, in the sense that matters: there is no automation tier in this product. Every row of ticks below is a tick on every plan, because no automation route in Oneop checks your plan — there is nothing there to unlock. The only line that moves is the last one, and it is a number rather than a tick: the pool of AI credits your workspace gets each month, shared with every other AI feature rather than reserved for automation.

See full pricing
Which automation capabilities are included on each Oneop plan
PlanWorkflows on record events, and on a scheduleTicket automation, waits and approvalsDry run before anything is liveAI credits a month, shared with the rest of Oneop
Free $0IncludedIncludedIncluded50
Starter $19IncludedIncludedIncluded1,000
Pro $59IncludedIncludedIncluded5,000
Business $129IncludedIncludedIncluded15,000

Frequently asked

Do I need a paid plan to automate anything?

No, and this is unusual enough in the category to be worth stating flatly: there is no automation tier here. Building workflows on record events, scheduling them, writing ticket automations with conditions and branching, pausing a run for a day, routing something through a human approver and testing the whole thing with a dry run are all available on every plan including the free one. We are not describing a generous trial — there is no entitlement check on any automation route in the product, so there is nothing to unlock. The one thing that does vary by plan is the pool of AI credits your workspace gets each month, because a step that calls a model has a real cost attached to it. That pool is shared with every other AI feature in Oneop rather than being an automation allowance, so a month of heavy chatbot use and a month of heavy automation use draw on the same number.

What happens if the server restarts while an automation is waiting?

The wait survives, because it is not a timer. When a run reaches a wait step, the remaining steps — which step it stopped at, the variables it had collected, the trace so far and a copy of the flow as it was when the run started — are written to a database row with a time to resume at. A separate process looks for rows that are due. If the server restarts, the row is still there and is picked up on the next pass, so a twenty-four hour wait set on Monday still runs on Tuesday even if nothing was running in between. This is the strongest reliability property automation has here and it is the one we would want you to test. The narrower and more important thing it does not claim is exactly-once execution, which is answered in the next question rather than glossed over in this one.

Can an automation ever do the same thing twice?

Yes, in one specific place, and you should design around it rather than be surprised by it. A resumed run restarts the step it was interrupted in. If a run wakes up after a wait, posts a reply to the customer, and then the process handling it stops before the run is recorded as finished, the row becomes due again and the resumed run begins from that same step — so that reply can be posted a second time. The same is true of a notification, an escalation, or an AI step, which would also be charged again. What is guaranteed is that two processes cannot pick up the same waiting run at once: it is claimed before it executes, and claiming it hides it from everything else. That is a real guarantee and it is a different one from "the action cannot happen twice", and we would rather draw the distinction than let you assume the stronger one. In practice: after a wait, prefer steps that are safe to repeat, and keep an irreversible one as early in the flow as you can.

Can I test an automation before it touches real data?

Yes. Point it at a real ticket and run it as a simulation, and you get the full execution trace — which conditions matched, which branch it took, which steps ran, in order — with nothing written and nothing sent. Two details are worth having in advance so the trace reads correctly. Field changes are computed exactly as they would be live and then discarded, so what you see is the real decision. The three steps that reach outside the ticket — assigning to an agent, notifying someone, and replying to the customer — report what they would have done instead of doing it, which means a dry run tells you that it would assign but not which agent the picker would have chosen. And AI steps derive the same fields without calling a model, so a dry run is free no matter how many times you run it.

What can an AI step do inside an automation, and what does it cost?

Four things: read the tone of a ticket, classify it into a category with a priority and tags, summarise it, or draft text. Whatever it produces becomes variables the rest of your flow can branch on, so the model informs a decision your rules then make, rather than making the decision itself. Every one of those calls is metered against your workspace credits exactly like every other model call in Oneop, so automation shows up in your usage rather than being free and untracked, and a single run is capped at eight model calls however many branches it contains. Prompts pass through the same guardrail layer as the rest of the product, which will refuse a call outright rather than pass a manipulated instruction through. How models are constrained, metered and governed across Oneop is one page: AI governance.

What happens if a step fails halfway through a run?

It depends which engine you are in, and the two genuinely differ. A workflow on a record event runs inside a single transaction, so a failure at step four undoes the field updates made at steps one to three — with the honest exception that an email or a webhook already delivered earlier in the run cannot be recalled, and stays delivered. A ticket automation is not transactional in that way: if a step throws, the run stops there and is recorded as failed with the error, but nothing earlier is undone and nothing is retried. A reply already posted stays posted. Ticket field changes are collected and applied at the end of a run rather than one at a time, which means a run that fails part-way generally does not leave the ticket half-updated — it leaves it untouched, with a failed run in the history explaining where it stopped.

Is there a limit to how complicated an automation can get?

Yes, deliberately, and the limits are low enough to be worth knowing before you design something around them. A single run may take forty-eight steps and make eight model calls, both counted across the whole run rather than per branch — so a branch inside a branch cannot smuggle in extra work. A flow may have twelve top-level steps, branches may nest four deep, a branching step may have four paths, and each path may hold six steps. A webhook step gives up rather than holding a run open indefinitely. These are not performance tuning; they are what stops an automation you wrote at four in the afternoon from becoming an unbounded loop against your own data at four in the morning.

Take the chasing out of it.

The free plan installs an automation from a template. Or book a walkthrough and we will show you a dry run that writes nothing, a run held on an approver, and a wait that comes back after the server has been restarted underneath it.

Free forever · 2 seats · No credit card