Using Custom Logic in Workflow Triggers

Last updated: August 28, 2026

Overview

When you set up a CRM trigger for a Workflow, you define one or more conditions that a record must meet before OnRamp creates a project. By default, all of your conditions must be true — but you can now control exactly how those conditions combine using AllAny, or Custom logic.

This gives you the flexibility to build rules like "fire when the deal is Closed Won, OR the amount is over $100,000, AND the owner is on the Enterprise team" — not just a simple list of AND conditions.

Where to find it

  1. Open your Workflow and go to the Trigger step.

  2. Add your conditions as usual — each condition appears as a numbered row in the list.

  3. Above the condition list, you'll see a mode selector: All / Any / Custom.

The three modes

Mode

Behavior

All

Every condition must be true (this is the default, and matches how triggers have always worked).

Any

At least one condition must be true.

Custom

You write your own logic using the condition numbers.

Existing triggers you built before this feature shipped are unaffected — they continue to behave exactly as they did, using All.

Writing custom logic

Switching to Custom reveals an expression box above your numbered conditions. Reference each condition by its number and combine them with ANDOR, and parentheses. For example, with three conditions:

  1. Stage is "Closed Won"

  2. Amount is greater than 100

  3. Owner is "ada"

You could write:

(1 AND 2) OR 3

As you type, OnRamp translates your expression into plain language underneath the box, so you can confirm it says what you mean before you publish. Use that live readout in the product as your source of truth — it always reflects exactly what you typed.

Editing your conditions

Once you're in Custom mode, editing the condition list is handled safely:

  • Reordering a condition (drag it to a new position) automatically renumbers your logic to match, so the rule keeps working exactly as before. For example, if your logic is ((1 AND 2) OR 3) and you drag condition C into position 2, your logic becomes ((1 AND 3) OR 2) — same rule, new numbers. You'll see a confirmation when you do this, since the numbers can end up out of sequence.

  • Deleting a condition that your logic refers to does not silently rewrite your rule. Instead, the trigger is flagged as invalid and publishing is blocked until you fix it, with a message like:

    Condition 4 doesn't exist. Your logic refers to condition 4, but this trigger only has 3 conditions. Update the logic, or add the missing condition.

    This is intentional — OnRamp will never guess which condition you meant to re-point a rule at.

Notes

  • Custom logic is available for both Salesforce and HubSpot triggers.

  • NOT is supported in custom expressions (e.g. NOT(2)) for advanced use, even though there's no dedicated button for it.

  • If you leave the Custom expression box blank or malformed, the trigger can't be published until it's fixed.

FAQ

Do I need to update my existing triggers? No. Any trigger created before this feature was released keeps working under the implicit All (AND) behavior — nothing changes unless you opt into Any or Custom mode.

Can I mix operators like "contains" and "is empty" with custom logic? Yes — custom logic controls how your conditions combine; it doesn't change what each individual condition checks.

What happens if my custom logic has a typo or references a condition that doesn't exist? The trigger card will show an inline error and block publishing until the logic is valid and every referenced condition exists.