> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flashquotes.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Actions

> Send emails and set up quotes automatically with workflow actions

export const PlusBadge = () => <span style={{
  backgroundColor: '#EFF6FF',
  color: '#2563EB',
  padding: '2px 8px',
  borderRadius: '4px',
  fontSize: '12px',
  fontWeight: '600',
  marginLeft: '6px',
  display: 'inline-block',
  verticalAlign: 'middle',
  border: '1px solid #BFDBFE'
}}>
    Plus
  </span>;

## Action steps <PlusBadge />

Actions are the steps that do something. Which ones you can add depends on the trigger.

| Trigger | Actions |
| - | - |
| Quote sent, Quote created, Booking created | [Email](#send-email) |
| Building a quote | [Add add-on, Use quote template, Apply discount, Add service charge, Use booking form, Use contract, Use payment terms](#quote-steps) |

## Send email

Click **+** → **Email**, then write the subject and message. Click **Save email** when you're done.

### Who it goes to

The contact on the quote, or the contact on the booking for **Booking created**. See [who receives workflow emails](/workflows/overview#who-receives-workflow-emails).

### Who it comes from

Pick an account under **From**:

* **Quote sender**, on **Quote sent** workflows only. Sends from whoever sent the quote.
* Any connected Gmail account
* **Flashquotes**, if you haven't connected Gmail

If Gmail can't send an email, Flashquotes sends it from Flashquotes instead.

<Tip>
  An account marked **(needs reconnection)** can't send. Reconnect it under [Settings → Integrations](/settings/integrations/google).
</Tip>

### Personalize it

Type `{{` in the message to insert a [shortcode](/workflows/shortcodes/overview), like the contact's first name or event date. **Quote sent** emails include a **Review Quote** button. **Booking created** emails include a **View Booking** button.

### Test it

1. Click **Preview and test**
2. Pick a quote or booking to preview with
3. Click **Send me a test message**

### When an email is skipped

Flashquotes checks each email right before it sends. If one of these is true, it skips that email and the workflow keeps going:

| Skipped when | Applies to |
| - | - |
| The quote is marked lost or expired | Quote sent, Quote created |
| The event has started | Quote sent, Quote created |
| The booking has no events | Booking created |

## Quote steps

Quote steps run on the **Building a quote** trigger. They change a new quote before you or your customer opens it, the same way you'd edit it by hand.

| Step | What it does | If it's already set |
| - | - | - |
| **Add add-on** | Adds an add-on in the quantity you choose, priced like any add-on | Skipped if the customer already picked it |
| **Add service charge** | Adds a service charge, on top of any that apply to every quote | Skipped if it's already on the quote. Charges from different steps add up. |
| **Apply discount** | Takes a discount off the whole quote. The customer sees its name. | The last step wins |
| **Use quote template** | Sets how the quote looks | The last step wins |
| **Use booking form** | Sets the form the customer fills out to book, in place of your default | The last step wins |
| **Use contract** | Sets the contract the customer signs to book, in place of your default | The last step wins |
| **Use payment terms** | Sets how the customer pays, like the deposit and due dates, in place of your default | The last step wins |

A quote holds one discount, template, booking form, contract, and set of payment terms. If more than one step picks one, the last step wins. Workflows run oldest first, then top to bottom. Add-on quantities and service charges from different workflows add up.

In the pickers, your defaults are marked **(default)** and service charges that already apply to every quote are marked **(on every quote)**.

### Why a step is grayed out

A step is grayed out when it couldn't change anything:

* **Add service charge.** You have no service charges, or all of them already apply to every quote.
* **Use booking form**, **Use contract**, **Use payment terms.** You have only one, so it's already your default. Create a second one first.
* **Use contract.** Your plan doesn't include contracts.
* **Add add-on**, **Use quote template**, **Apply discount.** You haven't created one yet.

### When a quote step is skipped

* The item it picks was deleted or archived. Your default stays.
* The add-on or service charge is already on the quote.
* A later step picked a different discount, template, booking form, contract, or payment terms. The run shows the earlier step as replaced.
* It's a **Use contract** step and your plan no longer includes contracts.

The run's history says why.

## Example: give each service its own look and paperwork

1. Trigger: **Building a quote**
2. **Branch** with a path for each service: **Services** include Photo Booth
3. On the Photo Booth path, **Use quote template** → Photo Booth, **Use contract** → Photo Booth Agreement, and **Use booking form** → Photo Booth Details

Every Photo Booth quote now goes out with the right look, contract, and form. Everything else gets your defaults.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.