Skip to main content

How the Campaign Module Works: The Rules

✍Campaign Module Rules defined.

Written by Paul Babasoro

The Rules group in the side panel contains the building blocks that make decisions — they don't send anything or pause anything on their own. They look at the guest's data and decide which path the journey should take next.

A decision card that asks a question about the guest, and routes the journey down one of two paths depending on the answer:

  • YES (green) — taken when the guest matches the question.

  • NO (red) — taken when the guest does not match the question.

It's the most flexible card in the campaign builder — almost any "if-this-then-that" logic in a journey is built with it. The card is essentially one sentence in three parts: "If FIELD OPERATOR VALUE → go YES, otherwise go NO."

Each part is its own input on the card:

Field — what to look at on the guest

Group

Option

What it checks on the guest's profile

Guest Data

Full Name

The guest's full name

Guest Data

Email (default)

The guest's email address

Guest Data

Phone

The guest's phone number

Guest Data

Country

The guest's country

Guest Data

Visits

How many times has the guest visited

Guest Data

Loyalty Score

The guest's calculated loyalty score

Guest Data

Age

The guest's age

Guest Data

First Visit

The date of their first visit

Guest Data

Last Visit

The date of their most recent visit

Guest Data

Birthday

The guest's birthday

Guest Data

Gender

The guest's gender

Guest Data

Login Method

How they signed up (Facebook, Google, Email, QR Code, etc.)

Guest Data

Review Rating

The star rating they last gave

Guest Data

Custom Duration

How long ago they were created (signed up) in the system

Guest Data

Opt-in

Whether they're subscribed to email

Guest Data

SMS

Whether they're subscribed to SMS

Location (only if the account has at least one active venue)

Location

Which venue(s) has the guest visited

Tags (only if the account has at least one guest tag)

Tags

Which tag(s) are on the guest's profile

Custom Fields (only if the account has any custom fields defined)

Custom field (per account)

Each of the account's custom fields appears here as its own option (e.g. "Membership ID", "Favourite Drink").

Operator — how to compare

Once you pick a field, the operator dropdown below it automatically updates to show only the operators that make sense for that data type.

For fields of type…

Operators offered

Text (name, email, phone, country, custom text fields)

has any value, is, is not, starts with, ends with, contains, does not contain, is unknown

Number (visits, loyalty score, age)

greater than, less than, is, is not, is unknown, has any value

Date (first visit, last visit)

more than _ days ago, exactly _ days ago, less than _ days ago, more than _ hours ago, exactly _ hours ago, less than _ hours ago

Birthday

more than _ days ago, more than _ days from now, exactly _ days ago, exactly _ days from now, less than _ days ago, less than _ days from now, is unknown, has any value

Gender

Male, Female

Login Method

Facebook, Google, Discord, Twitter, Email, Import, Square, QR Code

Review Rating

5 Stars, 4 Stars, 3 Stars, 2 Stars, 1 Star

Opt-in / SMS

Subscribed, Unsubscribed

Location

Each of the venue's locations (pick which one)

Tags

Each of the account's tags (pick which one)

Value — what to compare against

A small text box that appears next to the operator only when the chosen operator needs an extra value (e.g., "is", "contains", "greater than", "5 days ago").

  • For operators that already imply their value (e.g., "has any value", "is unknown", "Subscribed", "5 Stars"), the value box stays hidden — the operator itself is the entire question.

  • For fields that pick from a list (Gender, Login Method, Tags, Location), the operator dropdown is the value, so no separate value box is shown.

How the journey moves: YES vs NO

When a guest's journey reaches a Condition card, Beambox does the following — instantly, no waiting:

  1. Reads the configured question (field + operator + value) off the card.

  2. Looks up the guest's current data and checks: Does this guest match the question?

  3. If yes → the journey is routed down the YES output (the green branch).

  4. If no → the journey is routed down the NO output (the red branch).

  5. The journey continues running down whichever path was chosen, and never re-evaluates this condition for that guest unless the guest re-enters the campaign.

Unlike Wait for Trigger, the Condition is instant. It doesn't wait for anything to happen — it just looks at what's true right now and moves on. If you want to wait until something becomes true, use Wait for Trigger instead.

Unconnected branches end the journey. If you leave the YES output unconnected, any guest who matches exits the campaign. The same goes for the NO output. This is a normal way to say "I only want to do something on one side of the answer."

Simple end-to-end examples

Three short examples that cover different field types:

Example 1 — Text field (Does the guest have an email on file?)

"After someone enters this journey, check whether they actually have an email address on file. If they do, send them a designed email. If they don't — fall back to an SMS welcome so we still reach them."


This is the exact canvas in the screenshot:

It's the simplest possible "channel fallback" pattern — instead of dropping guests who don't have an email address, you switch to a different channel so you can still make contact. The same shape works in reverse (Phone has-any-value → SMS on YES, email-only welcome on NO), or for any other "have we got this data?" check.


Example 2 — Number field (frequent visitors only)

"If the guest has visited more than 5 times, send them a VIP SMS thanking them. Everyone else, do nothing."

Example 3 — Date field (re-engage dormant guests)

"If the guest's last visit was more than 30 days ago, send a 'we miss you' email. Otherwise, do nothing — they're still active."

Things to keep in mind

  • It's a snapshot, not a watchpoint. Condition looks at the guest's data the moment the journey reaches it — and only then. If the guest's data changes later, the condition doesn't re-fire.

  • The field list adapts to your account. "Location", "Tags", and "Custom Fields" only appear if you have venues, tags, or custom fields set up.

  • The operator list adapts to the field. Picking Email gives you text operators (contains, starts with, …). Picking Visits gives you number operators (greater than, less than, …).

  • The same vocabulary as Wait for Trigger. Condition and Wait for Trigger both use the same backend filter engine.

Did this answer your question?