Skip to main content
Entry rules decide who a campaign pulls in. Exit rules decide who it lets go early. Both live on the Entry / Exit step of the campaign builder, and both are also shown on the campaign’s page so you can read them without opening the builder. Two lines on that step state the logic:
  • Entry Rules — “Customers will enter this campaign if they match any entry rule.”
  • Exit Rules — “When multiple exit rules are active, customers will exit campaigns when any rule has its condition met.”
A campaign cannot be launched without at least one entry rule that is switched on.

Two ways customers get into a campaign

This is the single most important thing to get right, because the trigger list offers options that will never fire for some accounts. Automatic entry is what entry rules do. Something happens — a job is marked complete in your field-service software, a review lands, a customer replies — and Liftify enrols everyone who matches. Manual entry is you putting someone in: the Enroll this contact in a campaign checkbox when you add a contact, the Enroll in Campaign button on a contact’s page, or the Enroll bulk action on the contacts list. See Add a contact and enroll them.
Manual enrollment does not use entry rules at all, and adding a contact by hand in Liftify does not trip the When customer is added trigger. That is deliberate: adding someone to your contact list should never quietly start messaging them. If you add contacts by hand and want them in a campaign, enroll them explicitly.
The triggers When a job is created, When a job is completed, and When a job is cancelled only fire for accounts where a connected field-service system pushes jobs into Liftify. If your jobs live in a system that is not connected, there are no jobs in Liftify to trigger on, and a rule built on one of these will sit there matching nothing forever. Check with whoever set up your Liftify account before you rely on a job trigger.

Add an entry rule

  1. On the Entry / Exit step, click Add Entry Rule.
  2. Name (optional) — a label for you, described on screen as “Optional — describe this rule”. Worth filling in once you have more than one.
  3. Trigger Event — the moment that pulls a customer in. The picker starts on Select trigger event.
  4. Some triggers refer to another campaign. Choosing one of those reveals a Select campaign picker.
  5. Optionally narrow the trigger with Conditions (below).
  6. Click Save Rule, or Cancel to back out.
New rules are saved switched on.

Entry trigger events

Once you pick a campaign in Select campaign, the rule reads back with that campaign’s name in it, for example When ‘Spring tune-up’ campaign is completed.
The “or arrives already” half of those two is new, and it is the reason a lot of job-completed campaigns used to enrol nobody. The triggers only fired when a job changed status inside Liftify — but most connected systems don’t send a job until the work is finished, so the job arrived complete, never changed, and nothing fired. A job that arrives in a finished state now sets off the matching trigger as it lands.If you have a When a job is completed or When a job is cancelled campaign that has been sitting at zero enrollments, it should start working on the next jobs that come in. Check its other settings before you assume it was only this — work through Why a matching customer still didn’t get in at the end of this page.Jobs already in Liftify are not revisited. This changes what happens to jobs arriving from now on, so nothing goes back and enrols customers whose jobs landed before the change.
Chaining a campaign to its own completion event creates a loop. If an entry rule triggers on a campaign-completion event, do not set that campaign’s Campaign Exclusion Time (days) to 0 — the customer will receive the campaign over and over until they unsubscribe. Liftify shows the same warning on the Settings step.

Add an exit rule

Exit rules stop the rest of the sequence for one customer. On a review-request campaign this is what stops you nagging somebody who already left the review. Click Add Exit Rule; the form is the same as the entry form, with its own trigger list: A customer who exits keeps their history — nothing is deleted, the remaining messages just do not send. Each one is marked Cancelled on the customer’s timeline, carrying a plain grey icon rather than the red mark a message that failed to deliver gets, so you can still see what the campaign had lined up for them and that none of it is coming.
This is worth re-checking if you looked at an exited customer before and came away confused. Messages left over from some exits — a review landing, a survey being completed, an unsubscribe from one category or one location — used to stay on the record reading as still-to-send, even while the campaign itself read as finished. They were never actually going to go out. They now say Cancelled, which is what they always meant.

Narrow a rule with conditions

