Skip to content

Automations ​

Automations let BridalOp automatically send emails, text messages, in-app notifications, update customer fields, and even book follow-up appointments when something happens in your shop — without anyone lifting a finger.

Go to Settings > Automations to manage them.

The Idea ​

Every automation follows a simple pattern:

When something happens (the trigger), and certain conditions are met, then run these steps in order (email, SMS, etc.).

So, for example:

  • When a customer's appointment is a no-show → 1 hour later, email them with a link to rebook.
  • When a sale completes → wait 7 days → email asking for a review.
  • When the wedding date is 30 days away → email a final prep checklist.

You can build these by hand or clone one from the starter library (see below).

Starting From a Template ​

The fastest way to get started. Click Start from template on the Automations page to open the catalog.

Each template is a fully-configured automation you can clone in one click — trigger, conditions, steps, and email copy all pre-filled. After cloning, you land on the builder where you can tweak any piece (names, wait times, wording) before enabling it.

Current starter catalog includes:

StarterFires OnWhat It Does
Appointment booked — confirmation emailAppointment bookedSends a branded confirmation email right after a new booking
Post-sale — review request (7 days later)Sale completedEmails the customer a week after purchase asking for a review
Welcome after first purchaseSale completed (first sale only)Sends a welcome email the first time a customer buys
No-show follow-upAppointment marked no-showEmails a rebook-us-please message an hour after the no-show
Post-appointment thank you + reviewAppointment completedTwo hours after the appointment, sends a thank-you + review request
Layaway overdue — email + SMS reminderLayaway marked overdueEmails immediately, then texts an hour later
Wedding — 7-day final prep reminderWedding date approachingSeven days before the wedding, sends a final prep checklist
Wedding — 30-day countdownWedding date approachingOne month out, sends an excited "you're a month away!" email

Cloned starters always start disabled — review and enable when you're ready.

Building From Scratch ​

Click + New to open the builder. It has four sections, top to bottom.

1. Name It ​

Give the automation a descriptive name — this is what appears in the list and the run log. Example: "24-hour appointment reminder."

FieldDescription
NameShown in the automations list
DescriptionOptional. What this automation does, in plain language
CategoryTransactional (order confirmations, reminders) or Marketing (review requests, birthday greetings). Marketing automations skip customers who haven't opted into marketing
Cooldown per customer (minutes)Prevents the same automation from firing twice for the same customer within this window. Defaults to 1440 (24 hours)

2. When Should This Run? ​

Pick the trigger event that kicks the automation off. Some triggers have extra configuration (e.g., "Wedding date approaching" asks how many days before).

Available triggers:

TriggerFires When
Appointment bookedA new appointment is created
Appointment cancelledAn appointment is cancelled
Appointment rescheduledAn appointment is moved to a new time, including by the customer herself
Appointment approachingN days before an appointment, on the morning of that day (configurable per automation)
Appointment completedAn appointment is marked completed
Appointment no-showAn appointment is marked no-show
Sale completedA sale/order is finalized. Carries the total, the payment method, whether it's her first, and the product types on the order
Refund issuedA refund is processed
Layaway createdA new layaway plan is started
Layaway payment receivedA payment is applied to a layaway
Layaway overdueA layaway is marked overdue
Special order placedA special order is submitted to a vendor. Carries the vendor and the product type
Special order arrivedA special order is marked received. Carries the balance still owed, so a reminder can name the amount
Special order balance overdueA dress has arrived, its balance due date has passed, and money is still owed. Fires once, on the day it tips over
Quote sentA quote is sent to a customer
Quote acceptedA customer accepts a quote
Contract sentA contract is sent for signature
Contract signedA contract is signed
Customer createdA new customer is added
Customer birthdayOnce each year on the customer's birthday
Wedding date approachingN days before the customer's wedding date (configurable per automation)
Order from your online storeAn order comes in from a connected Shopify, WooCommerce or FluentCart store
Customer field changedA specific customer field changes value

Reminding someone before their appointment ​

Choose Appointment approaching and a Days before appointment box appears. Put 2 in it and the automation runs two days ahead of every appointment — or 7, or 1.

Two things worth knowing before you build one.

It's checked once each morning, not to the hour. A 2-day automation runs on the morning two days before the appointment date, not exactly 48 hours before her appointment time. For a reminder that's usually what you want — she reads it over breakfast rather than at 4pm.

You may already have what you're after. BridalOp sends 48-hour and 24-hour appointment reminders on its own, and those are accurate to the hour. If all you want is "remind her two days out", that's already happening — check Settings → General before building anything. This trigger is for when you want your own version: your wording, a text instead of an email, a nudge to the consultant, a tag on the customer, or a window the built-in reminders don't cover.

