Appearance
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:
| Starter | Fires On | What It Does |
|---|---|---|
| Appointment booked — confirmation email | Appointment booked | Sends a branded confirmation email right after a new booking |
| Post-sale — review request (7 days later) | Sale completed | Emails the customer a week after purchase asking for a review |
| Welcome after first purchase | Sale completed (first sale only) | Sends a welcome email the first time a customer buys |
| No-show follow-up | Appointment marked no-show | Emails a rebook-us-please message an hour after the no-show |
| Post-appointment thank you + review | Appointment completed | Two hours after the appointment, sends a thank-you + review request |
| Layaway overdue — email + SMS reminder | Layaway marked overdue | Emails immediately, then texts an hour later |
| Wedding — 7-day final prep reminder | Wedding date approaching | Seven days before the wedding, sends a final prep checklist |
| Wedding — 30-day countdown | Wedding date approaching | One 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."
| Field | Description |
|---|---|
| Name | Shown in the automations list |
| Description | Optional. What this automation does, in plain language |
| Category | Transactional (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:
| Trigger | Fires When |
|---|---|
| Appointment booked | A new appointment is created |
| Appointment cancelled | An appointment is cancelled |
| Appointment completed | An appointment is marked completed |
| Appointment no-show | An appointment is marked no-show |
| Sale completed | A sale/order is finalized |
| Refund issued | A refund is processed |
| Layaway created | A new layaway plan is started |
| Layaway payment received | A payment is applied to a layaway |
| Layaway overdue | A layaway is marked overdue |
| Special order placed | A special order is submitted to a vendor |
| Special order arrived | A special order arrives and is ready for pickup |
| Quote sent | A quote is sent to a customer |
| Quote accepted | A customer accepts a quote |
| Contract sent | A contract is sent for signature |
| Contract signed | A contract is signed |
| Customer created | A new customer is added |
| Customer birthday | Once each year on the customer's birthday |
| Wedding date approaching | N days before the customer's wedding date (configurable per automation) |
| Customer field changed | A specific customer field changes value |
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
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).
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
| Action | What It Does |
|---|---|
| Send an email | Sends 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 |
| Send a text (SMS) | Sends an SMS via your Twilio number. 160-character soft limit (counter shown). Skipped automatically if the customer has no phone, opted out of SMS, or you're out of credits |
| Notify staff in-app | Creates a bell-icon notification visible to the specified audience: all staff, a specific role, or a single user |
| Update a customer field | Sets a built-in customer field (event type, source, consultant, etc.) or a custom profile field to a value. Can also add or remove tags |
| Book an appointment | Schedules 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 |
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).
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"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:
| Namespace | Examples |
|---|---|
| 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 trigger | Depends on trigger. E.g., for Appointment booked: {{appointment.starts_at}}, {{appointment.type}} |
| Records created by earlier steps | If 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}} |
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.
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.
- Open any automation's detail page.
- Click Test run.
- Search for a customer by name, email, or phone.
- 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_skippedfor 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:
| Status | Meaning |
|---|---|
| Running | Run started; one or more steps still pending |
| Completed | All steps finished (some may have been skipped, which is OK) |
| Failed | At least one step threw an unrecoverable error |
| Skipped | The 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 channelcustomer_opted_out_sms/customer_opted_out_marketing— opt-out honoredinsufficient_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 daystest_run_create_record_skipped— this was a test run, so Create Record steps were skipped on purpose
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.
Related
- Email & SMS Templates — saved templates you can pick from in email steps
- Customer Fields — custom fields usable as merge tags and condition targets
- SMS Credits — what SMS steps consume
- Booking Settings — appointment types used by Book-an-appointment actions
- Notifications — where in-app notifications appear for staff