Conditions filter a trigger. “When a job is completed” plus a condition on Invoice Amount means only jobs above a certain value pull the customer in. Conditions live in groups. Every rule form opens with one empty group card ready for you to add to.
  1. In the group card, click Add condition.
  2. Choose a Field, an Operator, a Type, and a Value. Operators depend on the type — text fields offer things like contains and is not empty, numbers offer greater than and between, dates offer before and after, yes/no fields offer is true and is false, and list fields offer in, not in, includes any of and includes none of.
  3. Require field to be present in payload is ticked by default. Leave it ticked so the condition is only judged when the incoming information actually contains that field. A rule card that has conditions shows a Conditional badge.
  4. At the top of the group, choose Must match ALL or Can match ANY. That choice joins the conditions inside that group and nothing else.
  5. Remove deletes a condition row. Remove group deletes the whole card.

Matching a field that holds several values

Some fields don’t hold one value — they hold a list, like the tags your field-service software puts on a customer. Set the Type to list and the value box reads Enter comma-separated values. Four operators apply: in and not in compare the entire field against your list. includes any of and includes none of read the field itself as a list and compare whole values within it — which is what you want for tags. Use them rather than contains, which matches on part of a value: a rule excluding tag 12 with contains also throws out 120 and 312. A customer with no value in that field at all passes includes none of.

Mixing ALL and ANY

Click Add condition group to add a second card. Cards are joined by AND — a divider between them says so — and that can’t be changed. So a customer has to satisfy every group, and each group decides for itself whether all or any of its own conditions must hold. That is what lets you build “(rating is 1 or rating is 2) and (location is Downtown)”: put the two rating conditions in one group set to Can match ANY, and the location condition in a second group. Under the Conditions heading Liftify writes the rule back to you in plain words as you build it, like “(first name equals Ryan or first name equals Mitch) and (status equals active)”. Read that line before you save — it is the exact logic the rule will run.
Rules you built before condition groups existed still work and read the same way. They are simply shown as a single group carrying the ALL-or-ANY choice you originally made. Open one and you can split it into more groups whenever you need to.
Fields are grouped by what they describe: Customer, Account, Location, and any custom fields you have set up. Three groups only apply to certain triggers, and the group name says so:
  • Review (review.matched trigger only) — Review Source, Star Rating, Has Comment
  • Survey Response (survey response completed trigger only) — NPS Score, Overall Score
  • Job (job triggers, or customer added from an integration job) — Job Name, Job Type, Job Status, Business Unit, Invoice Amount, Scheduled Date, Completed Date, Job Date, Source
Picking a field from a group that does not match your trigger gives you a rule that never matches.
The Job group used to work on the job triggers alone. It now also works on When customer is added, as long as the customer arrived from a connected system along with the job that brought them in — the job that caused the import is what the condition is judged against. A customer added any other way still has no job to judge, so a job condition on them does not match.
A group card you leave empty is discarded when you save, so an untouched starter group costs you nothing.

Switch a rule on or off, edit it, delete it

Each rule card has:
  • an on/off toggle, with an Active or Inactive badge. Switching a rule off is the safe way to stop it without losing how it was built.
  • an edit control, which reopens the same form
  • a delete control, which asks “Are you sure you want to delete this rule?”
Before you add any, each section reads “No entry rules have been added.” / “No exit rules have been added.”

Why a matching customer still didn’t get in

A customer can match an entry rule perfectly and still not be enrolled. Liftify checks several things after the rule matches:
  • The campaign is active. A draft or inactive campaign enrols nobody.
  • The customer’s location is assigned to the campaign on the Locations step.
  • Exclusion windows. The campaign’s own Campaign Exclusion Time (days), plus the two account-wide windows in Settings → Applications → Campaigns → Settings, can all hold a customer back because they were messaged recently. See Account-wide campaign defaults.
  • Prevent Campaign Collision. If that setting is on for the campaign, a customer already in another active campaign is blocked.
  • Sending days. A campaign with no sending day ticked does not enrol.
  • Unsubscribes. An unsubscribed customer is not enrolled.
If enrollment is what you actually want for a specific person, enrolling them by hand from their contact page skips the exclusion windows — it is treated as a deliberate decision you made.