Cancelled, no-show and completed appointments are skipped. A customer with two appointments on the same day gets one message, not two.

3. Who Qualifies? (Optional) ​

Add conditions to only fire for customers who match. Every condition is joined with AND — all must be true for the automation to run. Leave it empty to fire for every trigger event.

Each condition has three parts: field · operator · value. For example:

  • Customer's Event type · equals · wedding
  • Customer's Total spent · is greater than or equal to · 500
  • Sale total · is greater than · 1000
  • What was bought (product type) · contains · Gown

Operators include: equals, does not equal, is greater than, less than, contains, is empty, is not empty, and more. Available fields depend on the trigger (a sale-triggered automation can condition on the sale total; an appointment-triggered one can condition on the appointment type).

Only when they bought a particular kind of thing ​

Sale completed and Special order placed both carry what was bought, as a product type. Condition on it to send one email when someone buys a gown and a different one for a mother-of-the-bride dress:

Trigger: Sale completed
Condition: What was bought (product type) contains Gown
1. Immediately → Send email "Your gown — what happens next"

Two things worth knowing:

  • The operator is "contains", not "equals". One sale is routinely a gown, a bridesmaid dress and a pair of shoes, so this field holds a list. Picking it switches the operator for you.
  • A sale matches if any line is that type. An order with a gown and a veil matches both a Gown rule and a Veil rule. If you want to be sure only one email goes out, either add a second condition or set a cooldown on the automation.

A special order is one product, so it carries a list of one and the same rule works either side.

4. What Should Happen? ​

The actual work. Add one or more steps — each step has:

  • A wait time (in minutes) after the trigger fires (or after the previous step)
  • An action — the thing that happens

Steps run in order. Click + Add step to stack them; drag or use arrow buttons to reorder; click the header to collapse a step once it's configured so the builder stays readable.

Actions ​

ActionWhat It Does
Send an emailSends a branded email to the customer. Three modes: pick a saved template, write custom subject + body (rendered in your boutique's branded layout), or paste completely custom HTML that bypasses the layout. Preview email shows it made up before anyone gets it (see Preview)
Send a text (SMS)Sends an SMS via your Twilio number. 160-character soft limit (counter shown). Preview message shows it made up, with what it splits into (see Preview). Skipped automatically if the customer has no phone, opted out of SMS, or you're out of credits
Notify staff in-appCreates a bell-icon notification visible to the specified audience: all staff, a specific role, or a single user
Update a customer fieldSets a built-in customer field (event type, source, consultant, etc.) or a custom profile field to a value. Can also add or remove tags
Move customer between categoriesAdds a customer to one or more of your client categories and removes them from others. Because your mailing list segments on categories, this moves them in Klaviyo (and Mailchimp, and the rest) too
Book an appointmentSchedules a new appointment on your calendar. Respects your business hours, fitting room capacity, holidays, and existing appointments — if the requested slot isn't available, finds the next open one within 14 days
Send a contractCreates a contract from a contract template you pick, links it to the record that fired the trigger, and emails/texts the customer to sign it. Requires at least one Contract Template to choose from

Each action has its own form. For example, Send an email asks for the subject, body, optional from-name, optional reply-to, and the mode (template / custom / raw HTML).

Move Customer Between Categories ​

Your client categories — "Bride – Lead", "Bride – Purchased", "Bridesmaid", whatever you've set up — are what your mailing list segments on. Klaviyo keeps a list per category and BridalOp keeps that list in step, adding and removing contacts as the categories change.

What this action does is move somebody without you having to remember to. Tick the categories to add to and the ones to remove from, and when the trigger fires, both happen.

The usual one:

Trigger: Sale completed
1. Immediately → Move customer between categories
                 Add to:      Bride – Purchased
                 Remove from: Bride – Lead

From that point on she stops receiving your "still looking for the one?" campaign and starts receiving whatever you send people who've bought — alterations reminders, accessories, the lot. Nobody has to move her by hand, and nobody gets a lead email a week after spending four thousand dollars with you.

A few things worth knowing:

  • The mailing list is updated straight away, not on the next nightly sync.
  • A customer who hasn't opted into marketing isn't pushed anywhere. Her categories still change in BridalOp — that's your record — but nothing is sent to your mailing list, because she hasn't agreed to be on it.
  • Deleting a category later doesn't break the automation. It's checked when the automation runs, so a category that no longer exists is simply ignored rather than failing the whole run.
  • Categories are managed under Settings → Customer Fields. If you have none yet, the step will tell you so.
Send a Contract ​

Pick a contract template, and when the trigger fires, BridalOp generates that contract from the template, links it to the record that triggered the automation, and sends the customer a signing link by email (and text, if they have a phone on file).

This lets a contract be tied to an action instead of always being created by hand. For example:

  • When a special order is placed → send the Special-Order Agreement (linked to that special order).
  • When a sale completes → send the Off-the-Rack Purchase contract (linked to that order).

The record it links to depends on the trigger — a "Sale completed" trigger links the contract to the order, a "Special order placed" trigger links it to the special order — so merge fields like the order number, product, or size are filled in from the right record.

You need at least one template under Settings → Contract Templates before you can add this step; if none exist, the builder prompts you to create one first. The step is skipped (customer_has_no_email) if the customer has no email address, since there's no one to send the signing link to.

Multi-Step Example ​

A "welcome new lead" drip might look like:

1. Immediately        → Send email "Welcome to {{boutique.name}}!"
2. Wait 2 days        → Send SMS "Hi {{customer.first_name}}, ready to book? Tap here: {{boutique.booking_url}}"
3. Wait 5 days        → Update field `source` → "engaged-lead"

And the one most boutiques want on day one:

Trigger: Sale completed
1. Immediately        → Move customer between categories
                        Add to "Bride – Purchased", remove from "Bride – Lead"
2. Wait 3 days        → Send email "How are you feeling about the dress?"

Merge Tags ​

Every text field (subject, body, SMS message, notification title) supports merge tags. They're replaced with live values at send time.

Tags are organized in a reference panel on the right side of the builder — click any tag to copy it, then paste into the field you want.

Common tags:

NamespaceExamples
Customer{{customer.first_name}}, {{customer.full_name}}, {{customer.email}}, {{customer.phone}}, {{customer.wedding_date}}
Customer custom fields{{customer.field.your-field-name}} — auto-added for every custom field defined under Customer Fields
From the triggerDepends on trigger — see the appointment tags below
Records created by earlier stepsIf an earlier step books an appointment, later steps can reference {{new_appointment.start_at}}, {{new_appointment.id}}, etc.
Boutique{{boutique.name}}, {{boutique.phone}}, {{boutique.email}}, {{boutique.address}}, {{boutique.website_url}}
Customer links{{boutique.booking_url}}, {{boutique.lookbook_url}}, {{boutique.gift_card_url}}, {{boutique.portal_url}}, {{boutique.review_url}}
Per-location booking{{location.slug.booking_url}} — shown only if you have more than one location
Time{{now}}, {{today}}

Appointment tags, available on the appointment triggers (booked, cancelled, completed, no-show, rescheduled):

TagGives you
{{appointment_date}}Saturday, September 19, 2026
{{appointment_time}}10:00 AM
{{appointment.starts_at}}Both together — Sep 19, 2026 10:00 AM
{{appointment.type}}The appointment type, e.g. Bridal Appointment
{{appointment.manage_url}}That customer's personal link to reschedule or cancel
{{appointment.staff_name}}The assigned consultant, where one is set

Writing a sentence? Use the separate date and time

{{appointment.starts_at}} prints the date and time together, which reads awkwardly mid-sentence:

We'll see you on Saturday, September 19, 2026 at Sep 19, 2026 10:00 AM

Use {{appointment_date}} and {{appointment_time}} instead and it reads how you meant it:

We'll see you on Saturday, September 19, 2026 at 10:00 AM

Replacing the built-in confirmation? Include the manage link

If you write your own booking confirmation and switch off the built-in one under Settings → General → Booking confirmation, include {{appointment.manage_url}} somewhere in your email.

That link is how a customer reschedules or cancels her own appointment. It only exists in the built-in email by default, so leaving it out means every change of plan arrives as a phone call instead.

Dates in merge tags auto-format nicely in the boutique's timezone (e.g., "May 15, 2026 2:00 PM"), not raw timestamps.

Relative Dates in Booking ​

The "Book an appointment" action's Start time uses a structured picker:

  • Relative to an event — compose expressions like "7 days before the customer's wedding date, at 10:00."
  • Specific date — a plain date/time picker for fixed scheduling.

You never have to write merge-tag arithmetic by hand.

Enabling, Toggling, and Duplicating ​

On the automations list page:

  • Enable toggle — the pink switch next to each name. New automations start disabled so you can build confidently. Click to turn on.
  • Duplicate — clones the automation with all its conditions and steps, names it "{original} (Copy)", and starts it disabled. Useful when building a family of similar automations (e.g., different messages per location).
  • Edit — re-opens the builder.
  • Delete — removes the automation. Run history is preserved for auditing.

Preview ​

Every email and text step in the builder has a Preview button. It makes the message up exactly as it will go out — merge tags filled in, your branded layout around it — and sends nothing.

Use it while you're writing. A test run is the other way to see one of these, and a test run genuinely sends, so checking your wording used to mean emailing a real person.

What you see:

  • Email — the subject line, and the finished email in your boutique's layout, logo, footer and all. Custom HTML mode is shown as it will land, without the layout.
  • Text — the message as the customer will read it, the character count, and how many texts your wording splits into.

The sample it uses. The customer is invented — Sarah Whitfield, a wedding nine months out, an appointment in three days, a $2,450 sale with $1,225 still owed. Your boutique's own name, address and phone are real, because those come from your settings and you should see them exactly as she will.

Merge Tags That Came Out Blank ​

If a tag resolved to nothing, the preview lists it in an amber panel rather than quietly showing you a gap. Two reasons it happens:

  • The tag is misspelled. is a tag; is not, and prints as nothing.
  • The trigger doesn't carry it. means nothing on a trigger about a layaway payment. Every trigger carries the customer tags; the rest depend on what fired.

Left alone, either one is a blank space in front of a customer — "Hi ," is the classic. The panel is the only place BridalOp can tell you before it happens.

How Many Texts ​

The text preview counts the way a phone carrier does, not by characters alone.

  • A plain message fits 160 characters in one text; longer, and it splits at 153 characters apiece.
  • One character outside the standard alphabet — an emoji, a curly quote, an em dash (—) — drops the whole message to 70 characters per text, 67 once it splits.
  • Accented letters common in boutique names — é, ü, ñ, à — are in the standard alphabet and cost you nothing.

Whatever it splits into, BridalOp charges one credit per message sent, not one per part. See SMS Credits.

Test Runs ​

Before enabling an automation, test it against a real customer to make sure the merge tags resolve correctly and the emails/SMS look right.

  1. Open any automation's detail page.
  2. Click Test run.
  3. Search for a customer by name, email, or phone.
  4. Click Run.

Test runs:

  • Bypass the cooldown — they always fire.
  • Still respect consent — SMS opt-outs and marketing opt-outs are honored.
  • Still respect SMS quiet hours — texts queued during 9pm–8am boutique-local time get rescheduled to the next morning.
  • Skip "Book an appointment" steps so tests don't pollute your real calendar. The run log shows test_run_create_record_skipped for those steps.
  • Skip "Send a contract" steps so tests don't create real contracts. The run log shows test_run_send_contract_skipped for those steps.
  • Fire even if the automation is disabled — you don't have to flip the switch to test.

Run Log ​

The detail page shows the last 50 runs, each expandable to see every step's status, timing, and any errors.

Run statuses:

StatusMeaning
RunningRun started; one or more steps still pending
CompletedAll steps finished (some may have been skipped, which is OK)
FailedAt least one step threw an unrecoverable error
SkippedThe whole run was skipped before any step fired (usually consent: customer_opted_out_marketing)

Common step-level skip reasons:

  • no_email_on_file / no_phone_on_file — customer is missing contact info for that channel
  • customer_opted_out_sms / customer_opted_out_marketing — opt-out honored
  • insufficient_sms_credits — out of SMS credits (top up under SMS Credits)
  • no_availability_in_lookahead — Book-an-appointment couldn't find a free slot within 14 days
  • test_run_create_record_skipped — this was a test run, so Create Record steps were skipped on purpose
  • test_run_send_contract_skipped — this was a test run, so Send-a-contract steps were skipped on purpose
  • customer_has_no_email / no_template_selected — Send-a-contract had no email to send to, or no template picked

A skipped step doesn't fail the run — subsequent steps still execute.

Safety Rails ​

A few things happening automatically in the background so automations don't embarrass you:

  • Per-customer cooldown — prevents the same automation firing twice for the same customer within the cooldown window. Default 24 hours.
  • Consent respect — marketing automations skip customers who haven't opted in. SMS steps always skip customers who've opted out.
  • Quiet hours for SMS — no texts sent between 9pm and 8am boutique-local time. Anything scheduled for that window gets pushed to the next 8am.
  • Availability for booking — the "Book an appointment" action won't create conflicts with existing appointments, closed days, holidays, or fitting-room limits.

Permissions ​

The settings.automations permission controls who can view and manage automations. By default, it's granted to the owner and manager roles. Staff roles (consultant, tailor, receptionist) are not granted by default — you can toggle this under Roles & Permissions.