# Get Event
Source: https://docs.flashquotes.com/api-reference/event/get
GET /events/{id}
Retrieve a single event, optionally expanding related objects
Retrieves the event with the given id.
By default the response includes the event's own scalar fields plus the foreign-key ids for related objects (`bookingId`, `locationId`, `eventBriefId`). Relations are inlined only when requested via `expand[]`.
## Expanding related objects
Pass one or more `expand[]` query parameters to inline related objects. On this endpoint, paths are written as-is — no prefix.
```bash theme={null}
curl "https://app.flashquotes.com/api/events/evt_8K3aN1qV2x?expand[]=booking.lead&expand[]=services" \
-H "x-api-key: $FLASHQUOTES_API_KEY"
```
Allow-listed expand paths:
| Path | Adds |
| ------------------- | ----------------------------------------------------------- |
| `location` | The event's `location` object |
| `services` | The event's `services` array |
| `staff` | The event's `staff` array |
| `addons` | The event's `addons` array |
| `resources` | The event's `resources` array |
| `booking` | The parent `booking` object |
| `booking.lead` | `lead` inside `booking` (auto-promotes `booking`) |
| `booking.eventType` | `eventType` inside `booking` (auto-promotes `booking`) |
| `booking.invoices` | `invoices` array inside `booking` (auto-promotes `booking`) |
Requesting any nested `booking.*` path automatically expands `booking` itself — you do not need to list `booking` separately.
### Expanded response
With `expand[]=booking.lead&expand[]=booking.invoices`, the response inlines the nested objects under `booking`:
```json theme={null}
{
"object": "event",
"id": "evt_8K3aN1qV2x",
"booking": {
"object": "booking",
"id": "bkg_4F2yL8",
"lead": {
"object": "lead",
"id": "led_2T7nC4",
"companyName": "Acme",
"firstName": "Jane",
"lastName": "Doe",
"email": "jane@acme.com",
"source": "Website"
},
"invoices": [
{
"object": "invoice",
"id": "inv_9P5xK3",
"status": "Paid",
"total": 250000,
"amountPaid": 250000,
"amountDue": 0,
"url": "https://app.flashquotes.com/invoice/..."
}
]
}
}
```
### Limits
* Maximum **20** expand paths per request (duplicates are deduplicated).
* Maximum nesting depth of **4** segments.
* Unknown or malformed paths return `400`.
# Get Event (Legacy)
Source: https://docs.flashquotes.com/api-reference/event/get-legacy
GET /event/getEventData/{event_id}
Legacy single-event endpoint — use Get Event for new integrations
**Deprecated.** This endpoint returns the original flat response shape. It is maintained for backwards compatibility only. For new integrations, use [`GET /events/{id}`](/api-reference/event/get), which supports the standard public API conventions (`object` discriminators, `expand[]`, slim canonical shapes, and the standard error envelope).
This endpoint returns comprehensive information about a specific event, including its location, resources, staff assignments, and associated booking details.
### Response
The response includes a detailed event object containing:
* Event identification and basic details
* Location information (venue name, address)
* Assigned resources (equipment, machines)
* Staff assignments
* Associated addons
* Booking status and details
* Event brief reference
### Common Use Cases
* Retrieving event details for display
* Checking resource and staff assignments
* Verifying event location and timing
* Accessing booking information
* Confirming addon selections
### Notes
* The event ID must be valid and associated with your company
* Returns a 404 error if the event is not found
* All event times are returned in ISO 8601 format with timezone
* Access requires a valid API key with appropriate permissions
### Migrating to `GET /events/{id}`
The new endpoint returns a slim default body with foreign-key ids; relations move behind `expand[]`. Key mappings:
| Legacy (top-level flat) | v2 (nested via expand) |
| ----------------------------------------------------------- | ------------------------------------------------------------- |
| `leadCompanyName` | `booking.lead.companyName` (with `expand[]=booking.lead`) |
| `booking.eventTypeName` | `booking.eventType.name` (with `expand[]=booking.eventType`) |
| `location`, `resources`, `staff`, `addons` (always present) | Available via `expand[]=location`, `expand[]=resources`, etc. |
# List Events
Source: https://docs.flashquotes.com/api-reference/event/list-events
GET /events
List events with cursor pagination, date-range filters, and optional expand
Returns a paginated list of events for your company, newest first. Supports Stripe-style range filters on `service_start_time` and `created_at`, equality filters on `location_id` and `booking_id`, cursor-based pagination, and inline expansion of related objects.
```bash theme={null}
curl "https://app.flashquotes.com/api/events?limit=25&service_start_time[gte]=2026-06-01T00:00:00Z&expand[]=data.location" \
-H "x-api-key: $FLASHQUOTES_API_KEY"
```
## Pagination
List endpoints use cursor-based pagination — pass the `id` of the last event in the previous page as `starting_after`:
```bash theme={null}
# First page
GET /api/events?limit=25
# Next page
GET /api/events?limit=25&starting_after=evt_8K3aN1qV2x
```
The response includes a `hasMore` flag indicating whether further pages exist.
## Date-range filters
`service_start_time` and `created_at` accept Stripe-style bracket-notation operators (`gt`, `gte`, `lt`, `lte`). Values must be full ISO 8601 datetimes with a timezone designator (`Z` or `±HH:MM`):
```
?service_start_time[gte]=2026-06-01T00:00:00Z
&service_start_time[lt]=2026-07-01T00:00:00Z
```
Bare dates like `2026-06-01` are rejected — include the time and offset. Multiple operators on the same field combine as a range.
## Expanding related objects
`expand[]` accepts the same allow-list as the [single-event endpoint](/api-reference/event/get), with one difference: **every path must be prefixed with `data.`** because the objects you're expanding live inside the envelope's `data` array.
```
?expand[]=data.location
&expand[]=data.booking.lead
```
Limits: 20 paths max per request, depth 4 max (counted after stripping the `data.` prefix). Unknown, malformed, or un-prefixed paths return `400`.
## Sort order
Results are always returned sorted by `createdAt desc`. Sort order is not configurable.
# List Events (Legacy)
Source: https://docs.flashquotes.com/api-reference/event/list-events-legacy
GET /event/get-events
Legacy date-range list endpoint — use List Events for new integrations
**Deprecated.** This endpoint returns the original wrapped response shape and is capped at a 7-day window. It is maintained for backwards compatibility only. For new integrations, use [`GET /events`](/api-reference/event/list-events), which supports cursor pagination, broader date-range filters, equality filters, and `expand[]` for related objects.
This endpoint returns a list of events that fall within the specified date range. You can optionally filter events by location.
### Response
The response includes an array of event objects containing:
* Event identification and basic details
* Location information (venue name, address)
* Assigned resources (equipment, machines)
* Staff assignments
* Associated addons
* Booking status and details
* Event brief reference
### Common Use Cases
* Retrieving events for a specific time period
* Checking event schedules by location
* Planning resource and staff allocation
* Reviewing upcoming bookings
* Generating event reports
### Notes
* Date ranges must be provided in ISO 8601 format with timezone offset (e.g., `2024-01-01T00:00:00-05:00`)
* **Maximum date range span is 7 days**
* Results are ordered by event start time
* Returns a 400 error if date format is invalid or date range exceeds 7 days
* Responses are wrapped in an array envelope
* Access requires a valid API key with appropriate permissions
### Migrating to `GET /events`
The new endpoint uses Stripe-style range filters and cursor pagination instead of a single required date range:
| Legacy parameter | v2 equivalent |
| -------------------------------- | ----------------------------------------------------------------------------- |
| `event_starts_after` (required) | `service_start_time[gte]` (optional) |
| `event_starts_before` (required) | `service_start_time[lt]` (optional) |
| (7-day cap) | No range cap — use `limit` (default 10, max 100) and `starting_after` to page |
| `location` filter | `location_id` query parameter |
The response is the standard list envelope (`{ object: "list", url, hasMore, data }`) rather than the legacy wrapped array.
# Get Form Response
Source: https://docs.flashquotes.com/api-reference/form-response/get
GET /api/form-response/{id}
Retrieve detailed information about a specific form response
This endpoint returns comprehensive information about a specific form response, including all question responses and their associated questions.
The response format is optimized for Zapier integration, returning a flattened object structure where questions appear as keys with their corresponding answers as values. This makes it easy to map form data directly to other systems.
### Response
The response includes a detailed form response object containing:
* Form response identification and metadata
* Form and booking associations
* Question responses with:
* Question details (title, type, requirements)
* User's response data
* Question metadata (position, system links)
* Timestamps for creation and updates
### Common Use Cases
* Retrieving submission details for display
* Accessing customer responses
* Verifying form completion status
* Integrating with external systems
* Analyzing response data
### Notes
* The form response ID must be valid and associated with your company
* Returns a 404 error if the form response is not found
* All timestamps are returned in ISO 8601 format
* Access requires a valid API key with appropriate permissions
* Response data format varies based on question type
# Introduction
Source: https://docs.flashquotes.com/api-reference/introduction
Welcome to the Flashquotes API documentation
## Welcome to the Flashquotes API
The Flashquotes API enables you to programmatically access and manage your quotes, events, bookings, forms, invoices, and tasks. Our REST API provides endpoints for retrieving quote summaries and live totals, retrieving event data, creating tasks, managing form responses, and accessing invoice information.
## Plan access
What you can use depends on your plan:
* **Full REST API** — every endpoint in this reference: quotes, events, bookings, form responses, invoices, and tasks. Needs the **Scale** plan.
* **Zapier** — the endpoints the Flashquotes Zapier app uses. Included with **Pro** and above. [Set up Zapier →](/settings/integrations/zapier)
Upgrade anytime in [Plan Settings](https://app.flashquotes.com/settings/plans).
## Authentication
All API endpoints require authentication using an API key. You must include your API key in the request headers:
```bash theme={null}
'x-api-key: your_api_key_here'
```
You use one API key for everything. Find it in [Settings > Integrations](https://app.flashquotes.com/settings/integrations). On Pro, it works with the Zapier endpoints. On Scale, it also works with the full REST API. Keep it secret — never share it publicly.
## Base URL
All API requests should be made to:
```bash theme={null}
https://app.flashquotes.com/api
```
## Available Endpoints
Our API provides several endpoint groups:
Retrieve quote summaries and live totals, filter quotes, and expand related objects
Manage events, retrieve event details, and list events within date ranges
Create and manage tasks on events programmatically
Access form submission data and response details
Retrieve invoice information and payment details
## Response Format
All responses are returned in JSON format. Successful responses will have a 2xx status code, while errors will return appropriate 4xx or 5xx status codes with error details.
### Conventions
The current public API follows Stripe-style conventions:
* **`snake_case` query parameters, `camelCase` response keys.**
* Every returned object carries an **`object` discriminator** (e.g. `"object": "event"`) at the top of its JSON.
* List endpoints return a standard envelope:
```json theme={null}
{
"object": "list",
"url": "/api/events",
"hasMore": true,
"data": [ /* ... */ ]
}
```
* Default responses include only an object's own scalar fields plus the foreign-key ids for its relations. Related objects are inlined only when explicitly requested via `expand[]`.
### Expanding related objects
By default, an endpoint returns the object's own scalar fields plus foreign-key ids (e.g. an event includes `bookingId`, `locationId`, `eventBriefId`, but not the booking or location objects themselves). To inline a related object, pass its path in `expand[]`:
```bash theme={null}
GET /api/events/evt_123?expand[]=location&expand[]=booking.lead
```
**Dot notation** walks the object graph. `booking.lead` reads "expand the booking, then expand the lead inside that booking." Each path segment must be an allow-listed relation on its parent — unknown paths return `400`.
```jsonc theme={null}
// expand[]=booking.lead → lead nested inside booking
{
"object": "event",
"id": "evt_123",
"booking": {
"object": "booking",
"id": "bkg_456",
"lead": { "object": "lead", "id": "led_789", "...": "..." }
}
}
```
**Parent auto-promote.** Requesting any nested path automatically expands its parents. `expand[]=booking.lead` includes `booking` in the response even if you don't list `booking` separately.
**Multiple paths.** Repeat `expand[]` to combine paths. Comma-separated values are also accepted: `?expand[]=location,services`.
#### `data.` prefix on list endpoints
On list endpoints, each path **must** be prefixed with `data.` because the objects you're expanding live inside the envelope's `data` array, not at the top level:
```bash theme={null}
# Single object — no prefix
GET /api/events/evt_123?expand[]=booking.lead
# List — every path is prefixed with data.
GET /api/events?expand[]=data.booking.lead&expand[]=data.location
```
A list request that omits the `data.` prefix returns `400` with an `invalid_request_error` describing the offending path.
#### Limits
* Maximum **20** paths per request (duplicates are deduplicated, so `?expand[]=booking&expand[]=booking` counts once).
* Maximum nesting depth of **4** segments. On list endpoints, the `data.` prefix doesn't count against the depth — `data.a.b.c.d` is allowed.
* Paths must use only allow-listed relation names; the allowed paths are documented on each endpoint.
### Pagination
List endpoints use cursor-based pagination:
* `limit` — page size (default `10`, maximum `100`).
* `starting_after` — the `id` of the last item from the previous page.
The response `hasMore` flag indicates whether more pages are available.
### Date-range filters
Date fields on list endpoints accept Stripe-style bracket-notation operators: `[gt]`, `[gte]`, `[lt]`, `[lte]`. Values must be full ISO 8601 datetimes including a timezone designator (e.g. `2026-06-01T00:00:00Z` or `2026-06-01T00:00:00-05:00`).
```
?service_start_time[gte]=2026-06-01T00:00:00Z&service_start_time[lt]=2026-07-01T00:00:00Z
```
### Error envelope
Errors return a structured envelope:
```json theme={null}
{
"error": {
"type": "invalid_request_error",
"code": "invalid_parameter",
"message": "limit must be an integer between 1 and 100",
"param": "limit"
}
}
```
The `type` field is one of `api_error`, `invalid_request_error`, `authentication_error`, `permission_error`, `rate_limit_error`, or `idempotency_error`. The `code` field is a machine-readable identifier and `param` (when present) names the offending parameter.
## Need Help?
If you need assistance or have questions about the API:
* Email us at [support@flashquotes.com](mailto:support@flashquotes.com)
* Check our documentation for examples and guides
* Contact your account manager for enterprise support
# List Invoices
Source: https://docs.flashquotes.com/api-reference/invoice/list-invoices
GET /api/invoice/{booking_id}
Retrieve invoice IDs and URLs associated with a booking
This endpoint returns the invoice IDs and encrypted invoice URLs associated with a specific booking.
### Response
The response includes:
* `bookingId`: The ID of the booking
* `invoiceIds`: Array of invoice IDs associated with the booking
* `invoiceUrls`: Array of encrypted invoice URLs that can be used to access the invoices
### Example Usage
Here's an example of how to use this endpoint with curl:
```bash theme={null}
curl -X GET 'https://app.flashquotes.com/api/invoice/book_123' \
-H 'x-api-key: your_api_key_here'
```
### Common Use Cases
* Retrieving invoice URLs for a booking
* Accessing invoice documents through encrypted URLs
* Tracking which invoices are associated with a booking
# Get Quote
Source: https://docs.flashquotes.com/api-reference/quote/get
GET /quotes/{id}
Retrieve a quote summary with live totals and optional related objects
Retrieve a quote by ID, including its live `totalPriceCents`, currency, dates, contact and location IDs, and event details. Related objects are included only when requested with `expand[]`.
Use your `x-api-key` with [public API access](/api-reference/introduction#plan-access). These endpoints require Scale or an eligible Grandfathered Pro plan.
```bash theme={null}
curl --get 'https://app.flashquotes.com/api/quotes/cmf2q8n4x0000kz01a1b2c3d4' \
--header "x-api-key: $FLASHQUOTES_API_KEY" \
--data-urlencode 'expand[]=lead' \
--data-urlencode 'expand[]=serviceDays'
```
Set `FLASHQUOTES_API_KEY` to your API key and replace the quote ID with one from [List Quotes](/api-reference/quote/list-quotes). `--data-urlencode` safely encodes the brackets in query parameters.
## Live quote total
`totalPriceCents` is calculated on every request from saved line prices, base and travel fees, line and quote discounts, service charges, and tax. It uses the same calculation, rounding, and currency rules as the app. Monetary amounts use the currency's minor units: `250000` with `currency.isoCode: "USD"` represents \$2,500.00.
The total does not reprice services, refresh tax-provider data, include booking-time gratuity, or represent an invoice's unpaid balance. Expanding related objects does not change the total.
Child pricing changes can change `totalPriceCents` without changing the quote's `updatedAt`. Do not use `updated_at` filtering as a complete financial change feed.
## Expanding related objects
Repeat `expand[]` for each relation you need. Single-quote paths have no `data.` prefix. Comma-separated paths are also accepted.
| Path | Adds |
| ---------------------------------- | -------------------------------------------------------------------------------------------- |
| `lead` | Contact: ID, name, email, phone, company name, and source |
| `location` | Location: ID, name, address fields, and time zone |
| `eventType` | Event type ID and name |
| `services` | Distinct service definitions: ID, name, description, and image URL |
| `addons` | Distinct add-on definitions: ID, name, description, and image URL |
| `discounts` | Discount definitions: ID, name, type, `percentOff`, and `amountOff` |
| `taxRate` | Tax rate ID, name, and rate |
| `paymentTerms` | Payment schedule, deposit terms, and invoice due-days value |
| `serviceCharges` | Flat array of charge definitions, including type, percentage or fixed amount, and taxability |
| `serviceDays` | Flat array of service days with quote ID, start/end times, and creation/update times |
| `contract` | Contract template ID, name, description, and creation/update times |
| `booking` | Booking summary |
| `booking.lead` | Contact inside the booking |
| `booking.eventType` | Event type inside the booking |
| `booking.invoices` | Invoice summaries, including totals, paid/due amounts, status, and payment URLs |
| `booking.events` | Events inside the booking |
| `booking.events.location` | Each event's location |
| `booking.events.services` | Each event's services |
| `booking.events.addons` | Each event's add-ons |
| `booking.events.staff` | Each event's assigned staff |
| `booking.events.resources` | Each event's assigned resources |
| `booking.events.booking` | Each event's booking summary |
| `booking.events.booking.lead` | Contact inside each event's booking |
| `booking.events.booking.eventType` | Event type inside each event's booking |
| `booking.events.booking.events` | Events inside each event's booking |
| `booking.events.booking.invoices` | Invoice summaries inside each event's booking |
A nested path automatically includes its parents. For example, `booking.events.resources` includes `booking`, its `events`, and each event's `resources`. Other relations remain absent unless requested. Expanded single relations return `null` when missing or inaccessible; empty collections return `[]`.
Every expanded lead object includes `source`, the contact's recorded lead source (for example, `"Website"`), or `null` when no source is set. This applies to `lead`, `booking.lead`, and `booking.events.booking.lead`.
### Services, discounts, and charges
`services` and `addons` come from current line-item associations and are deduplicated by ID. Archived services and add-ons are omitted, although their saved pricing still contributes to the total. These objects do not include quantities or unit prices.
`discounts` combines quote-level and line-level definitions, deduplicated by ID, with the quote-level definition first. Use the base `discountId` to identify the quote-level discount. No line IDs, discount allocations, or realized discount amounts are returned. Attached archived discount and service-charge definitions remain visible.
`serviceCharges` and `serviceDays` are direct arrays without association wrappers. `serviceDays` and `booking.events` are ordered by start time ascending, then ID ascending. Invoice summaries are terminal: they have no expandable children.
### Limits and excluded fields
* Maximum **20 distinct paths** per request; duplicates count once. The full list above exceeds this limit.
* Maximum **four segments** per path.
* Unknown, malformed, or unsupported paths return `400` with `param: "expand"`.
* Quote and invoice line items, quantities, unit prices, pricing configuration, contract content, and signatures are excluded.
For example, `lineItems`, `serviceDays.lineItems`, `booking.invoices.lineItems`, `discount`, and `serviceCharges.serviceCharge` are unsupported. Free-text descriptions can still contain details entered by your team.
Request only the relations you need. Expanded collections are not independently paginated or truncated; repeated booking/event traversal can produce large responses. These routes do not currently enforce per-key rate or concurrency limits.
## Errors
| Status | Meaning |
| ------ | ---------------------------------------------------------------------- |
| `400` | Invalid expansion path or expansion limit exceeded |
| `401` | Authentication denied: check the API key, allowed IPs, and plan access |
| `404` | Quote is missing, deleted, or inaccessible to your company |
| `500` | Internal server error |
| `503` | Authentication service temporarily unavailable |
Requesting an unsupported expansion returns:
```json theme={null}
{
"error": {
"type": "invalid_request_error",
"code": "invalid_parameter",
"message": "Unknown expand path: 'lineItems'",
"param": "expand"
}
}
```
Quotes and expanded objects are scoped to your company. Missing and inaccessible quote IDs return the same `404`. Foreign pricing relationships are excluded from the total; if stored relationships are invalid, this can differ from the app's total until the data is repaired.
# List Quotes
Source: https://docs.flashquotes.com/api-reference/quote/list-quotes
GET /quotes
List quote summaries with live totals, date filters, cursor pagination, and optional expansions
Return a paginated list of quotes for your company. Each quote includes the same base fields and live `totalPriceCents` as [Get Quote](/api-reference/quote/get).
Use your `x-api-key` with [public API access](/api-reference/introduction#plan-access). These endpoints require Scale or an eligible Grandfathered Pro plan.
```bash theme={null}
curl --get 'https://app.flashquotes.com/api/quotes' \
--header "x-api-key: $FLASHQUOTES_API_KEY" \
--data-urlencode 'limit=25' \
--data-urlencode 'service_start_time[gte]=2026-10-01T00:00:00Z' \
--data-urlencode 'service_start_time[lt]=2026-11-01T00:00:00Z' \
--data-urlencode 'expand[]=data.lead' \
--data-urlencode 'expand[]=data.serviceDays'
```
Set `FLASHQUOTES_API_KEY` to your API key. This request finds quotes with at least one service day starting in October 2026 and includes contact and service-day details.
## Pagination
| Parameter | Description |
| ---------------- | -------------------------------------------------- |
| `limit` | Page size. Integer from `1` to `100`; default `10` |
| `starting_after` | ID of the last quote from the previous page |
Results are sorted by `createdAt` descending, then `id` descending. Sort order is fixed.
The response contains `object: "list"`, `url: "/api/quotes"`, `hasMore`, and a `data` array of quote objects. When `hasMore` is `true`, pass the ID of the last quote in `data` as `starting_after`. Keep the filters unchanged between pages.
```bash theme={null}
curl --get 'https://app.flashquotes.com/api/quotes' \
--header "x-api-key: $FLASHQUOTES_API_KEY" \
--data-urlencode 'limit=25' \
--data-urlencode 'starting_after=cmf2q8n4x0000kz01a1b2c3d4' \
--data-urlencode 'service_start_time[gte]=2026-10-01T00:00:00Z' \
--data-urlencode 'service_start_time[lt]=2026-11-01T00:00:00Z' \
--data-urlencode 'expand[]=data.lead' \
--data-urlencode 'expand[]=data.serviceDays'
```
Replace the example cursor with the last returned quote ID. An unknown or inaccessible cursor, or one that does not match the supplied filters, returns an empty page. No matching quotes also returns:
```json theme={null}
{
"object": "list",
"url": "/api/quotes",
"hasMore": false,
"data": []
}
```
## Equality filters
| Parameter | Matches |
| --------------- | ------------------------------------------- |
| `lead_id` | Exact contact ID (`leadId` in the response) |
| `location_id` | Exact location ID |
| `booking_id` | Exact booking ID |
| `event_type_id` | Exact event type ID |
All supplied filters apply together. For example, pass `lead_id` and `location_id` to find a contact's quotes at one location.
## Date-range filters
| Field | Matches |
| -------------------- | ----------------------------------------------------------------------- |
| `created_at` | Quote creation time |
| `updated_at` | Quote row update time |
| `service_start_time` | At least one service day whose start time satisfies all supplied bounds |
Each field accepts `[gt]` (after), `[gte]` (at or after), `[lt]` (before), and `[lte]` (at or before). Values must be full ISO 8601 datetimes with a timezone: for example, `2026-10-01T00:00:00Z` or `2026-10-01T00:00:00-06:00`. Bare dates such as `2026-10-01` return `400`.
Use `--data-urlencode` as shown above to encode brackets and timezone offsets correctly, including the `+` in positive offsets.
For a multi-day quote, **one service day must satisfy the entire range**. A start time before the lower bound on one day and after the upper bound on another does not match. Expanding `serviceDays` returns all of the matching quote's service days, including days outside the filter range.
`updated_at` filters the quote row's timestamp. Child pricing edits can change `totalPriceCents` without updating that timestamp, so this filter is not a complete financial change feed.
## Expanding related objects
Use the [Get Quote expansion paths](/api-reference/quote/get#expanding-related-objects), prefixed with **`data.`** on every path:
```bash theme={null}
curl --get 'https://app.flashquotes.com/api/quotes' \
--header "x-api-key: $FLASHQUOTES_API_KEY" \
--data-urlencode 'expand[]=data.booking.invoices' \
--data-urlencode 'expand[]=data.booking.events.resources'
```
Nested paths include their parents. Missing single relations return `null`; empty collections return `[]`. Expansions do not change quote totals and do not expose line items or unit prices.
Expanded lead objects include the contact's `source` as a string, or `null` when no source is set. Use `data.lead`, `data.booking.lead`, or `data.booking.events.booking.lead` to include it.
The limit is **20 distinct paths** and **four segments per path**, excluding the `data.` prefix. Missing prefixes and unsupported paths return `400`. Request only what you need: expanded collections are not independently paginated, and these routes do not currently enforce per-key rate or concurrency limits.
## Errors
| Status | Meaning |
| ------ | ----------------------------------------------------------------------- |
| `400` | Invalid page size, date-range value, expansion path, or expansion limit |
| `401` | Authentication denied: check the API key, allowed IPs, and plan access |
| `500` | Internal server error |
| `503` | Authentication service temporarily unavailable |
For example, `limit=101` returns:
```json theme={null}
{
"error": {
"type": "invalid_request_error",
"code": "invalid_parameter",
"message": "limit must be an integer between 1 and 100",
"param": "limit"
}
}
```
# Get Resource
Source: https://docs.flashquotes.com/api-reference/resource/get
GET /resources/{id}
Retrieve a single resource by id
Retrieves the resource with the given id. Use this endpoint to look up a specific piece of equipment or asset when you already have its id — for example, from the `resources` array returned by an expanded event.
```bash theme={null}
curl "https://app.flashquotes.com/api/resources/res_5M2wQ8" \
-H "x-api-key: $FLASHQUOTES_API_KEY"
```
The response includes the resource's own scalar fields plus its `locationId`, `createdAt`, and `updatedAt`. Cross-tenant or unknown ids return `404`.
## Expand
Resources have no expandable relations. Any `expand[]` value returns `400` with the offending path echoed as `param`.
# List Resources
Source: https://docs.flashquotes.com/api-reference/resource/list-resources
GET /resources
List resources with cursor pagination and an optional location filter
Returns a paginated list of resources for your company, newest first. Use this endpoint to sync your Flashquotes resource catalog with an external system, populate a picker in a custom booking tool, or check what equipment is assigned to a given location.
```bash theme={null}
curl "https://app.flashquotes.com/api/resources?limit=25&location_id=loc_7H2pQ9" \
-H "x-api-key: $FLASHQUOTES_API_KEY"
```
## Pagination
Resources use cursor-based pagination — pass the `id` of the last resource in the previous page as `starting_after`:
```bash theme={null}
# First page
GET /api/resources?limit=25
# Next page
GET /api/resources?limit=25&starting_after=res_5M2wQ8
```
The response includes a `hasMore` flag indicating whether further pages exist.
## Filtering by location
Pass `location_id` to return only resources attached to that location. This filter combines with pagination — you can page through resources for a single location by repeating `location_id` alongside `starting_after`.
```
?location_id=loc_7H2pQ9&limit=25
```
## Expand
Resources have no expandable relations. Any `expand[]` value returns `400` with the offending path echoed as `param`.
## Sort order
Results are always sorted by `createdAt desc`. Sort order is not configurable.
# Get Staff
Source: https://docs.flashquotes.com/api-reference/staff/get
GET /staff/{id}
Retrieve a single staff member by id
Retrieves the staff member with the given id.
The lookup is scoped to your API key's company. Ids that don't exist and ids that belong to another company both return `404` — the response doesn't distinguish between them.
Retrieve does not apply a status filter, so inactive staff resolve directly by id. Use this endpoint when you already have a specific staff id (for example, one returned by an expanded event) and need the full record.
## Example request
```bash theme={null}
curl "https://app.flashquotes.com/api/staff/stf_5J9pK2mR7t" \
-H "x-api-key: $FLASHQUOTES_API_KEY"
```
## Example response
```json theme={null}
{
"object": "staff",
"id": "stf_5J9pK2mR7t",
"firstName": "Alex",
"lastName": "Nguyen",
"email": "alex@example.com",
"phone": "+15555550137",
"role": "Bartender",
"status": "active",
"createdAt": "2026-03-14T18:02:44.000Z",
"updatedAt": "2026-06-02T11:48:19.000Z"
}
```
## Expanding related objects
No `expand[]` paths are supported on staff yet. Passing any value in `expand[]` returns `400` with an `invalid_parameter` error.
## Plan access
This endpoint requires a **Scale**-plan API key. See [Plan access](/api-reference/introduction#plan-access).
# Create Task
Source: https://docs.flashquotes.com/api-reference/task/create
POST /api/task/create
Create a task for a specific event
This endpoint creates a task on an event. Tasks are automatically added to the event's Admin checklist.
### Request Body
The request body should be a JSON object with the following fields:
| Field | Type | Required | Description |
| ------------- | ------ | -------- | ----------------------------------------------------------------------- |
| `eventId` | string | Yes | The ID of the event to create the task on |
| `description` | string | Yes | The task description |
| `dueDate` | string | No | Due date for the task in ISO 8601 format (e.g., `2025-10-20T00:00:00Z`) |
### Example Request
```bash theme={null}
curl -X POST https://app.flashquotes.com/api/task/create \
-H "x-api-key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"eventId": "cm123abc456",
"description": "Call venue to confirm table and chair arrangements",
"dueDate": "2025-10-20T00:00:00Z"
}'
```
### Example Response
```json theme={null}
{
"success": true,
"task": {
"id": "cm456def789",
"description": "Call venue to confirm table and chair arrangements",
"dueDate": "2025-10-20T00:00:00.000Z",
"eventId": "cm123abc456",
"completed": false,
"createdAt": "2025-10-13T14:22:00.000Z"
}
}
```
### Response Fields
| Field | Type | Description |
| ------------------ | -------------- | ------------------------------------------------------------ |
| `success` | boolean | Whether the task was created successfully |
| `task.id` | string | Unique identifier for the created task |
| `task.description` | string | The task description |
| `task.dueDate` | string \| null | Due date in ISO 8601 format, or null if not provided |
| `task.eventId` | string | ID of the event this task belongs to |
| `task.completed` | boolean | Whether the task is completed (always `false` for new tasks) |
| `task.createdAt` | string | Timestamp when the task was created |
### Common Use Cases
* Automatically create follow-up tasks from external systems
* Trigger task creation based on booking events or customer actions
* Bulk import tasks from spreadsheets or other systems
* Automatically create additional tasks after event booking
### Error Responses
**400 Bad Request** - Invalid request body or date format
```json theme={null}
{
"error": "Invalid request body",
"details": {
"description": {
"_errors": ["Task description is required"]
}
}
}
```
**404 Not Found** - Event doesn't exist or doesn't belong to your company
```json theme={null}
{
"error": "Event not found"
}
```
**500 Internal Server Error** - Unexpected error occurred
```json theme={null}
{
"error": "Internal server error"
}
```
### Notes
Date format must be valid ISO 8601 (e.g., `2025-10-20T00:00:00Z`).
# Bookings
Source: https://docs.flashquotes.com/bookings
Learn how to manage bookings, handle multi-day events, and track event details in Flashquotes
## Overview
A booking in Flashquotes represents a client's confirmed service agreement, which may include one or multiple event days. Each booking serves as an umbrella that contains payment terms, event details, and client information. Bookings can be created automatically through your booking form or manually for special cases.
## Booking Structure
In Flashquotes, there's an important distinction between bookings and events:
* **Booking**: The overall service agreement that includes payment terms and client details
* **Event**: A single day of service within a booking
One booking can contain multiple events (service days) and multiple invoices. Each invoice can have its own recipient, due date, and payments.
Each booking includes:
* Booking form responses
* Payment information
* Client details
* Associated events
* Invoice details
* Dynamic booking confirmation
If your booking has a signed contract, you can view and download it from the **Contract** tab on the booking page. [Learn more about contracts →](/templates/contracts/overview)
## Creating and Managing Bookings
### Manual Booking Creation
To manually create a booking:
1. Navigate to the [Bookings](https://app.flashquotes.com/bookings) page
2. Click the `New Booking` button in the top right
3. Enter booking details:
* Client information
* Payment terms
* Event details
* Service requirements
Manual booking creation is particularly useful for corporate clients with
special payment terms or recurring conventions.
The form includes a **Send booking confirmation** checkbox, checked by
default, that emails the contact a confirmation when you save. Uncheck
it to record the booking quietly — for example, when backfilling past
events or logging an arrangement made over the phone. See
[Booking Confirmation Email](#booking-confirmation-email).
### Managing Multiple Events
To add additional event days to a booking:
1. Navigate to the booking view
2. Locate an existing event
3. Click the `Copy` button next to the event
4. Select the new date
5. Customize the timeline and details as needed
This is useful for:
* Adding setup days
* Creating multiple service days
* Scheduling recurring events
Multi-day bookings allow you to:
* Manage multiple events under one booking, with one or more invoices
* Create different timelines for each day based on service days from the original quote
* Track setup and service days separately
* Maintain consistent client information across all event days
* Handle complex scheduling like wedding weekends or corporate events
### Changing the Booking Contact
If a booking ended up under the wrong contact, or the point of contact changes (say, a planner hands off to the client), you can move the booking to a different contact at any time.
**Where to change it:**
* On the booking page, open the `More Actions` menu and select **Change contact**
* On any of the booking's events, click **Change** next to the booking contact in the Contacts card
Search for the new contact, confirm, and the whole booking moves.
**What moves with the booking:**
* The original quote
* Every invoice on the booking
* All event days, with their client details
* Notes on the booking or quote
* Pending workflow emails — steps that haven't sent yet go to the new contact (see [who receives workflow emails](/workflows/overview#who-receives-workflow-emails))
* Auto-generated event titles like "Jordan's event" update to the new contact's name; titles you've edited by hand are left alone
* Google Calendar events synced from the booking update to match
**What stays with the previous contact:**
* Emails already sent to the previous contact
* Contracts the previous contact signed
These stay because they record what actually happened.
Booking workflow emails address the booking's current contact when they send. [Invoice reminders](/invoices/reminders) use each invoice's saved bill-to email, which is preserved when the booking contact changes. Review **Bill to details** on each invoice if its recipient should change too. Older invoices without a saved bill-to email follow the booking's current contact.
## Booking Confirmation
### Dynamic Confirmation Page
The booking confirmation page provides clients with:
* Most up-to-date event information
* Invoice payment links
* Site contact details
* Parking and loading information
* Event timeline for each service day
The confirmation page updates automatically whenever you make changes in the
admin panel, ensuring clients always have access to the latest information.
### Sharing Confirmations
To share a booking confirmation:
1. Open the booking
2. Click `More Actions` in the top right
3. Select `Share Confirmation Link`
4. Send the link to your client
### Booking Confirmation Email
Flashquotes automatically emails your customer a confirmation whenever a booking is completed through your booking form. This is a system email — it's separate from (and in addition to) any [workflow emails](/workflows/overview) the booking triggers.
**When it doesn't send:**
* **Imported bookings** — [importing bookings](/imports-exports/import-bookings) never triggers the confirmation email (or any other notifications), so your existing clients aren't re-notified about events they already booked
* **Manual bookings, when you opt out** — the `New Booking` form has a **Send booking confirmation** checkbox, checked by default. Uncheck it and the contact isn't emailed. Only the customer email is skipped — your team's new-booking alerts still send
**How it's sent:**
* **To:** the booking contact's email address
* **From:** your company name, with replies routed to your company contact email
* **Subject:** "Your booking with \[Your Company] is confirmed"
**What it looks like:**
1. **Your logo** at the top, if you've uploaded one in [Branding](/settings/branding)
2. **"Your booking is confirmed"** headline with a short thank-you note addressed to your customer by name
3. **Event details** — the event date with start time, and the event address
4. **"See all booking details" button** — styled with your brand color, linking to the customer's [confirmation page](#dynamic-confirmation-page)
5. **Contact footer** — "Questions?" with your company name and contact email
Your team gets its own heads-up too — anyone with new-booking alerts turned
on in their notification preferences receives an email whenever a new
booking comes in.
## Filtering Bookings
Click the dashed **Filter** button on the Bookings page to add a filter. Once one is applied, the button becomes **Add filter**, and each active filter appears as a pill you can click to edit or remove with the **×**. Filters combine, so adding more narrows the list further.
Available dimensions:
* **Booking date** — when the booking was confirmed
* **First event date** — the earliest service day on the booking (bookings can span months, so only the first event is matched)
* **Location** — shown when your company has more than one
* **Payment status** — Paid, Pending, Partially paid, Open invoice, Overdue, Void, No invoice, or Draft invoice
**Booking date** and **First event date** are independent filters. Each names its own date in its pill, and you can apply either, both, or neither at the same time — for example, "Booking date: last 30 days" plus "First event date: this year" to see recently confirmed bookings for events happening in the current year.
Booking date is applied by default so the stats and table stay bounded. The stat cards' period-over-period deltas use Booking date as the comparison window when both dates are set, and hide when no range is fully bounded.
## Financial Management
### Payment Tracking
From the booking view, you can:
* View cards on file
* See deposit payment details
* Record manual payments (ACH/check)
* Access and edit invoices
To configure payment terms for your quotes, see our
[Booking Flow guide](/contacts/booking-flow).
### Invoice Integration
Each booking can have multiple invoices, allowing you to:
* Bill different people or companies for separate charges
* Set a due date and track payments for each invoice
* Add charges after booking on a new invoice
* See totals and payment status across all active invoices
Open the booking or event's **Billing** tab to create, duplicate, send, or download an invoice. Payment schedules and payment history are managed inside each invoice.
See [Multiple invoices per booking](/invoices/multiple-invoices), including how invoices are handled when you [copy a booking](/invoices/multiple-invoices#copy-a-booking-with-its-invoices).
## Export Bookings Data
### CSV Export
Export your booking data to CSV format for business analytics, accounting reconciliation, and operational reporting.
Go to the [Bookings](https://app.flashquotes.com/bookings) page
Click the **Export to CSV** button in the top toolbar
Your browser downloads a CSV file with up to 2,000 bookings
#### Export Contents
The booking export includes:
* **Client Details**: Name, email, phone, company
* **Event Information**: Dates, types, guest counts, locations
* **Financial Data**: Total amount, deposits, payments, balance due
* **Service Details**: Resources, staff assignments, timelines
* **Booking Status**: Confirmed, tentative, cancelled
* **Form Responses**: Custom field data from booking forms
#### Common Uses
* **Accounting**: Reconcile bookings with QuickBooks or other accounting software
* **Analytics**: Analyze booking trends, popular services, and seasonal patterns
* **Operations**: Plan resource allocation and staff scheduling
* **Marketing**: Track conversion rates and ROI from different channels
The export respects your current filters. Apply date ranges or status filters before exporting to get specific data subsets.
## Best Practices
1. Use manual booking creation for clients with special requirements
2. Regularly verify booking details are up-to-date
3. Utilize the copy feature for recurring events
4. Keep client confirmation links accessible
5. Monitor payment status regularly
6. Export data regularly for backup and analysis
## Next Steps
After creating a booking:
* [Set up event details](/events)
* [Manage invoices](/invoices)
* [Export contact data](/imports-exports/export-contacts)
* Track payment status
* Coordinate with your team
# Calendar
Source: https://docs.flashquotes.com/calendar
View and manage all your events, quotes, tasks, and payments in one place with the Flashquotes calendar.
Use the calendar to see everything happening in your business — booked events, open quotes, tasks, payments, and more — across day, week, month, or agenda views.
To open it, go to **Event Schedule** in the sidebar and switch to **Calendar** view using the toggle at the top of the page.
## Switch calendar views
The calendar defaults to **Week** view. To change it:
1. Click the **view selector dropdown** in the top-right corner of the calendar.
2. Choose **Day**, **Week**, **Month**, or **Agenda**.
On mobile, only **Day** and **Agenda** views are available.
## Navigate dates
* Click **Today** to jump back to the current date.
* Use the **back/forward arrows** to move by day, week, or month.
* Click the **date heading** to open a date picker and jump to a specific date.
## Show or hide item types
The left sidebar lets you toggle what appears on the calendar.
| Item | Color |
| ------------------------ | ---------------------- |
| Events | Indigo (solid) |
| Quotes (unbooked quotes) | Indigo (dashed border) |
| Blocked dates | Slate |
| Invoice due dates | Rose |
| Tasks | Amber |
| Scheduled payments | Teal |
| Quote expirations | Slate |
Toggle any item type on or off using the checkboxes in the **Calendar items** section. Your preferences save automatically.
## Filter by location, staff, or resource
In the **Filters** section of the left sidebar:
1. Select one or more **locations** to scope the calendar.
2. Use **Staff** and **Resources** filters to narrow further — these are faceted by the locations you selected.
3. Click **Clear all** to reset all filters.
The location filter only appears if you have multiple locations set up.
## Block out dates
1. Click **Block out dates** at the top of the left sidebar.
2. Fill in the date range and reason.
3. Save. The blocked period appears on the calendar in slate.
To remove a blocked date, click it on the calendar and select **Delete** in the slideover.
[Learn more about blocked dates →](/calendar-blocked-dates)
## Open item details
Click any calendar item to see its details.
| Item type | What happens |
| --------------------------------------- | ---------------------------------- |
| Booked event | Opens a detail slideover |
| Quote | Navigates to the quote detail page |
| Blocked date | Opens slideover to view or delete |
| Task, invoice, payment, or quote expiry | Opens a detail slideover |
## Switch timezones
In **Day** or **Week** view, a timezone button appears in the calendar header. Click it to switch the displayed timezone.
## Calendar settings
Click **Calendar settings**, the sliders icon beside the view selector.
The settings menu is available on desktop and mobile.
### Show service time vs. shift time
Under **Event times**, choose how booked events appear:
* **Shift time** (default): The full shift, including setup and teardown.
* **Service time**: Only the customer-facing service hours.
### Choose the first day of the week
Under **First day of week**, choose **Sunday** or **Monday**.
Monday is the default.
The calendar and its date picker update immediately.
Your selected date and calendar view stay the same.
This preference applies to the Event Schedule calendar, not other date pickers.
Both settings save automatically in your current browser.
Other browsers and devices keep their own preferences.
Clearing this site's browser data restores the defaults.
## Multi-day events
Events that span more than one day render across each day they touch, so you can see the full footprint of a setup → event → teardown weekend without clicking into the event.
## Resource availability
Resource availability is displayed on each day to give you a snapshot view of which days have high resource availability and which days are nearly booked out.
[Learn more about resources →](/resources)
## Connect Google Calendar
To sync your calendar with Google Calendar, upgrade to Flashquotes Plus. The upsell option appears at the bottom of the left sidebar.
The calendar auto-scrolls to the current time when you first open it in Day or Week view — no need to scroll manually to find your next event.
# Product Updates
Source: https://docs.flashquotes.com/changelog/overview
New features and improvements to Flashquotes are released **every week**.
This changelog documents product updates and new features in Flashquotes. These updates are rolled out directly to the live application - no separate changelog feature exists within the app itself.
## Multiple Invoices per Booking
Create separate invoices for extras, different billing recipients, or charges due on different dates — all under one booking.
* **Add or duplicate invoices** from the booking or event's **Billing** tab. Each gets its own number, payments, and PDF.
* **Bill different people** with an independent bill-to name and email on each invoice, while keeping the booking contact the same.
* **Set separate due dates** with automatic reminders that follow each invoice's date and recipient.
* **Copy a booking's invoices** into a new booking with fresh numbers and no payments carried over.
[Learn about multiple invoices per booking →](/invoices/multiple-invoices)
## Minimum Notice for Add-ons
Keep add-ons that need extra prep, ordering, or scheduling from being requested too close to an event.
* **Set the lead time** — choose from 1 to 365 days in the add-on's **Availability** settings, or leave it blank for no minimum.
* **Show only eligible add-ons** — once a customer picks an event date, the lead intake form automatically hides options that need more notice.
* **Adapt as the date changes** — add-ons stay visible until a date is selected, and the available choices update with the selected date.
[Learn about add-on minimum notice →](/services/add-ons)
## Holiday, Time-of-Day, and Day-of-Week Pricing
Three new dynamic pricing modifiers, so the calendar and the clock set your rates instead of you editing prices by hand. Find them on a service under **Pricing → Advanced**.
* **Holiday & date pricing** — add every holiday for your country in one step with a single percentage, or pick them one at a time. Holidays recalculate their date each year, so Thanksgiving and Memorial Day stay correct without maintenance.
* **Custom dates that repeat** — name a one-off range like "Peak season," set a percentage, and tick **Repeats every year** to have it apply on the same dates annually
* **Time-of-day pricing** — charge more for early starts and late finishes. Set ranges of clock time, each with its own percentage. A common setup is +10% before 7:00 AM and after 10:00 PM, with your normal hours left at the base rate.
* **Day-of-week pricing** — upcharge Saturdays, discount the days you're trying to fill. Add only the days that need a change.
[Learn about dynamic pricing →](/services/pricing#dynamic-pricing)
## Add-on Base Price per Day and Live Price Preview
Add-on pricing got a new billing option and a way to check your math before it reaches a customer.
* **Charge the base price each day** — a new checkbox that multiplies an add-on's base price by the number of service days. Use it for costs you incur every day of a multi-day event, like daily delivery or setup.
* **Combines with per-unit** — leave both on and the base scales by quantity and days together
* **Price preview** — the add-on page now shows the price for any quantity, guest count, resource count, hours, and number of days, with the calculated price and base price broken out separately
[Learn about add-ons →](/services/add-ons)
## Lead Detection with Flashquotes AI
Flashquotes AI now finds quote requests sitting in your Gmail inbox and turns them into quote opportunities. Connect a Google account and new emails are checked as they arrive.
* **Suggestions in the Pipeline** — each inquiry found appears at the top of the New inquiry column with the event date, guest count, and a brief AI summary
* **Build the quote in one click** — Flashquotes creates the contact and a draft quote with the date, time, address, and service filled in, then opens it for you to finish
* **See the source** — read the original email before you decide, and discard anything that isn't a real inquiry
Flashquotes AI is in public beta. Click **Give feedback** on any suggestion to help us make it better next time.
[Lead detection →](/flashquotes-ai/lead-detection) · [Flashquotes AI overview →](/flashquotes-ai/overview)
## Duplicate a Quote with New Dates
Reuse a quote for a repeat client or a similar event without rebuilding it. **Duplicate** now opens a dialog where you set the new service dates before the copy is created, so the duplicate is ready to send instead of pointing at last year's event.
* **Pick the dates first** — service days start pre-filled from the original; change any date or time, add or remove days, and check availability right in the date picker
* **Everything else carries over** — pricing, line items, service charges, event details, quote message, booking form, payment terms, and the same contract as the original
* **Optionally copy intake answers** — tick **Duplicate lead intake form responses** to bring the original lead's form answers along; it's off by default and only appears when the original has answers to copy
* **Same look, guaranteed** — the duplicate keeps the original quote's exact template appearance, even if the template has changed since
Find it in the quote page's **More actions** menu or the row menu on a contact's **Quotes** tab. The new quote opens as soon as it's created.
[Duplicating a quote →](/contacts/quotes#duplicating-a-quote)
## Update a Quote to the Latest Template Version
Quotes keep a snapshot of their template, so editing the template never silently changes a quote you've already sent. When a quote's photos, add-ons, testimonials, or service details fall behind its template, the **Quote Template** tab now shows an **Update to latest version** button.
* The confirmation names exactly which sections will change and the template they'll match
* Applying the update can't be undone — choose **Keep current version** to leave the quote as is
[Updating a quote to the latest template →](/templates/quote-templates#updating-a-quote-to-the-latest-template-version)
## Change a Booking's Contact
Move a booking to a different contact when the wrong person ended up on the record, or when the point of contact changes — like a planner handing off to the client. Everything attached to the booking moves together.
* **Change it from anywhere** — the booking page's `More Actions` menu, the event's Contacts card, or the invoice editor
* **Everything moves together** — the quote, every invoice, all event days, and notes follow the new contact
* **Titles keep up** — auto-generated event titles and synced Google Calendar events update to the new contact's name; titles you've edited by hand are left alone
* **History stays put** — emails already sent to the previous contact and contracts they signed stay on their record
Workflow emails and automated invoice reminders now resolve their recipient when each email sends, so pending follow-ups always go to the current contact on the quote or booking.
[Changing the booking contact →](/bookings#changing-the-booking-contact) · [Who receives workflow emails →](/workflows/overview#who-receives-workflow-emails)
## Collect a Tip After the Event
Add a gratuity to an invoice once the event is over without creating a separate payment link. Edit the booking's **Tip amount** field or add a **Gratuity** line item to the existing invoice, then re-send the invoice link so the customer pays the updated balance on the same invoice page.
* You set the tip amount on the invoice — customers can't pick their own tip after booking
* Works with any completed booking; totals and remaining balance recalculate on save
* No standalone Stripe payment link for tipping — everything stays on the invoice
[Add a tip after the event →](/invoices#add-a-tip-after-the-event)
## Export Quotes to CSV
Export your quotes from the Pipeline with more of your inbound quote data, so you can analyze where inquiries come from and what they're for — right in a spreadsheet or BI tool.
* **Event type** — see which kinds of events drive your inquiries
* **Referral source** — measure which marketing channels bring in quotes
* **Event address** — break down demand by city and venue location
* **Your view, your file** — the export matches your current filters and sort, includes booked and lost quotes for win/loss analysis, and lets you pick exactly the columns you need
[How to export quotes →](/imports-exports/export-quotes)
## Attach Files to Event Notes
Keep site maps, floor plans, and reference photos with the event instead of digging through email.
* **Where it works** — internal notes, plus the event description, additional location details, and parking & loading info fields
* **Add files** by clicking the paperclip in the toolbar, dragging a file onto the field, or pasting a copied image — images and PDFs up to 16 MB each
* **Manage files** — click a tile to open a full-screen viewer, rename in place, or remove with the ✕ (files can only be removed that way, so a slip while editing text won't delete one)
* **Event Briefs** automatically include attached files, so field staff see maps and photos without asking
* **Internal notes save automatically** when you click away, confirmed by a "Saved" badge — saving waits for uploads to finish so nothing's lost
[Learn more →](/events/attachments)
## Contact Shortcodes on Booking Workflows
Personalize post-booking and event-timed emails with contact details. The `{{lead.*}}` shortcodes now resolve on the **Quote Booked**, **First Event Start**, and **Last Event End** workflow triggers, so first name, email, phone, and city can flow into confirmations, day-of reminders, and follow-ups.
* Use `{{lead.first_name}}`, `{{lead.last_name}}`, `{{lead.full_name}}`, `{{lead.email}}`, `{{lead.phone}}`, `{{lead.company_name}}`, and `{{lead.city}}` in any booking-triggered workflow
* The five duplicate booking contact shortcodes (`{{booking.first_name}}`, `{{booking.last_name}}`, `{{booking.full_name}}`, `{{booking.email}}`, `{{booking.phone}}`) are retired and no longer appear in the shortcode picker
* Existing templates that already use the retired codes keep sending and now pull from the live contact record
[View all shortcodes →](/workflows/shortcodes/overview) · [Workflow triggers →](/workflows/triggers)
## Resources API
Sync your Flashquotes resource catalog with external systems, populate resource pickers in custom booking tools, or check what equipment is attached to a location, all through the public REST API.
* **List resources** — `GET /resources` returns resources newest-first with cursor pagination (`limit`, `starting_after`) and a `hasMore` flag
* **Get a resource** — `GET /resources/{id}` returns a single resource's scalar fields plus `locationId`, `createdAt`, and `updatedAt`
* **Filter by location** — pass `location_id` to scope results to one location; combines with pagination
Requires a Scale-plan API key. Follows the same Stripe-style conventions as the rest of the public API (snake\_case query params, camelCase response keys, standard list envelope).
[List resources →](/api-reference/resource/list-resources) · [Get a resource →](/api-reference/resource/get) · [API overview →](/api-reference/introduction)
## Retrieve a Staff Member via API
Look up a single staff member by id from the public API. Pair it with expanded event responses to pull the full record for whoever is assigned to a shift, without a second list-and-filter step.
* `GET /api/staff/{id}` returns the staff member's name, email, phone, role, status, and `createdAt` / `updatedAt` timestamps
* Scoped to your API key's company — ids that don't exist and ids from another company both return `404`
* Retrieve ignores the active/inactive filter, so inactive staff still resolve by id
* Requires a **Scale**-plan API key; `expand[]` paths aren't supported on staff yet
[Read the endpoint reference →](/api-reference/staff/get)
## Leads Is Now Pipeline and Contacts
The Leads page has been split into two views built around how you actually work — quotes to win, and people to know.
* **Pipeline** — every open quote on a kanban board, moving through stages from **New inquiry** to **Quote sent** to **Booked**. Drag cards between stages, spot 🔥 hot quotes where the client just engaged, and catch idle quotes before they go cold. Prefer rows? Flip to the list view.
* **Custom stages** — add, rename, and reorder stages to match your sales process
* **Contacts** — everyone you've quoted or booked in one searchable directory, with quote and booking counts, last activity, filters, and CSV export
[Explore the Pipeline →](/pipeline) · [Meet the Contacts page →](/contacts)
## Reorganized Navigation
The main sidebar has been streamlined so related tools live together and take fewer clicks to reach.
* **Services & items** — Services, add-ons, and resources are now unified under one section with tabs, replacing the separate top-level entries
* **Templates** — Quote templates and contracts share a single **Templates** section with tabs
* **Payments** — The former Payouts page is now a tab inside **Payments**, so payments, refunds, and payouts sit side-by-side
* **Event Schedule** — Events and Calendar are combined into one **Event Schedule** page with a List/Calendar toggle
* **Sales Tax under Reports** — The sales tax report has moved into **Reports**
* **Workspace switcher** — Switch between the companies you belong to from a new switcher at the top of the sidebar
Every page in your bookmarks still works — only the location in the sidebar has changed.
[Explore the updated navigation →](/quickstart)
## Per-Line-Item Discounts on Quotes and Invoices
Mark down a single service without touching the rest of the order — attach any discount directly to a line item on a quote or invoice.
* Pick an existing discount from the line-item editor's **Discount** picker, or create one inline with **+ New discount**
* Customers see the original price with a strikethrough next to the discounted price, along with the discount name
* Totals, taxes, and QuickBooks sync all use the discounted amount, so your books reconcile automatically
* Line-item discounts apply before any order-level discount, floor at \$0, and are never applied to gratuity
[Learn about per-line-item discounts →](/contacts/quotes#per-line-item-discounts)
## Group Services into Sections on Your Lead Intake Form
Organize 10+ services into named, collapsible groups so leads can find what they need without scrolling a wall of options.
* Add named sections (e.g. "Bar service", "Desserts") to the Services question on any form
* Drag services between sections, reorder sections, and rename them inline
* Leads see sections collapsed by default with a count — tap to expand
[Learn about lead intake forms →](/forms/lead-intake)
## Custom Themes for Your Lead Intake Form
Now you can design a theme for your lead intake form that fully matches your brand and website!
Open the design panel from the palette icon in the top-right of the form editor to customize colors, font, and corners and see the changes live on your form. You can even have different themes for different forms and will get live feedback on color pairs for the best form readability.
* **Copy from another form** — reuse a theme you've already built via the **Copy from** menu in the Design panel header
* **Reset theme** — restore the Flashquotes default, seeded from your company brand color
[Customize your form theme →](/forms/lead-intake#custom-themes)
## Add-on and Service Quantities on Events and Event Briefs
Quantities for add-ons and services now flow through to events and event briefs, so your team sees exactly how many of each item the customer ordered.
* Add-on and service quantities surface on the event details page and the [event brief](/events/event-brief)
* Special add-ons still appear as prominent yellow banners — now with quantity included
* Quantities update automatically when you edit the underlying quote or booking
[Learn more about event briefs →](/events/event-brief)
## Auto-Calculate Travel Fee When Adding Services
Add a service to a quote and the travel fee calculates automatically — no second step, no manual math.
* Auto-calculate travel fees when adding a new service line item to a quote
* Override or remove the calculated fee on any line item
* Configure per-service calculation with [service-level travel fees](/services/travel-fees)
[Learn about travel fees →](/services/travel-fees)
## Resource Availability and Calendar Improvements
See exactly when your resources are free, and view the calendar the way you actually work.
* **Resource availability** in the quote editor and on the calendar — spot conflicts before they happen
* **Service time vs. shift time** toggle on the calendar to plan around setup and teardown
* **Multi-day events** render cleanly across both days
[Learn more about resources →](/resources) and [calendar →](/calendar)
## Shortcodes in Line Item Descriptions
Use [quote shortcodes](/workflows/shortcodes/overview) inside Service and Add-on line item descriptions on your quotes.
* Personalize each line with guest count, event date, customer name, and more
* Edit descriptions inline with a rich text editor
* Shortcodes resolve when the quote is created
[Learn about shortcodes →](/workflows/shortcodes/overview)
## Custom Button Labels on Your Lead Intake Form
You can now edit the CTA button copy on your lead intake form directly in the form editor — no code, no settings panel.
* **First-page button** — defaults to **"Get Custom Pricing"** (or **"Get My Instant Quote"** when Instant Quoting is on)
* **Last-page button** — defaults to **"Get My Quote"** (or **"Get My Instant Quote"** when Instant Quoting is on)
In the form editor, hover the button to highlight it, click to edit, then press **Enter** or click outside to save. Leave it blank to restore the default. Labels are capped at 100 characters.
[Learn how to edit button labels →](/forms/lead-intake)
## Pricing by Event Type
Charge differently for the same service depending on the event type — wedding pricing, corporate pricing, festival pricing, set once per service.
* Set a price modifier for any event type
* Applies everywhere prices are calculated, including instant quoting
* Pairs with the new [Event Type form question](/forms/lead-intake)
[Learn about pricing →](/services/pricing)
## Event Type on Quotes and Booked Events
Ask customers what kind of event they're hosting, then surface that answer where it matters.
* New **Event Type** lead intake form question — configure and sort your own options
* Event type displays on the quote, the event details page, and booked events
* Use it for filtering, reporting, and event-type pricing
[Learn about lead intake forms →](/forms/lead-intake)
## Tiered Pricing for Volume Discounts
Offer volume discounts on services and add-ons by setting per-guest pricing tiers.
* **Service tiers** — drop the per-guest rate as guest counts climb, with an optional minimum hourly guests floor
* **Add-on tiers** — the same volume-discount logic applies to add-ons
[Learn about service pricing →](/services/pricing) and [add-ons →](/services/add-ons)
## Surge Pricing and Days-Out Modifier
Charge more when resource availability is low or when bookings come in late — automatically.
* **Surge pricing** — percentage uplift triggered when [resources linked to a service](/resources#service-specific-resources) are scarce on the event date (service-aware, no flat-fee option)
* **Days-out modifier** — modify pricing based on event lead time (upcharge rush jobs, premium-price far-out reservations, or both)
[See Scale plan features →](/settings/plans)
## Per-Staff-Hour Travel Billing
Bill drive time per staff member in addition to your per-mile, per-resource travel fee.
* Travel labor scales with crew size — the per-mile, per-resource charge still covers the vehicles
* Added on top of the existing travel fee (not subject to the mileage minimum)
[Learn about travel fees →](/services/travel-fees)
## Per-Shift-Hour Labor Pricing
Choose how hourly labor is counted on each service — by **shift hours** (full on-site time, including setup and teardown) or **service hours** (the customer-facing window only).
* Both modes exclude travel — bill drive time separately via [travel fees](/services/travel-fees)
* Pairs naturally with [per-staff-hour travel billing](/services/travel-fees) to itemize travel as its own line
[Learn about service pricing →](/services/pricing)
## Service-Level Travel Fees
Travel fees are now configured and calculated **per service** — each service on a quote gets its own travel fee based on its core resources.
* **Free Travel Radius**: Set a radius around your business with no travel charge — events outside the radius are charged on the full distance
* **Per-Service Settings**: Each service has its own price per mile and minimum fee
* **Resource-Aware**: Fees calculate from the resources needed for that specific service
* **Editable Line Items**: View the calculation breakdown and edit or remove travel fees per service
[Learn about travel fee settings →](/services/travel-fees)
## Platform Fee Flexibility
You set how to pay for the platform fee - either pass it to the end customer (**default**) or absorb it. Easily override your company's platform fee setting to absorb or pass the fee at a customer quote level.
For example, you can choose to absorb and not show any fee to certain customers.
[Learn about platform fee options →](/settings/plans#platform-fee)
## Staff & Resource Rules
Now you can always calculate the right number of staff and resources for each service, allowing you to dial in your AutoDraft and instant quotes!
Set per-service staffing rules that automatically calculate staff and resource quantities on quotes. Choose from four modes — Hourly Capacity, By Guest Count, By Duration, or By Guest Count + Duration — based on how your staffing scales.
[Learn more about Staff & Resource Rules →](/services/staff-resource-rules)
## Show or Hide Tip on Event Briefs
Control whether staff can see pre-paid gratuity amounts on event briefs. The setting lives on the event details page under the **Tip amount** field — click the inline link to toggle it on or off company-wide.
When hidden, the "Pre-paid gratuity" in the **Setup** section of the event brief will not be shown.
[Learn how to change the setting →](/events/event-brief#gratuity-visibility)
## Notes on Contacts
Add notes directly to any contact. Create, edit, delete, and pin notes from the new **Notes** tab on the contact detail page. Pin important notes to keep them at the top, and use search to find what you need fast.
[Learn more about managing contacts →](/contacts)
## Per-Unit Pricing for Services
Add per-unit pricing to any service — useful for services where you want to price based on user-selected quantities.
* Set a unit name, price per unit, and optional min/max quantity limits
* Customers see a quantity selector on the lead intake form for services with unit pricing
[Learn more about service pricing →](/services/pricing)
## Invoice and Payment Exports
Improved sorting, filtering and search on the Invoices view as well as a new Payments view under Finance > Payments.
Additionally, you can now export both Invoices and Payments to CSV to support accounting and data analysis.
[Learn more about invoices →](/invoices) and [Learn more about exports →](/imports-exports/overview)
## Quote PDF Download
Download or print any quote as a PDF. Open a quote and click the menu icon to find the new **Download PDF** and **Print** options. The PDF includes your full quote details, line items, and pricing — ready to share offline.
[Learn more about the quote page →](/contacts/quote-view)
## Pay Full Balance at Booking
Customers with a deposit payment schedule now see a **"Pay full balance today"** checkbox on the booking form. When toggled, the full invoice amount due is charged in a single transaction instead of a deposit with a later balance payment.
[Learn more about payment terms →](/contacts/booking-flow)
***
## Quote Booked Workflow Trigger
Create workflows that fire automatically when a quote is booked. Select "When a quote is booked" as the trigger when creating a new workflow. Use booking and lead shortcodes in your message templates to personalize post-booking communications.
[Learn more about triggers →](/workflows/triggers)
***
## Hide Services from Lead Intake Form
Control which services appear on your public lead intake form. In the form builder, each service now has a toggle switch to show or hide it. Hidden services won't appear to customers but stay available for quotes you build manually.
[Learn more about the lead intake form →](/forms/lead-intake)
***
## New Booking Shortcodes
Six new shortcodes are available for booking-based workflow templates:
* `{{booking.first_event_end_date}}` and `{{booking.first_event_end_time}}` — end of the first event
* `{{booking.last_event_start_date}}` and `{{booking.last_event_start_time}}` — start of the last event
* `{{booking.first_event_address}}` — venue address
* `{{booking.first_event_guest_count}}` — guest count (shows "TBD" if not set)
[View all shortcodes →](/workflows/shortcodes/overview)
## Multiple Quote Follow-Up Workflows
Create as many Quote Sent workflows as you need. Previously limited to one, you can now build different follow-up sequences for different situations — and choose which workflow to enroll a quote in when sending.
* Designate a default workflow per trigger type
* Default is pre-selected in the send quote modal
* Switch workflows per quote as needed
[Learn more about workflows →](/workflows/overview)
## Per Guest Per Hour Add-on Pricing
A new add-on pricing type lets you charge based on guest count and service duration combined. Set a per-guest-per-hour rate, and the price calculates automatically: rate x guests x hours.
**Example**: $2/guest/hr add-on with 50 guests, 1 day, 4 hours = $400
[Learn more about add-on pricing →](/services/add-ons)
## Calendar Month View
The calendar is completely rebuilt. You now have four views, a smarter sidebar, and full control over what you see.
**Views**
* Day, Week, Month, and Agenda views (Week was the only option before)
* On mobile, Day and Agenda views only
* Week and Day headers include a timezone switcher
* Calendar auto-scrolls to current time on load
**Sidebar**
* Toggle visibility for Events, Quotes, Blocked dates, Invoice due dates, Tasks, Scheduled payments, and Quote expirations
* Filter by Location, Staff, and Resource — Staff and Resource filters update based on selected locations
* "Block out dates" button for quick date blocking
* "Clear all" resets all filters at once
**Clicking items**
* Events, Tasks, Invoices, and Payments open a detail slideover
* Quotes navigate directly to the quote page
* Blocked dates let you view or delete them
Your sidebar visibility preferences save automatically in your browser.
[Learn more about the calendar →](/calendar)
## Service-Specific Add-ons
You can now control which add-ons are available for each service. When a customer selects services on a quote request form, only add-ons linked to those services are shown.
* **Configure per service** — On the service detail page, use the "Linked Add-ons" section to select which add-ons apply
* **Multiple services** — When multiple services are selected, the customer sees every add-on linked to any of the selected services
* Add-on options update instantly as customers change their service selection on forms
[Learn more →](/services/core-services#service-specific-add-ons)
***
## Service-Specific Resources
You can now control which resources are eligible for each service, ensuring the right equipment is matched to the right services.
* **Configure per service** — On the service detail page, use the "Linked Resources" section to select which resources can fulfill the service
* **Date selection** — The date picker on your lead intake form now reflects only the resources linked to the selected services
* **Availability badges** — Quote presentation and booking form availability badges update based on linked resources
* **Multi-day events** — The date picker checks that linked resources are available for every consecutive day, not just the start date
* **Multiple services** — When a quote includes multiple services, only resources linked to all selected services count toward availability
[Learn more →](/services/core-services#service-specific-resources)
## Conditional Logic for Booking Forms
Show or hide form pages based on what a customer has already selected. Set rules like "show this page when the service selected is the Premium Package" or "show this page when the Custom Branding add-on is included." Flashquotes automatically skips hidden pages and drops their required fields.
**How it works:**
* Open any booking form and go to the new **Logic** tab
* Set visibility conditions per page using the service or add-on the customer selected
* Pages match on ANY rule (OR logic), or show always if no rules are set
* Hidden pages are skipped automatically and their fields won't block form submission
Only available for booking forms. Lead intake form support is coming soon.
[Set up conditional logic →](/forms/conditional-logic)
## New Pricing Options
* **Per unit per guest add-on pricing** — Add-ons that scale by quantity and guest count (and days); quantity limits apply. [Learn more →](/services/add-ons)
* **Minimum price for add-ons** — Optional floor for variable-rate add-ons; if the calculated price is below the minimum, the minimum is used. [Learn more →](/services/add-ons)
* **Per guest per hour service pricing** — Service price scales with both guest count and event duration (e.g. \$3/guest/hr for bar service). [Learn more →](/services/pricing)
***
## QuickBooks Deposit Sync Improvements
QuickBooks deposits now sync based on actual Stripe payouts instead of being created immediately with each payment. This aligns your QuickBooks records with real bank deposits for easier reconciliation.
**What changed:**
* **Stripe payments**: Deposits are created automatically when Stripe sends the payout to your bank, grouping multiple payments into a single deposit that matches your bank statement
* **Manual payments** (cash, check): Continue to create deposits immediately when synced
* **Payout trace ID**: Each deposit includes the Stripe trace ID for automatic bank reconciliation
* **Failed payouts**: If a Stripe payout fails, the corresponding deposit is automatically removed
[QuickBooks sync docs →](/finance/quickbooks-sync) | [QuickBooks integration →](/settings/integrations/quickbooks)
***
## Saved Filters & Sorting on the Contacts Table
Your contacts table filters and sort preferences are now automatically saved and restored when you return to the page. No more re-applying the same filters every time you navigate away.
**What's saved:**
* Date range filter
* Status filter
* Source filter
* Location filter
* Owner filter
* Sort column and direction
Preferences are saved per company, so switching between companies loads the right view for each. Click **Clear filters** to reset everything back to defaults.
[Learn about managing contacts →](/contacts)
## Global Currency Support
Flashquotes now supports multiple currencies and locales, enabling businesses outside the United States to quote, invoice, and accept payments in their local currency.
**Supported Currencies:**
| Currency | Code | Symbol | Locales |
| ----------------- | ---- | ------ | ------- |
| US Dollar | USD | \$ | en-US |
| British Pound | GBP | £ | en-GB |
| Australian Dollar | AUD | \$ | en-AU |
| Canadian Dollar | CAD | \$ | en-CA |
Currency and locale are configured during company onboarding based on your country. All amounts — quotes, invoices, payments, and reports — display in your company's currency with locale-appropriate formatting.
[Learn about company settings →](/settings/general#currency-and-locale)
## Google Analytics & Tag Manager Integration
Finally know which marketing channels are actually driving bookings. Connect Google Analytics 4 or Google Tag Manager to track every step of your lead funnel — from form view to submission.
**What You Can Track:**
* **Form views** — See how many people land on your intake form
* **Form starts** — Know when someone begins filling out your form
* **Lead conversions** — Track successful submissions as conversions
UTM parameters are automatically captured, so you can attribute leads back to specific campaigns, ads, and traffic sources. Build conversion funnels in GA4, optimize your ad spend, and finally prove ROI on your marketing efforts.
Using Google Tag Manager? Push events to your dataLayer to fire Facebook Pixel, LinkedIn Insight Tag, TikTok Pixel, and any other tracking tools — all from one place.
[Set up Google Analytics →](/settings/integrations/google-analytics) | [Set up Google Tag Manager →](/settings/integrations/google-tag-manager)
## Enhancements to the Contacts Table
We gave the contacts table some love with faster data retrieval and more functionality!
**New Columns**
* Upcoming Bookings count - View future confirmed events
* Contact Created date
* Latest Quote date
* Contact Owner - the company member assigned to this contact
* Latest Communication - See the date of your last email with the contact
**Improved Functionality**
* All columns are sortable
* Owner filter (Plus/Pro plans)
* Sticky first column for easier scrolling on wide tables
The enhanced table gives you instant visibility into contact engagement and helps prioritize follow-up actions.
[Learn about managing contacts →](/contacts)
## Bulk Enroll Bookings in Workflows
Save time by enrolling multiple upcoming bookings into workflows at once.
**Key Features**
* Select multiple bookings with upcoming events
* See booking details including event name, date, and location
* Only eligible bookings appear (future events, not already enrolled)
Perfect for enrolling existing bookings when you create a new pre/post-event workflow.
[Learn about bulk enrollment →](/workflows/workflow-enrollments#bulk-enrolling-bookings)
## Contact Owner Assignment
Assign contacts to specific team members for better accountability and organization. Owners appear in the contacts table and can be used as a filter to view your assigned contacts.
**Key Features**
* Assign contacts from the contact edit drawer
* See the owner in the contact header and table
* Filter contacts by owner (Plus/Pro plans only)
* Internal support accounts automatically hidden from assignment lists
**Plan Availability**
* Plus: Assign contacts to team members
* Pro: Assign contacts to team members
Perfect for teams managing contacts collaboratively or tracking individual team member performance.
[Learn about managing contacts →](/contacts)
## Digital Contracts
Add contracts to your booking flow with electronic signatures. Customers review and sign contracts before payment, allowing you to include a formal contract on any of your quotes.
**Key Features**
* Rich text editor with headers, lists, and signature blocks
* Dynamic shortcodes for personalized contract content
* Electronic signature capture with legal acknowledgment
* Signed contracts are linked to the booking for you and your client to reference
* Download and print signed contracts anytime
**Plan Availability**
* Plus: Up to 2 contract templates
* Pro: Unlimited contract templates
[Learn about contracts →](/templates/contracts/overview)
## Refunded Invoice Status
Invoices now display a "Refunded" status when all payments have been fully refunded.
**What changed:**
* Gray "Refunded" badge appears when net payments equal zero after refunds
* Refunded invoices don't count toward "amount due" or "overdue" totals
* Status updates automatically when refunds are processed
This makes it easier to distinguish fully refunded invoices from active ones at a glance.
[Learn about invoices →](/invoices)
## Redesigned Booking Experience with Native Payments
The customer booking experience has been completely redesigned with a streamlined step-by-step flow and integrated payment processing.
**Visual Progress Tracker**
* Clear step indicator showing progress through Details, Payment and Confirmation
* Clickable steps allow customers to navigate back and review their information
* Brand-colored theming matches your company colors
**Integrated Payment Experience**
* Customers complete payment directly within Flashquotes — no redirect to Stripe checkout
* Embedded Stripe Payment Element for secure card entry
* Real-time order summary updates as customers fill out their booking details
* Supports all payment term types: Full Payment, Deposit, Card on File, and Invoice Only
## Invoice Payment Breakdown
Invoices now display a detailed breakdown of all payments and their status, giving both you and your customers complete visibility into payment history.
**Payment Details**
* Each payment shows the date, payment method, and amount
* Card payments display the card brand and last 4 digits (e.g., Visa •••• 4242)
* Pending payments are clearly distinguished from completed payments
* Refunds appear in the breakdown with negative amounts
**Automatic Receipt Links**
* Payments processed through Stripe automatically include a receipt link
* Click the payment amount to open the Stripe receipt in a new tab
* Perfect for customers who need receipts for expense reports or records
**Enhanced Invoice PDF**
* Payment breakdown is included when you download or print the invoice
* Card details and receipt links are preserved in the PDF export
[Learn about invoices →](/invoices)
## Quote Templates
Create multiple reusable quote designs tailored to different event types, services, or branding variations. Instead of a single global template, you can now build a library of templates and apply the right one to each quote with a single click.
* **Specialized designs for every occasion**: Create templates for weddings, corporate events, coffee service, and more — each with its own gallery images, testimonials, and add-ons
* **Faster quoting**: Apply templates instantly from the Quote Template tab on any quote, or set a default template for new quotes
* **Consistent branding**: Maintain professional presentation across your team while still customizing for specific event types
[Learn about quote templates →](/templates/quote-templates) | [Configure your quote page →](/contacts/quote-view)
## Simplified Quote Payment Terms
We've streamlined how you configure payment terms on quotes.
Using the new **booking flow**, you can now:
* Select how you want each quote to be paid directly from the quote editor
* Set default payment terms to apply to all new quotes
* Easily add new payment terms without needing a separate booking form
[Learn about booking flow →](/contacts/booking-flow)
## Per-Resource Pricing
Set a "Price Per Resource" on services to automatically adjust quotes based on equipment or station counts. Perfect for businesses that charge per booth, per bar, per machine, or per station. The pricing formula now includes resource costs alongside base price, staff, and guest pricing.
[Configure service pricing →](/services/pricing)
***
## Void Invoices
Cancel invoices while keeping them in your records for accounting purposes. Voided invoices display a "Void" status and are excluded from revenue statistics, but remain visible in your invoice list for audit trail purposes. Available for invoices with no payments recorded.
[Learn about voiding invoices →](/invoices/voiding)
## Improved Travel Fee Calculations
Travel fees now scale with the number of core resources on your quotes. The updated formula calculates fees per resource per day, ensuring accurate pricing for multi-resource events. The minimum fee also scales accordingly - for example, a \$35 minimum with 2 resources over 2 days results in a \$140 effective minimum *(\$35 x 2 x 2)*.
[Learn about travel fee settings →](/services/travel-fees)
## Lead Intake Form Editor Upgrade
Your lead intake form is now fully customizable. Add custom questions, drag to reorder, move questions between pages, and remove what you don't need. The redesigned editor shows every question at a glance so you can build exactly the form your business needs.
[See how it works →](/forms/lead-intake)
## First Event Start Trigger
Automate customer communications around your actual event dates with two powerful new workflow triggers: **First Event Start** and **Last Event End**. These triggers allow you to send perfectly timed emails before, during, or after events based on when they actually occur.
### First Event Start Trigger
Trigger workflows based on when the first event in a booking begins. Perfect for pre-event reminders, preparation instructions, or day-of communications.
### Last Event End Trigger
Trigger workflows based on when the final event in a booking concludes. Ideal for post-event follow-ups, review requests, and relationship nurturing.
**How It Works:**
1. Create a workflow and select First Event Start or Last Event End as the trigger
2. Add email steps with delays relative to the event time (e.g., "2 days before" or "1 day after")
3. Publish the workflow
4. When bookings are created, workflows automatically enroll and schedule based on actual event dates
5. If event times change, workflow emails automatically reschedule
[Learn about workflow triggers →](/workflows/triggers) | [View all shortcodes →](/workflows/shortcodes/overview)
## Unified Email Inbox
Manage all your lead communications in one place with the new Inbox feature. View and organize Gmail messages synced from your connected accounts, see associated lead information at a glance, and mark emails as done to keep your inbox clean.
**Key Features:**
* **Thread-Based Organization**: Emails grouped by conversation with participant lists and message counts
* **Lead Integration**: Instantly see which leads are associated with each email thread via hover cards
* **Multi-Account Support**: Filter by different connected Gmail accounts
* **Mark as Done**: Remove emails from your inbox once handled, syncs back to Gmail
* **Real-Time Sync**: Email updates and label changes sync automatically with Gmail
[Learn more about the Inbox →](/inbox)
## Rich Text Editor for Special Notes
Special notes on quotes and events now use a visual rich text editor instead of Markdown. Format your internal notes with bold, italic, headings, lists, links, and dividers using familiar toolbar buttons - no Markdown syntax required.
**What's New:**
* **Visual Formatting Toolbar**: Format text with buttons instead of typing Markdown
* **Full Formatting Support**: Bold, italic, underline, strikethrough, headings (H1-H3), bullet and numbered lists, horizontal rules, and links
* **Keyboard Shortcuts**: Press `Cmd+Enter` (Mac) or `Ctrl+Enter` (Windows) to save quickly
* **Backwards Compatible**: Existing Markdown notes automatically convert when you edit them
Perfect for creating well-organized internal notes with clear structure and formatting. Special notes remain internal-only and are not visible to customers.
## Import Bookings from CSV
Save time migrating data or adding historical bookings with the new CSV import feature. Upload up to 100 bookings at once using a simple spreadsheet format, perfect for businesses transitioning from other systems or adding past events to Flashquotes.
**What's New:**
* **CSV Template**: Download a pre-formatted template with all required fields and example data
* **Column Mapping**: Upload your CSV and map columns to Flashquotes fields with auto-matching
* **Real-time Validation**: Errors are highlighted before import with specific guidance on fixes
* **Background Processing**: Large imports run in the background with progress tracking and detailed results
**How It Works:**
1. Download the CSV template from the Import Bookings page
2. Fill in your booking data with event details, client info, and pricing
3. Upload and map your columns to Flashquotes fields
4. Review validation, fix any errors, then import
5. Track progress and view results with success/failure breakdown
Imported bookings include all event details, timeline entries, and trigger event brief tasks automatically. Email notifications are not sent during import to avoid duplicate communications.
[Learn how to import bookings →](/imports-exports/import-bookings)
## Bulk Apply Admin Tasks to Upcoming Events
When you update your admin task templates, apply those changes to all upcoming events with one click. Go to Settings → Tasks → Admin Default Tasks, click the menu icon, and select "Apply to events" to sync your latest task checklist across all future bookings.
## Auto-Invite Staff to Calendar Events
Automatically manage Google Calendar attendees when staff is assigned to or removed from events. When enabled, assigned staff members receive calendar invitations via email, ensuring everyone knows about their scheduled events without manual invite management.
**Perfect For:**
* Teams that need calendar-based event notifications
* Ensuring staff have event details in their personal calendars
* Eliminating manual calendar invite workflows
* Keeping team schedules synchronized automatically
[Configure auto-invite settings →](/settings/integrations/google-calendar#auto-invite-staff-to-calendar-events)
***
## Manage Required Questions in Lead Intake Forms
Control which questions are mandatory for form submission with a simple toggle. Mark custom questions as required or optional to balance conversion rates with data collection needs.
**What's New:**
* **Required Toggle**: Easily mark questions as required or optional in the form editor
* **System vs User Required**: Some questions are required by Flashquotes and cannot be changed, while custom questions can be toggled
* **Smart Validation**: Required questions must be completed before form submission
[Learn how to manage required questions →](/forms/lead-intake#required-questions)
## Google Calendar Sync Timing Options
Choose whether calendar events sync based on **service time** (customer-facing event hours) or **shift time** (full staff shift including setup, breakdown, and travel). This affects how events appear in your Google Calendar - either showing just the service window or your complete time commitment for each booking.
[Configure calendar sync timing →](/settings/integrations/google-calendar#choose-service-time-or-shift-time)
## Shortcodes in Default Quote Email Body
Personalize your default quote email body with dynamic shortcodes like `{{lead.first_name}}`, `{{company.name}}`, or `{{quote.event_date}}`. Set your template once and every quote email automatically includes personalized details. Live preview shows how your email renders with real quote data before saving.
[Configure quote email settings →](/settings/quotes#quote-delivery) | [View all shortcodes →](/workflows/shortcodes/overview)
## Quote Requested Workflow Trigger
Automatically engage leads the moment they submit a quote request through your lead intake forms. The new Quote Requested workflow trigger enrolls leads in customized email sequences immediately after form submission, helping you nurture interest before you even send a formal quote.
**What's New:**
* **Automatic Enrollment**: Leads who submit your lead intake form are automatically enrolled in Quote Requested workflows
* **Customizable Sequences**: Create personalized email templates that send while you're preparing their quote
* **Smart Timing**: Engage leads during the critical window between request and quote delivery
* **Gmail Integration**: Choose which connected Gmail account sends workflow emails
**How It Works:**
When a lead submits your intake form, Flashquotes automatically enrolls them in any active Quote Requested workflows. These emails can acknowledge their submission, share your company story, provide helpful planning tips, or build excitement while you prepare their custom quote.
**Perfect For:**
* Immediate acknowledgment emails confirming quote request receipt
* Educational content about your services while leads wait
* Building trust and rapport before the first formal quote
* Keeping leads engaged during your quote preparation process
Quote Requested workflows complement the existing Quote Sent workflows, giving you complete automation coverage from initial inquiry through booking.
[Learn about workflow triggers →](/workflows/triggers)
[Track enrollments at the workflow level →](/workflows/workflow-enrollments#tracking-enrollments)
## Enhanced Quote Expiration for Last-Minute Bookings
Quotes now expire at **midnight the day before the event** instead of at the event start time. This prevents your team from having a last-minute booking without first confirming that you can service the event.
**What Changed:**
* Event on Oct 27 at 2pm MST → Quote expires Oct 26 at 12am MST (previously expired at 2pm Oct 27)
* Expired last-minute quotes now show specialized messaging encouraging customers to contact your team
This change automatically applies to all new quotes and better supports last-minute event bookings.
## Workflow Management Enhancements
You can now customize workflow sequences to match your sales process:
* **Add Steps**: Insert additional follow-up emails at any position in your workflow with custom timing, subject and email body
* **Delete Steps**: Remove steps that don't fit your strategy (immediately stops them from sending, even for active workflows)
* **Resume Workflows**: Restart stopped workflows from the contact's Workflows tab when leads re-engage
[Learn about workflow customization →](/workflows/templates#customizing-your-workflow)
## Sign in with Microsoft
Users can now create accounts and sign in using their Microsoft work or personal accounts alongside the existing Google authentication option.
## Gmail Integration Enhancements
We've improved the email composer and workflow automation for [Pro/Plus subscribers](https://app.flashquotes.com/settings/plans) with Full Gmail Integration.
**What's New:**
* **Easily compose new email**: Click the email icon on any contact in the list view to start composing a new message
* **Workflow auto-stop on email reply**: When leads reply to emails, active quote follow-up workflows deactivate automatically. This ensures you never send automated follow-ups after a lead has already responded, maintaining a personal touch throughout the sales process.
[Learn more about Gmail integration →](/settings/integrations/google-gmail-read)
## Google Calendar Selection
Choose exactly which Google Calendar receives your Flashquotes events. No more cluttering your primary calendar - sync events to dedicated event calendars for better organization.
**What's New:**
* **Calendar Selection**: Choose specific calendars for syncing
* **Smart Migration**: Events automatically move when you change calendars
* **Per-Location Control**: Different locations can sync to different calendars
* **Organized Schedules**: Keep personal and business events separate
**Perfect For:**
* Keeping Flashquotes events out of personal calendar
* Better calendar sharing with team members
* Taking advantage of GCal customizations like colors
[Set up calendar selection →](/settings/integrations/google-calendar#choose-a-specific-calendar)
## QuickBooks Custom Line Item Mappings
Fine-tune your accounting with custom QuickBooks mappings for specific services, add-ons, and service charges. This enhancement gives you granular control over how individual items sync to QuickBooks Online, allowing you to have more flexible accounting treatment for invoice line items.
**What's New:**
* **Item-Specific Mapping**: Override default mappings for individual services, add-ons, and service charges
* **Flexible Accounting**: Map specific items to different QuickBooks items for specialized accounting treatment
* **Easy Management**: Add, view, and delete custom mappings directly from QuickBooks settings
* **Priority System**: Custom mappings automatically override default line item type mappings
[Learn how to set up custom mappings →](/finance/quickbooks-custom-mappings) | [QuickBooks Integration →](/settings/integrations/quickbooks)
## Enhanced Google Integration Suite
We've significantly expanded our Google integration capabilities to help you streamline communication and scheduling. Flashquotes now offers a comprehensive Google integration with Gmail and Google Calendar sync.
**What's New:**
### Gmail Sending
Send quotes directly from your Gmail account to maintain conversation history in one place. Your emails remain in your Gmail inbox and sent folder, creating more personal connections with leads while using your existing email signature and branding. [Learn about Gmail sending →](/settings/integrations/google-gmail-send)
### Full Gmail Integration
Sync email activity from your leads directly into Flashquotes activity feeds. See the complete context of customer communications without switching between applications. Email threads automatically link to the correct leads and appear in activity feeds within minutes. [Enable full Gmail integration →](/settings/integrations/google-gmail-read)
### Google Calendar Sync
Automatically sync booked events to Google Calendar to maintain a unified view of your schedule. Flashquotes creates calendar events with event details, shift times, location, and links back to event details. Updates in Flashquotes automatically sync to Google Calendar, and you can configure different calendars per location. [Configure calendar sync →](/settings/integrations/google-calendar)
Get started by connecting your Google account in [Settings → Integrations](https://app.flashquotes.com/settings/integrations). Learn more in our [Google Integration overview →](/settings/integrations/google)
## Advanced Reporting Analytics
We've added three powerful new reports to help you analyze business performance and make data-driven decisions. These visualizations provide deep insights into resource utilization, customer behavior, and revenue patterns.
**New Reports:**
### 1. Service Asset Utilization
Track daily usage of your core service resources with a visual chart showing:
* Booked vs quoted assets over time
* Maximum capacity indicators
* Peak utilization dates
* Helps forecast busy periods and optimize resource allocation
### 2. Average Gratuity Analysis
Understand customer tipping patterns with detailed metrics including:
* Distribution of gratuity percentages selected
* Total gratuity revenue
* Average tip amounts
* Participation rates
* Helps optimize gratuity options and predict tip revenue
### 3. Top Clients by Revenue
Identify your most valuable customers with:
* Ranked list of top 10 revenue-generating clients
* Individual client contribution amounts
* Average revenue per client
* Helps focus retention efforts and recognize VIP relationships
**Business Benefits:**
* **Better Forecasting**: Visualize patterns to predict demand
* **Revenue Insights**: Understand income sources and concentration
* **Resource Planning**: Optimize inventory based on actual usage
* **Customer Intelligence**: Focus on high-value relationships
[View the Reports documentation →](/reports)
***
## Block Calendar Dates
You can now block specific dates to prevent new inquiries and automatically manage existing quotes. This powerful feature helps you manage capacity, holidays, and maintenance periods while keeping your calendar accurate.
**Key Features:**
* **Prevent New Inquiries**: Blocked dates can't be selected on lead intake forms
* **Auto-Expire Quotes**: Open quotes on blocked dates expire automatically
* **Bulk Selection**: Block up to 30 dates at once
[Learn how to block dates →](/calendar-blocked-dates)
## Improved Quote Expiration Management
We've enhanced how expired quotes work to protect your business from outdated pricing while giving you more control over expiration dates. These updates ensure customers always receive current pricing and availability.
**What's Changed:**
* **Expired Quote Protection**: Customers can no longer book expired quotes, preventing issues with outdated pricing or unavailable dates
* **Clear Customer Options**: When viewing expired quotes, customers see options to request a fresh quote or contact your company directly
* **Flexible Expiration Control**: Admins can now modify quote expiration dates from three convenient locations:
* Contact details page
* Quote edit page
* Quote view page
**Business Benefits:**
* **Pricing Protection**: Prevents bookings with outdated rates or discontinued services
* **Availability Accuracy**: Ensures dates are verified before booking
* **Reduced Disputes**: Eliminates confusion over old pricing
* **Extended Opportunities**: Easily extend quotes for leads still in negotiation
**Common Use Cases:**
* **Extend Active Negotiations**: Give prospects more time while discussions continue
* **Reactivate Expired Quotes**: Instantly make expired quotes bookable by setting a future date
* **Remove Expiration**: For special clients, remove expiration entirely
This update provides better protection for your business while maintaining flexibility to accommodate different sales scenarios. [Learn about managing expiration →](/contacts#managing-quote-expiration-dates) | [Configure quote settings →](/settings/quotes#expiration-settings) | [Handle expired quotes →](/contacts/sending-quotes#handling-expired-quotes)
***
## Enhanced Staffing Calculator Settings
The Lead Intake Form Builder now includes reorganized settings and new display options for the staffing calculator, giving you more control over how customers interact with service planning on your forms.
**What's New:**
* **Visual Counter Toggle**: Choose between an engaging visual staff counter or a simplified text-only display
* **Guest Count Increment**: Configure custom increment values (1-100) for the guest count +/- buttons
* **Reorganized Settings**: Cleaner layout with sections for Service Length, Guests and Staffing, and Display Options
* **Smart Collapsing**: The staff counter settings automatically collapse when the visual counter is disabled
These improvements make it easier to customize the staffing calculator to match your brand and customer preferences. The visual counter helps justify pricing by showing customers exactly how many team members will serve their event, while the text-only mode provides a cleaner alternative for businesses preferring a minimalist approach.
[Learn about staffing calculator configuration →](/forms/staffing-calculator) | [View lead intake form settings →](/forms/lead-intake#staffing-calculator-configuration)
## Share Links & Hosted Forms
Create shareable, Flashquotes-hosted versions of your lead intake forms perfect for social media, Instagram link-in-bio, and QR codes. No website or embedding required - just share your link and start collecting leads instantly.
**What's New:**
* **Hosted Form Pages**: Professional landing pages at short URLs (e.g., app.flashquotes.com/f/abc123)
* **Instagram Ready**: Perfect for link-in-bio with mobile-optimized design
* **Social Sharing**: One-click sharing to X, Facebook, Instagram, SMS, and email
* **QR Code Generation**: Create QR codes for print materials and offline marketing
* **Customizable Headlines**: Personalize your form's headline and subheadline
* **Brand Integration**: Automatic company logo and brand color display
Access these features from the new **Publish** tab in your form editor. [Learn how to create share links →](/forms/share-links)
## Quick Access to Stripe Payment Receipts
Admins can now instantly access official Stripe payment receipts directly from the payments table. This quality-of-life improvement makes it easier to share receipts with clients and handle accounting tasks.
**What's New:**
* **Receipt Links**: A new "Receipt" link appears next to payment details in the payments table
* **One-Click Access**: Opens the official Stripe receipt in a new tab for easy printing or sharing
This feature streamlines payment documentation workflows, eliminating the need to log into Stripe separately to retrieve receipts. [Learn more about viewing payment receipts →](/finance/stripe-receipts)
## CSV Export for Contacts and Bookings
Export your business data to CSV format for powerful integrations with marketing platforms, analytics tools, and accounting software. This new feature enables seamless data portability for both contacts and bookings.
**Key Features:**
* **One-Click Export**: Export up to 1,000 records instantly from the contacts or bookings page
* **Comprehensive Data**: Includes all fields, custom form responses, and calculated metrics
* **Marketing Ready**: Perfect for email automation platforms like Mailchimp or Klaviyo
* **Ad Optimization**: Upload to Google Ads for conversion tracking and audience building
* **RFC 4180 Compliant**: Industry-standard CSV format works with all major tools
**Contact Export Includes:**
* Contact information and source tracking
* Quote history and conversion status
* Event details and requirements
* Activity tracking and assignments
**Booking Export Includes:**
* Complete client and event details
* Financial data including payments and balances
* Resource assignments and timelines
* Custom form field responses
**Common Use Cases:**
* **Email Marketing**: Re-engage unconverted leads with targeted campaigns
* **Google Ads**: Track conversions and create lookalike audiences
* **Business Analytics**: Analyze trends in Excel or BI tools
* **Accounting**: Reconcile bookings with QuickBooks
* **Operations**: Plan resource allocation and staffing
The export feature respects your active filters, allowing you to export specific date ranges, statuses, or segments. Files are UTF-8 encoded and compatible with Excel, Google Sheets, and all major data platforms.
Access the export feature from the toolbar on your [Contacts](https://app.flashquotes.com/contacts) or [Bookings](https://app.flashquotes.com/bookings) page.
## Service Charges: Automated Fees & Gratuity
Streamline your pricing with Service Charges - automatically add percentage or flat fees to quotes and invoices. Perfect for service fees, gratuity, corkage fees, and other standard charges that apply across your business.
**Key Features:**
* **Flexible Pricing**: Configure percentage-based (e.g., 20% gratuity) or flat amount charges
* **Auto-Apply Options**: Set charges to automatically appear on all new quotes
* **Tax Configuration**: Mark charges as taxable or non-taxable based on your needs
* **Smart Application**: Charges apply to all line items except gratuity itself
* **Full Visibility**: Displays clearly across quotes, booking forms, and invoices
**How It Works:**
1. Create service charges in Settings → Service Charges
2. Auto-applied charges appear on new quotes automatically
3. Manually add or remove charges when editing quotes
4. Charges carry through to invoices when bookings are confirmed
5. Customers see transparent pricing at every step
**Common Use Cases:**
* **20% Gratuity**: Auto-apply to all quotes as a taxable percentage
* **Service Fee**: 10% operational charge for event coordination
* **Corkage Fee**: \$75 flat fee for BYOB events
* **Setup Fee**: Fixed charge for equipment preparation
Service charges integrate seamlessly with your existing workflow - they respect tax settings, work with discounts, sync to QuickBooks, and display beautifully in the quote template.
Configure your service charges in [Settings → Service Charges](https://app.flashquotes.com/settings/service-charges).
## Personalized Quote Email Subject Lines
Transform your quote emails with personalized subject lines that automatically include your lead's information. This new feature helps you create more engaging, personalized email subjects that can significantly improve open rates and engagement.
**Key Features:**
* **Lead-Specific Shortcodes**: Use `{{lead.first_name}}`, `{{lead.full_name}}`, `{{lead.company_name}}`, and more
* **Real-Time Preview**: See exactly how your subject line will appear with actual lead data
* **Default Customization**: Set a personalized default subject line in your quote settings
* **Individual Override**: Still edit subject lines when sending individual quotes
**Example Subject Lines:**
* `☕ {{lead.first_name}}, your quote is ready!`
* `✨ {{lead.full_name}}, review your quote and book online in minutes!`
The system automatically processes these shortcodes when sending quotes, replacing placeholders with actual lead information. This creates a more personal connection with your leads and can help improve email open rates.
Configure your personalized subject lines in [Quote Settings → Email Settings](https://app.flashquotes.com/settings/quotes?tab=email).
## Drag & Drop Line Item Reordering
Admins can now reorder quote line items with simple drag and drop functionality. Quickly reorganize services, add-ons, and custom items to present your quotes in the most logical order for your clients.
## Service Days Editor: Multi-Day Quote Management
Create complex multi-day quotes with our new Service Days editor. Add multiple dates and times to a single quote, perfect for wedding weekends, corporate events, and festivals.
**Key Features:**
* **Inline Editing**: Edit dates and times directly in the quote editor
* **Flexible Scheduling**: Different start/end times for each service day
* **Automatic Events**: Each service day becomes a separate event when booked
* **Timezone Aware**: All times handled in your location's timezone
**Perfect For:**
* Wedding weekends (setup, ceremony, breakdown)
* Corporate events (setup, main event, teardown)
* Festivals and multi-day celebrations
* Installations with multiple phases
When clients book quotes with service days, each day automatically becomes a separate event in your booking system, making complex scheduling simple to manage.
Learn more in our [Service Days guide](/contacts/service-days).
## SMS Opt-in Collection
Many CRMs and SMS automation tools require explicit consent before sending text messages. Flashquotes now helps you capture that consent during lead intake, keeping you compliant while expanding your communication channels.
Add a checkbox asking "Can we text you?" with customizable consent language. Leads who opt in display a green "SMS" badge in your dashboard.
[Learn more →](/forms/sms-opt-in)
## Stripe Payouts Dashboard
Monitor and manage your Stripe payouts directly from Flashquotes. The new Payouts dashboard shows exactly when customer payments will be deposited to your bank account, helping you better plan cash flow and reconcile deposits. You can also access instant payouts for immediate access to funds when needed.
Learn more in our [Payouts documentation](/finance/payouts).
## Modern Quote Template for Higher Conversions
Transform your quote presentation with our modern quote template that brings e-commerce best practices to your service business. This conversion-optimized experience is designed to turn more leads into paying customers through trust-building features and strategic psychology.
Key features include:
* **Rich Photo Galleries**: Showcase up to 8 high-quality images to build trust and demonstrate your service quality
* **Social Proof Integration**: Display customer reviews, star ratings, and testimonials prominently to increase booking confidence
* **Dynamic Add-on Selection**: Enable customers to customize their packages with strategic upsells that boost average order value
* **Real-time Availability Indicators**: Create urgency with live availability status to reduce cart abandonment
* **Mobile-Optimized Design**: Professional, responsive layout that looks stunning on all devices
* **E-commerce Style Checkout**: Modern booking flow that customers recognize and trust
The template is fully customizable through an intuitive visual editor, allowing you to configure galleries, testimonials, and add-ons to match your brand and service offerings.
Ready to boost your booking rates? Learn how to configure your quote template in our comprehensive [setup guide](/contacts/quote-view).
## Team Member Roles and Permissions
We've enhanced our team management system with flexible role-based permissions. Now you can invite team members with different access levels to help manage your business while maintaining control over sensitive financial data.
Key features include:
* **Admin Role**: Full access to all features including aggregate financial data, member management, and company settings
* **Member Role**: Full access to all features except aggregate financial data (revenue totals, payment statistics)
* **Role Selection**: Choose the appropriate role when inviting new team members
* **Role Management**: Admins can promote or demote members between roles as needed
* **Financial Data Protection**: Members can still see individual invoice amounts and booking details, but not aggregate financial statistics
This feature helps you collaborate with team members while maintaining appropriate access controls. Members can handle day-to-day operations like managing bookings and invoices, while admins retain access to financial reporting and member management.
Learn more about team roles and permissions in our [team management guide](/settings/members).
## Real-Time Availability in Lead Intake Forms
We're excited to introduce real-time availability indicators in your lead intake forms. This feature helps set clear expectations with potential customers from the start and saves you time by reducing inquiries for dates when you're already fully booked.
Key benefits include:
* **Visual date indicators:** Green and yellow dots instantly show customers your availability status
* **Clear messaging:** After selecting a date, customers receive straightforward availability notifications
* **Automatic updates:** Availability updates in real-time based on your blocked dates and resource capacity
* **Resource optimization:** Better manage your team and equipment allocation across events
The system intelligently combines your blocked dates and existing bookings to determine availability status for each date, creating a more transparent booking experience.
Learn more about this feature in our [Real-Time Availability](/forms/real-time-availability) documentation.
## Instant Quoting
Transform your lead conversion process with our powerful new Instant Quoting feature. Now you can automatically generate and present quotes to clients immediately when they submit your lead intake form, enabling them to book instantly without any back-and-forth communication.
Key features include:
* **Instant Quote Generation**: Automatically calculate and present quotes using your configured pricing rules
* **Immediate Booking**: Clients can review and book quotes instantly upon form submission
* **Seamless Experience**: Direct redirect from form submission to quote presentation
* **Flexible Control**: Choose between manual review or instant quoting modes
* **Pro Plan Feature**: Available exclusively for [Flashquotes Pro](https://app.flashquotes.com/settings/plans) subscribers
The system uses your existing instant pricing configurations to generate accurate quotes automatically, maintaining consistency while dramatically reducing the time from inquiry to booking.
Learn more about Instant Quoting in our documentation:
* [Instant Pricing & Quoting Guide](/contacts/instant-pricing)
* [Lead Intake Form Configuration](/forms/lead-intake)
* [Quote Settings](/settings/quotes)
## Automated Invoice Reminders
Never chase payments manually again! We've added automated invoice reminders that help ensure timely payments from your clients with minimal effort on your part.
Key features include:
* **Preset reminder schedule** with emails sent 1 day before due date, on the due date, and 2 days after
* **Email preview** option to review all reminder templates before they're sent
* **Toggle control** to easily enable or disable automated reminders
This feature complements the existing manual reminder capabilities, giving you a comprehensive system for payment follow-up that saves time while improving cash flow.
Learn more about this feature in our [Invoice Reminders](/invoices/reminders) documentation.
## Automated Lead Follow-up with Workflows
Transform your lead follow-up process with our powerful new Workflows feature. Now you can automatically nurture leads with perfectly timed, personalized email sequences that help convert more quotes into bookings.
Key features include:
* **Smart Email Sequences**: Pre-configured follow-up templates based on industry best practices
* **Dynamic Content**: Automatically insert quote details, lead information, and company data using shortcodes
* **Easy Enrollment**: One-click workflow enrollment when sending quotes
* **Full Visibility**: Track active workflows, scheduled emails, and lead engagement from both quote and contact views
* **Flexible Control**: Stop workflows automatically upon booking or manually when leads engage
The system intelligently handles multi-quote scenarios and automatically stops follow-ups when leads book, ensuring a professional experience throughout the sales process.
Learn more about Workflows in our documentation:
* [Workflows Overview](/workflows/overview)
* [Customizing Templates](/workflows/templates)
* [Managing Enrollments](/workflows/workflow-enrollments)
* [Understanding Triggers](/workflows/triggers)
## Instant Pricing
Save time and ensure consistent pricing with our new Instant Pricing feature. Now you can set up automatic price calculations for your services based on:
* Base service price
* Hourly rates per staff member
* Per-guest pricing
* Minimum price thresholds
When leads submit your intake forms, Flashquotes automatically generates draft quotes using your predefined pricing rules. This ensures consistent pricing across your business while still giving you the flexibility to review and adjust quotes before sending them to clients.
Check out our [Instant Pricing guide](/contacts/instant-pricing) to learn how to set up automated pricing for your services.
## Team Member Invitations
Bring your whole admin team onto Flashquotes with our new invitation system. You can now easily invite team members to join your company workspace directly through the platform. Head to Settings → Members to invite new users, manage pending invitations, and control user roles. Each invitation includes a secure, unique link that lets new users quickly join your workspace.
Note: You only need to invite admins to your workspace. Event staff can see everything they need without a Flashquotes account.
Check out our [team management guide](/settings/members) to learn more about inviting and managing team members.
## Enhanced Quote Analytics
Track your lead engagement more effectively with our enhanced quote analytics. In addition to email open tracking, you can now monitor two crucial conversion metrics:
* Quote page views
* "Book Now" button clicks
These metrics appear as colored badges on both your Pipeline and quote details pages, making it easy to identify your hottest leads at a glance. Use these insights to time your follow-ups perfectly and focus on leads showing the strongest booking intent.
Check out the [quote analytics documentation](/contacts/sending-quotes#tracking-quote-performance) to learn more about using these new metrics.
## Event Reminders for Staff
Keep your staff informed with our new Reminders feature. Tag events with important flags that appear prominently in both event details and event briefs. Whether it's equipment requirements, safety precautions, or special client requests, reminders ensure critical information is never overlooked. Create company-wide standard reminders or add custom ones for specific events. A warning banner at the top of event briefs ensures staff members are immediately aware of important details before starting their shift.
Learn more about using Reminders in our [detailed documentation](/events/reminders).
## Send Quotes from Your Gmail Account
Connect your business Gmail account to send quotes directly from your own email address.
This integration creates a more personal experience for your clients, as they'll
receive quotes from your familiar business email. Your quotes maintain all their
interactive features while appearing more personalized in your client's inbox.
To get started, visit [Google Integrations](https://app.flashquotes.com/settings/integrations) in your settings to connect your Gmail account.
## Email Analytics & Engagement Tracking
Track how leads interact with your quotes through our new email analytics feature. On the Pipeline, look for the eye icon next to sent quotes to instantly see how many times each quote has been viewed. For deeper insights, click into any sent quote to access a detailed activity timeline showing:
* Total email opens and unique views
* First and last open timestamps
* Complete chronological feed of all quote interactions
This visibility helps you time your follow-ups perfectly and focus on your most engaged leads.
Check out the [email analytics docs](/contacts/sending-quotes#tracking-quote-performance) for more details.
## Customizable Quote Emails
You can now fully edit the subject and body text of quote emails, allowing for more personalized messaging and branding. Whether you want to add a friendly touch, emphasize urgency, or tailor the language to your audience, you now have the flexibility to craft emails that resonate with your clients.
You can set a permanent default for the email body text in [Quote Settings](https://app.flashquotes.com/settings/quotes).
## New Multi-Select Question Type
We've added a multi-select question type to Booking forms, allowing clients to choose multiple options in a single response. This is especially useful for event packages, customer flavor choices, etc.
Find this under Forms → Booking Forms → Add Question.
## Copy Quotes with One Click
You can now copy any existing quote with a single click, making it easier to create new quotes based on past proposals. This is perfect for businesses with repeat clients or standard pricing structures.
Simply find the "Copy" option in the quote actions menu.
## In-App AI Help Chat
We've integrated Mintlify's AI-powered help chat directly into the app, making it easier than ever to get real-time assistance without leaving your workflow. Whether you need guidance on features, troubleshooting help, or best practices, our AI chat assistant is available to provide quick answers.
Try it out by clicking the Get Help icon in the bottom right corner of the Flashquotes dashboard.
## QuickBooks Online Integration
[Pro plan](https://app.flashquotes.com/settings/plans) customers can now sync their financial data with QuickBooks Online. The integration automatically creates customers, invoices, payments, and deposits in QuickBooks, with configurable account mappings and tax codes.
Payments are synced in real-time, including proper handling of sales tax and processing fees. The integration maintains your QuickBooks data structure while ensuring accurate financial reporting.
For more details, check out the [QuickBooks integration docs](/settings/integrations/quickbooks).
## Service Area Configuration
Define your service radius to automatically validate event addresses during quote submission. The system checks addresses in real-time against your specified radius. For events outside your service area, a warning banner notifies the client that additional travel fees may apply.
Your service area is defaulted to 150 miles, but you can change this in **[Quote Settings](https://app.flashquotes.com/settings/quotes)**.
## Lead Intake Form Settings
New configuration options include service duration limits, maximum staff counts, and custom redirect URLs after form submission. You can also customize the staff photos and descriptions in the lead intake form.
Form questions can now be fully customized. The system automatically generates optimized default forms for new accounts based on conversion data.
For more details, check out the [lead intake form docs](/forms/lead-intake).
## Zapier Integration Expansion
Three new Zapier triggers enable deeper workflow automation:
* **Quote form submission trigger** Send new leads directly to your CRM to streamline lead management.
* **Event timeline trigger** Keep your calendars synchronized with this new trigger which fires whenever event schedules change.
* **Staff assignment trigger** Automatically notify team members when they're assigned to events.
Read more about Zapier integration [here](/settings/integrations/zapier).
## Lead Intake Forms v2
Lead intake forms are now fully customizable while maintaining high conversion rates. Find pre-configured forms under **Forms > Lead Intake Forms**, complete with proven questions and your brand colors automatically applied.
Platform-specific embed instructions make it simple to add forms to any website, whether you're using Webflow, Squarespace, WordPress, or other platforms. All leads flow directly into your Flashquotes dashboard for immediate follow-up.
Read more about lead intake forms [here](/forms/lead-intake).
## Enhanced Quote Customization
The quote editor now features a live preview as you build, showing exactly how your quote will appear to clients. Customize the hero text at the top of your quotes using markdown formatting for **bold** statements and embedded links. For more details, check out the [quote page docs](/contacts/quote-view).
Brand your quotes with custom hero images for each quote or set a default in company settings. Your brand colors now extend throughout customer-facing pages - set your signature color in **Settings > Branding** to have buttons and icons match your visual identity. Check out the [branding docs](/settings/branding) for more details.
## Quote Calendar
Your calendar now displays both confirmed bookings and potential events from quotes. Quoted events appear with dotted borders, giving you a complete view of upcoming business - both confirmed and potential.
## Sales Tax Reporting
Managing sales tax across multiple jurisdictions is now simpler with our new automated tax reporting. Access comprehensive tax summaries in the [Sales Tax report](/reports/sales-tax) (now found under **Reports**) to see your total sales, taxable amounts, and taxes owed.
The report breaks down tax data by rate, making it easy to handle different tax jurisdictions. All payment data in Flashquotes automatically flows into these reports, ensuring your numbers are always current.
Need historical data? Filter the report by different time periods, from last month to year-to-date, to get exactly the information you need for tax remittance.
## Resource Selection in Booking Forms
Let clients choose their preferred cart directly in your booking form with our new Resource Select question type. The form shows only carts available for the selected event date, complete with photos and descriptions you can customize in the resource settings.
When a booking is confirmed, the selected cart is automatically assigned to the event, streamlining your workflow and ensuring clients get exactly the setup they want.
## Native email sending
Now you can fire off **quote emails** directly from the quote page. Client quote emails include a link to the quote presentation page and the Book Now button.
Click the new "Copy share link" button if you still want to copy/paste the quote link into a separate email.
You can also send **invoice reminders** to clients with a single click. Preview the email before sending to ensure it looks great. Emails are branded with your logo and include a direct link to pay.
# Contacts
Source: https://docs.flashquotes.com/contacts
Everyone you've quoted or booked, in one place
## Overview
The Contacts page is your client directory — everyone you've quoted or booked, in one place. New contacts are created automatically when someone submits your [lead intake form](/forms/lead-intake), or you can add them yourself with **New contact**.
Where the [Pipeline](/pipeline) tracks quotes, Contacts tracks people: each contact holds the client's details, every quote and booking tied to them, and your full communication history.
## Creating a contact
1. Go to the [Contacts](https://app.flashquotes.com/contacts) page
2. Click **New contact** and enter the contact's details
3. Choose how you want to continue:
* Click **Create and add quote** to save the contact and start a quote for them
* If you only want to add the contact, click the dropdown arrow next to **Create and add quote** and select **Create and finish**
## The contacts table
The table shows each contact's name and company, email and phone (hover to copy either with one click), quote and booking counts, last activity, source, owner, and created date. It's sorted by created date by default, so your newest contacts are on top. You can sort by any column except last activity, which displays the date but isn't sortable.
* **Search** by name, email, or phone number
* **Filter** by created date range, source, or owner
* **Export CSV** downloads your contacts honoring whatever filters and search are active
Click any row to open the contact's detail page.
## Contact details
Each contact page keeps the client's info in a details panel and organizes everything else into tabs:
* **Activity** — a unified, chronological feed of everything that's happened: notes, emails sent and received, quote status changes, and workflow actions. Skim it to catch up before reaching out — no need to check each tab separately.
* **Quotes** — create and manage quotes for this contact
* **Bookings** — confirmed bookings tied to this contact
* **Emails** — email threads with the contact
* **Notes** — add and search notes about the contact
* **Workflows** — view and manage active workflow enrollments
### Notes
Use notes to log context, follow-up reminders, or anything worth remembering.
1. Open the **Notes** tab and click **Add Note**
2. Write your note using the rich text editor
3. Click **Save**
Pin important notes to keep them at the top of the list, and use the search bar to filter notes by keyword.
### Contact owner assignment
Assign contacts to specific team members for better accountability and follow-up tracking. Open a contact, click **Edit** in the header, and pick a team member as the owner. The owner appears in the contacts table and on [Pipeline](/pipeline) cards, and both pages can filter by owner so each teammate can work their own book.
## Managing quote expiration dates
Admins can change individual quote expiration dates to extend opportunities or accommodate special circumstances.
You can modify quote expiration from the contact's **Quotes** tab, the quote edit page, or the quote view page.
* **Extend** a quote that's about to expire while a client decides
* **Reactivate** an expired quote by setting a future date — it becomes bookable again immediately
* **Remove** the expiration entirely for special situations
Expired quotes cannot be booked. Clients see a message prompting them to
request a new quote or contact you directly.
## Best practices
1. Respond to new contacts promptly — sending a quote within the first hour of inquiry dramatically improves your chance of winning the booking
2. Keep contact information current
3. Use notes and the activity feed to track communication history
4. Assign owners so follow-ups never fall through the cracks
## Next steps
* [Work your open quotes in the Pipeline](/pipeline)
* [Create quotes](/contacts/quotes)
* [Send quotes](/contacts/sending-quotes)
# Flashquotes AutoDraft
Source: https://docs.flashquotes.com/contacts/autodraft
Automatically pre-build draft quotes from every lead
# Flashquotes AutoDraft
Save time with Flashquotes AutoDraft - automatically pre-build draft quotes from your leads. Instead of starting from scratch, you'll review and send pre-built quotes in seconds.
This works for manual quoting (not instant quotes). Perfect when you want consistent pricing but need to review each quote before sending.
## Set up AutoDraft
### 1. Create your default service
Go to [Services](https://app.flashquotes.com/services) and create your primary service offering. Set your base pricing and service details. This becomes the foundation for every AutoDraft quote.
[Learn about services →](/services)
### 2. Add your common add-ons
Go to [Add-ons](https://app.flashquotes.com/services?tab=addons) (under **Services & items**) to create extras you frequently offer (delivery, setup, additional hours). Set pricing for each.
[Configure add-ons →](/services/add-ons)
### 3. Configure your form's default service
Open your lead intake form and click the "Instant Pricing" button. In the pricing settings modal, select your default service in the "Fallback Service" dropdown. This service will be used for all AutoDraft quotes from this form.
[Set up lead intake forms →](/forms/lead-intake)
## What happens next
When new leads come in through this form, AutoDraft creates a draft quote with your default service. You can add/remove services, adjust pricing, then send.
## Troubleshooting AutoDraft
* **No draft quotes appearing**: Check that you selected a fallback service in your form's instant pricing settings
* **Wrong pricing showing**: Verify your selected service has current pricing configured
* **Missing add-ons**: Add-ons aren't auto-applied - add them to individual quotes as needed
Need help with instant quotes instead? See our [instant quote setup guide](/contacts/instant-pricing).
# Booking Flow
Source: https://docs.flashquotes.com/contacts/booking-flow
Configure how customers complete their booking after accepting your quote
## Overview
The Booking Flow controls how customers complete their booking after accepting your quote. Configure which booking form collects customer information and which payment terms apply directly from the quote editor.
## How It Works
The booking flow consists of three steps:
1. **Booking Form** - The form customers complete when booking (required)
2. **Contract** - Digital contract signing (Plus/Pro)
3. **Payment Terms** - How and when payments are collected
## Payment Terms
Payment terms define your payment schedule for each quote. Select from your configured options or create new terms directly from the quote editor.
### Selecting payment terms
Scroll to the **Booking Flow** section in the quote editor.
Click the Payment Terms dropdown to choose from your configured options.
Click **Add new payment terms** to create custom terms directly from the quote editor.
### Payment Schedule Types
**Best for:** Events that require complete payment upfront
**How it works:**
* Clients pay 100% of the quote total when booking
* No additional payments needed
**Configuration options:**
* No additional configuration needed
* Clients will be charged the full quote amount at booking
**Best for:** Events that require an upfront deposit to secure the booking
**How it works:**
* Clients pay a deposit amount when booking
* Remaining balance is invoiced and due before the event
* If the balance due date has already passed when the client books, the full amount is due at booking
* Clients can choose to **pay the full balance today** instead of just the deposit
**Configuration options:**
* **Deposit Type:** Choose between:
* **Fixed Amount:** Set a specific dollar amount (e.g., \$500)
* **Percentage:** Set a percentage of the total quote (e.g., 25%)
* **Deposit Amount:** Enter the fixed dollar amount or percentage value
* **Balance Due:** Set when the remaining balance is due (days before/after event)
**Pay full balance option:**
When booking with a deposit schedule, customers see a "Pay full balance today" checkbox on the booking form. Toggling it charges the full invoice amount due in a single transaction — no later balance payment needed.
**Best for:** Corporate clients or situations where payment is handled through traditional invoicing
**How it works:**
* No payment collected through Flashquotes at booking
* Booking is confirmed without payment
* Invoice is generated and sent to the client
**Configuration options:**
* **Invoice Due:** Set when payment is due (days before/after event)
**Best for:** Events where you want to authorize a card for later charges
**How it works:**
* Client's card is authorized but not charged at booking
* Card is charged by you when you're ready to collect payment
* Invoice is generated with the payment due date
**Configuration options:**
* **Invoice Due:** Set when payment is due (days before/after event)
### When the balance deadline has passed
The balance due setting is calculated from the event date, even when a client books close to the event. If that deadline has already passed, Flashquotes requires all currently due payments at booking. The client is therefore asked for the full amount instead of only the deposit.
Collecting the balance during booking prevents the new invoice from being overdue as soon as it is created. It also means the booking is confirmed with the required payment already collected, so you do not have to chase down a remaining balance whose due date has passed.
For example, suppose the payment terms require a deposit at booking and the remaining balance **7 days before the event**. If the client books **3 days before the event**, the balance deadline passed 4 days earlier, so the full amount is due when they book.
This is expected for last-minute bookings. To collect only a deposit, select payment terms whose balance deadline is still in the future for that event.
### Editing Payment Terms
Click the **Edit** button next to any payment terms option to modify:
* Payment schedule type
* Deposit amount or percentage
* Invoice due timing
* Set as company default
Changes to payment terms apply to all quotes using those terms.
## Default Payment Terms
Set a default payment terms to automatically apply to all new quotes.
Click the Payment Terms dropdown in any quote's Booking Flow section.
Click **Edit** next to the payment terms you want as default.
Toggle **Set as company default** and save.
Your default payment terms will apply to all new quotes. You can always change the payment terms on individual quotes.
## Using Multiple Payment Terms
Different client types often require different payment terms:
Invoice only with payment due after the event
25-50% deposit required upfront
Full payment upfront
### Common Scenarios
**Standard:** 25% deposit to secure date, balance due 2 weeks before event
**Premium:** 50% deposit for peak season dates
**Standard:** Invoice only, due 30 days after event
**New Clients:** Full payment required for first booking
## Contract
Add digital contracts to your booking flow. Customers review and sign contracts electronically before payment.
### Assigning a contract
1. Click the Contract dropdown in the Booking Flow section
2. Select a contract template
3. Click **Edit** to modify the contract
4. Toggle **Set as default** to auto-assign to new quotes
Contracts appear after customers fill out the booking form but before payment. Customers must complete all signature blocks before proceeding to payment.
Plus subscribers can create up to 2 contract templates. Pro subscribers get unlimited templates. [Learn more about contracts →](/templates/contracts/overview)
## Booking Form
The booking form collects customer information when they book. Select from your configured booking forms or edit them directly from the dropdown.
### Selecting a booking form
* Click the Booking Form dropdown to see available forms
* Forms marked "Default" are automatically selected for new quotes
* Click **Edit** to modify form questions
* Click **Go to forms** to manage all forms
Configure your booking forms in [Forms settings](/forms/booking).
### Event address requirement
The booking form's event address question (linked to the built-in `eventAddress` field) requires a complete, dispatchable address before customers can advance. Clicking **Next** does nothing and an inline message appears under the field until the address includes:
* **A street** — a street number and name (`123 Main St`). A venue name stands in for the street when the address has three or more comma-separated parts (`Fort Mason, San Francisco, CA 94109`)
* **A locality** — city or town
* **A state or postal code** — a state or province (US, CA, AU) or a postcode (UK, IE), based on your company's country
The event address is prefilled from the quote. Because the lead intake form still accepts free text (for example, "Paris" or "France"), customers may need to complete a partial address before booking. Custom Address questions that aren't linked to `eventAddress` continue to accept free text.
## Best Practices
Use descriptive names that indicate the payment schedule:
* "25% Deposit - Balance Due Before Event"
* "Full Payment Upfront"
* "Corporate Net 30"
* "Card on File - Due Day Before"
* "Payment Terms 1"
* "Option A"
* "New Terms"
Create payment terms that match your common scenarios:
* Regular clients who know your payment terms
* New clients who might need flexible options
* Corporate clients with procurement processes
* Last-minute bookings requiring immediate payment
* Choose your most common payment schedule as the default
* This saves time when creating quotes
* You can always override on individual quotes
* Use larger deposits for expensive events
* Require full payment for last-minute bookings
* Consider card on file for recurring clients
## Troubleshooting
Yes! You can change payment terms on any unsent or sent quote. Navigate to the quote, update the payment terms in the Booking Flow section, and the quote will reflect the new terms.
* For percentage deposits, verify the percentage is entered correctly (e.g., 25 not 0.25)
* Check that the quote total is accurate
* Check whether the balance due date has already passed. When it has, the full amount is due at booking.
* Edit the payment terms to adjust the deposit amount
* Make sure you have at least one payment terms configured
* Check that payment terms aren't deleted
* Try creating a new payment terms from the dropdown
Refunds are processed based on what the client has actually paid, regardless of the original payment terms.
## Next Steps
* [Create quotes](/contacts/quotes)
* [Send quotes](/contacts/sending-quotes)
* [Configure booking forms](/forms/booking)
# Instant Pricing & Quoting
Source: https://docs.flashquotes.com/contacts/instant-pricing
Learn how to configure automatic price calculations and instant quoting for your services
## Overview
Instant Pricing and Quoting automatically calculates service quotes based on predefined pricing rules, saving time and ensuring consistent pricing across your lead intake forms. With Instant Quoting enabled, clients can receive and book quotes immediately upon form submission.
## Video Tutorial
Watch this step-by-step guide on setting up Instant Quoting:
## Setting Up Service Pricing
### Step 1: Create or Edit a Service
Go to **Services & items** in the sidebar and either create a new service or edit an existing one. In the service editor, you'll find the Pricing Configuration section with the following options:
* **Base Price**: Starting price for the service before any adjustments
* **Hourly Rate Per Staff**: Rate charged per staff member per hour
* **Price Per Guest**: Additional charge that scales with guests. On the service pricing page you can choose **Per guest** (rate × guests) or **Per guest per hour** (rate × guests × hours).
* **Minimum Price**: The lowest price that will ever be quoted for this service
The Minimum Price threshold ensures you never quote below your cost basis,
protecting your business's profitability.
### Example Calculation
For an event with:
* 2 staff members
* 3 hours duration
* 50 guests
The total price would be calculated as:
```
Total = Base Price + (Hourly Rate × Staff × Hours) + Guest Component
```
The **Guest Component** depends on the guest pricing mode set on the service: either (Price per guest × Guests) or (Price per guest × Guests × Hours).
If the calculated total is less than the Minimum Price, the system will
automatically use the Minimum Price instead.
## Setting Default Pricing Rules
### Step 1: Access Pricing Settings
1. Go to your lead intake form's edit page
2. Click the "Instant Pricing" button in the header navigation
3. The pricing settings modal will open
### Step 2: Configure Quoting Mode
When configuring your lead intake form's pricing settings, you'll find two quoting modes:
* **Manual Quoting** (Default): Generates a draft quote for admin review before sending
* **Instant Quoting**: Automatically calculates and presents quotes to clients immediately upon form submission
Instant Quoting is available exclusively on the [Flashquotes Pro
plan](https://app.flashquotes.com/settings/plans).
### Step 3: Choose Your Pricing Approach
There are two ways pricing works with forms, depending on whether you have a service selection question:
#### Forms WITH Service Selection Questions
When your form includes a service selection question:
* Pricing comes from the service the customer selects
* Works for both manual and instant quoting
* The "fallback service" configured below is only used if no service is selected
* Each service can have different pricing rules
#### Forms WITHOUT Service Selection Questions
When your form doesn't include service selection:
* All quotes use the single service configured in pricing settings
* This creates "fixed pricing" where every quote follows the same pricing rules
* Simpler setup for single-service businesses
Not sure which approach to use? Single service businesses often prefer fixed pricing, while multi-service businesses benefit from service selection questions.
### Step 4: Configure Fallback Service
Select a service to use when:
* Forms with service selection have no service selected
* Forms without service selection questions (this becomes your fixed pricing service)
Make sure to test your pricing configurations with different combinations of
staff, hours, and guest counts before enabling Instant Quoting. If using a
service selection question, test with each available service option.
## How It Works
When Instant Quoting is enabled:
1. **Client submits your lead intake form**
2. **System determines pricing source:**
* **With service selection question**: Uses the service the customer selected
* **Without service selection question**: Uses the fallback service configured in settings
* **No service selected**: Falls back to the configured default service
3. **Calculates the price using the selected service's pricing rules:**
* Base price + (Hourly rate × Staff × Hours) + guest component (per guest or per guest per hour, depending on the service's guest pricing mode)
* Applies minimum price threshold if calculated total is lower
4. **Automatically redirects client to quote presentation page**
5. **Client can review the quote and click "Book Now" immediately**
The pricing calculation is identical for manual and instant quoting - the only difference is when the quote gets presented to the customer.
Instant Quoting creates a seamless experience where clients can inquire,
receive a quote, and book all in one visit to your website.
## Best Practices
Before enabling Instant Quoting:
* Test different combinations of staff, hours, and guest counts
* Verify calculations align with your business model
* Check that minimum prices are being applied correctly
Stay competitive and profitable by:
* Periodically reviewing your pricing configurations
* Adjusting rates based on market conditions
* Updating minimum prices as costs change
Maximize flexibility with:
* Different services for various event types
* Unique pricing configurations per service level
* Specialized rates for premium offerings
## Important Notes
Instant Quoting requires careful configuration of your pricing rules to ensure
accuracy based on the duration and guest count for each day. **Consider
starting with Manual Quoting mode to verify your pricing rules before enabling
Instant Quoting**.
## Next Steps
After setting up Instant Pricing and Quoting:
* [Test your forms](/forms/booking) with sample submissions
* [Review generated quotes](/contacts/quotes) to ensure accuracy
* [Monitor conversion rates](/pipeline) to optimize your pricing strategy
* [Configure your quote template](/contacts/quote-view) for an enhanced quote presentation that maximizes conversion rates
# Quote Page
Source: https://docs.flashquotes.com/contacts/quote-view
Boost your booking rate with a modern quote experience
## Overview
The Flashquotes quote page is designed to help you convert more leads into paying customers. With a modern e-commerce inspired design and powerful conversion features, it can help you achieve:
* **Higher booking rates** through trust-building social proof
* **Increased average order value** with dynamic add-on selection
* **Reduced cart abandonment** with real-time availability indicators
* **Better customer experience** with a mobile-optimized, professional design
## Using Quote Templates
Every company gets one default quote template that is fully customizable. **Pro plan** users can create multiple templates for different event types, services, or branding variations. Each template can have its own gallery images, testimonials, add-ons, and other visual elements.
Learn how to create and manage quote templates in our [Quote Templates guide](/templates/quote-templates). [Upgrade to Pro](/settings/plans) for multiple templates.
### Assigning a Template to a Quote
1. Open any quote detail page
2. Click on the **Quote Template** tab
3. Select a template from the dropdown
4. The quote will automatically update to use the selected template
Quotes keep a snapshot of their template, so later template edits don't change them. If a quote falls behind, an **Update to latest version** button appears on the same tab. [Learn more →](/templates/quote-templates#updating-a-quote-to-the-latest-template-version)
## Video Tutorial
Watch our step-by-step tutorial on setting up your quote page:
## The Customer Experience
See the modern, professional experience your customers will enjoy:
### 📈 Proven Conversion Boosters
Showcase up to 8 high-quality images of your services to build trust and showcase your work quality.
Display customer reviews and testimonials prominently to increase customer
confidence through social validation.
Enable customers to customize their package with last-minute upgrades,
increasing your average order value.
Create urgency with live availability status indicators to reduce booking
hesitation.
Build trust with an e-commerce style checkout experience that looks great on all devices.
### 🎯 Key Benefits
* Modern, mobile-responsive design that looks great on all devices
* Increased customer confidence through social validation
* Higher average order values through strategic add-on placement
* Reduced friction in the booking process
## Getting Started
### Step 1: Access Quote Templates
Go to **Templates** in the sidebar. Quotes is the first tab.
Click on an existing template to edit it, or click **Create Template** to start a new one.
### Step 2: Configure Your Quote Template
The visual editor allows you to customize every aspect of your quote page. See our [Quote Templates guide](/templates/quote-templates) for detailed instructions on configuring templates.
## Configuring Quote Template Features
### 🏷️ Company Logo
Your logo appears at the top of every quote page. It isn't part of the quote template — it's pulled from your company **Branding** settings, so it stays consistent across quotes, forms, invoices, and booking pages.
The logo can't be clicked or edited directly in the quote template editor. To change it, go to **Settings → Branding**, upload a new logo, and the change applies to all client-facing pages automatically. See [Branding settings](/settings/branding).
### 📸 Gallery Images
The gallery is one of the most impactful features for building trust and showcasing your services.
1. In the template editor, find the **Gallery Images** section
2. Click on any of the 8 image slots
3. Select an image from your media library or upload a new one
4. The first image (top-left) will be marked as "Main" and displayed prominently
* Use high-quality images at 1200×900px (4:3 ratio) for best results
* Include a mix of:
* Final service results
* Your team in action
* Equipment and setup shots
* Happy customers (with permission)
* Update images seasonally to keep content fresh
### ✅ Service Details
Help customers understand exactly what's included in their quote with dynamic service details.
1. Open the **Service Details** section
2. Click "Add Service Detail" to create a new item
3. Use plain text or markdown formatting for rich content
4. Include dynamic values with shortcodes
* `{{quote.guest_count}}` - Number of guests
* `{{quote.staff_count}}` - Number of staff
* `{{quote.service_duration_hours}}` - Total service duration across all days
* `{{quote.daily_service_duration_hours}}` - Average service duration per day
* `{{quote.event_address}}` - Event location
* "Professional service for `{{quote.guest_count}}` guests"
* "`{{quote.staff_count}}` experienced staff members"
* "All equipment and supplies included"
* "`[View our safety protocols](https://yoursite.com/safety)`"
### ⭐ Reviews & Testimonials
Social proof is crucial for building trust with potential customers.
1. In the **Reviews & Testimonials** section, toggle "Reviews" on
2. Set your average star rating (e.g., 4.8)
3. Enter your total review count (e.g., 1,348)
1. Click "Add testimonial"
2. Enter the customer quote and name
3. Drag to reorder testimonials
4. Add 3-5 compelling testimonials for best results
* Use specific, detailed testimonials that mention results
* Include the customer's first name and last initial
* Rotate testimonials periodically to keep them current
### 💰 Add-ons (optional)
Add-ons are your opportunity to increase average order value while providing valuable options to customers.
1. In the **Add-ons** section, you'll see all your created add-ons
2. Toggle add-ons on/off to control visibility
3. Click the edit icon to update add-on details
In the form builder, drag and drop add-ons to change their display order. The order you set here affects how add-ons appear to customers on their quote page. Put your most popular or highest-value add-ons first to maximize visibility.
For per-unit add-ons, customers can adjust quantities directly on the quote page:
* Use the + and - buttons to increase or decrease quantities
* Quantity limits (if set in your add-on configuration) are automatically enforced
* Pricing updates in real-time as customers adjust quantities
* Works seamlessly on both desktop and mobile devices
* Use clear, benefit-focused names
* Include appetizing photos
* Price strategically (not too high to deter, not too low to devalue)
* Limit to 4-8 options to avoid overwhelming customers
When creating or editing add-ons, you can set pricing that automatically adjusts based on:
* Number of guests
* Service duration
* Number of days
* Number of resources/staff
### 📅 Service Days Management
The quote template supports multi-day events through service days. Each service day can have its own date and time.
* Add multiple service days to a single quote
* Each service day can have different dates and times
* Perfect for wedding weekends, corporate events, and festivals
* When booked, each service day becomes a separate event
* Set different start and end times for each day
* Handle timezone conversions automatically
* Support for overnight events and multi-day setups
* Real-time availability checking for each service day
* Edit service days directly in the quote editor
* Add new days with one click
* Remove days as needed (minimum one day required)
* All changes sync automatically with your booking system
Service days are managed in the quote editor, not the template editor. Each service day displays its specific date and time on the customer-facing quote page.
## Mobile vs Desktop Preview
The template editor includes preview modes to ensure your quote looks perfect on all devices:
* **Desktop Mode**: Full-width layout with side-by-side content
* **Mobile Mode**: Optimized single-column layout with sticky booking button
Toggle between modes using the preview selector to test both experiences.
## Best Practices for Maximum Conversions
A fully configured quote page builds more trust than one with missing elements.
Professional photos are worth the investment - they directly impact booking
rates.
Update testimonials, images, and service details regularly to maintain
relevance.
Monitor which add-ons get selected most and optimize your offerings
accordingly.
The real-time availability indicator creates natural urgency - ensure your availability settings are accurate.
## Download & Print Quotes
Save any quote as a PDF for offline sharing or printing.
1. Open a quote from the quotes page
2. Click the menu icon (three dots) in the top right
3. Select **Download PDF** to save the file, or **Print** to send it to your printer
The PDF includes your full quote details, line items, pricing, and branding. Use it to attach quotes to emails, share with clients who prefer paper copies, or keep for your records.
## Frequently Asked Questions
Yes, the template editor shows a real-time preview of your quote page as you
make changes.
No, your existing add-ons work seamlessly - just choose which ones to
display.
Absolutely! The template is fully responsive and optimized for mobile booking.
## Need Help?
If you have questions or need assistance setting up your quote template:
* Contact our support team via the chat widget in the bottom right corner
* [Book a free setup consultation](https://calendly.com/jg-goodhartcoffee/flashquotes-support) with our success team
## Next Steps
Ready to boost your booking rate?
1. [Create and manage quote templates](/templates/quote-templates)
2. Configure your gallery images and testimonials
3. Set up your add-ons for maximum conversion
4. Test the mobile and desktop experience
Learn more about [creating quotes](/contacts/quotes) and [sending
quotes](/contacts/sending-quotes) to make the most of your quote templates.
# Creating Quotes
Source: https://docs.flashquotes.com/contacts/quotes
Learn how to create and customize quotes for your leads
## Overview
Quotes in Flashquotes allow you to provide detailed pricing and service information to your leads. Whether generated automatically from lead intake forms or created manually, quotes can be customized with pricing, services, and branded elements.
Skip manual quote building! [Set up Flashquotes AutoDraft](/contacts/autodraft) to automatically pre-build draft quotes from your leads.
Learn how to customize your quote template for maximum conversions. [Configure your quote template →](/contacts/quote-view)
## Quote Creation and Management
To create a new quote:
1. Navigate to the [Contacts](https://app.flashquotes.com/contacts) page
2. Open the contact you want to create a quote for
3. Click `+ New Quote`
4. Fill in the required event details, including selecting an **event type** — it drives pricing and quote defaults, so it's required up front on any manually created quote (both here and from the pipeline's **New quote** flow)
5. Click `Create`
The Flashquotes quote template is designed for maximum conversions featuring:
* Modern e-commerce inspired design
* Rich photo galleries and social proof
* Dynamic add-on selection
* Real-time availability indicators
* Mobile-optimized experience
**[Configure your quote template →](/contacts/quote-view)**
## Duplicating a Quote
Duplicate a quote when a client comes back for another event, or when a new inquiry looks a lot like one you've already priced. The copy lands on the same contact as a fresh draft with the dates you choose.
### Where to find it
* On the quote page, open **More actions** in the top right and choose **Duplicate**
* On a contact's **Quotes** tab, open the row menu on any quote and choose **Duplicate**
### Set the new service dates
The dialog starts with the original quote's service days. If those dates have already passed, you'll be asked to pick new ones before you can continue.
Change the date, start time, or end time on any day. The date picker shows your availability for the quote's services, and past dates can't be selected. An end time earlier than the start time is treated as ending the next day.
Click **Add service day** to append a day (it defaults to the day after the last one, same times). Use the trash icon to remove a day. At least one day is required, and two days can't share the same date and times.
Click **Duplicate quote**. The new quote opens as soon as it's created.
### Copy the lead intake form responses
If the original quote came in through your [lead intake form](/forms/lead-intake), the dialog shows a **Duplicate lead intake form responses** checkbox. It's off by default. Turn it on to carry the lead's answers onto the new quote.
Event date and time answers are never copied, since the dates you set in the dialog are the source of truth. Answers tied to questions or pages you've since deleted from the form are skipped too. The checkbox is hidden when there's nothing eligible to copy.
### What carries over
* Pricing, line items, service charges, tax rate, and discounts
* Services and add-ons
* Event details: address, guest count, staff and resource counts, event type, and special notes
* The quote message
* Booking flow settings: booking form, payment terms, and the same contract as the original
* The quote's template appearance exactly as it looked on the original, even if that template has changed since or been deleted
* Service dates — you set these in the dialog
* Sent status, expiration, and email history — the duplicate starts as a new draft
* Lead intake form responses, unless you tick the checkbox
Because the duplicate keeps the original's template snapshot, it may be behind your current template. Open the **Quote Template** tab and use **Update to latest version** to refresh it. [Learn more →](/templates/quote-templates#updating-a-quote-to-the-latest-template-version)
When leads come through your [lead intake form](/forms/lead-intake), a
pre-populated quote will be automatically created. If you have [Instant Pricing](/contacts/instant-pricing) enabled, pricing is calculated automatically based on either the service selected in the form or your configured fallback service.
## Getting the Most from Your Quotes
### Best Practices for All Quote Types
1. **Review all pre-populated information for accuracy**
2. **Keep pricing and terms clear and consistent**
3. **Add additional travel costs and mileage as necessary using the map integration**
4. **Verify all details before sending**
### Add-on Quantity Management
When working with add-ons and services:
* Add-on quantities automatically respect any min/max limits set in your add-on configuration
* The system enforces quantity constraints when creating or editing quotes
* Customers can adjust quantities on their quote page within configured limits
### Location and Travel Planning
Each quote includes an integrated map view showing:
* Service location
* Venue address
* Drive time
* Mileage calculation
This helps ensure accurate travel cost estimation and proper profit margins.
## Service Days
Service days let you attach multiple dates and times to a single quote. Perfect for multi-day events, setups, or separate service blocks.
When a quote is booked, each service day becomes its own event inside the
booking.
### How service days work
* **Per-quote**: Add as many service days as needed
* **Separate events**: Each service day converts to an individual event upon booking
* **Inline editing**: Edit date and time directly in the quote editor
* **Timezone aware**: All times handled in your location's timezone
### Adding or editing service days
Navigate to a quote and scroll to the Service Days section.
Click the + button. A new row appears in edit mode.
Adjust the date, start time, and end time inline. Click the check icon to
save or the X icon to cancel.
### Service day management
* **Date picker**: Click calendar icon to select date
* **Time inputs**: Use 24-hour format (HH:MM)
* **Auto-suggestions**: New days default to next day with same time range
* Click pencil icon to edit any service day
* Make changes directly in form fields
* Save with check icon or cancel with X icon
* Changes saved immediately with optimistic updates
* Click trash icon to delete a service day
* Last remaining service day cannot be deleted
* Deleting removes associated line items
Click the trash icon to remove a service day. The last remaining day cannot be deleted.
### Multi-day event scenarios
Service days work for:
* **Wedding weekends**: Ceremony Friday, reception Saturday
* **Corporate events**: Setup day, main event day, breakdown day
* **Festivals**: Multiple days with different schedules
* **Installations**: Setup, service, removal days
Each service day maintains its own start and end times for flexible scheduling.
For detailed information about managing service days, see our [Service Days guide](/contacts/service-days).
## Booking Flow
The Booking Flow controls how customers book their quote. Configure which booking form collects customer information and which payment terms apply.
Payment terms selected here determine how and when customers pay for the quote.
### Booking Flow steps
1. **Booking Form** - The form customers complete when booking (required)
2. **Contract** - Digital contract signing *(coming soon)*
3. **Payment Terms** - How and when payments are collected
### Quick actions
* **Select payment terms** - Choose from configured options in the dropdown
* **Add new terms** - Create custom payment terms directly from the quote
* **Edit terms** - Click Edit to modify any payment terms option
* **Set defaults** - Mark payment terms as company default for new quotes
Your default payment terms will apply to all new quotes. You can edit the default in the booking flow.
For detailed information about configuring booking flow, see our [Booking Flow guide](/contacts/booking-flow).
## Service Charges in Quotes
Service charges let you add percentage or flat fees to quotes automatically or manually. They apply to all line items except gratuity and appear as separate line items for customers.
**Auto-applied charges:**
* Appear automatically on new quotes
* Set up in Settings > Service Charges
* Can be removed manually if not needed
**Manual charges:**
* Add using service charges dropdown in quote editor
* Choose from any configured service charge
* Apply multiple charges to same quote
**Percentage charges:**
* Calculate from subtotal of applicable line items
* Exclude gratuity from calculation base
**Flat charges:**
* Add fixed amount regardless of quote value
* Applied after percentage charges
**Tax handling:**
* Taxable charges included in tax calculations
* Non-taxable charges added after tax
Service charges display clearly to customers:
* Show as separate line items in quote presentations
* Visible in the quote presentation
* Included in booking confirmation forms
* Carry through to invoices automatically
Set up commonly used charges (like gratuity or service fees) as auto-applied to save time on every quote.
Learn more about configuring service charges in [Service Charges Settings](/settings/service-charges).
## Quote Customization Options
### Customizing Quotes
The quote editor allows you to customize the details and presentation of your quote. Customization options include:
### Key event details
* Event address
* Event date
* Service start and end times
* Guest count
* Service location
* Number of staff and core resources
* Special notes
Most of this information is pre-populated from the lead intake form, but you can customize it to fit your needs.
#### Special Notes Editor
Special notes use a rich text editor with full formatting support. Add internal notes, reminders, or instructions with:
* **Text formatting**: Bold, italic, underline, strikethrough
* **Structure**: Headings (H1, H2, H3), bullet lists, numbered lists
* **Visual elements**: Horizontal rules for section dividers
* **Links**: Add hyperlinks to external resources
**Quick tips:**
* Click the formatting buttons in the toolbar to apply styles
* Press `Cmd+Enter` (Mac) or `Ctrl+Enter` (Windows) to save
* Use headings to organize longer notes
* Existing Markdown notes automatically convert when you edit them
Special notes are internal-only and not visible to customers. They're perfect for staff reminders, special instructions, or event-specific details.
#### Pricing and line items
* Modify or add line items for services
* Add line items for add-ons (quantities respect configured min/max limits)
* Apply tax rates
* Apply discounts (including [per-line-item discounts](#per-line-item-discounts))
* Add service descriptions
#### Visual elements
* Present the quote in a branded color scheme by [setting your brand colors](/settings/branding)
Set gallery images, testimonials, and other visual defaults for all quotes in the [quote template editor](/templates/quote-templates).
## How line-item prices update
When you add a service or add-on to a quote, Flashquotes calculates its price using the quote's current details—such as guest count, service duration, event type, and staffing or resource counts—along with the item's pricing rules.
After the line item is added, changing quote-level details does **not** automatically recalculate its price. Even if a change would normally affect pricing, the existing amount remains unchanged. This is intentional: it prevents Flashquotes from silently replacing a price you have reviewed or customized.
To update an existing line item with a newly calculated price:
1. Save the changes to the quote details.
2. Add the same service or add-on as a new line item. The new item is calculated using the updated quote details.
3. Review the new amount, then delete the original line item.
Always review the replacement line item before deleting the original, especially if the original has a custom description or discount.
## Per-line-item discounts
Attach an existing discount to any single line item on a quote or invoice — useful when you want to mark down one service without touching the rest of the order.
### Apply a discount to a line item
1. Open the quote (or invoice) and edit the line item.
2. In the line-item editor, open the **Discount** picker.
3. Pick an existing discount, or choose **+ New discount** to create one inline — new discounts auto-apply to the line as soon as they're saved.
4. Use **Manage discounts** in the picker to jump to Settings → Discounts.
Totals, taxes, and QuickBooks sync all use the discounted amount, so your books reconcile automatically.
### What customers see
On the booking summary, quote view, payment page, and both PDFs, discounted line items show the original price with a strikethrough next to the discounted "now" price and the discount name.
Line-item discounts apply **before** any order-level discount, floor at \$0 (a discount can never make a line negative), and are never applied to gratuity.
## Next Steps
After creating quotes:
* [Learn about quote template setup](/contacts/quote-view)
* [Learn about sending quotes](/contacts/sending-quotes)
* Review for accuracy
* Prepare for follow-ups
# Sending Quotes
Source: https://docs.flashquotes.com/contacts/sending-quotes
Learn how to send and share quotes with potential customers
## Overview
Once you've created and customized a quote, Flashquotes provides multiple options for sharing it with your potential customers.
Learn how to [configure your quote template](/contacts/quote-view) for a modern, conversion-optimized experience that
can significantly boost your booking rates.
## Sending Options
### Email Delivery
1. Click the `Send quote` button
2. Select the appropriate booking form
3. Select your send from email address
4. Add recipient email address(es)
5. Review and customize your subject line and email body
6. Click `Send`
Need to add another email address? Click `+ Add email` to [connect a new
Google account](/settings/integrations/google). Learn why [Google Workspace/Gmail is recommended](/settings/integrations/email-provider) for professional quote sending.
Easily set a default custom email body and personalized subject line in your [quote
settings](https://app.flashquotes.com/settings/quotes?tab=email). Subject lines support lead-specific shortcodes like `{{lead.first_name}}` for better personalization.
The recipient addresses you enter here apply to this quote email only. If you
enroll the quote in a workflow, follow-up emails go to the quote's contact —
see [Who receives workflow
emails](/workflows/overview#who-receives-workflow-emails).
### Email Analytics
No recorded opens does not necessarily mean an email went to spam. If you're concerned about delivery, start with the [Gmail sender and domain authentication checks](/settings/integrations/google-gmail-send#improve-email-deliverability).
Admins can now track how leads interact with quote emails through comprehensive analytics:
#### Quick Overview
* On the [Pipeline](/pipeline) page, look for the eye icon next to sent quotes to see the number of times each quote has been opened
#### Detailed Analytics
When viewing a sent quote, you'll find detailed email analytics including:
* Number of times the quote email has been sent
* Total number of opens
* First and last open timestamps
* Complete activity timeline showing all sent and opened events
This information helps you understand lead engagement and optimize your follow-up strategy.
### Manual Share Options
To share a quote link manually:
1. Click `More actions` in the top right
2. Select `Share quote link`
3. Choose the appropriate booking form
4. Copy and share the link
5. Click `Mark as sent` when done
Quotes will expire a certain number of days after being sent. Expired quotes cannot be booked - customers will be prompted to request a new quote or contact you. Configure default expiration in your [quote settings](/settings/quotes).
When sending quotes, always ensure you select the correct [booking
form](/forms/booking). This will determine the booking form presented when
your lead books the event.
Payment terms are configured directly on the quote in the Booking Flow section.
Learn more in our [Booking Flow guide](/contacts/booking-flow).
## Best Practices
1. Review quote details before sharing
2. Ensure the correct booking form is selected before sending
3. Follow up with leads as needed
4. Track quote status regularly
5. Monitor for client engagement
## Next Steps
After sending a quote:
* Follow up with leads as needed
* [Review bookings](/bookings) when your quote is booked
## Handling Expired Quotes
When quotes reach their expiration date, they become unbookable to ensure pricing and availability remain current.
### What Happens When Quotes Expire
When customers view an expired quote, they:
* See a clear message that the quote has expired
* Cannot proceed with booking
* Are presented with two options:
1. **Request a New Quote** - Starts a fresh conversation with updated pricing
2. **Contact Company** - Reach out directly to discuss options
This ensures customers always receive current pricing and availability.
The expired quote prevention feature protects your business by:
* Preventing bookings with outdated pricing
* Ensuring availability is verified before booking
* Avoiding conflicts with pricing changes or discontinued services
* Reducing disputes over old rates
Admins can modify expiration dates at any time from:
* **Contact Details Page** - Edit directly from the contact view
* **Quote Edit Page** - Change while editing quote details
* **Quote View Page** - Quick edit from the quote preview
You can:
* Extend quotes that are about to expire
* Reactivate expired quotes by setting a future date
* Remove expiration entirely for special cases
### Expiring a Quote Manually
You can also expire a quote yourself before its expiration date — for example, if the client goes silent or you know the pricing is no longer good. **Expire now** is available from the quote page's **More actions** menu and from the row menu on a contact's **Quotes** tab. It's hidden on quotes that are already expired.
Selecting **Expire now** opens a confirmation dialog that shows the contact, event date, and current expiration so you can double-check you're on the right quote. Confirm to expire it, or cancel to leave it alone.
The dialog also includes an optional **Also mark this quote as Lost** checkbox. Turn it on to reveal the same lost-reason chips used elsewhere — **Price**, **Date unavailable**, **Went silent**, **Chose someone else**, or **Other** — and expire and mark lost in a single step instead of going back to the stage menu afterward. A reason is optional, and you can restore the quote from Lost later if the lead re-engages.
### Best Practices for Quote Expiration
Check your [Pipeline](/pipeline) regularly for quotes nearing expiration. Proactively extend them if you're still in conversation with the lead.
Send a reminder email 2-3 days before expiration to create urgency and offer to answer any questions.
If a lead re-engages after expiration, simply extend the expiration date to make the quote bookable again.
For significantly expired quotes (30+ days), consider creating a new quote with updated pricing rather than extending the old one.
Set your default expiration period in [quote settings](/settings/quotes) to balance urgency with giving clients adequate decision time. Most companies find 7-14 days optimal.
## Tracking Quote Performance
Our analytics tools help you understand how leads interact with your quotes, giving you valuable insights into engagement and helping you time your follow-ups perfectly.
### Understanding Quote Analytics
The system tracks three key engagement metrics for your quotes:
1. **Email Opened**\
Track how many times your quote emails have been opened. Each email open indicates potential interest from your lead.
2. **Quote Viewed**\
See how many times someone has clicked through to view your quote presentation page online. This metric helps you understand if leads are taking the time to review your detailed proposal.
3. **Book Now Clicked**\
Monitor how many times leads have clicked the "Book Now" button. This is a strong indicator of intent to book your services.
### Where to Find Analytics
You can find these metrics in two main places:
#### Pipeline & Contact Detail Pages
Look for colored badge pills next to your quotes showing:
* Email open count
* Quote view count
* "Book Now" button click count
These quick indicators help you identify your most engaged contacts at a glance.
#### Quote Detail Page
For a more comprehensive view, visit the Quote Detail page to see all engagement metrics in one place. This detailed view helps you understand the full journey of how leads are interacting with your quotes.
### Using Analytics Effectively
* **Time Your Follow-ups**: High engagement (multiple email opens or quote views) might indicate a lead is actively considering your services—a perfect time for follow-up.
* **Identify Hot Leads**: Leads who have clicked the "Book Now" button are showing strong intent and should be prioritized.
* **Track Response Patterns**: Understanding when leads typically view quotes can help you optimize when to send them.
# Service Days
Source: https://docs.flashquotes.com/contacts/service-days
Create multi-day quotes with flexible scheduling
## Overview
Service days let you build multi-day quotes with different dates and times per day. Perfect for wedding weekends, corporate events, and festivals.
Each service day becomes a separate event when the quote is booked.
## How It Works
1. **Add service days** to your quote with different dates/times
2. **Client books** - each service day becomes an event
3. **Manage events** separately while keeping them under one booking
## Creating Service Days
Navigate to a quote and find the Service Days section.
Click + to add a service day.
Pick date and set start/end times.
Click check icon to save.
## Managing Service Days
### Edit
* Click pencil icon to edit any service day
* Change date, start time, or end time
* Save with check icon, cancel with X
### Remove
* Click trash icon to delete
* Can't delete the last service day
* Associated line items are also removed
Deleted service days cannot be recovered.
## Common Scenarios
### Wedding Weekend
* **Day 1**: Setup/rehearsal (2-4 hours)
* **Day 2**: Main wedding (8-12 hours)
* **Day 3**: Breakdown (2-3 hours)
### Corporate Event
* **Day 1**: Setup (4-6 hours)
* **Day 2**: Main event (8-10 hours)
* **Day 3**: Breakdown (3-4 hours)
### Festival
* **Day 1**: Setup
* **Day 2**: Main festival
* **Day 3**: Closing/breakdown
## Best Practices
### Planning
1. Start with main event day
2. Add setup/breakdown days
3. Include buffer time
4. Consider staff availability
### Pricing
* Charge different rates for setup vs main event days
* Offer package discounts for multi-day events
* Use different add-ons per day
## Integration
### Quote Template
* Each service day shows with specific date/time
* Real-time availability per day
* Professional multi-day presentation
### Booking Flow
* Service days become separate events
* All events linked under one booking
* The initial invoice covers all days; you can [add separate invoices](/invoices/multiple-invoices) to the booking later
## Troubleshooting
You must keep at least one service day per quote.
Check your location settings in company settings.
Click the check icon to save. X icon cancels edits.
## Next Steps
* [Create quotes](/contacts/quotes)
* [Quote template](/contacts/quote-view)
* [Manage bookings](/bookings)
* [Handle events](/events)
# Add Flashquotes to Your Website
Source: https://docs.flashquotes.com/embed-form
Embed your lead intake form on any website in minutes
Get your Flashquotes form on your website in three simple steps. Works with WordPress, Squarespace, Webflow, Wix, and any other website builder.
Go to **Forms** > select your form > click **Share** > click **Get the code to embed it in your website**.
Select your website builder from the dropdown (or **General Embeds** for any site), then copy the code.
Add a **Code Block** to your website, paste the embed code, and publish.
Customize your form's button color in **Settings** > **Branding**.
Platform-specific instructions, troubleshooting tips, and customization options.
Don't want to embed? Use a Flashquotes-hosted page instead - perfect for Instagram and social media.
# Managing Events
Source: https://docs.flashquotes.com/events
Learn how to manage events and track event details in Flashquotes
## Overview
The **Event Schedule** page gives you an operational overview of your upcoming events, including task status, staff assignments, resource allocation, and payment tracking. It's your central hub for managing event delivery. Use the toggle at the top to switch between **List** and **Calendar** views.
## Events Dashboard
### Status Indicators
The dashboard uses color coding to track event status:
* **Green**: Completed tasks, fully staffed, resources assigned
* **Yellow**: Incomplete tasks, requires attention
* **Red**: Critical issues - staff shortage, resource shortage, overdue payments
Status indicators appear for:
* Admin task completion
* Staff assignments
* Resource allocation
* Payment status (Paid, Pending, Partially paid, Open, Overdue, Draft)
These visual indicators help quickly identify events that need immediate attention.
## Event Management
### Event Details
Monitor and manage:
* Required preparations
* Assignment status
* Payment tracking
* Resource allocation
Track essential information:
* Load-in details
* Drive times
* Staff assignments
* Cart/resource assignments
* Shift durations
* Contact information
Access venue information:
* Google Maps integration
* Distance calculations
* Drive time estimates
* Buffer time allocation
Drive times automatically update based on real-time traffic data.
### Event Information
Manage event specifics:
* Guest count
* Service location
* Parking information
* Loading details
* Staff requirements
* Resource needs
* Dress code
* Gratuity status
* Event type (indoor/outdoor)
Access booking information:
* View all event days from the original quote's service days
* Track related events within the same booking
* Manage service dates and times for each day
* Update individual event details or all events at once
* Handle setup, main event, and breakdown days separately
Flashquotes offers two distinct copying features to help you quickly handle repeat business and multi-day services:
**Copying an Event (Add Another Service Day)**
* Creates a new event within the SAME booking
* Uses the booking's existing invoices; copying an event does not create another invoice
* Perfect for adding another service day to an existing booking
* Example: Client wants to add a second day of service to their wedding weekend
* Access via: Event details page → "Make a copy" button
**Copying a Booking (Duplicate Entire Booking)**
* Creates an entirely NEW booking with new invoices
* Duplicates all events from the original booking
* Copies eligible invoices separately with fresh numbers and no payments by default; uncheck the copy-invoices option to enter a new amount and create one invoice instead
* Perfect for repeat clients or similar events
* Example: Client loved your service and wants to book you for next year's event
* Access via: Booking details page → Copy booking option
See [Copy a booking with its invoices](/invoices/multiple-invoices#copy-a-booking-with-its-invoices).
**Quick Guide:**
* Same client, additional day = Copy Event
* New occasion or repeat booking = Copy Booking
* Not booked yet, similar pricing = [Duplicate Quote](/contacts/quotes#duplicating-a-quote)
When you copy an event, the new event inherits most details from the original (staff, resources, timeline) but you can customize the date, time, and specific requirements.
## Additional Features
Manage timing with:
* Service date changes
* Time adjustments
* Schedule updates
* Shift management
Track client history:
* Past quotes
* Previous bookings
* Service history
* Client preferences
## Booking Contact
Every event shows its booking's contact in the **Contacts** card on the event page. Editing the name, email, or phone there updates the contact's record.
To move the booking to a different person entirely, click **Change** next to the booking contact. This swaps which contact the whole booking is under — the quote, all invoices, and every event day move together, and auto-generated event titles update to the new contact's name (titles you've edited by hand are left alone). See [Changing the booking contact](/bookings#changing-the-booking-contact) for the full list of what moves and what stays.
## Internal Notes
Add internal notes and reminders for your team using the rich text editor. Internal notes support full formatting including:
* **Text styling**: Bold, italic, underline, strikethrough
* **Structure**: Headings (H1, H2, H3), bullet lists, numbered lists
* **Visual dividers**: Horizontal rules to separate sections
* **Links**: Add hyperlinks to external resources or documents
You can also [attach images and PDFs](/events/attachments) directly in the note — handy for floor plans, reference photos, or signed paperwork.
**Quick tips:**
* Notes save automatically when you click away — a green **Saved** badge confirms it
* Press `Cmd+Enter` (Mac) or `Ctrl+Enter` (Windows) to save manually at any time
* Use headings to organize longer notes
* Existing Markdown notes automatically convert when you edit them
Customers never see internal notes. They're for staff reminders, setup instructions, and event details your team needs to know.
## Best Practices
1. Regularly monitor status indicators
2. Keep contact information current
3. Verify resource assignments
4. Update internal notes promptly with clear formatting
5. Check drive times for accuracy
## Next Steps
After setting up an event:
* [Configure event brief with checklists](/events/event-brief)
* [Attach files to event notes](/events/attachments)
* [Manage timeline](/events/timeline)
* [Assign staff](/staff)
* [Track resources](/resources)
* [Set up saved checklists](/settings/checklists)
# Attach Files to Event Notes
Source: https://docs.flashquotes.com/events/attachments
Add images and PDFs directly inside internal notes and event details
## Overview
Attach images and PDFs right inside rich text fields on an event — no separate upload step. Attached files flow onto the [event brief](/events/event-brief) automatically, so your field staff see them too.
You can attach files in:
* Internal notes on the event page
* Internal notes in the calendar's event slideover
* Event description, additional location details, and parking & loading info
Only images and PDFs are supported, up to 16 MB per file. Other file types are rejected.
## Adding a File
Click into any supported note or event detail field
Do one of the following:
* Click the paperclip icon in the toolbar and choose a file
* Drag a file from your desktop onto the field
* Paste a copied image
The file uploads and appears as a tile in the text
Dragging a file anywhere on the page highlights fields that accept it with a dashed border. Drop it directly on a field to attach it there.
## Working with Attached Files
Each attached file shows as a tile — images show a thumbnail, PDFs show a file icon.
* **View**: Click the tile to open it full-screen
* **Rename**: Click the pencil icon on the tile
* **Remove**: Click the ✕ on the tile
Backspacing over a file tile won't delete it — you have to click the ✕. This keeps you from losing a file by accident while editing text.
Internal notes save automatically when you click away, confirmed by a green **Saved** badge. `Cmd+Enter` (Mac) or `Ctrl+Enter` (Windows) still saves manually. If a file is still uploading, Flashquotes waits for it to finish before saving so it's never lost.
# Event Brief
Source: https://docs.flashquotes.com/events/event-brief
Learn how to create and manage comprehensive event briefs with customizable checklists for your team
## Overview
The Event Brief serves as the day-of-service documentation for your team. It provides a shareable, dynamic document that contains all necessary information for successful event execution, accessible via a public link without requiring a Flashquotes account.
Each event brief includes customizable checklists that ensure your staff knows exactly what to pack, what to do, and how to put on a great event. You can create multiple checklists per event and save them as templates to reuse across future events - mixing and matching based on event type, services offered, or team roles.
## Brief Structure
### Section Organization
Includes:
* Staff assignments with contact information
* Required equipment list
* Event description
* Indoor/outdoor status
* Dress code requirements
* Customizable checklist tasks
Special add-ons appear as prominent yellow banners to ensure visibility.
Contains:
* Venue address with Google Maps integration
* Estimated drive time
* Site contact information
* Parking instructions
* Loading dock details
* Building access information
Details:
* Setup duration
* Tip jar policies
* Gratuity information
* Customizable setup checklist tasks
* Equipment placement
* Venue requirements
Covers:
* Service start/end times
* Cart presentation standards
* Disposal policies
* Service extension procedures
* Guest interaction guidelines
* Customizable service checklist tasks
Includes:
* Cleanup duration
* Departure timeline
* Customizable cleanup checklist tasks
* Equipment breakdown procedures
Contains:
* Return navigation
* Expected drive time
* Customizable return checklist tasks
* Restocking procedures
* Equipment maintenance tasks
## Which Line Items Appear on the Brief
Services and add-ons show up on the event brief. "Other" line items don't.
* **Services** (the green box icon on line items) — listed with their quantities under **Event services** in the brief's details section
* **Add-ons** (the blue box icon with a plus on line items) — listed with their quantities under **Add-on services** in the details section. Add-ons also trigger a yellow banner at the top of the brief so your team knows to review Prep & Loading closely.
**Other line items** are just text on the quote. They aren't tied to a service or add-on, so the brief has nowhere to put them.
Quick check: line items with a colored box icon appear on the brief. Line items with a gray dot don't.
Need to get information to your staff on the brief? Use [services](/services/core-services), [add-ons](/services/add-ons), [event checklists](#checklist-management), internal notes on the event (including any [attached files](/events/attachments)), and similar event details — they all flow onto the brief automatically.
## Checklist Management
The default Event brief checklist is copied to each new event. Changes you make on an event affect only that event; they do not change the saved checklist in **Settings → Checklists**.
### Add a Checklist
Plus and higher plans can add multiple checklists to an event brief for different services, roles, or crews. Click **Add checklist**, then choose one of these sources:
Select **Add default checklist** to make a new copy of the saved checklist marked **Default** in [Checklist Settings](/settings/checklists).
Choose a checklist under **Copy event checklist** to duplicate its tasks into a separate checklist on the same event.
Choose a checklist under **Add from template** to copy one of your company's saved Event brief checklists to the event.
### Managing Checklist Tasks
Select a task's description, **Qty**, or **Unit** field to edit it. Changes save when you press Enter or leave the field. Press Escape to restore the last saved value.
Quantities and units are optional. Enter combinations such as `4 cases`, `2 trays`, or `0.5 gal`. The unit field accepts free text and suggests common or previously used units. The staff-facing brief displays the quantity and unit in a light blue label beside the task.
Use the drag handle to reorder a task within its current stage or move it to a different stage. You can also open the task's three-dot menu and select a destination under **Move to**.
Tasks are organized into Prep & Loading, Travel to Event, Setup, Service, Post-Event Cleanup, and Return & Unload.
Click **Add task** in the appropriate stage and enter a description. A description is required; an empty new row is removed when you click away.
For fast keyboard entry, press Tab to move from description to quantity, unit, and then the next task. Pressing Tab after the final unit opens a new task row. When a gray unit suggestion appears, Tab accepts it.
Open a task's three-dot menu and choose **Duplicate**. The copy appears next to the original and can be edited independently.
Select the trash icon beside a task to remove it from the event checklist.
Deleted tasks cannot be recovered. Deleting a task from an event does not remove it from the saved checklist it came from.
Use Markdown in a task description to add links, emphasis, lists, or headings. For example, `[Setup guide](https://example.com)` creates a link, and `**Important**` creates bold text.
### Manage Checklists on the Event
Select a checklist name to view it. Select the active checklist's name again to rename it, then press Enter to save or Escape to cancel.
To reuse the active checklist on future events, select **Checklist options → Save as template**, enter a name, and select **Save Template**. Saving checklists for reuse requires Plus or higher.
The saved copy is available company-wide. Later changes to the event checklist and saved checklist remain independent.
Select **Checklist options → Edit defaults** to open [Checklist Settings](/settings/checklists). There you can create, edit, duplicate, delete, and choose the default Event brief checklist.
Select the checklist, then choose **Checklist options → Delete checklist**. This removes the checklist and all its tasks from the event.
You cannot delete the last remaining checklist. Each event brief must have at least one checklist.
## Gratuity Visibility
You can control whether staff see the pre-paid gratuity amount on event briefs. By default, the gratuity is shown. Hiding it is useful if you'd rather not disclose tip amounts to staff before an event.
This is a company-level setting — changing it affects **all current and future event briefs** immediately.
### How to show or hide gratuity
1. Open any event from the **Event Schedule** page
2. Scroll to the **Tip amount** field in the event details panel
3. Below the tip amount, you'll see a status line — *Currently shown on staff event brief* or *Currently hidden* — with a toggle link
4. Click **Hide tip** or **Show tip**
5. Confirm the change in the dialog
When hidden, the pre-paid gratuity is not shown on the event brief.
This setting applies to your entire company. There is no way to hide gratuity for specific events only.
## Sharing and Access
### Distribution Options
Share the event brief:
1. Navigate to the Event Brief tab
2. Copy the "Share link" and send it to your team
Staff can access the brief using the link without logging into Flashquotes.
The event brief automatically updates when you modify:
* Timeline changes
* Staff assignments
* Special instructions
* Contact information
* Add-on services
## Best Practices
### Event Brief Management
1. Share briefs well in advance of event day
2. Verify all sections are complete
3. Double-check contact information
4. Update special instructions as needed
5. Confirm staff have accessed the brief
6. Use [markdown formatting](#enhanced-tasks-with-markdown) in tasks for better clarity and organization
### Checklist Best Practices
* Use clear, actionable language for tasks
* Include specific quantities and measurements
* Add time estimates for complex tasks
* Reference equipment by specific names or model numbers
* Include safety reminders and protocols
* Use [markdown formatting](#enhanced-tasks-with-markdown) to add links, emphasis, and structure to tasks
* Create role-specific checklists for different team members
* Use consistent naming conventions across events
* Regularly review and update templates based on team feedback
* Share successful checklist configurations with your team
* Save successful checklists as templates after events
* Update templates based on lessons learned
* Remove outdated or unused templates regularly
* Gather feedback from staff on checklist effectiveness
* Review all checklists before sharing the event brief
* Test templates with new events to ensure completeness
* Keep backup copies of critical checklist templates
* Maintain a master template for standard events
## Next Steps
After creating event briefs with checklists:
* [Review timeline details](/events/timeline)
* [Manage staff assignments](/staff)
* [Configure checklist defaults](/settings/checklists)
* Monitor brief access and checklist completion
* Gather team feedback on checklist effectiveness
* Save successful checklists as templates for future events
# Reminders
Source: https://docs.flashquotes.com/events/reminders
Tag and manage important event information for your staff
# Reminders
Reminders are important flags or notes that can be attached to events to highlight critical information for your staff. They appear prominently in both the event details and event brief pages, ensuring that crucial information is never missed.
## How Reminders Work
### Adding Reminders
You can add reminders to any event through the Notes widget:
1. Click the reminders dropdown in the Notes widget
2. Select from existing company reminders in the list
3. Or scroll to the bottom and type a new reminder in the input field
4. Press Enter or click to add the reminder
Once added, reminders are immediately visible on the event and will be displayed to all staff members who have access to the event. The system uses optimistic updates for instant feedback while syncing in the background.
### Visibility and Display
Reminders are strategically displayed in two key locations:
1. In the "Prep & Loading" section of the event brief
2. In the Notes widget of the event details page
For high visibility, reminders appear as pink pill badges with a dot indicator. Multiple reminders can be added to a single event and are automatically sorted alphabetically for easy reference.
### Warning Banner
When an event has reminders attached, a warning banner appears at the top of the event brief. This feature ensures that:
* Staff members are immediately aware of important information before starting their shift
* Critical information from both reminders and add-ons is prominently displayed
* Important details cannot be overlooked
## Managing Reminders
### Adding and Removing Reminders
* **Adding**: Use the dropdown menu to select existing company reminders or create new ones at the bottom of the list
* **Removing**: Click the X next to any reminder to remove it from the event
* **Company-wide Reminders**: Managed at Settings → Reminders for consistency across all events
* **Custom Reminders**: Can be created on-the-fly for specific events
## Best Practices
To make the most of the Reminders feature, follow these guidelines:
1. **Keep it Critical**: Use reminders for truly important information that staff must be aware of
2. **Be Concise**: Keep reminder text short and clear
3. **Stay Consistent**: Use standardized reminders across similar events
4. **Regular Review**: Periodically review reminders to ensure they remain relevant
5. **Standardize**: Create company-wide reminders for common situations
## Common Use Cases
Reminders are particularly useful for:
* Equipment requirements
* Safety precautions
* Special client requests
* Setup requirements
* Venue-specific instructions
* Dietary restrictions or allergies
* Special handling instructions
By using reminders effectively, you can ensure that important information is prominently displayed and doesn't get lost in longer notes or instructions.
# Timeline
Source: https://docs.flashquotes.com/events/timeline
Learn how to manage and customize event timelines for optimal service delivery
## Overview
The Timeline feature in Flashquotes helps manage the complete chronological flow of your events, from preparation through completion. It automatically calculates shift durations and ensures proper timing for all event phases.
## Timeline Components
### Time Parameters
Configure:
* Pack-up duration
* Equipment loading time
* Pre-departure checks
* Resource allocation
Includes:
* Drive time to venue
* Buffer for traffic
* Return trip estimation
* Route optimization
Travel times are calculated using Google Maps integration. Update manually if traffic conditions require adjustment.
Manage:
* Setup time
* Service period
* Cleanup duration
* Pack-up time
## Timeline Management
### Configuration Options
Set standard durations for:
* Loading time at headquarters
* Travel buffer periods
* Setup requirements
* Service duration
* Cleanup allocation
* Unloading time
These defaults auto-populate for new events but can be customized per event.
Modify timelines for:
* Rush hour considerations
* Venue-specific requirements
* Special event needs
* Extended service periods
### Automatic Calculations
The system automatically:
* Calculates total shift duration
* Adjusts staff schedules
* Updates client confirmations
* Modifies event briefs
Always review auto-calculated times for special circumstances.
## Best Practices
1. Set realistic default times
2. Account for seasonal traffic patterns
3. Add buffer time for complex setups
4. Consider venue-specific requirements
5. Review timelines for multi-day events
## Next Steps
After configuring timelines:
* [Review event brief](/events/event-brief)
* [Manage staff schedules](/staff)
* Monitor actual vs. planned times
* Adjust defaults based on experience
# Payments
Source: https://docs.flashquotes.com/finance/payments
Track and monitor client payments through Stripe's integrated dashboard
## Overview
The Payments page gives you two views of your payment data: a native flashquotes payments table for sorting, searching, and exporting all your payments in one place, and the Stripe embedded dashboard for detailed transaction management, disputes, and refunds.
## Accessing the Payments Dashboard
Go to **Payments** in the sidebar to open your payment tracking dashboard.
The Payments dashboard requires an active Stripe integration. If you haven't connected Stripe yet, visit [Settings → Integrations](/settings/integrations/overview) to set up your payment processing.
## Dashboard Features
### Stripe Connect Integration
Flashquotes uses Stripe's embedded ConnectPayments component, providing you with:
* **Real-time payment monitoring**: View payments as they process
* **Advanced filtering**: Filter by amount, date, status, and payment method
* **Professional dispute management**: Handle chargebacks and disputes directly
* **Payment capture controls**: Manage authorization and capture for card payments
* **Export capabilities**: Download payment data for accounting and analysis
### Payment Information
The dashboard displays comprehensive payment details including:
* **Transaction status**: Real-time status updates (succeeded, pending, processing, failed)
* **Payment details**: Amount, currency, and processing fees
* **Customer information**: Billing details and payment methods
* **Timeline**: Complete payment history and status changes
* **Related invoices**: Links to associated Flashquotes invoices
## Payments Table
Consolidated view of all your payments applied to Flashquotes invoices.
### What's in the table
* All payments across invoices, including manually recorded transactions
* Sortable columns — click any header to sort by amount, date, status, and more
* Locale-aware currency formatting for multi-currency businesses
### Search and filter
* Use the search bar to find payments by customer name, invoice, or other details
* Filter by payment status, date range, or other criteria to narrow your results
### CSV export
1. Apply any filters to scope your results
2. Click **Export CSV**
3. Select which columns to include
4. Open the download in Excel, Google Sheets, or any spreadsheet tool
The export only includes payments matching your active filters — no extra cleanup needed.
## Filtering and Search
The Stripe dashboard provides powerful filtering options:
Filter payments by amount using:
* Equals specific amount
* Greater than threshold
* Less than threshold
* Between range
View payments by date:
* Before specific date
* After specific date
* Between date range
* Preset ranges (today, this week, this month)
The integrated search allows you to find payments by:
* Customer name or email
* Payment ID
* Card last 4 digits
* Metadata fields
Filter by payment type:
* Card payments
* Bank transfers (ACH)
* Other payment methods
## Payment Actions
### View Details
Click any payment to access:
* Full transaction timeline
* Processing and net amounts
* Fee breakdown
* Risk evaluation details
* Related customer and invoice information
### Refund Management
Process refunds directly from the dashboard:
1. Select a succeeded payment
2. Click "Issue refund"
3. Choose partial or full refund
4. Add an optional reason for your records
5. Confirm the refund
Refunds are processed immediately and cannot be reversed. Always confirm the refund amount before processing.
### Dispute Management
Handle payment disputes professionally:
* View dispute reason and evidence requests
* Submit compelling evidence
* Track dispute status and deadlines
* Communicate with Stripe's dispute team
The dispute management feature helps you respond to chargebacks efficiently, improving your win rate and protecting your revenue.
### Payment Capture
For card payments using separate authorization and capture:
* View authorized but uncaptured payments
* Capture full or partial amounts
* Cancel authorizations when needed
## Manual Payment Tracking
In addition to Stripe payments, Flashquotes supports manual payment recording for:
* Check payments
* Cash transactions
* Bank transfers outside Stripe
* Other payment methods
These appear in your invoice payment tables but are tracked separately from Stripe transactions.
## Export and Reporting
The Stripe dashboard includes robust export functionality:
* Download payment data as CSV
* Filter exports by date range and status
* Include all transaction details and metadata
* Use exports for accounting reconciliation
## Best Practices
1. **Regular monitoring**: Check the dashboard daily for failed payments or disputes
2. **Timely refunds**: Process refund requests promptly to maintain customer satisfaction
3. **Dispute response**: Respond to disputes quickly with compelling evidence
4. **Export regularly**: Download payment data monthly for accounting records
5. **Filter effectively**: Use filters to focus on specific payment segments
## Related Topics
* [Invoice Management](/invoices)
* [Processing Refunds](/invoices/refunds)
* [Stripe Integration Setup](/settings/integrations/overview)
* [Payouts and Deposits](/finance/payouts)
* [Sales Tax Report](/reports/sales-tax)
# Payouts
Source: https://docs.flashquotes.com/finance/payouts
View when your Stripe payments will be deposited to your bank
## Overview
The Payouts view shows when funds from customer payments will be deposited into your bank account. Stripe payouts transfer your available balance to your bank on a schedule you configure in your Stripe account settings.
To open it, go to **Payments** in the sidebar, then click the **Payouts** tab.
## What You'll See
The dashboard displays:
* **Upcoming payouts** with expected deposit dates
* **Payout history** showing past deposits
* **Available balance** ready for payout
* **Individual transactions** included in each payout
Most businesses receive payouts on a 2-day rolling basis, meaning payments made on Monday are deposited on Wednesday. Your specific schedule depends on your Stripe account configuration.
## Instant Payouts
Need funds immediately? If your Stripe account is eligible, you can request an instant payout to receive funds within 30 minutes. This feature is useful for urgent expenses but includes an additional fee (typically 1% of the payout amount).
To request an instant payout:
1. Check your available balance in the dashboard
2. Click "Request Instant Payout"
3. Enter the amount you need
4. Funds arrive within 30 minutes
Learn more about requirements and fees in [Stripe's Instant Payouts documentation](https://docs.stripe.com/payouts/instant-payouts).
## Additional Resources
For detailed information about payouts, including schedules, fees, and bank requirements, refer to:
* [Stripe Payouts Overview](https://docs.stripe.com/payouts)
* [Payout Timing](https://docs.stripe.com/payouts/payout-schedule)
* [Managing Your Payout Schedule](https://docs.stripe.com/payouts/manage-payout-schedule)
## Related Topics
* [Payment Tracking](/finance/payments)
* [Invoice Management](/invoices)
* [QuickBooks Integration](/settings/integrations/quickbooks)
# Custom item mapping
Source: https://docs.flashquotes.com/finance/quickbooks-custom-mappings
Map specific services, add-ons, and service charges to QuickBooks items
Override default QuickBooks item mappings for specific services, add-ons, and service charges. Use this when certain items need different accounting treatment than your defaults.
## When you need this
**Common scenarios:**
* Service requires different income account
* Add-on must track to a specific category
* Service charge must track to specific expense account
* Package pricing needs separate tracking
Default mappings handle most cases. Only create custom mappings when specific items need different QuickBooks items.
Requires QuickBooks Online integration and Pro subscription. [Set up QuickBooks](/settings/integrations/quickbooks) first.
## How mappings work
**Priority order:**
1. Custom mapping (if exists) → uses specified QuickBooks item
2. Default mapping → uses line item type default
3. No mapping → uses QuickBooks default mapping (usually "Sales")
**Example:** You have "Coffee Cart" service mapped to "Premium Catering" item. All other services use the default "Catering Services" item.
## Create a custom mapping
1. Go to Settings > Integrations > QuickBooks
2. Scroll to Line Item Custom Mapping section
3. Click **Add Mapping**
4. Select type: Service, Add-on, or Service Charge
5. Choose Flashquotes item from dropdown
6. Select QuickBooks item from dropdown
7. Mapping saves automatically
What happens next: Future syncs use the custom QuickBooks item for that specific Flashquotes item. Existing invoices in QuickBooks aren't changed.
## View existing mappings
All custom mappings appear in the Line Item Custom Mapping card.
**What you see:**
* Type (Service, Add-on, or Service Charge)
* Flashquotes item name
* Mapped QuickBooks item name
* Delete button (hover to reveal)
## Delete a mapping
1. Go to Settings > Integrations > QuickBooks
2. Find the mapping in Line Item Custom Mapping
3. Hover over the row
4. Click trash icon
What happens next: Future syncs use the default mapping for that line item type. Existing QuickBooks records aren't changed.
## Mapping rules
**One mapping per item:**
* Each Flashquotes item can have one custom mapping
* Updating a mapping replaces the previous one
* Multiple items can map to the same QuickBooks item
**Deletions:**
* Deleting a Flashquotes item removes its custom mapping
* Deleted mappings can't be recovered
* Default mapping takes over immediately
## Common issues
* **Mapping not saving**: Check you selected both Flashquotes item and QuickBooks item
* **Wrong item syncing**: Custom mappings override defaults - check custom mappings first
* **Can't find QuickBooks item**: Click Refresh button to update QuickBooks data
* **Mapping disappeared**: Flashquotes item may have been deleted
## Best practices
1. **Start with defaults** - Only create custom mappings when needed
2. **Document your mappings** - Note why specific items need custom treatment
3. **Review quarterly** - Ensure mappings still make sense
4. **Test with one invoice** - Verify mapping works before bulk syncing
## Related topics
* [QuickBooks Integration Setup](/settings/integrations/quickbooks)
* [Manual Payment Sync](/finance/quickbooks-sync)
* [Service Charges](/settings/service-charges)
# QuickBooks Sync
Source: https://docs.flashquotes.com/finance/quickbooks-sync
How payments, deposits, and refunds sync between Flashquotes and QuickBooks Online
Flashquotes syncs payments, deposits, and refunds to QuickBooks Online. This page covers how sync works and how to manually sync individual transactions.
QuickBooks sync requires an active Pro subscription and QuickBooks Online connection. Set up QuickBooks integration first in [Settings → Integrations](/settings/integrations/quickbooks).
QuickBooks syncing is only supported for accounts using USD currency in the United States.
## How deposits work
Flashquotes creates QuickBooks deposits differently depending on the payment method:
**Stripe payments** — Deposits are created automatically when Stripe sends the payout to your bank. Multiple payments from the same payout are grouped into a single aggregate deposit that matches your bank statement. Each deposit includes the Stripe payout trace ID in the memo field for easy bank reconciliation.
**Manual payments** (cash, check) — Deposits are created immediately when you sync the payment to QuickBooks.
### Failed payouts
If a Stripe payout fails, Flashquotes automatically removes the corresponding deposit from QuickBooks and clears the deposit link from affected payments. No manual cleanup is needed.
## Sync a payment
1. Go to an invoice with payment activity
2. Find the payment in the Payment Activity table
3. Click **Sync Payment** next to the payment
4. Wait for sync to complete (button shows loading spinner)
What happens next: The payment syncs to QuickBooks as an invoice and payment record. For manual payments (cash, check), a bank deposit is also created immediately. For Stripe payments, the deposit is created later when the payout arrives. The sync button disappears and shows a QuickBooks icon.
## Sync a refund
1. Go to an invoice with refund activity
2. Find the refund in the Payment Activity table
3. Click **Sync Refund** next to the refund
4. Wait for sync to complete
What happens next: The refund syncs to QuickBooks as a refund record. You'll see a QuickBooks icon showing the sync is complete.
## When to use manual sync
Use manual sync when:
* QuickBooks connection was set up after payments were processed
* You want to sync only specific transactions
* Automatic sync failed for individual payments
* You need to control timing of accounting entries
## Prerequisites
Before syncing payments, verify these settings in QuickBooks integration:
* **Deposit bank account**: Where payments are deposited
* **Fee expense account**: For processing fees
* **Refund bank account**: For refund transactions (refunds only)
Missing account mappings will cause sync to fail. Check your QuickBooks integration settings if sync doesn't work.
## Common issues
* **Sync button not visible**: Check you have Pro subscription and QuickBooks connected
* **"Already synced" error**: Payment was previously synced to QuickBooks
* **"Invoice already paid" error**: QuickBooks invoice has zero balance remaining
* **Account mapping missing**: Set up required bank and expense accounts in QuickBooks settings
* **Deposit not appearing yet**: For Stripe payments, deposits are created when the payout reaches your bank (typically 1-2 business days)
## What gets created in QuickBooks
**For payments:**
* Invoice record (if not already exists)
* Payment record linked to invoice
* Bank deposit (immediately for manual payments; on payout for Stripe payments)
**For Stripe payout deposits:**
* Single aggregate deposit grouping all payments from the payout
* Stripe processing fees recorded as expense line items
* Payout trace ID in the deposit memo for bank reconciliation
**For refunds:**
* Refund record
* Bank account deduction
## Limitations
* Can only sync payments with valid amounts greater than \$0
* Previously synced payments can't be synced again
* Requires customer email to match or create QuickBooks customer
* Stripe fees and Flashquotes platform fees are automatically calculated and recorded
## Related topics
* [QuickBooks Integration Setup](/settings/integrations/quickbooks)
* [Custom Line Item Mappings](/finance/quickbooks-custom-mappings)
* [Payment Management](/finance/payments)
* [Processing Refunds](/invoices/refunds)
# Lead detection
Source: https://docs.flashquotes.com/flashquotes-ai/lead-detection
Find quote requests in your Gmail inbox and turn them into quotes
## Find inquiries in your Gmail inbox
Use this when clients email you instead of filling out your form. Flashquotes AI flags emails that ask for a quote or availability for an upcoming event. Suggestions appear at the top of the New inquiry column in your Pipeline. Suggestions only become quotes when you accept them and they're never automatically sent to a client.
While in public beta, Flashquotes AI is available on every plan at no additional cost.
### Review a suggestion
1. Click the suggestion card.
2. Check the date, address, guest count, and summary, and reference the source email.
3. Click **Build quote** or **Discard suggestion**.
Build creates the contact and a draft quote, then opens it. Discard asks for a quick reason. Click **Give feedback** to tell us how the AI did.
### Common issues
* No suggestions: go to Settings > Integrations and make sure your Google inbox is connected with email read access allowed. Reconnect if either is missing.
* Wrong date or time: fix it in the quote builder. Times use your location's time zone.
# Overview
Source: https://docs.flashquotes.com/flashquotes-ai/overview
AI features that actually help your business grow. In public beta.
## Flashquotes AI
Flashquotes AI is built to make your job easier and help your business grow. We're not adding AI to every screen for the sake of it. Each feature has to save you real time or bring in real work. You stay in control, and nothing goes to a client until you send it.
While in public beta, Flashquotes AI is available on every plan at no additional cost.
## What's available
Finds quote requests in your Gmail inbox and builds the quote for you.
## What beta means
* Features may change as we tune them
* Suggestions can be wrong. Check the details before you send anything
* Click **Give feedback** on any suggestion to tell us what worked and what didn't
## Coming next
New Flashquotes AI features will land here as they ship. Watch the [changelog](/changelog/overview) for announcements.
# Booking Form
Source: https://docs.flashquotes.com/forms/booking
Configure your instant booking form for converting quotes to bookings
## Overview
The Booking Form collects customer information when they accept a quote. With optimized question pages and a mobile-friendly design, it provides a professional checkout experience for converting quotes into confirmed bookings.
## Form Structure
Features:
* Single question per page format
* Mobile-optimized design
* High conversion rate focus
The single-question-per-page approach maximizes completion rates, especially on mobile devices.
Modify the booking form:
* Edit existing questions
* Add new questions
* Remove unnecessary fields
* Customize question order
* Mark questions as required or optional
Control which questions are mandatory for form submission:
1. Open a question in the form editor
2. Find the "Required" toggle in the question settings
3. Toggle on to make the question mandatory, or off to make it optional
**System-Required Questions:**
* Some questions are required by Flashquotes and cannot be changed
* These questions show "This question is required by Flashquotes" instead of a toggle
* System-required questions ensure essential data is collected for booking processing
**User-Required Questions:**
* You can mark custom questions as required or optional
* Required questions must be completed before form submission
* Optional questions allow customers to skip if not applicable
Balance required fields carefully—too many required questions can reduce conversion rates, while too few may result in incomplete booking information.
Show or hide form pages based on the service or add-on included in a quote.
For example, show a "Bar Menu Preferences" page only when a bar service is on the quote—and hide it for everything else.
* Conditions are set per page in the form editor
* Pages can match on service type or specific add-ons
* Customers only see pages relevant to their booking
Conditional logic is a Plus plan feature. [Upgrade your plan](https://app.flashquotes.com/settings/billing) to enable it.
[Set up conditional logic](/forms/conditional-logic)
## Form Management
The booking form is:
* Conversion rate optimized
* Mobile-responsive
* User-friendly
* Continuously improved
Benefits of form integration:
* Streamlined booking process
* Automatic payment processing
* Reduced manual data entry
* Improved customer experience
## Best Practices
1. Maintain single-question-per-page format
2. Test form functionality across devices
3. Review conversion rates regularly
4. Keep questions relevant and minimal
## Next Steps
After configuring booking forms:
* [Configure payment terms in booking flow](/contacts/booking-flow)
* [Track bookings](/bookings)
* [Set up conditional logic for service-specific pages](/forms/conditional-logic)
* Review form analytics
* Monitor conversion rates
# Platform Compatibility
Source: https://docs.flashquotes.com/forms/compatibility
Flashquotes is compatible with virtually all website platforms through our embeddable iframe technology
## Overview
Flashquotes forms can be integrated with any website platform through iframe embed. This ensures that regardless of which website builder or CMS you use, you can easily incorporate Flashquotes forms into your existing site.
Check out our step-by-step embedding guide to get started quickly.
**Don't want to embed?** Use [Share Links](/forms/share-links) instead. Create a Flashquotes-hosted page perfect for social media, Instagram link-in-bio, or direct client sharing.
### Compatible Website Platforms
Flashquotes works with all major website platforms, including but not limited to:
| Platform | Compatible |
| -------------------------- | --------------------- |
| WordPress | |
| Wix | |
| Squarespace | |
| Webflow | |
| Shopify | |
| Ghost | |
| Weebly | |
| GoDaddy Website Builder | |
| Custom HTML/CSS/JS website | |
Wix has unique technical constraints that affect mobile display. See our [Wix Embed Best Practices](/forms/wix-embeds) guide for detailed implementation steps and mobile optimization strategies.
## Integration Options
### Share Links (No Embedding Required)
Skip embedding entirely with hosted form pages:
1. Navigate to the **Publish** tab in your form editor
2. Copy your share link
3. Use it anywhere - social media, email, or Instagram bio
Perfect for Instagram link-in-bio since Instagram doesn't allow clickable links in posts.
[Learn more about Share Links →](/forms/share-links)
### Embedding Instructions
The general process for embedding Flashquotes forms into any platform involves:
1. Navigate to **Forms** in your Flashquotes dashboard
2. Select the form you want to embed
3. Click the **Share** button
4. Click **Get the code to embed it in your website**
5. Choose your website platform from the dropdown (or **General Embeds** for any site)
6. Copy the embed code and paste it into your website
When embedding forms, place them on dedicated pages with minimal distractions
to maximize conversion rates.
## Platform-Specific Guides
### WordPress
WordPress users can embed Flashquotes forms through:
* Custom HTML blocks in the block editor
* Text widgets in sidebars or footers
* Theme template files (for developers)
### Squarespace
For Squarespace websites:
1. Add a **Code Block** to your page
2. Paste the Flashquotes embedding code
3. Save and publish your changes
### Webflow
Webflow users should:
1. Add an **Embed** element to your page
2. Paste the Flashquotes embedding code
3. Adjust the element settings as needed for proper sizing
### Shopify
For Shopify stores:
1. Edit your page or create a new one
2. Add a **Custom HTML** section
3. Paste the Flashquotes embedding code
4. Save your changes
### Wix
To embed a Flashquotes form in Wix:
1. Go to your lead intake form in the Flashquotes dashboard and click **Share** > **Get the code to embed it in your website**. **Important:** Choose **Wix** from the dropdown menu, as Wix has a unique embed snippet. Copy the embed code snippet.
2. Open your Wix website editor from your Dashboard. Navigate to the page where you want to embed your quote form.
3. Click **Add Elements** and go to the **Embed Code** section, then drag and drop an **Embed HTML** to the place on the page where you'd like your quote form to appear.
4. In the dialog box that appears, paste in your embed code from Flashquotes and click **Apply**.
5. Once you have copied your embed code, you won't have to copy the code again—simply update the design and your embed will be updated. Your embed will also be saved and can be found as an **HTML element** in your site Layers.
Wix mobile has specific display limitations. For optimal mobile experience, see our [Wix Embed Best Practices](/forms/wix-embeds) guide for mobile optimization strategies and alternative approaches.
## Responsive Design
Flashquotes forms are fully responsive and will automatically adjust to fit the container they're placed in. To ensure optimal display:
* Place forms in containers at least 600px wide when possible
* Avoid cramped sidebars for lead intake forms
* Test your embedded forms on multiple device sizes
## Troubleshooting
If your form isn't displaying correctly:
1. Make sure your platform allows iframe embedding (most do)
2. Check that no content blockers are interfering with the iframe
3. Verify you're using the latest embed code from your Flashquotes dashboard
4. Ensure the container has sufficient width for the form to display properly
## Next Steps
After embedding your forms:
* [Customize form settings](/forms/lead-intake#form-settings)
* [Configure form notifications](/settings/general)
* [Track form submissions](/contacts)
# Conditional Form Logic
Source: https://docs.flashquotes.com/forms/conditional-logic
Show or hide booking form pages based on which service or add-on a customer selects
## Conditional Form Logic
Show different form pages to different customers based on their selections. A customer who picks your espresso bar sees espresso-specific questions. A customer who picks your photo booth doesn't.
Conditional logic is only available on **booking forms**, not lead intake forms. It requires a **Plus** plan or higher. Essentials users will see an upgrade prompt in the Logic tab.
## Set up rules on a page
Go to **Settings → Forms** and open your booking form.
At the top of the editor, switch from the **Build** tab to the **Logic** tab.
Each form page shows a card with its name, question count, and current status — either **Always visible** or **N rules**.
Click the page card to expand it. Select a rule type:
* **Service rule** — show this page when a specific service is selected
* **Add-on rule** — show this page when a specific add-on is selected
Then pick the service or add-on from the dropdown.
Add as many rules as you want. A page shows if **any** rule matches — not all of them.
## How rules work
* **No rules set** — the page is always visible to every customer
* **One or more rules** — the page only shows when at least one rule matches
* **Multiple rules use OR logic** — match any rule, not all rules
Example: set two rules on your "Espresso Questions" page — one for your Espresso Bar service and one for your Latte Add-on. The page appears for either selection.
## What customers see
When a customer fills out the booking form, pages whose conditions aren't met are automatically skipped. Required fields on hidden pages are also skipped — customers won't get stuck on a question that doesn't apply to them.
## Upgrade to Plus
Conditional logic is a **Plus** plan feature. If you're on Essentials, you'll see a prompt to upgrade when you click the Logic tab.
Upgrade to Plus to unlock conditional form logic
# Embed Your Form on Your Website
Source: https://docs.flashquotes.com/forms/embed-your-form
Add your Flashquotes lead intake form to any website in minutes
## Overview
Embedding your Flashquotes form on your website lets visitors request quotes directly from your site. It only takes a few seconds to set up and works with any website builder.
## Quick Start: 3 Simple Steps
1. Go to **Forms** in your Flashquotes dashboard
2. Click on your lead intake form
3. Click the **Share** button
4. Click **Get the code to embed it in your website**
Select your website builder from the dropdown:
* WordPress
* Squarespace
* Webflow
* Wix
* Or choose **General Embeds** for any other website
Then copy the code snippet.
In your website editor:
1. Add a **Code Block** (or HTML block) to your page
2. Paste the embed code you copied
3. Save and publish your page
That's it! Your form is now live on your website.
## Customize Your Form's Appearance
Want to match your brand colors? The form automatically uses your branding settings.
1. Go to **Settings** > **Branding**
2. Set your **Brand Color** - this controls button colors and accents
3. Upload your **Logo** if you haven't already
Changes apply automatically to all your embedded forms.
## Platform-Specific Tips
1. Click **Edit** on your page
2. Click **Add Block** and find **Code**
3. Drag the code block where you want the form
4. Click **Edit** on the block and paste your embed code
5. Save and publish
1. Edit your page in the block editor
2. Add a **Custom HTML** block
3. Paste your embed code
4. Update/publish the page
1. Add an **Embed** element to your page
2. Paste your embed code
3. Adjust sizing as needed
4. Publish your site
Wix has mobile display limitations. Make sure to select **Wix** from the platform dropdown to get the correct embed code.
1. In the Wix editor, click **Add Elements**
2. Go to **Embed Code** > **Embed HTML**
3. Drag it to your page and paste the code
4. Click **Apply**
For mobile optimization, see our [Wix Embed Best Practices](/forms/wix-embeds) guide.
Choose **General Embeds** from the dropdown. This works with:
* Shopify
* Ghost
* Weebly
* GoDaddy
* Any custom HTML website
Just find your platform's HTML or code block feature and paste the code.
## Troubleshooting
**Form not showing?**
* Make sure your website platform allows HTML/iframe embeds
* Check that no ad blockers are interfering
* Try copying fresh code from Flashquotes
**Form looks cramped?**
* Place the form in a wider container (at least 600px recommended)
* Avoid putting forms in narrow sidebars
**Need the form on mobile?**
* Flashquotes forms are responsive and work on all devices
* Wix users: see our [mobile optimization guide](/forms/wix-embeds)
## Don't Want to Embed?
Use [Share Links](/forms/share-links) instead. You'll get a Flashquotes-hosted page that's perfect for:
* Instagram link-in-bio
* Social media posts
* Email campaigns
* QR codes on business cards
## Next Steps
* [View platform compatibility details](/forms/compatibility)
* [Configure your form settings](/forms/lead-intake)
* [Set up Share Links](/forms/share-links) for social media
* [Customize your branding](/settings/branding)
# Lead Intake Form
Source: https://docs.flashquotes.com/forms/lead-intake
Configure and optimize your lead capture form
## Overview
The Lead Intake Form is optimized for high conversion rates, collecting only essential information needed to generate accurate quotes. This form automatically generates when you create your account and can be embedded on your website.
## Form Editor
The form editor displays all questions in the left panel, organized by page. Click any question to select it and view its settings in the right panel.
Click **Add question** below any page to open the question picker:
**Connected Questions** sync data to Flashquotes fields:
* **SMS Opt-in** - Capture text message consent
* **Lead Source** - Track how leads found you (pre-populated options)
* **Add-ons** - Let leads select from your add-ons list
* **Services** - Let leads choose from your services
* **Event Type** - Let leads pick the type of event (wedding, corporate, festival, etc.) — configurable options that surface on the quote and event details, and that can drive [event-type pricing](/services/pricing#dynamic-pricing) on the Scale plan
**Custom Questions** collect any information you need:
* **Text** - Short answer input
* **Multiple Choice** - Single selection from options
* **Multi-Select** - Multiple selections allowed
* **Dropdown** - Single selection from a dropdown menu
Connected questions already exist in your form? They'll appear greyed out with a checkmark.
Drag questions to reorder them within a page or move them to a different page:
1. Click and hold any question in the left panel
2. Drag to the desired position
3. Release to drop
Moving questions between pages works the same way—just drag to the target page.
**Adding pages:** Click the **+** button in the Pages header to add a new page.
**Deleting pages:** If you don't need a page, simply remove it. Empty pages show a kebab menu (⋮) with a **Delete page** option. Pages with questions can't be deleted until all questions are removed or moved, and the first page can't be deleted.
Non-system questions can be deleted via the kebab menu (⋮) on each question row. System-required questions (like contact fields) cannot be removed.
## Form Structure
The default lead intake form includes these pages (fully customizable):
1. **Service Details**
* Service length (configurable min/max hours)
* Guest count (with customizable increment buttons)
* Dynamic staff calculation (optional visual counter or text display)
2. **Location**
* Event address
* Venue details
3. **Timing**
* Event date
* Service start time
* Number of event days
4. **Event Type**
* Category selection
* Pricing impact factors
5. **Customization**
* Add-ons selection
* Service add-ons with drag-and-drop reordering
* Special requirements
6. **Additional Information**
* Event details
* Referral source
7. **Contact Details**
* First name, last name, email, phone
* SMS opt-in consent (if enabled)
Customize form behavior:
* Set redirect URLs post-submission
* Configure submission messages
* Configure Instant Pricing and Quoting modes
If no redirect URL is specified and Instant Quoting is disabled, the form displays a default submission message.
Control which questions are mandatory for form submission. Select a question and use the required toggle in the settings panel.
**System-Required Questions:**
* Some questions are required by Flashquotes and cannot be changed
* These show "This question is required by Flashquotes" instead of a toggle
**User-Required Questions:**
* You can mark custom questions as required or optional
* Required questions must be completed before form submission
Making too many questions required can reduce conversion rates. Only require fields essential for accurate quotes.
The CTA buttons on the first and last pages of your form are editable directly in the form editor preview.
1. Hover the button in the preview — a ring appears around it
2. Click the button to make it editable
3. Type your new label, then press **Enter** or click outside to save
**Which buttons you can edit:**
* **First-page button** — shown on the first page of the form. Defaults to **"Get Custom Pricing"** (or **"Get My Instant Quote"** when Instant Quoting is enabled)
* **Last-page button** — shown on the final page. Defaults to **"Get My Quote"** (or **"Get My Instant Quote"** when Instant Quoting is enabled)
Leave either label blank to restore the default. Labels are capped at 100 characters.
Middle pages show a plain **Next** button that isn't customizable.
Add SMS opt-in to collect text message consent:
1. Click **Add question** on any page
2. Select **SMS Opt-in** from Connected Questions
3. The question is automatically placed on the Contact Details page
When enabled, leads see a checkbox asking "Can we text you?" and opted-in contacts display an SMS badge on the Contacts page.
SMS opt-in requires a phone number field on your form.
[Learn more about SMS opt-in →](/forms/sms-opt-in)
Automatically pre-build draft quotes from every new contact:
1. Set up your default service with pricing
2. Configure the service in your form's Default Service dropdown
3. Every form submission creates a draft quote ready to review and send
[Set up AutoDraft →](/contacts/autodraft)
Enable automatic quote generation and presentation:
1. Click the "Pricing settings" button in your form editor
2. Toggle "Quoting Mode" to "Instant Quoting"
3. Configure fallback service and pricing rules
**How pricing works:**
* **With service selection questions**: Uses the service the customer selects
* **Without service selection questions**: Uses the fallback service (fixed pricing)
* **No service selected**: Falls back to the configured default service
When enabled:
* Quotes are generated instantly upon form submission
* Clients are redirected to the quote presentation page
* "Book Now" option is immediately available
Instant Quoting is a [Pro plan](https://app.flashquotes.com/settings/plans) feature that enables clients to inquire, receive quotes, and book in a single session.
Combine Instant Quoting with your [quote template](/contacts/quote-view) for the ultimate conversion-optimized quote experience.
Control how add-ons and services appear to your customers:
**Service Visibility:**
* Each service has a toggle switch to show or hide it from the form
* Hidden services won't appear to customers on the public form
* Hidden services remain available for quotes you build manually
* Toggle visibility from the Services question settings in the form builder
**Drag-and-Drop Reordering:**
* Drag items up or down in the form builder to set display order
* The order you set affects how items appear to customers
* Most important items should be positioned at the top
**Default Ordering:**
* Items without custom ordering display alphabetically
* Mix of ordered and unordered items shows ordered items first
Position your most popular or profitable add-ons at the top to increase selection rates. Hide seasonal or inactive services to keep your form clean.
Sections organize your Services question into named, collapsible groups. Available when your company has 4+ services — configured per form.
**Set up sections:**
1. Open your form in the editor and select the **Services** question.
2. Click **Add section** in the settings panel. Flashquotes creates two sections ("Section A" and "Section B") so you can see them immediately.
3. Click a section name to rename it inline (e.g. "Bar service").
4. Drag any service into the section it belongs in. Drag a section header to reorder whole sections.
5. Click **Add section** again to add more groups.
To remove a section, click its **✕**. Its services merge into a neighboring section. Deleting down to one section removes all sections — sections are all-or-nothing.
Hiding a service (toggling it off) moves it to an **Excluded services** list below the card. It won't appear on the form until you turn it back on.
**What leads see:** sections appear collapsed with a service count and an arrow. The first section is expanded by default. Leads tap a header to expand it.
Customize how the staffing calculator appears and functions on your lead intake form:
**Service Length Settings:**
* Set minimum service hours (default: 1 hour)
* Set maximum service hours (default: 12 hours)
* Supports half-hour increments
**Guest Count Settings:**
* Configure guest count increment (1-100, default: 25)
* Controls how much the +/- buttons change the guest count
* Example: Set to 10 for smaller events, or 50 for large gatherings
**Staffing Calculations:**
* Define drinks/services per hour per staff member
* Set optional maximum staff limit
* Leave max staff empty for unlimited scaling based on guest count
**Staff Visual Counter:**
* Select the Staffing Calculator question under **Content**, then expand the **Staff visual counter** section in the settings panel
* Turn on the **Enable visual counter** toggle to show interactive staff images that adjust with guest count
* Customize staff titles (singular/plural) and a staff description
* Click any of the five **Staff Images** slots to upload photos of your team (optional)
* Turn the toggle off for a cleaner, text-only display — customize the question title and subtitle instead
The visual staff counter provides an engaging way for customers to see how many team members will serve their event, building trust and justifying pricing.
## Custom Themes
The theme designer lets you match your lead intake form to your brand — no code required. Click the **Design** (palette) button in the top-right of the form editor to set colors, fonts, and styling, with a live preview as you make changes.
* **Brand colors** — set your background, accent and text colors so the form looks like the rest of your site
* **Fonts** — choose the typeface used across questions, labels, and buttons
* **Corners** — sharpen or soften corners on buttons, cards and the entire form to match your style
* **Contrast-detection** — we automatically check for color pairs that will make your form less readable, suggesting better options for you
* **Live preview** — every change renders instantly in the form preview
* **Applies everywhere** — your theme carries across both embedded forms and [hosted share-link pages](/forms/share-links)
* **Copy from another form** — use the **Copy from** menu in the Design panel header to reuse a theme you've already built on another form
* **Reset theme** — click **Reset theme** in the Basics header to restore the Flashquotes default, seeded from your company brand color
Pull your colors and fonts straight from your website's brand guide so the embedded form feels like a native part of your page.
## Website Integration
To embed the lead intake form:
1. Click the **Share** button
2. Click **Get the code to embed it in your website**
3. Select your website builder (or **General Embeds** for any site)
4. Copy and paste the code into your website
New to embedding? See our [step-by-step embedding guide](/forms/embed-your-form) to get started quickly.
Wix websites require specific embedding code. Select **Wix** from the dropdown for correct code. For mobile optimization, see our [Wix Embed Best Practices](/forms/wix-embeds) guide.
Share your form without embedding it on your website:
1. Navigate to the **Share** tab in your form editor
2. Customize your landing page headline and subheadline
3. Copy your share link or use the QR code for offline materials
4. Share via social media, email, or SMS
**Perfect for:**
* Instagram link-in-bio (since Instagram doesn't allow clickable post links)
* Social media campaigns
* Print materials with QR codes
* Quick client sharing via text or email
Share links create a professional Flashquotes-hosted page that matches your branding and includes SEO optimization.
## Best Practices
1. Keep questions minimal
2. Test form on mobile devices
3. Set appropriate redirect URLs
4. Configure Instant Quoting carefully
5. Monitor conversion rates
6. Review form analytics regularly
## Next Steps
After setting up your lead form:
* [Configure booking form](/forms/booking)
* [Set up share links](/forms/share-links) for social media and Instagram
* [Set up Instant Pricing](/contacts/instant-pricing)
* [Check platform compatibility](/forms/compatibility)
* [Monitor contacts](/contacts)
* Track conversion rates
* Optimize form performance
# Real-Time Availability
Source: https://docs.flashquotes.com/forms/real-time-availability
Learn how the real-time availability feature helps customers understand your booking status
## Overview
The Real-Time Availability feature provides instant feedback to potential customers about your availability for their desired event dates. This helps set expectations early in the inquiry process and saves you time by reducing requests for dates when you're already fully booked.
## How It Works
When browsing dates on your form, customers will see visual indicators of your availability:
* **Available dates**: Dates when you have capacity for new bookings
* **Limited availability**: Dates when you're approaching capacity or have blocked dates
After selecting a date, customers see clear availability messages:
Even when dates show limited availability, customers can still submit requests, but they'll do so understanding they might need flexibility.
## Availability Factors
If you've marked a date as blocked, it will automatically show as unavailable to customers.
Use blocked dates for:
* Company holidays
* Days you know you can't service events
* Maintenance periods
* Personal time off
To manage blocked dates, use the [Calendar](/calendar) feature to mark dates as unavailable.
The system determines availability by analyzing:
* How many total resources you have available
* How many resources are already committed to other events on that date
**Example scenarios:**
* If you have 4 carts total, and 2 are already booked for a date, that date will show as available (green)
* If all 4 carts are booked, the date will show as limited availability (yellow)
You can adjust your resource capacity in the [Resources](/resources) section to ensure your availability is accurately displayed.
If your business operates in multiple locations:
* You can set different resources for each location
* Availability will display based on the specific location's capacity
* Customers will see availability specific to their selected location
Make sure to properly assign resources to each location in your [Settings](/settings) to ensure accurate availability display.
## Setting Up For Success
Make sure your total available resources reflect your actual capacity. If you hire more staff or add equipment, update your [resources](/resources) accordingly.
Keep your calendar up-to-date by:
* Blocking off dates when you know you won't be available
* Ensuring events have the correct number of resources assigned
* Regularly reviewing your upcoming bookings
Periodically check how your availability appears to customers:
* Test your form to see availability displays
* Verify blocked dates are showing correctly
* Ensure resource allocations are accurate
## Business Benefits
The Real-Time Availability feature provides several advantages:
* **Time savings:** Reduce time spent responding to requests for dates when you're fully booked
* **Expectation management:** Set clear expectations with potential customers from the start
* **Resource optimization:** Better manage your resource allocation across events
* **Improved visibility:** Maintain an accurate, real-time view of your availability
## Related Features
* [Lead Intake Form](/forms/lead-intake)
* [Calendar Management](/calendar)
* [Resource Management](/resources)
* [Booking Management](/bookings)
# Share Links & Hosted Forms
Source: https://docs.flashquotes.com/forms/share-links
Create professional Flashquotes-hosted pages perfect for social media, Instagram, and direct sharing
## Overview
Share links create professional Flashquotes-hosted pages for your forms. No embedding required - just share the link anywhere your customers are.
Perfect for Instagram link-in-bio since Instagram doesn't allow clickable links in posts.
## Creating a Share Link
1. Go to **Forms** and select your form
2. Click the **Share** tab
3. Customize your landing page settings
4. Copy your share link or QR code
Your form is now live at a `/f/{slug}` URL ready to share.
## Customization Options
### Landing Page Content
**Headline**: The main title visitors see when they arrive
* Keep it benefit-focused ("Get Your Custom Quote")
* Under 60 characters for best display
**Subheadline**: Supporting text under your headline
* Explain what happens next
* Build trust and set expectations
* Example: "Tell us about your event and we'll send you a personalized quote within 24 hours"
### Company Branding
Your hosted page automatically includes:
* Company logo and brand colors
* Professional Flashquotes styling
* Mobile-optimized design
* Fast loading times
## Social Media Sharing
Built-in sharing buttons for:
* **Twitter/X**: Pre-populated tweet with your link
* **Facebook**: Direct share to timeline or business page
* **Instagram**: Copy link for bio or story links
* **SMS**: Send link via text message
* **Email**: Create email with link included
## Instagram Link-in-Bio
Instagram users can only include one clickable link in their bio. Use your share link to:
1. Add your Flashquotes link to your Instagram bio
2. Post about your services with "Link in bio for quotes"
3. Drive followers directly to your quote form
4. Convert Instagram engagement into bookings
Update your Instagram bio text to include a call-to-action like "Get your event quote ↗️" to draw attention to the link.
## QR Code Generation
Every share link includes a QR code for offline marketing:
1. Click **Download QR Code** in the Share tab
2. Add to business cards, flyers, or signage
3. Customers scan to access your quote form instantly
**QR Code Uses:**
* Business cards and brochures
* Event booth displays
* Vehicle decals
* Print advertisements
## Embedded vs Hosted Forms
| Feature | Embedded Forms | Share Links |
| -------------------- | ------------------------ | ------------------------------ |
| Setup Time | Requires website editing | Instant - just copy link |
| Best For | Your own website | Social media, direct sharing |
| Customization | Limited by your site | Full control over landing page |
| Mobile Experience | Depends on your site | Optimized for mobile |
| Instagram Compatible | No | Yes - perfect for link-in-bio |
| QR Codes | Not practical | Built-in QR generation |
## SEO & Meta Tags
Share links include automatic SEO optimization:
* Proper page titles and descriptions
* Social media preview cards
* Mobile-friendly meta tags
* Fast loading for better search ranking
When shared on social platforms, your link displays with:
* Your company name and logo
* Custom headline as the preview title
* Professional preview image
## Preview Functionality
Test your hosted page before sharing:
1. Click **Preview** in the Share tab
2. View how your page appears on desktop and mobile
3. Test the form submission process
4. Make adjustments to headlines or settings
5. Publish when satisfied
## Common Use Cases
**Instagram Business**: Share link in bio, reference in posts and stories
**Wedding Vendors**: Include QR codes on vendor fair displays and business cards
**Food Trucks**: QR codes on vehicle signage for instant quote requests
**Event Planners**: Send direct links to potential clients via email or text
**Corporate Services**: Professional sharing for B2B quote requests
## Best Practices
1. **Keep headlines clear**: Focus on the benefit customers receive
2. **Test on mobile**: Most social traffic comes from mobile devices
3. **Update regularly**: Refresh headlines to match current promotions
4. **Use QR codes strategically**: Place them where customers have time to scan
## Next Steps
After setting up your share link:
* Add it to your Instagram bio
* Include QR codes in marketing materials
* Share on social media platforms
* [Track your pipeline](/pipeline) to monitor conversions
* [Configure Instant Quoting](/forms/lead-intake#instant-quoting) for faster conversions
# SMS Opt-in Collection
Source: https://docs.flashquotes.com/forms/sms-opt-in
Configure SMS consent collection in your lead intake forms
## Overview
Many CRMs and SMS automation tools require explicit consent before sending text messages. Flashquotes helps you capture that consent during lead intake, keeping you compliant while expanding your communication channels.
## Setup
1. Open your lead intake form editor
2. Click **Add question** on any page
3. Select **SMS Opt-in** from Connected Questions
The question is automatically placed on the Contact Details page (the page with your phone number field). A checkbox appears asking "Can we text you?" with customizable consent language.
SMS opt-in requires a phone number field on your form. If you don't have one, the question will be added to your selected page instead.
## Customization
Select the SMS Opt-in question to customize:
* **Question title** - Change "Can we text you?" to match your brand voice
* **Consent text** - Update the acknowledgement checkbox text for compliance
## Contact Management
Contacts who opt in display a green "SMS" badge next to their phone number. This makes it easy to identify contacts who can receive text messages.
## Removing SMS Opt-in
To remove SMS opt-in from your form, click the kebab menu (⋮) on the SMS Opt-in question and select **Delete**.
# Wix Embed Best Practices
Source: https://docs.flashquotes.com/forms/wix-embeds
How to successfully embed Flashquotes forms on Wix websites, including mobile optimization and workarounds for platform limitations
## Overview
Wix has technical constraints that affect how embedded forms display, especially on mobile devices. This guide covers best practices for embedding Flashquotes forms on Wix sites and solutions to common issues.
Wix enforces a 320px width limit on mobile iframes and uses sandboxed rendering that can break responsive design. Test your embed on mobile before going live.
## Known Wix Limitations
### Mobile Display Issues
Wix's mobile rendering differs from other website builders:
* **320px width constraint**: All mobile content displays at 320px width regardless of device capabilities
* **Non-responsive preview**: Chrome Developer Tools cannot accurately preview Wix mobile layouts
* **Sandboxed iframes**: Wix wraps embeds in an additional iframe that prevents natural responsive behavior
* **Fixed height containers**: Dynamic height adjustments may not work as expected
### What This Means for Your Forms
* Multi-step forms may appear cramped on mobile
* Form fields might not scale properly
* Scrolling within the iframe may be required
* Dynamic height changes between form steps may not function
## Recommended Approach: Mobile Button Alternative
For the best user experience, use a hybrid approach:
### Desktop: Full Embed
Embed your Flashquotes form normally for desktop users where space isn't constrained.
### Mobile: Link to Hosted Form
Replace the iframe with a button that links to your form's Share Link.
**Implementation steps:**
1. Generate a [Share Link](/forms/share-links) in your Flashquotes dashboard
2. In Wix's mobile editor, [hide the HTML iframe element](https://support.wix.com/en/article/wix-mobile-apps-showing-or-hiding-elements-on-different-mobile-operating-systems)
3. Add a button with text like "Get Custom Pricing" or "Request Quote"
4. Link the button to your Share Link URL
This ensures mobile users get the full, responsive form experience without Wix's constraints.
**Additional Wix resources:**
* [Making your Wix site mobile friendly](https://www.wix.com/blog/how-to-make-website-mobile-friendly)
* [Wix's guidance on mobile embeds](https://support.wix.com/en/article/wix-editor-adding-embeds-and-custom-elements-to-your-mobile-site) (recommends hiding iframes on mobile)
**Video tutorial: How to fix iframes on Wix mobile**
## If You Choose to Embed on Mobile
If you prefer to keep the iframe embed on mobile, follow these optimization steps:
* Ensure the embed code is wrapped in a div with at least 320px width and 650px height
* Test the embed on actual mobile devices, not just Wix's mobile preview
## Google Analytics and Ad Tracking
Wix's sandboxed iframe also prevents your embedded form from reading the visitor's original traffic source, so Google Analytics records form events as `direct` instead of the campaign or Google Ads click that drove the visit. If you track conversions with Google Analytics, add the Flashquotes attribution script to your Wix header.
Add one script to your Wix site's header so form events are attributed to the right source instead of `direct`.
## Next Steps
After setting up your Wix embed:
* [Configure form settings](/forms/lead-intake)
* [Create Share Links](/forms/share-links) for mobile users
* [Test platform compatibility](/forms/compatibility)
* Monitor form submissions in [Contacts](/contacts)
# Export Bookings to CSV
Source: https://docs.flashquotes.com/imports-exports/export-bookings
Export confirmed booking data with event details, client information, and revenue metrics
## Overview
Export your confirmed bookings to CSV format for financial reporting, client management, and operational planning. The export includes comprehensive booking information including event details, client contact data, service selections, and revenue metrics.
## How to Export Bookings
Go to the [Bookings](https://app.flashquotes.com/bookings) page in your Flashquotes dashboard.
Click the **Export to CSV** button in the top toolbar.
Your browser will automatically download a CSV file containing your bookings (maximum 2,000 records) with all their associated data.
## What's Included
The booking export includes the following columns:
* Booking ID
* Booking Date
* Created At
* Booking Status (Active or Cancelled)
* Cancelled Date
* Event Count
* First Service Date
* Last Service Date
* Location(s)
* Client Name
* Client Email
* Company Name
* Lead Source
* Total Price
* Payment Method
* Payment Status (Paid, Partial, or Unpaid)
* Invoice Status
## Common Use Cases
### Financial Reporting
Import booking data into accounting software or spreadsheets to:
* Generate revenue reports by period
* Track deposit collection rates
* Analyze revenue by location or lead source
* Forecast cash flow
### Operational Planning
Use exports for logistics and scheduling:
* Create staff assignment schedules
* Plan equipment allocation
* Track venue utilization
* Manage inventory needs
### Client Relationship Management
Export booking history to:
* Maintain client records in external CRM systems
* Track repeat customer patterns
* Identify upsell opportunities
* Generate anniversary reminders
## Export Limits
Exports are limited to 2,000 bookings per export to ensure optimal performance. For larger datasets, apply filters (such as a date range or booking status) and export in batches.
## File Format
The CSV file follows RFC 4180 standards:
* UTF-8 encoding
* Comma-separated values
* Double-quoted text fields
* Header row with column names
* Compatible with Excel, Google Sheets, and all major data tools
## Troubleshooting
Ensure you have the appropriate permissions. Booking exports require Admin or Member role access.
If special characters appear incorrectly:
1. Open Excel first
2. Use Data → Import from Text/CSV
3. Select UTF-8 encoding
4. Choose comma as delimiter
Check your active filters — the export respects all current filters including:
* Date range
* Booking status
* Location
## Related Articles
* [Imports & Exports Overview](/imports-exports/overview)
* [Export Contacts](/imports-exports/export-contacts)
* [Managing Bookings](/bookings)
# Export Contacts to CSV
Source: https://docs.flashquotes.com/imports-exports/export-contacts
Export your contact data for marketing automation, analytics, and Google Ads conversion tracking
## Overview
Export your contact data to CSV format for use with email marketing platforms, Google Ads conversion tracking, business analytics tools, and more. The CSV export includes comprehensive contact information and calculated metrics to help you analyze and act on your sales pipeline.
## How to Export Contacts
Go to the [Contacts](https://app.flashquotes.com/contacts) page in your Flashquotes dashboard.
Click the **Export CSV** button in the top toolbar. The button appears next to the filters.
Your browser will automatically download a CSV file containing your contacts (maximum 2,000 records) with all their associated data.
## What's Included
The contact export includes the following columns:
* First Name
* Last Name
* Company Name
* Email
* Phone
* Lead Source
* SMS Opt-In
* Open Inquiries (quotes not yet sent)
* Open Quotes (quotes sent but not booked or expired)
* Event Date(s) (date range from open quotes)
* Event Value (price range from open quotes)
## Common Use Cases
### Email Marketing Integration
Upload your contact export to email platforms like Mailchimp, Klaviyo, or HubSpot to:
* Create targeted campaigns for unconverted contacts
* Send follow-up sequences based on quote status
* Segment by event date or lead source
### Google Ads Conversion Tracking
Use the export to optimize your ad campaigns:
* Upload converted contacts as conversions in Google Ads
* Create lookalike audiences from booked customers
* Exclude existing contacts from prospecting campaigns
### Business Analytics
Import data into Excel, Google Sheets, or BI tools to:
* Analyze conversion rates by source
* Track seasonal trends
* Measure sales team performance
* Forecast future bookings
## Export Limits
Exports are limited to 2,000 contacts per export to ensure optimal performance. For larger datasets, consider:
* Filtering by date range before exporting
* Exporting in batches
* Using the API for programmatic access (Scale plan)
## File Format
The CSV file follows RFC 4180 standards:
* UTF-8 encoding
* Comma-separated values
* Double-quoted text fields
* Header row with column names
* Compatible with Excel, Google Sheets, and all major data tools
## Troubleshooting
Ensure you have the appropriate permissions. Contact exports require Admin or Member role access.
If special characters appear incorrectly:
1. Open Excel first
2. Use Data → Import from Text/CSV
3. Select UTF-8 encoding
4. Choose comma as delimiter
Check your active filters - the export respects all current filters including:
* Date range
* Contact status
* Assigned user
* Search terms
## Related Articles
* [Imports & Exports Overview](/imports-exports/overview)
* [Export Bookings](/imports-exports/export-bookings)
* [Contacts](/contacts)
* [Workflow Automation](/workflows/overview)
# Export Quotes to CSV
Source: https://docs.flashquotes.com/imports-exports/export-quotes
Export your quote data — open, booked, and lost — to analyze inbound inquiries, conversion, and win/loss by source
## Overview
Export your quotes to CSV format for marketing analysis, conversion tracking, and business intelligence. The export includes one row per quote — open, booked, and lost — with event types, sources, addresses, and quote values, so you can see where inquiries come from and which ones turn into bookings.
## How to Export Quotes
Go to the [Pipeline](https://app.flashquotes.com/pipeline) page in your Flashquotes dashboard. Apply any filters first. The export matches your current filters and sort, with no implicit date window.
Click the **Export CSV** button in the top right of the header, next to **New quote**. Exporting is available on desktop.
Pick which columns to include. The **Include booked and lost** toggle (on by default) keeps closed-out quotes in the file for win/loss analysis — switch it off to export only open quotes.
Your browser will automatically download a CSV file containing your quotes (maximum 2,000 rows).
## What's Included
Each row is a single quote. These columns are included by default:
* First Name
* Last Name
* Company Name
* Email
* Phone
* Source
* Event Type
* Stage
* Quote Date
* First Event Date
* Guest Count
* Quote Value
And these are available as opt-in columns:
* Company Location
* Lead Owner
* Event Address
* Services
* Add-ons
* Staff Count
* Resource Count
* Sent Date
* Expiry Date
* Booked Date
* Lost Date
* Lost Reason
* Quote ID
## Export Scope
* **Filters and sort carry over** — the export matches exactly what you've filtered the Pipeline to, in the same order. **Needs attention** sort is honored server-side, so the file ranks quotes the same way the board does.
* **No implicit date window** — the export covers every quote matching your active filters. Add a created-date filter to narrow the range.
* **Booked and lost quotes** are included by default via the **Include booked and lost** toggle in the export dialog footer. Switch it off to export only open quotes.
## Common Use Cases
### Marketing Attribution
Analyze your inbound quote data by where it came from:
* Measure inquiry volume and booking rate by source
* Compare quote values across marketing channels
* Identify which channels bring high-intent inquiries
### Win/Loss Analysis
Export with booked and lost quotes included to:
* Track conversion rates by event type or source
* Review lost reasons to spot patterns (price, availability, timing)
* Compare won vs. lost quote values
### Demand Planning
Use event details to plan ahead:
* Break down demand by event address, city, or venue
* Track guest counts and staffing needs by season
* Forecast busy periods from first event dates
## Export Limits
Exports are limited to 2,000 quotes per export to ensure optimal performance. For larger datasets, add a created-date filter and export in batches.
## File Format
The CSV file follows RFC 4180 standards:
* UTF-8 encoding
* Comma-separated values
* Double-quoted text fields
* Header row with column names
* Compatible with Excel, Google Sheets, and all major data tools
## Troubleshooting
The Export CSV button appears in the Pipeline header on desktop only — it isn't available on mobile.
If special characters appear incorrectly:
1. Open Excel first
2. Use Data → Import from Text/CSV
3. Select UTF-8 encoding
4. Choose comma as delimiter
Check your export scope — the export respects:
* All active Pipeline filters (date range, source, event type, location, owner)
* The **Include booked and lost** toggle in the export dialog
If nothing matches your current filters, no file downloads. Widen your filters or date range and try again.
## Related Articles
* [Imports & Exports Overview](/imports-exports/overview)
* [Export Contacts](/imports-exports/export-contacts)
* [Export Bookings](/imports-exports/export-bookings)
* [The Pipeline](/pipeline)
# Import Bookings from CSV
Source: https://docs.flashquotes.com/imports-exports/import-bookings
Bulk import up to 100 bookings at once using a CSV template
## Overview
Import multiple bookings at once when migrating from another system or adding historical data. You can import up to 100 bookings per file.
## How to Import Bookings
Go to [Bookings](https://app.flashquotes.com/bookings) and click **Import from CSV**. Download the template. It has the 9 required columns plus two example rows. Add optional columns yourself if you need them.
Add your bookings to the template. Each row is one booking. Keep the header row unchanged.
Upload your CSV. The system will show a preview. Map any columns that don't match automatically.
Fix any errors shown in red before importing. Common issues are date/time formats and missing required fields.
Click **Import**. The process runs in the background, processing 5 bookings at a time.
## What Happens After Import
* You'll see a results page with success/failure counts
* Successfully imported bookings appear in your bookings list
* Timeline entries are created automatically
* Event brief tasks trigger if configured
* No email notifications or webhooks are sent (to prevent duplicates)
## Required Fields
All bookings must include these 9 columns:
* Full Name
* Email
* Total Price (Dollars)
* Event Date (YYYY-MM-DD format)
* Start Time (h:mm a format, e.g., 10:00 AM)
* End Time (h:mm a format)
* Number of Days (integer)
* Guest Count
* Event Address
## Optional Fields
Include these if you have the data. Leave one blank and Flashquotes uses the default shown:
* Entity to Invoice (defaults to Full Name)
* Payment Method (defaults to "Other")
* Staff Number (defaults to 1)
* Resource Number (defaults to 1)
* Location ID (defaults to your first location)
* Phone
* Special Notes
## Format Requirements
* Dates: YYYY-MM-DD (e.g., 2026-09-03) or month-first slash dates, M/D/YYYY and M/D/YY (e.g., 9/3/2026, 9/3/26)
* Slash dates are month-first: 3/9/26 means March 9, not September 3
* Dashes other than YYYY-MM-DD (e.g., 9-3-26) and impossible dates (e.g., 2/30/26) are rejected
* The upload preview shows the date it'll use, with your original entry in parentheses
* Times: h:mm a with space (e.g., 10:00 AM, 2:00 PM)
* Must use uppercase AM/PM with space before
* Number of Days: Whole number (e.g., 1, 2, 3)
* Guest Count: Whole number
* Staff Number and Resource Number: Whole numbers 1-99. Blank defaults to 1; 0 is rejected
* Total Price: Plain number, decimals OK (e.g., 1250.55 becomes \$1,250.55). No dollar signs or commas
* Total Price can be 0. Blank cells import as \$0 too, and show as a Draft invoice (for bookings you invoice outside Flashquotes)
* Negative Total Price values are rejected
* Location ID is optional. Leave it blank to use your first location (alphabetical by name)
* If you run one location, you can leave Location ID out of your file entirely
* Multi-location accounts: find IDs in Settings → Locations, which has a copy button
* A provided Location ID must belong to your account
* Event Address can be different from the location address
## Common Validation Errors
Use YYYY-MM-DD (2026-09-03) or M/D/YYYY and M/D/YY (9/3/2026, 9/3/26). Dashes other than YYYY-MM-DD, like 9-3-26, don't work. Neither do impossible dates like 2/30/26.
Times need space before AM/PM. Use "10:00 AM" not "10:00AM". Must be lowercase h:mm a format.
Number of Days, Guest Count, Staff Number, and Resource Number must be whole numbers. No decimals.
Location ID is optional. A blank cell is fine. But if you do provide one, it must match a location in your account. Check IDs in Settings → Locations.
Total Price must be 0 or a positive number. Don't include dollar signs or commas. Negative values are rejected.
## Import Limits
Maximum 100 bookings per import. For larger datasets, split into multiple files and import in batches.
## Related Articles
* [Imports & Exports Overview](/imports-exports/overview)
* [Export Bookings](/imports-exports/export-bookings)
* [Managing Bookings](/bookings)
# Imports & Exports
Source: https://docs.flashquotes.com/imports-exports/overview
Learn how to easily import and export your data in Flashquotes
## Overview
Move data in and out of flashquotes seamlessly. Import bookings from other systems or export your contacts, bookings, invoices, and payments for analysis, accounting, and business intelligence.
## Import Your Data
Bulk import up to 100 bookings at once using CSV format
## Export Your Data
Export open, booked, and lost quotes with event types, sources, and addresses — one row per quote
Export contact data to CSV for marketing automation, analytics, and conversion tracking
Export confirmed bookings with event details, client information, and revenue data
Export invoices to CSV with configurable columns — respects your active filters
Export payment records to CSV for accounting reconciliation and reporting
## Common Use Cases
### Marketing & Sales
* Create targeted email campaigns from exported contact lists
* Upload converted contacts to Google Ads for conversion tracking
* Build lookalike audiences from your best customers
* Segment contacts by event date, lead source, or quote status
### Business Intelligence
* Analyze conversion rates and sales performance in Excel or BI tools
* Track seasonal trends and forecast future bookings
* Measure ROI across marketing channels
* Generate custom reports for stakeholders
### System Integration
* Export data to integrate with other business tools
* Maintain records across multiple platforms
* Create backups of your critical business data
## File Format Standards
All exports use CSV format following RFC 4180 standards:
* UTF-8 encoding for international character support
* Comma-separated values
* Double-quoted text fields
* Header row with descriptive column names
* Compatible with Excel, Google Sheets, and all major data tools
## Getting Help
Common issues and solutions for exports
Get help from our team with data export questions
# Inbox
Source: https://docs.flashquotes.com/inbox
Manage all your contact communications in one unified inbox
## Overview
The Inbox feature provides a centralized view of all your Gmail messages related to contacts, allowing you to manage customer communications without leaving Flashquotes. Emails are synced from your connected Gmail accounts and organized into threads for easy navigation.
The Inbox feature requires a [Plus or Pro subscription](https://flashquotes.com/pricing) and a connected Gmail account with appropriate permissions.
## Key Features
### Thread-Based Organization
Emails are automatically grouped into conversation threads, showing:
* **Subject line** from the most recent message
* **Participants** in the conversation
* **Message count** for each thread
* **Preview snippet** from the latest email
* **Timestamp** of the most recent message
* **Unread status** indicator
### Contact Integration
Each email thread displays associated contact information:
* **Contact name** and company
* **Quick access** to contact details via hover card
* **Direct link** to full contact profile
### Multi-Account Support
If you have multiple Gmail accounts connected:
* **Filter by account** to see emails from specific inboxes
* **Account indicator** shows which Gmail account received each email
* **Seamless switching** between different email accounts
### Mark as Done
Keep your inbox clean and organized:
* **One-click action** to remove emails from your inbox
* **Syncs to Gmail** - removes the INBOX label from the message
* **Reversible** - emails remain in Gmail and can be found via search
### Real-Time Sync
Your inbox stays current automatically:
* **Background sync** pulls new emails regularly
* **Label updates** sync bidirectionally with Gmail
* **Instant UI updates** when you mark emails as done
## Getting Started
### Prerequisites
1. **Subscription**: Plus or Pro plan
2. **Gmail Connection**: Connect your Gmail account in Settings → Integrations
### Accessing the Inbox
1. Navigate to **Inbox** from the main navigation menu
2. Your synced email threads will appear automatically
3. Use the account filter to switch between connected Gmail accounts
## Using the Inbox
### Viewing Email Threads
1. Threads are displayed in chronological order (most recent first)
2. Click on any thread to view the full conversation
3. Hover over the contact name to see contact details in a popup card
4. Click the contact name to navigate to the full contact profile
### Managing Your Inbox
**Mark as Done:**
1. Click the checkmark icon on any email thread
2. The thread immediately disappears from your inbox
3. The INBOX label is removed from the email in Gmail
4. The email remains searchable in Gmail
**Filter by Account:**
1. Click the account dropdown at the top of the inbox
2. Select a specific Gmail account to view only its emails
3. Select "All Accounts" to see emails from all connected accounts
## Understanding Email Sync
### What Gets Synced
The inbox syncs emails that:
* Are in your Gmail inbox
* Are associated with known contacts (matched by email address)
* Come from Gmail accounts you've connected to Flashquotes
### Email Matching
Emails are automatically matched to contacts when:
* The sender's email address matches a contact in your system
* The conversation includes emails from known contacts
## Tips and Best Practices
### Organize Your Workflow
* Use **Mark as Done** to create a zero-inbox workflow
* Handled threads disappear, keeping focus on what needs attention
* Emails remain in Gmail for reference and searching
### Multi-Account Management
* Connect multiple Gmail accounts if you use different addresses for different services
* Filter by account to focus on specific business lines
* All emails remain unified in one interface
### Contact Context
* Hover over contact names to quickly see quote history and booking status
* Click through to the contact profile for detailed conversations
* Use contact context to craft better follow-up responses
## Troubleshooting
### Emails Not Appearing
**Check these items:**
1. Gmail account is connected in Settings → Integrations
2. Emails are in your Gmail inbox
3. Sender email matches a contact in your system
### Mark as Done Not Working
**Possible causes:**
1. Missing Gmail permission - reconnect your Gmail account
2. Network connectivity issues - try refreshing the page
3. Gmail API rate limits - wait a few minutes and try again
### Sync Delays
**What to check:**
1. Background workers may take a few minutes to sync new emails
2. Large email volumes may take longer to process
3. Gmail API quotas may temporarily delay syncing
## Related Features
* [Gmail Integration](/settings/integrations/google-gmail-read) - Set up full Gmail sync
* [Workflows](/workflows/overview) - Automate follow-up emails
* [Contacts](/contacts) - View and manage everyone you've quoted or booked
# Introduction
Source: https://docs.flashquotes.com/introduction
Flashquotes helps event businesses manage their entire workflow - from lead capture through event delivery and payment. This documentation will help you get started and make the most of the platform.
## Quick Setup
Automatically pre-build draft quotes from your leads - just review and send
## Core Features
Track quotes through your pipeline, manage contacts, and convert prospects into bookings
Manage events, timelines, and event briefs for successful delivery
Configure lead intake and booking forms for your business
Manage your team and equipment effectively
Track performance with powerful reporting and visualizations
## Key Workflows
The complete sales process:
* [Inquiry capture](/contacts)
* [Quote creation](/contacts/quotes)
* [Quote delivery](/contacts/sending-quotes)
* [Booking confirmation](/bookings)
Successful event execution:
* [Event planning](/events)
* [Timeline management](/events/timeline)
* [Event briefs](/events/event-brief)
* [Staff coordination](/staff)
Make sure you get paid:
* [Invoice creation](/invoices)
* [Deposits and invoice payments via Stripe](/introduction#payment-processing)
* [QuickBooks sync](/settings/integrations/quickbooks)
All payment processing is handled securely through Stripe.
## Configuration
Configure your company information and core settings
Customize your forms and client-facing elements
Connect with QuickBooks, Zapier, and more
Configure service add-ons and pricing options
## Getting Started
1. Start with our [Quickstart guide](/quickstart)
2. [Share your lead intake form](/forms/share-links) or [embed it on your website](/forms/lead-intake)
3. Set up your [company branding](/settings/branding)
4. Add your [staff](/staff) and [resources](/resources)
## Need Help?
Contact our support team for assistance
Access our API documentation for custom integrations
# Invoices
Source: https://docs.flashquotes.com/invoices
Learn how to create, manage, and track invoices and payments in Flashquotes
## Overview
The Invoices section in Flashquotes provides comprehensive tools for managing your billing and payments. Integrated with Stripe, it offers features for creating invoices, processing payments, handling refunds, and generating financial reports.
## Dashboard Overview
The invoice dashboard displays:
* Total unpaid invoices
* Overdue invoices count
* Total payments received (last 30 days)
* Payment status summaries
Filter and search your invoices from the dashboard:
* **Status filters**: Select one or more statuses — Open, Pending, Paid, Overdue, or Voided
* **Due date range**: Narrow results to a specific date window
* **Full-text search**: Search across invoice details to find what you need fast
* **Sortable columns**: Click any column header to sort ascending or descending
Filters persist while you work, so you won't lose your view when switching between invoices.
Export your invoices list to a spreadsheet for reporting or reconciliation:
1. Apply any filters you want — only filtered results are exported
2. Click **Export CSV**
3. Choose which columns to include
4. Download and open in Excel, Google Sheets, or any spreadsheet tool
Filter by status or date range before exporting to get exactly the data you need.
## Invoice Management
### Creating and Editing Invoices
One booking can have multiple invoices, each with its own recipient, due date, payments, and reminders. Open the booking or event's **Billing** tab and click **New invoice** to add one, or use an invoice row's **Duplicate invoice** action to reuse its charges.
See [Multiple invoices per booking](/invoices/multiple-invoices) for the full walkthrough.
Customize invoices with:
* Entity information
* Email recipients
* Due dates
* Tax rates
* Purchase order numbers
* Customer notes
* Line item tax settings
* Custom pricing
* Discounts
Modify existing invoices by:
* Adding new services
* Adjusting quantities
* Updating pricing
* Including additional line items
Changes can be made even after the initial booking is confirmed.
Attach an existing discount to any single line item from the line-item editor's **Discount** picker, or select **+ New discount** to create one inline (it auto-applies). Use **Manage discounts** to jump to Settings → Discounts.
* Line-item discounts apply **before** any order-level discount and floor at \$0.
* Gratuity is never discounted.
* Discounted amounts flow through totals, taxes, and QuickBooks sync — QuickBooks invoice lines receive the discounted amount so totals reconcile.
* Customers see the original price with a strikethrough next to the discounted "now" price and the discount name on the booking summary, quote view, payment page, and both PDFs.
See [Per-line-item discounts](/contacts/quotes#per-line-item-discounts) for the full walkthrough.
### Changing Bill-to Details
To bill a different person or company, open the invoice and edit the name and email under **Invoice settings → Bill to details**. Changes save when you click away and apply only to that invoice. The booking contact and other invoices stay as they are.
Invoice emails, automated [invoice reminders](/invoices/reminders), and payment receipts use the invoice's bill-to email. Changing the booking contact preserves saved invoice bill-to details; older invoices without them fall back to the booking's billing name and current contact email.
To move the whole booking to another contact, see [Changing the booking contact](/bookings#changing-the-booking-contact).
### Add a tip after the event
To collect a tip once the event is over, edit the existing invoice on the booking. Flashquotes doesn't generate a standalone Stripe payment link for tipping, and customers can't choose an arbitrary tip amount on their own after booking.
1. Open the invoice you want to add the tip to from the booking's **Billing** tab.
2. Edit the booking's **Tip amount** field, or add a **Gratuity** line item to the invoice for the amount you want to collect.
3. Save the invoice so the new total and remaining balance recalculate.
4. Re-send that invoice's link to the customer using **Send invoice** or **Share invoice link**.
5. The customer pays the updated balance on the same invoice payment page.
The tip amount you enter is the amount the customer will pay. There is no self-service flow for a customer to pick a tip amount after the booking is complete — you set the amount on the invoice first.
Gratuity captured through the booking form is covered in [Booking Flow](/contacts/booking-flow). For how gratuity is surfaced to staff on the event brief, see [Gratuity Visibility](/events/event-brief#gratuity-visibility).
### Invoice Reminders
Flashquotes offers tools to remind customers about their outstanding invoices:
* Automatic email reminders on a predefined schedule
* Manual one-off reminder emails
* Customer payment links accessible from confirmation pages
For detailed information on setting up and using invoice reminders, see the
[Invoice Reminders](/invoices/reminders) page.
## Payment Processing
### Payment Breakdown
The invoice view displays a detailed breakdown of all payments made toward the invoice:
* **Payment history**: Each payment shows the date, method, and amount paid
* **Card details**: Stripe payments display the card brand and last 4 digits (e.g., Visa •••• 4242)
* **Payment status**: Clearly distinguishes between pending and completed payments
* **Receipt links**: Payments made through Stripe include a clickable receipt link — click the payment amount to view the Stripe receipt
* **Refunds**: Refunded amounts appear in the breakdown with negative values
The payment breakdown is also included when customers download or print the invoice PDF, making it easy for them to maintain records.
### Payment Options
Accept payments through:
* Stripe Link (one-click payments)
* Credit/debit cards
* Stripe Bank Transfer
* Manual payment recording
* Scheduled payments
Bank transfers do not settle immediately and show pending status while processing.
Record payments received through:
* Check
* Bank transfer
* Cash
* Other
You can add a partial invoice payment by clicking the `Add Installment` button in the invoice *Payment Schedule* table. The table shows all existing payments alongside future expected payments, including the remaining balance, so you always have a complete picture of the payment timeline.
Scheduled installments will then be available for customers to select and pay from the invoice payment page. If they'd rather, customers can opt to pay the remaining balance.
Use payment installments to easily allow customers to make partial payments on their invoices.
For comprehensive payment terms configuration including deposits, invoice due dates, and more, see our [Booking Flow guide](/contacts/booking-flow).
## Financial Reporting
### Tax Reports
For detailed tax reporting and analysis:
Go to **Reports → Sales tax** to see total sales, taxable amounts, and tax collected, broken down by tax rate. [Learn more about the Sales Tax report →](/reports/sales-tax)
### Performance Analytics
Track financial performance and customer behavior with the [Reports dashboard](/reports):
* **[Average Gratuity Analysis](/reports#average-gratuity)** - Understand tipping patterns and optimize gratuity settings
* **[Top Clients by Revenue](/reports#top-clients-by-revenue)** - Identify your most valuable customers
* View comprehensive revenue trends and business analytics
## Stripe Integration
* Process all transactions through Stripe
* Handle refunds within Flashquotes
* View payment history
* Access detailed transaction records
All financial transactions are processed through Stripe's secure platform.
## Invoice Sharing
### Distribution Options
1. Email directly through Flashquotes
2. Share invoice links
3. Generate PDF versions
4. Send payment reminders
## Best Practices
1. Regularly review overdue invoices
2. Set consistent payment terms
3. Keep tax settings updated
4. Monitor payment processing methods
5. Maintain accurate customer information
## Next Steps
After mastering invoices:
* [Configure forms](/forms)
* [Set up payment reminders](/invoices/reminders)
* Establish follow-up procedures
* Review financial reporting needs
# Multiple Invoices per Booking
Source: https://docs.flashquotes.com/invoices/multiple-invoices
Create separate invoices for one booking, with independent recipients, due dates, payments, and reminders.
Keep separate charges under the same booking. Use additional invoices for extras added after booking, different billing recipients, or charges due on different dates. Each invoice has its own number, bill-to details, due date, payments, reminders, and PDF.
To collect a deposit and balance toward the same invoice, use a [payment schedule](/invoices#payment-options). Create another invoice when you need a separate bill.
## Create an Additional Invoice
Open the booking or one of its events, then select **Billing**. The **Invoices** table lists each invoice's total, balance due, status, number, bill-to details, and due date.
Click **New invoice** and choose the **Due date**. Flashquotes suggests the oldest active invoice's due date, or today if that date has passed. You can choose a different date.
Click **Create invoice**. The new, empty invoice opens in the editor. Add line items and configure its taxes, discounts, and service charges as needed.
Review **Bill to details**, the due date, and the total. Click **Send invoice** to email it, or use **Share invoice link** to copy its payment link.
An empty invoice starts as **Draft**. Its status updates as you add charges and receive payments; there is no separate finalize step. A free or fully discounted invoice with line items and no balance is **Paid**.
Additional invoices start blank. They do not move line items or payments from an existing invoice. If you are dividing an existing bill, adjust its line items too so you don't bill the same amount twice.
## Bill a Different Person or Company
Open the invoice and edit the name and email under **Invoice settings → Bill to details**.
* A new blank invoice starts with the booking's billing name and contact email.
* Each invoice can have a different bill-to name and email without changing the booking contact or the other invoices.
* Invoice emails, automated reminders, and payment receipts use that invoice's recipient. The payment page and PDF also show its bill-to details.
* Changing the booking contact preserves bill-to details already saved on invoices. Older invoices without saved bill-to details use the booking's billing name and current contact email as fallbacks.
For example, keep the event planner as the booking contact while billing a company's accounts payable team for one invoice and a sponsor for another.
## Duplicate an Invoice
To reuse charges within the same booking:
1. In **Billing**, open the invoice row's menu and select **Duplicate invoice**. You can also choose **Duplicate** from the invoice editor's **More actions** menu.
2. Review the due date, which starts with the source invoice's date.
3. Click **Duplicate invoice**. The copy opens with a new invoice number.
4. Adjust the charges and recipient before sending.
The copy keeps line items, quantities, pricing, tax settings, discounts, service charges, bill-to details, PO number, and customer notes. Payments and payment schedules are not copied. The duplicate gets its own reminder schedule based on its due date and your reminder settings.
## Manage Payments and Due Dates
Click any invoice row to open its editor. Record payments, add installments, and review payment history on the specific invoice being paid. Payments apply to that invoice only.
From an invoice row's menu, you can send the invoice, change its due date, download its PDF, view its customer payment page, or share its link. You can also click the pencil beside the due date to change it.
### Automatic Reminders
When [automatic invoice reminders](/invoices/reminders) are enabled, each new invoice gets its own schedule tied to its due date. Reminders use the invoice's current bill-to email when they send.
* Changing one invoice's due date updates only that invoice's reminders.
* Reminders are skipped when there is no balance to collect, the invoice is voided or deleted, the booking is canceled or deleted, or the reminder schedule is no longer active. See [all automatic skip conditions](/invoices/reminders#when-reminders-are-automatically-skipped).
* Adding or editing line items does not restart the reminder schedule. Use **Send invoice** if you need to follow up manually after adding charges.
### Rescheduling an Event
When you reschedule an event, the booking's active invoice due dates move by the same number of days, preserving the spacing between them. For example, moving the event seven days later moves each due date seven days later. Edit individual invoice due dates afterward if needed.
## Track the Whole Booking
Booking totals combine the active invoices. Voided and deleted invoices are excluded from those totals. If any invoice is overdue, the booking shows **Overdue**; paying one invoice does not mark the whole booking paid while another still has an outstanding balance.
The **Invoices** table lets you sort by total, balance due, status, number, bill-to details, or due date. Booking exports include all invoice numbers on one booking row; invoice exports keep a separate row for each invoice.
### Share the Right Payment Link
Each invoice's payment link and PDF cover that invoice only. Send each recipient their specific invoice link.
The booking confirmation page shows the booking total and links to one invoice at a time, prioritizing the earliest-due invoice with a balance to collect. It does not list every invoice. Use **Send invoice** or **Share invoice link** for additional invoices.
## Copy a Booking with Its Invoices
When copying a booking, the option to copy existing invoices is selected by default when eligible invoices are available. The checkbox shows how many invoices will be copied, and the form lists their numbers and totals.
Each invoice is copied separately with a fresh invoice number and no payments. Voided and deleted invoices are excluded. Uncheck the option to enter a new amount and create one invoice instead.
## Common Questions
The booking must be active. You cannot add invoices to a canceled or deleted booking, or duplicate a voided invoice.
Yes, when that invoice has no payment history. An invoice with payment history, including failed payments, cannot be voided or deleted. Voiding keeps the invoice visible in your records and stops its reminders. See [Voiding invoices](/invoices/voiding).
Customer revenue remains attributed to the booking contact. QuickBooks continues to use the booking's customer, with a separate QuickBooks invoice record for each synced invoice. Editing bill-to details does not select a different QuickBooks customer.
# Processing Refunds
Source: https://docs.flashquotes.com/invoices/refunds
Learn how to issue full or partial refunds for customer payments in Flashquotes
## Overview
Sometimes you may need to refund a payment to a customer due to cancellations, service issues, or accounting adjustments. Flashquotes makes it easy to process refunds through its Stripe integration, providing multiple ways to access the refund functionality.
## Accessing Refund Options
Go to **Payments** in the sidebar.
Find and click on the specific payment you need to refund. This will
open a Stripe modal with complete payment details.
The payment list includes key information like payment date, amount,
and customer name to help you identify the correct transaction.
In the Stripe modal, locate and click the **Send Refund** button.
Choose between issuing a **full refund** or a **partial refund**. If
selecting a partial refund, enter the specific amount to refund.
Refunds can take 5-10 business days to appear in your customer's
account, depending on their payment method and banking institution.
Navigate to the **Invoices** section and locate the specific invoice
containing the payment you need to refund.
Click on the invoice to open its detail page.
Scroll down to the **Payment Activity** table section, which lists all
transactions associated with this invoice.
Find the payment you need to refund and click the **Show Details**
button next to it.
In the Stripe payment detail modal that appears, click the **Send
Refund** button and follow the prompts to complete the refund process.
You can include a note with the refund to document the reason, which
will be stored in your transaction history.
## Refund Types
A full refund returns the entire payment amount to the customer.
When you provide a refund to a customer in Stripe, the original processing fees are not reversed or returned.
Partial refunds return only a portion of the original payment amount. To issue a partial refund, click the **Send Refund** button in the Stripe modal and edit the amount to refund.
You can issue multiple partial refunds up to the total amount of the
original payment.
## Refund Processing
Refunds are processed through Stripe, which may take 5-10 business days to
appear in your customer's account. See [Stripe's documentation](https://support.stripe.com/questions/where-is-my-customers-refund)
for more information on the refund process.
## Invoice Status After Refunds
When you refund the full net payment amount, the invoice status changes to "Refunded".
Refunded invoices:
* Don't count toward outstanding amounts
* Don't appear in overdue totals
* Keep your financial summaries accurate
Partial refunds don't change the invoice status. Only full net payment refunds mark an invoice as "Refunded".
## Related Resources
* [Invoice Management](/invoices)
* [Stripe Integration](/settings/integrations/quickbooks)
# Invoice Reminders
Source: https://docs.flashquotes.com/invoices/reminders
Learn how to set up and manage automated and manual invoice reminders in Flashquotes
## Overview
Invoice reminders help ensure timely payments from your clients. Flashquotes offers both automated reminder emails and manual reminder options, giving you flexibility in how you follow up on unpaid invoices.
## Customer Payment Access
Every invoice in Flashquotes has its own payment link. Use **Send invoice** or **Share invoice link** to send the specific invoice to its recipient. The booking confirmation page links to one invoice at a time, prioritizing the earliest-due invoice with a balance to collect; it does not list all of a booking's invoices.
## Automated Reminder Emails
### Enabling Automated Reminders
To set up automated invoice reminders:
1. Navigate to **Settings** > **Invoices**
2. Find the **Automatic invoice reminders** toggle
3. Switch the toggle to **On**
Automated email reminders only apply to new invoices created after enabling
this feature. Turning off automatic reminders removes them from all invoices.
Automatic reminders are a company-wide setting — they can't be turned on or
off for an individual invoice.
### Default Reminder Schedule
When enabled, Flashquotes will automatically send reminder emails based on the following schedule:
| Reminder | Timing |
| ---------- | --------------------- |
| Reminder 1 | 1 day before due date |
| Reminder 2 | On the due date |
| Reminder 3 | 2 days after due date |
Reminders use the invoice's current **Bill to details** email when they send.
Changing the booking contact preserves saved invoice recipients. Older invoices
without a saved bill-to email use the booking's current contact email.
### Multiple Invoices on a Booking
Each new invoice gets its own reminder schedule when automatic reminders are enabled. Reminders follow that invoice's due date and recipient.
* Changing a due date updates only that invoice's reminders.
* Each reminder is checked again before sending. See [When reminders are automatically skipped](#when-reminders-are-automatically-skipped).
* Adding or editing line items does not restart reminders. Use **Send invoice** for a manual follow-up when needed.
See [Multiple invoices per booking](/invoices/multiple-invoices) for creation, billing, and payment instructions.
### When Reminders Are Automatically Skipped
Flashquotes checks the invoice and its reminder schedule when each reminder is due to send.
| Condition | What happens |
| ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **The invoice has no remaining balance** | The reminder is skipped when the balance is zero or negative. This includes fully paid invoices, empty drafts, free or fully discounted invoices, and invoices with a credit balance. |
| **The invoice was voided or deleted** | No further reminders are sent for that invoice. |
| **The booking was canceled or deleted** | Reminders stop for all invoices on that booking. |
| **Automatic reminders were turned off** | Existing reminder schedules are removed, so their remaining emails do not send. |
| **The reminder workflow or its enrollment was stopped or removed** | Reminders belonging to that inactive schedule do not send. |
| **The invoice's due date changed** | Reminders from the old schedule are discarded. A new schedule follows the updated due date. |
| **That reminder was already processed** | A reminder already sent, completed, or marked failed is not sent again as a duplicate. |
These checks apply to each invoice separately. Paying or voiding one invoice does not stop reminders for another invoice on the same active booking.
Pending bank transfers and scheduled payments do not count as completed payments for this check. A reminder can still send while a payment is processing or scheduled for later. Partial payments also leave reminders active if a balance remains.
### When Reminders Are Not Scheduled
Some missing reminders were never scheduled in the first place:
* **Automatic reminders were off when the invoice was created.** Turning them on does not automatically enroll older invoices.
* **The reminder's send time had already passed when the schedule was created or recalculated.** Only upcoming reminders are added. For example, an invoice created on its due date will not receive the previous day's reminder.
* **No recipient email was available when the schedule was created.** Check the invoice's **Bill to details** and the booking contact's email.
* **The invoice or booking was already deleted, voided, or canceled, or no active reminder workflow was available.** No schedule is created for an ineligible invoice.
Past reminders are not backfilled when you add line items. Use **Send invoice** when you need to follow up manually. A reminder that was already scheduled can still arrive late after a temporary delivery problem; the past-time rule applies when creating the schedule.
An invalid email address or an email delivery error is a sending problem, rather than one of the automatic skip conditions above. Check the recipient's email and contact support if reminders still do not arrive.
### Preview Reminder Emails
You can preview how each reminder email will appear to customers:
1. Navigate to **Settings** > **Invoices**
2. Find the reminder you want to review
3. Click the **Preview email** button
This allows you to ensure your automated reminders maintain the appropriate tone and messaging for your business.
## Manual Invoice Reminders
In addition to automated reminders, you can send one-off reminders for any invoice:
1. Go to the **Invoices** page in Flashquotes
2. Select the specific invoice you want to remind about
3. Click the **Send Invoice** button
4. A preview modal will appear showing the reminder email
5. Customize the email subject if needed
6. Click **Send** to deliver the reminder to your customer
Manual reminders are particularly useful for following up on overdue invoices
that require special attention, or for invoices created before you enabled
automated reminders.
## Best Practices
* **Enable automated reminders** for a consistent follow-up process
* **Review reminder preview emails** to ensure they match your company's tone
* **Use manual reminders** for special circumstances or older invoices
* **Monitor invoice status** regularly to identify any payment issues
* **Combine with clear payment terms** set in your initial invoice
## Next Steps
After setting up your invoice reminders:
* [Configure invoice payment methods](/invoices#payment-options)
* [Set up financial reporting](/invoices#financial-reporting)
* [Learn about handling refunds](/invoices/refunds)
# Voiding Invoices
Source: https://docs.flashquotes.com/invoices/voiding
Learn when and how to void an invoice to cancel it while maintaining records for accounting
## Overview
Voiding an invoice marks it as canceled while keeping it visible in your records. This preserves your audit trail for accounting purposes while ensuring the invoice is excluded from revenue statistics and reports.
Voided invoices remain searchable and visible in your invoice list, but display a "Void" status badge.
## Void vs. Delete
Choose the right action based on your situation:
| Action | Use When | Result |
| ---------- | ------------------------------------------------------- | -------------------------------------------------- |
| **Void** | You need to cancel an invoice but want to keep a record | Invoice shows "Void" status, stays in your records |
| **Delete** | The invoice was created by mistake and never sent | Invoice is permanently removed |
**Best practice**: If an invoice was sent to a customer or referenced anywhere, void it instead of deleting. This maintains a clear audit trail.
## Requirements for Voiding
Before you can void an invoice:
* **No payment history** - The invoice must have no payment records, including failed payments
* **Not already voided** - You cannot void an invoice that's already voided
Refunding a payment does not remove its history or make the invoice eligible for voiding. Use [refunds](/invoices/refunds) to return a customer's payment.
## How to Void an Invoice
Go to **Invoices** in your Flashquotes dashboard
Locate the invoice you want to void
Click the three-dot menu (⋮) on the invoice row
Click **"Void invoice"**
Confirm your action in the modal that appears
Click on an invoice to open its detail page
Click the dropdown menu in the invoice header
Click **"Void invoice"**
Confirm your action in the modal that appears
## What Happens After Voiding
When you void an invoice:
* **Status changes** - The invoice displays a "Void" status badge
* **Excluded from statistics** - The invoice amount is excluded from overdue totals, open amounts, and revenue reports
* **Remains visible** - The invoice stays in your invoice list and remains searchable
* **Reminders canceled** - Any scheduled payment reminders for this invoice are automatically stopped
**QuickBooks users**: Voiding an invoice in Flashquotes does not automatically void the corresponding invoice in QuickBooks. You'll need to void it separately in QuickBooks if needed.
## Can I Un-Void an Invoice?
No, voiding is permanent. Once an invoice is voided, it cannot be restored to its original state.
If you need to bill the customer again, create a new invoice with the same details.
## Related Resources
* [Invoice Management](/invoices)
* [Processing Refunds](/invoices/refunds)
* [Invoice Reminders](/invoices/reminders)
# Pipeline
Source: https://docs.flashquotes.com/pipeline
Track every open quote from new inquiry to booked in a visual pipeline
## Overview
The Pipeline is your working view of every open quote — organized into stages so you always know what needs attention next. Each card is a quote (a contact with multiple quotes appears once per quote), and cards move through the pipeline as you work them from new inquiry to booked.
The board shows open quotes from the last 90 days. A booking-rate chip in the header shows your conversion over the same window and links to [Reports](/reports) for the full breakdown.
Looking for people instead of quotes? Every client lives on the
[Contacts](/contacts) page — the Pipeline focuses on the quotes you're
working to get booked.
## Stages
Quotes move through four groups:
* **New inquiry** — quote requests that haven't been sent yet
* **Quote sent** — quotes delivered to the client, awaiting a decision
* **Booked** — quotes the client accepted
* **Lost** — quotes you've closed out
**New inquiry** and **Quote sent** appear as columns on the board. **Booked** and **Lost** are managed for you — quotes land there automatically when a client books or when you mark a quote as lost. Flip on **Show booked and lost** in the header (desktop only) to add them as read-only columns on the right of the board. Each outcome column is scoped to the past 90 days by when the quote was resolved (booked or marked lost), independent of the main board's window, and loads 25 quotes at a time with an explicit **Load *N* more** button. You can also review booked quotes on the [Bookings](/bookings) page.
Each column shows its card count and total quote value, so you can read the health of your pipeline at a glance.
### Moving quotes
Drag a card to move it between stages within the same group. Quotes advance between groups on their own — sending a quote moves it to **Quote sent**, and a booking moves it to **Booked** — so the board always reflects reality.
While dragging, a **Mark as lost** drop zone appears at the bottom of the screen. Drop a card there to close it out with an optional reason — **Price**, **Date unavailable**, **Went silent**, **Chose someone else**, or **Other**. Lost quotes are never deleted; find them anytime under the Lost filter.
### Inquiries found by Flashquotes AI
With Gmail connected, Flashquotes AI flags emails that ask for a quote for an upcoming event. Suggestions sit at the top of the default **New inquiry** column and count toward its total. Click one to review it, then build the quote or discard it. If Gmail isn't connected, the column shows a **Connect with Google** card instead.
[Set up lead detection →](/flashquotes-ai/lead-detection)
### Custom stages
Click **Edit stages** to tailor the board to how you actually work — for example, splitting **Quote sent** into "In revision" and "Verbal yes."
* Add, rename, reorder, and delete stages within **New inquiry** and **Quote sent**
* Deleting a stage prompts you to pick a destination for its quotes
* **Booked** and **Lost** are managed for you and can't be customized
On the free plan, quotes stay organized in the default stages; you can rename them, but adding stages requires Plus.
## Quote cards
Each card surfaces what you need to decide your next move:
* **Contact name** and owner avatar (click the avatar to reassign)
* **Event summary** — event type and date
* **Quote total** — including service charges, discounts, and tax
* **Latest activity** — "Sent 3 days ago," "Emailed…" — the line turns amber, then red, as a quote sits idle so follow-ups don't slip
* **Engagement icons** — email opens, quote views, and Book Now clicks
* A 🔥 flame marks **hot quotes** — the client engaged in the last 24 hours, so strike while the interest is fresh
* An **Expired** badge when the quote has passed its expiration date
Use the menu on any card to send the quote, mark it as sent, open it, change the owner, move it to another stage, or mark it as lost — without leaving the board.
## Board and list views
Toggle between the kanban **Board** and a **List** view from the header — your choice is remembered. The list shows Contact, Event, Stage, Quote, Latest activity, Engagement, and Owner columns, which is handy for scanning a large pipeline or sorting by a single column.
## Sorting and filtering
Sort the pipeline by:
* **Needs attention** (default) — most urgent first
* **Event date** — soonest first
* **Quote value** — highest first
* **Created** — newest first
### Filters
Click the dashed **Filter** button to add a filter. Once one is applied, the button becomes **Add filter** and each active filter shows as a pill you can click to edit or remove with the **×**. Filters combine, so adding more narrows the board further.
Available dimensions:
* **Quote date** — when the quote was created
* **Event date** — when the event happens
* **Source** — where the lead came from
* **Event type**
* **Location** — shown when your company has more than one
* **Owner** — shown when you can filter by owner
**Quote date** and **Event date** are independent filters. Each names its own date in its pill, and you can apply either, both, or neither at the same time — for example, "Quote date: last 30 days" plus "Event date: next 3 months" to focus on recent quotes for upcoming events.
Need this data in a spreadsheet? Click **Export CSV** in the top right of the header to download your quotes — filters and sort carry over. See [Export Quotes to CSV](/imports-exports/export-quotes).
## Creating quotes
Click **New quote** to start a quote from the Pipeline. Pick an existing contact or create a new one, choose an **event type** (required — it drives pricing and quote defaults), then build the quote. Nothing is saved until you finish, so you can back out cleanly. See [Creating Quotes](/contacts/quotes) for the full quoting guide.
## Next steps
* [Manage your contacts](/contacts)
* [Create quotes](/contacts/quotes)
* [Send quotes](/contacts/sending-quotes)
* [Track performance in Reports](/reports)
# Quickstart
Source: https://docs.flashquotes.com/quickstart
Get started with Flashquotes and set up your app for success.
## 💳 Stripe Setup
Flashquotes requires a connected Stripe account for handling payments and invoices.
1. Navigate to the [Settings](https://app.flashquotes.com/settings) page.
2. Under `General`, find the Payment Gateway section.
3. Click **Connect**.
4. Follow the instructions to connect your existing Stripe account or create a new one.
Once connected, you will see a green indicator confirming that Stripe is successfully linked.
***
## ⚙️ General Settings
Locations represent the headquarters or warehouse where your resources and team are based.
1. Go to [General Settings](https://app.flashquotes.com/settings).
2. Click the `+ Add location` button to add your locations.
3. Add as many locations as needed for your operation.
Locations will help in identifying which warehouse will be supporting an event, will be associated with your staff and resources, and can be used to build dynamic timelines so that your team always shows up on time.
In [General Settings](https://app.flashquotes.com/settings), configure default timelines for key event stages like "Loading time" and "Setup time."
These defaults are used to generate dynamic event timelines for all your events.
Have a one-off event that needs a different timeline? No worries - you can change the timeline for any specific event as needed.
Upload your logo and set a primary color in [Branding Settings](https://app.flashquotes.com/settings/branding).
* Your logo will appear on customer-facing pages like quotes and invoices.
* The primary color personalizes your app’s buttons and icons.
***
## 🚛 Resources
Add core resources like coffee carts, bar carts, vans, and trailers to link them to events in the app. This unlocks awesome features like real-time availability and insights into resource utilization.
Resources like coffee carts, bar carts, vans, or trailers can be added on the [Resources tab](https://app.flashquotes.com/services?tab=resources) under **Services & items**.
1. Click `+ Add Resource`.
2. Name and categorize the resource.
3. Assign it to a location and set its availability for events.
Missing a location when trying to add a resource? Just [add your locations](/quickstart#-general-settings) and they’ll become available for resource assignment.
***
## 👥 Staff
By adding your staff, you enable these team members to be linked to events throughout the application and help avoid double booking your staff for upcoming events.
Add your team members in the [Staff](https://app.flashquotes.com/staff) section.
* Assign roles (e.g., "Barista") and locations.
* Ensure contact information is complete for easy event coordination.
Missing a location when trying to add staff? Just [add your
locations](/quickstart#-general-settings) and they’ll become available for
staff assignment.
***
## 📋 Forms
Forms allow you to build custom and flexible experiences to collect important information from your customers. This is especially important when allowing your customers to book your services.
Configure the form used to collect customer information during the booking process.
1. Go to [Forms](https://app.flashquotes.com/forms).
2. Click on the auto-generated `New Booking Form`.
3. Update, add or delete form questions as needed.
Remember to **Publish** your form once it's ready.
Payment terms are configured directly on quotes in the Booking Flow section. See our [Booking Flow guide](/contacts/booking-flow).
Share your lead intake form on social media or embed it on your website to receive quote requests from new contacts.
1. Go to [Forms](https://app.flashquotes.com/forms).
2. Click on the auto-generated `New Lead Intake Form`.
3. Configure form questions and settings.
4. Choose how to share your form:
* **Share Link**: Click the `Publish` tab to create a shareable link perfect for Instagram link-in-bio
* **Embed on Website**: Click `Embed Form` to get the embed code for your website
5. Follow the instructions for your chosen method.
Remember to **Publish** your form once it's ready.
New to Flashquotes? Start with a [share link](/forms/share-links) - no website required! Perfect for Instagram and social media.
***
## ✅ Checklists
Saved checklists make sure your admin and event teams complete the right tasks for every event you book. Create separate defaults for internal admin work and staff-facing event briefs.
In [Checklist Settings](https://app.flashquotes.com/settings/checklists?type=admin), create your default Admin checklist. These tasks are added to the Overview section of each new event and appear in the [Events](https://app.flashquotes.com/events) section. Set how many days before the event each task is due so the team can complete it on time.
Have an event that requires a unique task? Just add or edit admin tasks in the Overview section of the event.
In [Checklist Settings](https://app.flashquotes.com/settings/checklists), create your default Event brief checklist. Its tasks are added to each new event and appear in the public event brief you share with your event team.
Each task can be assigned to a stage of the event brief, such as “Prep & Loading” or “Service,” and can include an optional quantity and unit. Drag tasks into the order your event team should complete them.
Have an event that requires a unique task? Just add or edit event brief tasks
in the Event brief section of your event.
Use Markdown in a task description to add links, emphasis, lists, or headings. For example, `[Setup guide](https://example.com)` creates a link, and `**Important**` creates bold text.
[Learn more about saved checklists →](/settings/checklists)
***
## ✨ Add-Ons
Use add-ons for all the extra services and customizations that your customers can add to their order beyond your basic service offering. These add-ons will be used throughout Flashquotes, including your quote line items, event details and event brief, invoice line items, etc.
On the [Add-ons tab](https://app.flashquotes.com/services?tab=addons) under **Services & items**, create add-on services that customers can add to their order.
1. Click `+ Create Add-On`.
2. Add a name, description, price type (e.g., "Flat Price", "Per Guest", or "Per Unit per Guest"), and price for each add-on.
The price types are especially helpful in auto-calculating the appropriate add-on price as you’re preparing quotes for your customers.
***
## 📨 Email accounts
Use our [Google Integration](/settings/integrations/google) to send emails to your customers from your own email address.
Go to [Integration Settings](https://app.flashquotes.com/settings/integrations) in Flashquotes and click **+ Add account** to get started.
***
## 🎯 Flashquotes AutoDraft
Save time with AutoDraft - automatically pre-build draft quotes from every new inquiry. [Set up AutoDraft →](/contacts/autodraft)
## 📬 Send Your First Quote
Let's walk through how to send a quote from Flashquotes.
1. Go to the [Contacts](https://app.flashquotes.com/contacts) page.
2. Click **New contact** and enter the contact's details.
3. To continue building a quote, click **Create and add quote**. If you only want to add the contact, click the dropdown arrow and select **Create and finish**.
1. From the [Pipeline](https://app.flashquotes.com/pipeline) page, click `New quote` to create a new quote.
2. Input the Address, Service Location, Date and Time and click `Create`.
3. You'll land on the quote editing screen. From here you can:
* add line items, discounts, and taxes
* add / edit details about the event service
* customize the look of the quote view
Learn how to [configure your quote template](/contacts/quote-view) for a modern, conversion-optimized experience that can boost your booking rates.
1. When you’re ready to send it, click `Send quote`. You’ll need to choose one of your booking forms to link to the *Book my event* button.
2. Click `Send`. An email version of the Quote will be sent to the contact with a link to instantly book.
3. Sit back and wait for the bookings to roll in!
***
## Questions?
Contact us at [support@flashquotes.com](mailto:support@flashquotes.com).
***
# Reports
Source: https://docs.flashquotes.com/reports
Analyze business performance with powerful reporting and visualization tools
## Overview
The Reports dashboard provides comprehensive analytics and insights into your business performance. Track revenue, monitor service utilization, analyze customer behavior, and identify trends to make data-driven decisions about your business.
## Accessing Reports
Navigate to **Reports** from the main navigation menu to access your analytics dashboard.
## Available Reports
### Service Asset Utilization
Monitor how efficiently your core service assets are being utilized over time. This visualization helps you:
* **Forecast busy periods**: Identify patterns in asset usage to predict peak demand
* **Optimize capacity**: Understand when you have available capacity for growth
* **Track quotes vs bookings**: See the relationship between quoted and confirmed events
**Key Metrics:**
* **Total Assets**: Number of core service resources in your inventory
* **Average Daily Use**: Mean number of assets in use per day
* **Busiest Day**: Peak utilization date in the selected period
The chart displays:
* **Booked Assets** (solid bars): Confirmed bookings
* **Quoted Assets** (dashed outline): Pending quotes
* **Max Capacity Line**: Your total available resources
Asset utilization is based on core service resources marked as "Affects Quote Availability" in your Resources settings.
### Average Gratuity
Analyze gratuity patterns and customer tipping behavior across your bookings. This report helps you:
* **Understand tipping trends**: See how customers respond to gratuity options
* **Optimize gratuity settings**: Adjust percentage options based on customer preferences
* **Track total tips**: Monitor gratuity revenue over time
**Key Metrics:**
* **Total Gratuity**: Combined gratuity amount from all bookings
* **Average Amount**: Mean gratuity per booking with tips
* **Participation Rate**: Percentage of customers choosing to add gratuity
The pie chart shows the distribution of gratuity percentages selected by customers, with darker colors representing higher tip percentages.
This report only includes gratuity selected through booking forms. Tips added directly to invoices or via service charges are tracked separately.
### Top Clients by Revenue
Identify your most valuable customers and understand revenue concentration. This report helps you:
* **Recognize VIP clients**: Focus retention efforts on high-value relationships
* **Analyze revenue distribution**: Understand customer concentration risk
* **Track client lifetime value**: Monitor revenue trends from repeat customers
**Key Metrics:**
* **Total Revenue**: Combined revenue from top 10 clients
* **Average per Client**: Mean revenue across displayed clients
* **Top Client Revenue**: Highest individual client contribution
The horizontal bar chart displays your top 10 clients ranked by total invoice amount, including all taxes, discounts, and service charges.
### Sales Tax
See total sales, taxable amounts, and tax collected per tax rate for any date range. [View the Sales Tax report guide →](/reports/sales-tax)
### Additional Metrics
The Reports page also displays essential business statistics:
* **Total Events**: Number of bookings in the period
* **Total Guests**: Combined guest count across all events
* **Event Duration**: Total hours of event time
* **Service Hours**: Customer-facing staff time
* **Shift Hours**: Total scheduled staff hours including setup/breakdown
* **Percent Paid**: Percentage of invoices fully paid
* **Period comparisons**: Trend indicators vs previous period
## Filtering Reports
All reports can be filtered to show specific data:
### Date Range
Select custom date ranges or use presets:
* Today
* Last 7 days
* Last 30 days
* Custom range
### Location Filter
For multi-location businesses, filter reports by:
* All locations (combined)
* Individual location
* Multiple selected locations
Use date range filters to compare seasonal trends, identify growth periods, and plan for future capacity needs.
## Best Practices
### Regular Review
* Review reports weekly to identify trends early
* Compare month-over-month metrics for growth tracking
* Export data monthly for historical records
### Data-Driven Decisions
Use report insights to:
* **Adjust pricing**: Increase rates during high-demand periods
* **Plan inventory**: Add resources before busy seasons
* **Focus marketing**: Target customer segments with highest value
* **Improve operations**: Optimize staffing based on actual usage
### Client Relationship Management
* Reach out to top clients with special offers
* Monitor changes in client spending patterns
* Identify at-risk relationships from declining bookings
Historical data accuracy depends on maintaining consistent resource settings. Changes to resource availability settings will affect future reports but not past data.
## Related Articles
* [Managing Resources](/resources) - Configure service assets
* [Understanding Invoices](/invoices) - Track payment data
* [Contacts](/contacts) - Convert prospects to clients
# Sales Tax Report
Source: https://docs.flashquotes.com/reports/sales-tax
See total sales, taxable amounts, and taxes collected for any date range
Find out how much sales tax you've collected and what you owe.
Go to **Reports → Sales tax** in the sidebar.
Looking for the old location? The sales tax report now lives under
**Reports**. It was previously found under Finance.
Before the report has anything to show, your tax rates need to be set up. This walkthrough covers creating a rate, applying it to a quote, and how it carries onto the invoice.
## What the report shows
The report shows one row per tax rate, with totals at the bottom:
| Column | What it means |
| ------------------------------- | ------------------------------------ |
| Tax name / Tax rate | The tax rate applied to the payments |
| Total collected (including tax) | Everything customers paid you |
| Total sales (excluding tax) | Collected amount minus tax |
| Taxable amount | The portion of sales subject to tax |
| Tax | Tax collected — the amount you owe |
## Filter by date
Use the **Payment date** filter to pick any range. Presets cover common periods like last month and year-to-date. The report defaults to last month.
Numbers are based on invoice payments — a sale appears here when the payment
is made, not when the invoice is sent. Platform fees paid by your customers
are excluded from the totals.
## Related Articles
* [Invoice Management](/invoices)
* [Payments](/finance/payments)
* [QuickBooks Sync](/finance/quickbooks-sync)
# Resources
Source: https://docs.flashquotes.com/resources
Learn how to manage your business assets and equipment in Flashquotes
## Overview
Resources in Flashquotes represent your physical business assets - from core service equipment to transportation vehicles. Tracking resources helps you monitor availability and assign the right equipment to events.
## Resource Categories
Resources are organized into three categories:
Primary equipment used to deliver your services:
* Coffee carts
* Mobile bars
* Service trailers
* Primary service equipment
Core resources are used for availability tracking on booking forms and the Service Asset Utilization report.
Vehicles used for event logistics:
* Vans
* Trucks
* Trailers
* Delivery vehicles
Additional equipment and assets:
* Supplementary equipment
* Backup items
* Miscellaneous assets
## Managing Resources
To add a new resource:
1. Go to **Services & items** in the sidebar, then open the **Resources** tab
2. Click **Add Resource**
3. Enter the resource details:
* **Name** - A unique identifier (e.g., "Cart One", "White Van")
* **Category** - Core Service Asset, Transport, or Other
* **Location** - Which business location this resource belongs to
* **Status** - Available or Unavailable
* **Description** - Optional details about the resource (up to 300 characters)
Consider using memorable, themed names for resources to make them easy to identify.
Upload a photo for each resource to:
* Display the resource option in resource picker questions on booking forms
* Help clients visually select their preferred service asset
* Provide visual reference when assigning resources to events
Click on any resource in the list to edit its details, update its status, or change its location assignment.
## Availability Tracking
Resources are tracked for availability based on event assignments:
* **Available status**: The resource can be assigned to new events
* **Unavailable status**: The resource is out of service and won't appear as an option for event assignment
* **Event conflicts**: When assigning resources to events, the system shows which resources are already booked for that date
Core service assets are used to calculate availability shown on booking forms. If you need accurate availability tracking, make sure to add your core resources.
## Service-Specific Resources
Resources are automatically linked to all existing services when created. To restrict a resource to specific services, configure the links from the service detail page. Go to **Services & items**, click a service, and use the **Linked Resources** section to select which resources can fulfill that service.
If no resources are linked to a service, none will count toward availability for that service.
**How links affect availability:**
* **Lead intake form date picker** — shows availability based only on linked resources for the selected services
* **Quote presentation and booking form availability badges** — reflect whether enough linked resources are free
* **Multi-day events** — the date picker checks that linked resources are available for every consecutive day, not just the start date
* **Multiple services** — when a quote includes multiple services, only resources linked to **all** selected services count
[Configure service links →](/services/core-services#service-specific-resources)
## Assigning Resources to Events
Resources can be assigned to events from the event detail page. When selecting resources:
* Only resources marked as "Available" are shown
* Resources already booked on that date are hidden to prevent double-booking
* Resources are filtered by the event's location
Assign resources to every event to keep your availability accurate and avoid overbooking.
## Resource Availability in the Quote Editor
When you're building or editing a quote, the quote editor shows resource availability for the event date so you can spot conflicts before sending the quote.
* See how many resources are free on the event date
* Catch double-bookings before they reach the customer
* Resources also show on the [calendar](/calendar#resource-availability) — use the Resources filter to focus on a single asset
## Utilization Reporting
Monitor your core service asset utilization on the [Reports](/reports#service-asset-utilization) page:
* View daily utilization across a date range
* See booked vs quoted capacity
* Identify your busiest days
* Track average daily utilization
## Best Practices
1. **Add all core service assets** to enable accurate availability tracking
2. **Keep status current** - mark resources as unavailable when they're out of service
3. **Upload photos** to help with quick identification
4. **Assign resources to events** to maintain accurate utilization data
5. **Review the utilization report** to understand capacity and plan for busy periods
## Next Steps
After setting up resources:
* [Configure booking forms](/forms) to show availability
* [Create events](/events) and assign resources
* [Review utilization reports](/reports) to monitor capacity
# Services
Source: https://docs.flashquotes.com/services
Set up and manage your core services, pricing, and add-ons
## Overview
Services are the foundation of your Flashquotes business. Configure what you offer, how you price it, and what extras customers can add.
**New to services?** Start with [Structuring Your Services](/services/structuring-services) to learn how to design services that are simple, powerful, and easy to quote.
## Quick Setup
Set up your services in 3 steps:
1. **Define core services** - Your main offerings (bar service, photo booth, etc.)
2. **Configure pricing** - Per hour, flat rate, or custom pricing models
3. **Add extras** - Upsells and add-ons to increase booking value
## Service Management
Services, add-ons, and resources all live under **Services & items** in the sidebar:
* **Services**: The first tab. Manage your core offerings here.
* **Add-ons**: The second tab. Create extras and upsells here.
How to design services that convert
Your main business offerings and service packages
Configure pricing for each service
Extra services and upsells to boost revenue
## How Services Work
**In quotes:** Customers see your services with clear pricing and descriptions. They can select add-ons and customize their package.
**In bookings:** Confirmed services transfer automatically to your calendar and event management system.
**In invoicing:** Service details flow through to invoices with accurate pricing and tax calculations.
## Getting Started
1. Start with your main service offering
2. Set clear pricing that covers your costs
3. Add 2-3 popular add-ons
4. Test with a sample quote
Services created here appear in quote generation and customer-facing forms. Make descriptions clear and pricing accurate.
## Next Steps
* [Set up core services](/services/core-services)
* [Configure pricing models](/services/pricing)
* [Create add-ons](/services/add-ons)
# Add-ons
Source: https://docs.flashquotes.com/services/add-ons
Create upsells and extras to boost booking revenue
## Overview
Add-ons are extras and upsells that customers can add to their bookings. Go to **Services & items** in the sidebar, then open the **Add-ons** tab to create and manage them. Each add-on can be configured with specific pricing models and quantity limits.
**Not sure if something should be a service or an add-on?** See [Structuring Your Services](/services/structuring-services) for guidance. In general, if a customer wouldn't book it on its own, it's an add-on.
**Common add-ons:**
* Extra hours of service
* Additional staff members
* Custom cups, sleeves, or branding
* Premium upgrades (syrups, milk options)
* Travel fees or special setup charges
## Add-on Configuration
Set up new add-ons with:
* Display name
* Description
* **Line Item Description** — how it appears on the quote and invoice. Supports rich text and [shortcodes](/workflows/shortcodes/overview) (e.g. `{{quote.guest_count}}`, `{{lead.first_name}}`) that resolve when the quote is created.
* Pricing structure
* Quantity limits (for Per unit, Per unit per hour, and Per unit per guest)
* Minimum price (optional, for variable-rate add-ons)
* Add-on image
### Quantity Limits
For **Per unit**, **Per unit per hour**, **Per unit per guest**, and **Per guest per hour** add-ons, set minimum and maximum quantity controls:
* **Min Quantity**: Enforce minimum order requirements
* **Max Quantity**: Prevent over-ordering or resource conflicts
* **Default Quantity**: Uses minimum if set, otherwise defaults to 1
**Examples**:
* Cocktail tables: Min 2, Max 10 (event space limitations)
* Bartenders: Min 1, Max 4 (staffing availability)
* Photo booth props: Min 5, Max 25 (package deals)
Quantity limits only apply to Per unit, Per unit per hour, Per unit per guest, and Per guest per hour. Flat rate and other pricing models don't use these controls. Flat and Per unit do not use minimum price.
Configure pricing models:
* **Flat rate**: Fixed price regardless of quantity
* **Per unit**: Price multiplied by quantity ordered
* **Per guest**: Price based on guest count
* **Per hour**: Price based on service duration
* **Per resource**: Price based on resources used
* **Per unit per hour**: Combined unit and hourly pricing
* **Per unit per guest**: Price per unit scaled by guest count (and number of days); quantity is applied at line level (e.g. per-guest cocktail pricing with multiple options)
* **Per guest per hour**: Price based on guest count multiplied by service duration in hours (and number of days); ideal for consumption-based add-ons that scale with both attendance and time
* **Per resource per hour**: Per-resource hourly rate, with an optional per-resource setup base and an optional per-resource-per-day minimum hours floor. Use for add-ons that scale by both resource count and time (e.g. additional bartenders billed by the hour with a setup fee per bartender). Customer-facing copy reads "\$X per hour" (with the base shown as a leading term when set) — "resource" is hidden from the lead form.
* **Tiered per guest**: Offer volume discounts on **Per guest** add-ons by setting rate bands (e.g. \$5/guest for 1–49, \$4/guest for 50–99, \$3/guest for 100+). The applicable tier is chosen based on the guest count on the quote.
### Base Price (Optional)
Every pricing model except **Flat rate** can carry an optional base price for setup, delivery, or equipment costs on top of the calculated amount. Once you enter a base price, two checkboxes appear:
* **Charge the base price per unit** — the base is added to each unit's price, so it scales with quantity. Only available on **Per unit**, **Per unit per hour**, and **Per unit per guest**.
* **Charge the base price each day** — the base is multiplied by the number of service days. Use it for costs you incur every day of a multi-day event, like daily delivery or setup.
The two combine. With both on, a \$50 base on a 3-unit, 2-day booking bills \$50 × 3 units × 2 days = \$300 before the variable rate.
Leave **Charge the base price each day** off for one-time costs. A single delivery fee on a 3-day festival should bill once, not three times.
### Minimum Price (Optional)
For variable-rate add-ons (**Per guest**, **Per hour**, **Per resource**, **Per unit per hour**, **Per unit per guest**, **Per resource per hour**), you can set an optional minimum price. If the calculated price is below this amount, the minimum is used. Leave blank for no minimum. Flat rate and Per unit do not use minimum price.
The minimum applies to the calculated amount only. The base price is added on top and is never floored by it.
Choose pricing models that align with your operational costs and market positioning.
Set how many days' notice an add-on needs before the event's first service day. Use it for add-ons that require ordering, prep, or scheduling lead time (custom cups, rented equipment, specialty staff).
Set it in the **Availability** card on the add-on create form and on the add-on detail page.
* **Range** — 1 to 365 days.
* **Optional** — leave blank for no minimum notice.
* **Clearing** — entering `0` clears the field.
On the lead intake form, an add-on is hidden when the customer's chosen event date is sooner than its minimum notice. If no event date has been picked yet, every add-on stays visible.
The same rule is enforced server-side, so a hand-crafted request that includes a short-notice add-on is rejected.
The **Price preview** panel on the add-on page shows what the add-on would cost before you use it on a real quote. Adjust quantity, guests per day, resources, hours per day, and number of days, and the price updates as you type.
* Controls only appear for the inputs your pricing model uses. A **Per guest** add-on shows guests and days; a **Flat rate** add-on shows a single fixed price.
* The breakdown shows the calculated price and the base price separately, with the factors behind each, like "3 units × 100 guests/day × 2 days × \$1.00".
* Callouts flag when a minimum price or a minimum billable hours floor changed the result.
* Tiered per-guest add-ons need at least one tier configured before the preview can run.
## Add-on Management
Manage add-on details:
* Availability status
* Display order
* Category assignment
* Required resources
Customize appearance:
* Add-on images
* Description formatting
* Feature highlights
* Upsell messaging
## Pricing Details
**Per unit per guest**: Unit price × guests × days, then × quantity (e.g. \$1 per guest per cocktail × 100 guests × 1 day = \$100 per unit; quantity 3 = \$300 total).
**Per guest per hour**: Unit price × guests × days × hours (e.g. \$2/guest/hr × 50 guests × 1 day × 4 hours = \$400).
**Per resource per hour**: (base + rate × effectiveHours × days) × resources. The optional per-resource-per-day minimum-hours floor applies to `effectiveHours` *before* the resource and day multipliers — e.g. a 2-hour floor at \$100/hr produces a \$200/resource/day minimum on the variable portion, then scales by resources and days. The per-resource setup base is added on top and is never floored by the minimum price.
**Minimum price**: If you set a minimum price, the line total will never be less than that amount for variable-rate add-ons.
### How Quantity Limits Work
**Minimum Quantity**:
* Prevents customers from ordering below your business requirements
* Automatically sets as default quantity when customers add the item
* Useful for items that require minimum orders to be profitable
**Maximum Quantity**:
* Prevents over-ordering beyond your capacity
* Helps manage resource allocation and logistics
* Protects against inventory shortages
**Common Use Cases**:
* Audio equipment: Min 1 speaker, Max 8 speakers (venue size limits)
* Linens: Min 10 napkins, Max 200 napkins (bulk order efficiency)
* Staff: Min 1 server, Max 6 servers (team size management)
## Service-Specific Add-ons
Add-ons are automatically linked to all existing services when created. To restrict an add-on to specific services, configure the links from the service detail page. Go to **Services & items**, click a service, and use the **Linked Add-ons** section to select which add-ons apply.
When a customer selects a service on a quote request form, only linked add-ons are shown. If no add-ons are linked to a service, none will appear for that service.
* **Multiple services** — the customer sees every add-on linked to any of the selected services
* **Add-on options update instantly** as customers change their service selection on forms
Add-ons that an admin has already added as line items on a quote are always shown, regardless of service links.
[Configure service links →](/services/core-services#service-specific-add-ons)
## Best Practices
1. Use clear, descriptive names
2. Set appropriate pricing models
3. Maintain accurate descriptions
4. Update availability regularly
5. Test automation workflows
## Next Steps
After configuring add-ons:
* [Review quote settings](/settings/quotes)
* [Set up integrations](/settings/integrations/overview)
* Test add-on functionality
* Monitor sales performance
# Core Services
Source: https://docs.flashquotes.com/services/core-services
Set up your main service offerings and packages
Before creating services, read [Structuring Your Services](/services/structuring-services) to understand what should be a service vs. an add-on or pricing rule.
## Create Your First Service
Go to **Services & items** in the sidebar and click **New Service**.
**Service fields:**
* **Service Name**: What customers see on quotes (e.g., "Mobile Bar Service")
* **Description**: Brief explanation for customers
* **Line Item Description**: How it appears on invoices. Supports rich text formatting and [shortcodes](/workflows/shortcodes/overview) like `{{quote.guest_count}}` or `{{lead.first_name}}` — shortcodes resolve when the quote is created.
* **Base Price**: Starting price for the service
* **Minimum Price**: Lowest acceptable price
* **Pricing Options**: Configure hourly rates and per-guest pricing
## Service Pricing Configuration
Each service can have multiple pricing components:
**Base Price**: The starting price for your service
* Sets the foundation cost
* Can be a flat fee or starting point for calculations
**Hourly Rate per Staff**: Price per hour per staff member
* Multiplied by number of staff and hours
* Great for labor-intensive services
**Price per Guest**: Additional charge per attendee
* Scales with event size
* Perfect for consumption-based services
**Minimum Price**: The lowest you'll accept
* Ensures profitability on all bookings
* Overrides calculated prices if they're too low
Your final price = Base Price + (Staff × Hours × Hourly Rate) + (Guests × Per Guest Rate), with the Minimum Price as a floor.
Make your service appealing:
* **Service Image**: Upload a high-quality photo
* **Description**: Clear, benefit-focused text
* **Line Item Description**: Professional invoice wording — supports rich text and [shortcodes](/workflows/shortcodes/overview) (e.g. `{{quote.guest_count}}`) that resolve when the quote is created
Good descriptions and images significantly improve conversion rates.
## Service Examples
**Popular service types:**
* Bar Services (mobile bar, bartending, cocktail packages)
* Photo Services (booth, photographer, instant prints)
* Catering (appetizers, full meals, dessert stations)
* Entertainment (DJ, live music, games)
* Equipment (lighting, sound, furniture)
## Service Descriptions
Write clear descriptions that sell:
✓ **Good**: "Full-service mobile bar with professional bartender, premium liquor selection, and custom cocktail menu for 4-hour events"
✗ **Too vague**: "Bar service available"
✗ **Too long**: Three paragraphs explaining every detail
## Pricing Examples
Common pricing strategies:
* **Hourly services**: Base $200 + $75/hour per bartender
* **Flat packages**: Base \$1,200 for photo booth (4-hour minimum)
* **Per-person services**: Base $500 + $25/guest for catering
## Service-Specific Add-ons
Control which add-ons appear when customers select this service on a quote request form.
**Automatic linking:** When you create a new service, it's automatically linked to all existing add-ons. When you create a new add-on, it's automatically linked to all existing services. You can then remove links you don't need.
To configure:
1. Go to **Services & items** and click on a service
2. Find the **Linked Add-ons** section
3. Click the edit icon and select the add-ons that apply to this service
4. Save your changes
Only linked add-ons are available for a service. If no add-ons are linked, none will be shown for that service on forms.
**How it works with multiple services:**
When a customer selects multiple services on a form, they see every add-on linked to any of the selected services.
For example:
* "Mobile Bar" is linked to: Extra Hours, Premium Spirits, Custom Cups
* "Photo Booth" is linked to: Extra Hours, Backdrop Upgrade
* Customer selects both → all four add-ons are shown
## Service-Specific Resources
Control which resources can fulfill a specific service. This drives availability on your forms and quotes.
**Automatic linking:** When you create a new service, it's automatically linked to all existing resources. When you create a new resource, it's automatically linked to all existing services. You can then remove links you don't need.
To configure:
1. Go to **Services & items** and click on a service
2. Find the **Linked Resources** section
3. Click the edit icon and select the resources that can deliver this service
4. Save your changes
Only linked resources are eligible for a service. If no resources are linked, none will count toward availability for that service.
**How it affects availability:**
The date picker on your lead intake form reflects only the resources linked to the selected services. Quote presentation and booking form availability badges also update based on linked resources.
For quotes with multiple services, only resources linked to **all** selected services count toward availability.
For example:
* "Espresso Bar" is linked to: Cart A, Cart B
* "Cocktail Bar" is linked to: Cart B, Cart C
* A quote with both services → only Cart B counts toward availability
If you run multiple service types with different equipment, linking specific resources per service prevents availability conflicts.
## What Happens Next
Services appear in:
* Quote generation forms
* Customer booking pages
* Invoice line items
* Calendar scheduling
## Common Issues
**Service not appearing in quotes**: Check availability rules and make sure service is active
**Pricing seems wrong**: Verify the pricing model matches your intended structure (hourly vs. flat rate)
**Customers confused by description**: Keep descriptions focused on value and what's included
# Service Pricing
Source: https://docs.flashquotes.com/services/pricing
Configure pricing for your services using flexible pricing components
## How Service Pricing Works
In Flashquotes, pricing is configured directly on each service. You can combine multiple pricing components to create the perfect pricing structure for your business.
Pricing rules let you handle variations like duration, guest count, and event type **within a single service**—no need to create separate services for each scenario. See [Structuring Your Services](/services/structuring-services) to learn more.
## Pricing Components
Each service can use any combination of these pricing elements:
The foundation of your pricing:
* Fixed amount added to every quote
* Use for setup fees, minimum charges, or equipment costs
* Can be the entire price for simple flat-rate services
**Example**: \$500 base for photo booth rental
Labor-based pricing:
* Charged per hour, per staff member
* Choose how hours are counted: **shift hours** (full crew shift — packing, unloading, on-site setup, service, and teardown) or **service hours** (the customer-facing service window only)
* Both modes exclude travel — bill drive time separately via [travel fees](/services/travel-fees)
* Automatically multiplies by hours and staff count
**Example**: \$75/hour per bartender. A 4-hour service with 1 hour packing/unloading and 30 min setup + 30 min teardown bills **6 shift hours** (\$450) or **4 service hours** (\$300) per bartender.
Use **shift hours** to charge for your crew's full on-the-clock time. Use **service hours** when you only want to bill the customer-facing portion of the event.
Scale with event size. Choose how the guest rate is applied:
* **Per guest**: Flat rate multiplied by guest count. Great for per-person food, favors, or fixed per-head costs.
* **Per guest per hour**: Rate multiplied by guest count and event duration. Ideal when consumption or service scales with both attendance and time.
**Example (Per guest)**: \$15 per guest for appetizer service — 50 guests = \$750
**Example (Per guest per hour)**: \$3/guest/hr for bar service — 50 guests × 4 hours = \$600
Offer volume discounts as guest counts grow. Replaces a flat per-guest rate with rate bands.
* Set per-guest tiers (e.g. \$20/guest for 1–49, \$15/guest for 50–99, \$12/guest for 100+)
* Only works with the **Per guest** mode (not Per guest per hour)
* Optional **minimum hourly guests** floor — bill against a minimum guest count for short, low-attendance events
**Example**: \$20/guest under 50, \$15/guest at 50+ — a 75-guest event bills \$15 × 75 = \$1,125
Resource-based pricing. Choose how the resource rate is applied:
* **Per resource**: Flat rate multiplied by resource count. Great for setup, delivery, or unit-based equipment fees.
* **Per resource per hour**: Rate multiplied by resource count and event duration. Useful for equipment that bills by run-time (machines, generators, espresso bars).
**Example (Per resource)**: \$50 per espresso machine — 2 machines = \$100
**Example (Per resource per hour)**: \$25/machine/hr — 2 machines × 4 hours = \$200
Charge per individual item your customer selects:
* Set a unit name (e.g., "churro", "paleta", "espresso shot")
* Configure a price per unit and optional min/max quantity constraints
* Customers choose their quantity on the lead intake form
**Example**: \$3 per espresso shot, min 50, max 200 — a customer who enters 75 shots adds \$225 to their quote
Protect your profitability:
* Sets the absolute minimum you'll accept
* Overrides calculated price if it's too low
* Ensures every booking meets your minimum requirements
**Example**: \$800 minimum for any event
## Pricing Formula
Your service price is calculated as:
```
Final Price = MAX(
Base Price + (Staff × Hours × Hourly Rate) + Guest Component + Resource Component + (Units × Per Unit Rate),
Minimum Price
)
```
The **Guest Component** depends on the guest pricing mode set on the service:
* **Per guest**: `Guests × Per Guest Rate`
* **Per guest per hour**: `Guests × Hours × Per Guest Rate`
The **Resource Component** depends on the resource pricing mode:
* **Per resource**: `Resources × Per Resource Rate`
* **Per resource per hour**: `Resources × Hours × Per Resource Rate`
This ensures you're always paid at least your minimum while allowing flexible pricing based on event specifics.
## Common Pricing Strategies
### Flat Rate Services
**Setup**: High base price, no hourly or per-guest charges
**Example**:
* DJ Service: \$1,500 base price
* Covers up to 5 hours
* Simple, predictable pricing
### Hourly Services
**Setup**: Low/no base price, strong hourly component
**Example**:
* Bartending: \$100 base + \$75/hour per bartender
* Scales with event duration
* Fair for both short and long events
### Per-Person Services
**Setup**: Base price for minimums, per-guest for scaling
**Example**:
* Catering: \$500 base + \$25 per guest
* Covers fixed costs + variable food costs
* Profitable at any event size
### Per-Person Per-Hour Services
**Setup**: Per-guest rate that also scales with event duration (use "Per guest per hour" mode on the service)
**Example**:
* Bar or beverage service: \$4/guest/hr
* 75 guests × 5 hours = \$1,500 from the guest component alone
* Ideal when consumption or service intensity scales with both attendance and time
### Per-Resource Services
**Setup**: Base price for labor/setup, per-resource for equipment
**Example**:
* Photo Booth Rental:
* \$200 base (delivery/setup)
* \$150 per booth
* Scales with equipment count
### Per-Unit Services
**Setup**: Base price for setup/travel, per-unit for item count the customer selects
**Example**:
* Balloon Twisting:
* \$150 base (setup/travel)
* \$3 per balloon, min 50, max 300
* Ideal when consumption doesn't scale with attendance and you'd rather have the customer order a specific quantity
### Hybrid Pricing
**Setup**: Combine all elements for sophisticated pricing
**Example**:
* Full Bar Service:
* \$300 base (equipment/setup)
* \$75/hour per bartender (labor)
* \$12 per guest (supplies)
* \$5 per signature cocktail kit (per unit, min 10)
* \$1,000 minimum
## Setting Your Prices
Go to **Services & items** in the sidebar
Click on an existing service or create a new one
Set your base price, hourly rates, per-guest pricing, and minimum
Create test quotes to verify pricing calculations
Pricing rules are evaluated when a service is added to a quote. Later changes to the quote's guest count, duration, event type, staffing, or resources do not overwrite the price of an existing line item. To apply the updated calculation, [re-add the line item and remove the original](/contacts/quotes#how-line-item-prices-update).
## Pricing Tips
Include setup time, travel, supplies, and overhead in your pricing
Set minimums that ensure profitability even for small events
Don't use every pricing component unless necessary
Create sample quotes for different scenarios before going live
## Dynamic Pricing
Adjust prices automatically based on demand, lead time, dates, weekdays, time of day, event type, and location. Open a service, go to **Pricing**, and switch to the **Advanced** tab. Standard rates build the price; advanced modifiers adjust it.
Each modifier is a percentage. Positive to upcharge, negative to discount. You only add the rows you want to change; anything you don't configure keeps the base price.
Automatically charge more when **resource availability is low** for a service — high demand triggers a price uplift, no manual adjustment required.
* **Percentage modifier** added to the service price when availability dips
* **Service-aware** — references only the resources [linked to that service](/resources#service-specific-resources), so demand is measured per service rather than across all your resources
* Auto-applies on any quote for dates where the linked resources are scarce
Modify the service price based on **event lead time** — how far out the event is from the booking date. Use it to upcharge rush jobs, charge a premium for far-out reservations that lock up your calendar, or both.
* Set tiers by days between the booking and the event
* **Short lead time** — e.g. +30% within 7 days to cover the cost of rush jobs
* **Long lead time** — e.g. +10% beyond 12 months to price in the opportunity cost of holding the date
Charge more for the days that are hardest to staff, or discount the ones you're trying to fill.
* Add only the days that need a change. Unlisted days bill at the base price.
* Matched on the day the service **starts** at the event location
* Each day of a multi-day event is priced on its own weekday
**Example**: +20% on Saturdays, −10% on Tuesdays.
Charge a premium on holidays and specific dates without editing the service every year.
* **Add all holidays at once** — pick **Add dates → All US federal holidays** (the list matches your company's country), set one percentage, and every missing holiday is added. Change any of them individually afterward.
* **Add a single holiday** — search the list for Valentine's Day, Christmas Eve, New Year's Eve, and more
* **Custom dates** — name a one-off date or range (e.g. "Peak season", Jun 1 – Aug 31) and set its percentage
* **Repeat every year** — tick **Repeats every year** on a custom range and it applies on the same month and day each year
Holidays recalculate their date every year, so Thanksgiving and Memorial Day land correctly without maintenance. If more than one date row covers the event day, all of them apply.
**Example**: +10% on every US federal holiday, plus a "New Year's Eve" row at +25%.
Charge more for early-morning starts and late-night finishes.
* Set ranges of clock time at the event location, each with a percentage
* **Both the start and the end are checked** — a 12:00 AM to 7:00 AM range catches a 6:00 AM start and a 1:00 AM finish alike
* Applies **once per service day**. When both ends match, only the larger adjustment applies, so a late event isn't charged twice.
**Example**: +10% from 12:00 AM to 7:00 AM, no change from 7:00 AM to 10:00 PM, +10% from 10:00 PM to midnight.
Charge differently for the same service depending on event type — wedding, corporate, festival, and more:
* Set the price modifier for each event type on a service
* Bump or discount specific event types
* Captured from the [Event Type form question](/forms/lead-intake) on your lead intake form
Price the same service differently in each market you operate in.
* Set a percentage per [company location](/settings/general#location-management)
* Add rows only for the locations that need a change
* Applies based on the location assigned to the quote
### How Modifiers Stack
Modifiers compound on the running price rather than adding together. A +10% and a −10% modifier combine to **−1%**, not 0%.
Day-of-week, holiday and date, and time-of-day pricing are evaluated **per service day**, using the local date and clock at the event location. A Saturday 9:00 PM to 1:00 AM event prices as Saturday, and each day of a multi-day event is priced on its own date.
Dynamic pricing is folded into the line item price on the customer's quote. Customers see one price per service, not a modifier breakdown.
## Copying Pricing Between Services
Once one service is priced the way you want, reuse it instead of rebuilding it.
Every pricing section has its own copy control at the bottom:
* **Start from…** appears on an empty section. Choose **Starter template** for suggested values, or pick another service to copy from.
* **Copy from…** appears once the section has settings, or when there's no starter template.
Go to **Services & items → your service → Pricing**, then expand the section you want: surge pricing, days-out pricing, day-of-week pricing, holiday and date pricing, time-of-day pricing, event type pricing, or location pricing.
Search for the service you want to copy, then select it.
If the section already has settings, you'll be asked to confirm. Copying replaces that section only. Your other pricing settings stay the same.
Each control copies **one category at a time**, so you can take holiday pricing from one service and day-of-week pricing from another. Holiday and date copying brings over custom dates and yearly repeats.
Only services that already have settings in that category show up in the list. If a service is missing, configure the category there first.
## Preview Your Pricing
The **Quote preview** panel on the pricing page shows what a service would cost before you send a real quote. Change the hours, guests, units, distance, date, start time, location, event type, or resource utilization, and the price and its breakdown update as you type.
* Controls only appear for pricing you've actually configured. Add day-of-week or holiday pricing and an event date picker shows up; add time-of-day pricing and a start time stepper appears.
* The breakdown names every modifier that fired and by how much, like "Day-of-week pricing, on Saturdays, +20%".
* Derived staff and resource counts are shown too; click through to edit your [staffing rules](/services/staffing-rules).
Add-ons have the same preview. Open **Services & items → Add-ons → your add-on** to see the price for a given quantity, guest count, resource count, hours, and number of days.
## Service Charges
You can also apply automatic service charges (like gratuity or delivery fees) that calculate as a percentage or flat fee on top of your service pricing.
Navigate to **Settings → Service Charges** to configure these additional fees.
## Common Questions
**Q: Can I have different prices for different event types?**
A: Yes — use [Event Type Pricing](#dynamic-pricing) to apply different rates for weddings, corporate events, festivals, and more, all within a single service. See [Structuring Your Services](/services/structuring-services) for best practices.
**Q: How do I handle peak season pricing?**
A: Add a custom date range under [Holiday & Date Pricing](#dynamic-pricing) and tick **Repeats every year**, so the season prices itself every year. Use [Surge Pricing](#dynamic-pricing) on top of it to react to how booked up you already are.
**Q: What if my costs vary by location?**
A: Use [Location Pricing](#dynamic-pricing) to set a percentage per company location. For drive-time costs within a market, configure [travel fees](/services/travel-fees) instead.
**Q: Can I charge more for holidays?**
A: Yes — [Holiday & Date Pricing](#dynamic-pricing) adds every holiday for your country in one step, and each holiday recalculates its date each year.
**Q: Can I charge more for late-night events?**
A: Use [Time-of-Day Pricing](#dynamic-pricing). It checks both the start and the end of the service, so an event that runs past midnight is caught even if it started at a normal hour.
**Q: Do I have to set this up on every service?**
A: No — price one service, then use [Copy from…](#copying-pricing-between-services) on the others. Each category copies separately.
## Next Steps
* [Create your services](/services/core-services)
* [Add upsells with add-ons](/services/add-ons)
* [Configure service charges](/settings/service-charges)
* Test your pricing with sample quotes
# Staff & Resource Rules
Source: https://docs.flashquotes.com/services/staff-resource-rules
Configure per-service staffing rules to automatically calculate staff and resource quantities for quotes
## Overview
Staff & Resource Rules let you define staffing rules at the service level. When a customer fills out your lead intake form, Flashquotes automatically calculates how many staff and resources are needed — based on hourly capacity, guest count, duration, or a combination — and applies those quantities directly to your quote pricing.
Each service gets its own rule. When a quote is created, Flashquotes calculates the price for each service individually using that service's calculated staff and resource quantities.
If a selected service doesn't have a staffing rule configured, Flashquotes falls back to the [form-level staffing calculator](/forms/staffing-calculator) settings.
## Rule Modes
Each service's rule uses one of four modes. Choose the one that matches how your staffing scales.
### Hourly Capacity
The default mode. Uses a formula based on guest count, service duration, and a capacity ratio.
**How it works:**
* Set how many items (coffees, cocktails, etc.) one staff member can serve per hour
* Flashquotes divides total demand by that capacity to get the staff count
* Optionally set a minimum and maximum staff count
* Set a staff-per-resource ratio (e.g., 1 resource for every 2 staff)
**Example:** A coffee catering company sets capacity to 50 drinks/hour/staff and staff-per-resource ratio at 2 staff to 1 resource. For 200 guests over 3 hours: `200 guests / 3 hours / 50 per hour = 2 staff needed and 1 resource needed`.
### By Guest Count
Maps guest count ranges to fixed staff and resource quantities.
**How it works:**
* Define guest count ranges (e.g., 1–74, 75–149, 150–300)
* For each range, specify how many staff and resources are needed
* The customer's guest count determines which range applies
**Example:** A photo booth company needs 1 attendant for up to 100 guests, 2 for 100–250, and 3 for 250+. Three ranges, done.
### By Duration
Maps service duration ranges to staff and resource quantities.
**How it works:**
* Define duration ranges (e.g., 1–2 hours, 2.5–4 hours, 4.5–8 hours)
* For each range, specify staff and resource counts
* The customer's selected service length determines which range applies
**Example:** A DJ service needs 1 DJ for events up to 4 hours, 2 DJs for anything longer. Two ranges cover it.
### By Guest Count + Duration
A two-dimensional table that factors in both guest count and service duration at the same time.
**How it works:**
* Define guest count ranges along the rows
* Define duration ranges along the columns
* Each cell specifies staff and resource counts for that combination
* Both the guest count and duration must match for a cell to apply
**Example:** A bartending company staffs differently based on crowd size and event length:
| | 1–2 hours | 2.5–4 hours | 4.5+ hours |
| ----------------- | --------- | ----------- | ---------- |
| **1–49 guests** | 1 staff | 1 staff | 2 staff |
| **49–150 guests** | 2 staff | 2 staff | 3 staff |
| **151+ guests** | 3 staff | 4 staff | 5 staff |
## Setting Up a Rule
Go to **Services & items**, then select the service you want to configure.
Click the **Staffing Rules** tab on the service page.
Select a mode from the dropdown: **Hourly Capacity**, **By Guest Count**, **By Duration**, or **By Guest Count + Duration**.
Fill in your ranges, capacities, or matrix values. Changes save automatically.
Go to the **Pricing** section on the service to see how the rules interact with pricing settings to build your service price.
## How Rules Apply to Quotes
When a quote is created from your lead intake form, Flashquotes resolves staffing like this:
1. For each selected service with a staffing rule, the rule runs using the guest count and duration
2. Each service's price is calculated using its own staff and resource quantities
3. The quote reflects the per-service pricing based on those calculated quantities
If a guest count or duration falls outside your defined ranges, the rule uses the **highest range** as a fallback. If your guest count table tops out at 300 and a customer enters 400, the 300+ range applies.
## Copying Rules Between Services
If multiple services share similar staffing needs, you can copy a rule configuration from one service to another:
1. Open the rules editor for the service you want to configure
2. Click **Copy from service**
3. Select the source service
4. The full rule configuration (mode, ranges, and values) is copied over
## Form-Level Fallback
The [form-level staffing calculator](/forms/staffing-calculator) uses its own hourly capacity formula to determine staff counts.
When any selected service on a lead intake form has a staffing rule configured, those **service-level rules take priority**. The form-level calculator only runs when no selected services have rules defined.
Configure rules at the service level for more accurate, flexible staffing. Form-level settings are a fallback, not the primary tool.
## Common Questions
**What if only some of my services have rules?**
Services without a defined rule will fall back to using the [form-level staffing calculator](/forms/staffing-calculator) when calculating the service price.
**Can I use different modes for different services?**
Yes. Each service has its own independent rule. One service can use Hourly Capacity while another uses By Guest Count + Duration.
**How do I remove a staffing rule from a service?**
You can just use the Hourly Capacity configuration for this service, which matches the logic of the form-level rules.
# Structuring Your Services
Source: https://docs.flashquotes.com/services/structuring-services
How to design services that are simple, powerful, and easy to quote
Services in Flashquotes work best when they represent clear, bookable experiences—not every variation or add-on. This guide walks through how to design them so your menu stays simple, powerful, and easy to quote.
## What Is a Service?
A **Service** is a core package or experience that a client can book on its own.
**The litmus test:** If a client saw this on your site, could they book *just this* and have it make sense?
A good service describes an **experience**—what happens, for how long, for what kind of event—not just a single line item.
* Espresso Bar Experience
* Hot Chocolate Cart
* Matcha & Tea Bar
* Premium Coffee & Pastry Station
* Full Mobile Bar Service
Each is a distinct, bookable experience.
* Additional Hour
* Extra Barista
* Custom Cups
* Logo Cup Sleeves
* Whipped Cream Topping
These belong as [add-ons](/services/add-ons) or [pricing rules](/services/pricing), layered onto a core service.
## The Basic Structure of a Service
Every service should answer three questions:
| Question | What to include |
| --------------------------------------- | ------------------------------------------------------------------------------------------ |
| **What is the experience?** | Simple, clear name and a short description of who it's for and what guests get |
| **What's included by default?** | Drinks/food offered, typical duration, standard staffing, and basics (cups, syrups, milks) |
| **What can change with pricing rules?** | Duration, guest counts, event types—the price changes, but the service stays the same |
## One Service, Many Prices
Instead of creating separate services like:
```text Don't do this theme={null}
Espresso Bar – 2 Hours
Espresso Bar – 3 Hours
Espresso Bar – Wedding
Espresso Bar – Corporate
```
```text Do this instead theme={null}
Espresso Bar Experience (one service)
├── Pricing rules for duration (2, 3, 4 hours)
├── Pricing rules for guest count brackets
└── Pricing rules for event types (Pro)
```
### Example: Espresso Bar Service
**Service name:** Espresso Bar Experience
**Description:** A full-service espresso cart with handcrafted lattes, cappuccinos, and more, served by professional baristas at your event.
**What's included:**
* 2 hours of service
* Unlimited espresso-based drinks
* Dairy + one non-dairy milk
* 3 standard syrups
**Pricing rules handle:**
* Additional hours (+\$X per hour)
* Guest count brackets (0-50, 51-100, 101-200)
* Event type premiums/discounts (Pro feature)
All of this stays under **one service**, so your menu is clean and easy for clients to understand.
## When to Use Add-ons Instead
Use an [add-on](/services/add-ons) when:
* It only makes sense on top of another service
* A client wouldn't book it by itself
* It describes extra time, upgrades, or customizations
- Extra hours of service
- Additional barista or staff
- Custom cups, sleeves, or branding
- Upgraded syrups or premium milk options
- Photo backdrop or decor upgrades
- Travel fees or special setup charges
If you catch yourself naming something like "Espresso Bar – Extra Hour" as a service, that's a signal it should be an add-on instead.
## How Many Services Should I Have?
You'll get the best results with a **small, focused set** of services and more flexibility in add-ons and pricing rules.
| Business stage | Typical service count |
| ------------------------- | ----------------------------------------- |
| Side hustle / simple menu | 1-2 services |
| Growing business | 3-5 services |
| Multi-concept operations | More, but grouped by distinct experiences |
**Example lineup for a coffee caterer:**
* Espresso Bar Experience
* Hot Chocolate Cart
* Matcha & Tea Bar
* Bottled Lattes / Coffee To-Go
Each can have many internal pricing variations, but clients see a short, understandable list.
## Naming and Descriptions That Convert
### Naming tips
* Classic Espresso Bar Experience
* Hot Chocolate & S'mores Cart
* Cold Brew & Iced Tea Station
Clear, experience-focused names.
* Package 1
* Service A
* Espresso 2hr – Corporate (100-150 guests)
Vague or overloaded with details.
### Description tips
In 2-4 sentences, cover who it's for, what's included, and why it's special:
"Bring a full café experience to your event with our Espresso Bar. Guests enjoy handcrafted lattes, cappuccinos, and more, made to order by a professional barista. Includes a stylish mobile cart, premium beans, dairy and non-dairy milks, and three house syrups."
Let your pricing rules and add-ons handle the details on hours, guest counts, and upgrades.
## Common Mistakes and Fixes
**Problem:**
* "Espresso Bar – 2 Hours"
* "Espresso Bar – 3 Hours"
* "Espresso Bar – Wedding"
**Fix:** Keep one "Espresso Bar Experience" service. Use [pricing rules](/services/pricing) for hours and event types.
**Problem:**
* "Additional Hour"
* "Add Second Cart"
* "Logo Cups"
**Fix:** Attach these as [add-ons](/services/add-ons) to the relevant services instead.
**Problem:**
* "Standard Espresso Bar"
* "Premium Espresso Bar"
* "Deluxe Espresso Bar"
**Fix:** Consider one "Espresso Bar Experience" with add-ons or pricing rules for premium upgrades, unless they're truly distinct experiences.
## Service Structure Checklist
Before you publish, review each service:
Could a client book this on its own and immediately understand what they're getting?
Does it describe an experience, not just a single line item?
Are duration, guest counts, and event types handled by pricing rules instead of separate services?
Are extras (more time, more staff, more customization) handled as add-ons?
Does the name make sense at a glance to someone who's never met you?
If you can answer "yes" to all of these, your service structure is in great shape.
## Next Steps
* [Configure pricing rules](/services/pricing) to handle variations
* [Create add-ons](/services/add-ons) for extras and upgrades
* [Set up your first service](/services/core-services)
# Travel Fees
Source: https://docs.flashquotes.com/services/travel-fees
Configure automatic travel fee calculations per service
# Travel Fees
Each service on a quote gets its own travel fee based on its [core resources](/resources) and distance to the event.
## Company-Wide Settings
These settings apply across all services and are configured on each service page.
### Service Area Radius
How far you'll travel for events, in units applicable to your country. Leads with an address outside this radius are warned about potential additional travel fees.
Service area eligibility is measured as straight-line (as-the-crow-flies) distance from your business location to the event address. This applies to both the in/out-of-area verdict on the lead intake form and instant-quote eligibility, so a radius stays a true circle around your business.
### Free Travel Radius
Distance around your business with no travel charge. Events beyond this radius are charged a travel fee based on the full distance.
These are different settings. Service area controls how far you'll travel. Free travel radius controls where travel fees start.
## Per-Service Settings
* **Price Per Mile**: Rate per mile, applied to round-trip distance per day per core resource
* **Minimum Travel Fee**: Floor amount per core resource per day — used when higher than the distance-based fee
* **Per-Staff-Hour Travel**: Optionally bill drive time per staff member instead of (or alongside) per-mile pricing — travel costs scale with crew size
Each service can have different price per mile and minimum — useful if one service needs a larger vehicle or more equipment.
### Per-Staff-Hour Travel Billing
Bill drive time per staff member **in addition to** the per-mile, per-resource travel fee. Useful when you pay your crew for travel hours and want to recover that cost on the quote alongside vehicle costs.
* Set an **hourly travel rate per staff member**
* Drive time is calculated from your business location to the event address
* Bills round-trip drive time × staff count per service
* Added on top of the per-mile, per-resource fee — not a replacement for it
The **Minimum Travel Fee** only applies to the mileage portion of the travel fee. Per-staff-hour travel billing is always added in full on top — it is not subject to the minimum.
**Example**: 2 hours round-trip × 3 staff × \$25/hour = \$150 travel labor on the quote
## How It's Calculated
If the event is **within** the free travel radius, no travel fee applies. If it's **outside** the radius, the fee is calculated on the full round-trip distance:
```
Service Travel Fee = MAX(
Round Trip Miles × Days × Service Resources × Price Per Mile,
Minimum Fee × Service Resources × Days
)
```
* **Round Trip Miles** = one-way distance × 2
* **Service Resources** = core resources on that service line item
* **Days** = number of event days
**Example**: Espresso Bar — 28 miles away (outside 10-mile free radius), 2 resources, 2 days:
* Distance-based: 28 mi × 2 (round trip) × 2 days × 2 resources × \$0.75/mi = **\$168**
* Minimum-based: \$35 minimum × 2 resources × 2 days = **\$140**
* Result: **\$168** (higher of the two)
## Editing on Quotes
Travel fees show as line items on each service. You can:
* **View the breakdown** — see distance, resources, rate, and free radius
* **Edit the amount** — override the calculated fee on any service line item
* **Remove it** — delete the travel fee from a specific service
Travel fees are auto-calculated on quote requests from your lead intake form when a location and event address are provided. Each service gets its own fee based on its core resource count.
## Auto-Calculation in the Quote Editor
When you add a service to a quote in the quote editor, the travel fee is calculated and added automatically — no extra step required.
# Branding
Source: https://docs.flashquotes.com/settings/branding
Upload your logo and set brand colors
## Overview
Branding settings let you upload your company logo and set brand colors. This applies to forms, quotes, and other client-facing elements.
**When you need this:** After completing company setup to maintain brand consistency.
## Upload Logo
Steps:
1. Go to Settings > Branding
2. Click "Upload Logo" or drag image to upload area
3. Select your logo file (PNG, JPG, or SVG recommended)
4. Logo appears immediately on forms and quotes
**What happens next:** Your logo displays on all client-facing pages.
**Common issues:**
* Logo appears blurry: Use high-resolution image (minimum 200px wide)
* Logo too large: Flashquotes automatically resizes, but smaller files load faster
## Set Brand Colors
Steps:
1. Scroll to Brand Colors section
2. Click the color picker
3. Select your primary brand color
4. Preview changes in real-time
5. Click Save
**What happens next:** Forms and quotes use your brand color for buttons and accents.
**Common issues:**
* Color doesn't match website: Use your website's exact hex code
* Poor contrast: Ensure color works with white text for accessibility
## What Gets Branded
Your logo and colors apply to:
* Lead intake forms
* Quote pages
* Booking confirmation pages
* Invoice headers
**Note:** Advanced form styling and email template customization are not currently available.
## Best Practices
1. Use high-resolution logo files
2. Choose colors with good contrast
3. Test on mobile devices
4. Keep branding consistent with your website
## Next Steps
After setting up branding:
* [Configure quote settings](/settings/quotes)
* [Set up forms](/forms)
* Test a sample quote to verify appearance
# Checklists
Source: https://docs.flashquotes.com/settings/checklists
Build reusable event brief and admin checklists, choose defaults, and add them to events
## Overview
Go to [**Settings → Checklists**](https://app.flashquotes.com/settings/checklists) to manage the task lists your company reuses across events. Saved checklists are available to your whole team.
There are two checklist types:
| Checklist | Use it for | Added by default to |
| --------------- | --------------------------------------------------------------------------- | --------------------------------------- |
| **Event brief** | Packing, setup, service, cleanup, and other instructions for the event team | The event brief for each new event |
| **Admin** | Internal work for you and your back-office team | The **Tasks** section on each new event |
Use the **Event brief** and **Admin** tabs to switch between the two libraries. The list shows each checklist's description or a preview of its tasks, its task count, when it was last updated, and which checklist is the default.
Every company has one default checklist of each type. Changing a default affects new events; it does not replace checklists already added to existing events.
## Create a Saved Checklist
Open **Settings → Checklists**, then select the **Event brief** or **Admin** tab.
Click **New checklist**, enter a name, and optionally add a short description. The description makes similar checklists easier to identify in the library.
Click **Add task** and enter a description for each task. A task must have a description before it can be saved.
Changes save automatically. Wait for the **Saved** status, then use the back arrow to return to your checklists.
### Event brief checklist tasks
Event brief tasks are grouped into six stages:
* Prep & Loading
* Travel to Event
* Setup
* Service
* Post-Event Cleanup
* Return & Unload
Drag a task to reorder it within a stage or move it to another stage. You can also open a task's menu and choose **Move to** or **Duplicate**.
Each task can include an optional quantity and unit, such as `4 cases`, `2 trays`, or `0.5 gal`. The unit field accepts free text and suggests common or previously used units. Quantities appear in a light blue label on the staff-facing event brief.
### Admin checklist tasks
For each admin task, set how many days before the event it is due. Flashquotes keeps admin tasks in due-date order, matching the order shown on events. Use `0` for a task due on the event date.
### Faster keyboard entry
When entering event brief tasks, press Tab to move from the description to quantity, unit, and then the next task. Pressing Tab after the final unit starts another task. A gray unit suggestion can also be accepted with Tab.
Press Enter to add another task while editing a saved checklist. A blank new row is removed when you click away.
Use Markdown in a task description to add links, emphasis, lists, or headings. For example, `[Setup guide](https://example.com)` creates a link, and `**Important**` creates bold text.
## Manage Saved Checklists
Open a checklist by selecting its row, or use the row menu for these actions:
* **Edit** — update its name, optional description, and tasks in the autosaving editor.
* **Duplicate** — create a copy and open it for editing.
* **Set as default** — use this checklist when Flashquotes creates a new event.
* **Delete** — remove the saved checklist without changing copies already added to events.
You cannot delete the default checklist or the only checklist of a type. To remove a default checklist, first set another checklist of the same type as the default.
### Plan limits
Plans below Plus include one saved Event brief checklist and one saved Admin checklist. Plus and higher plans can create, duplicate, and save multiple checklists for different event types, services, or teams.
## Use Admin Checklists on Events
The default Admin checklist is copied into the **Tasks** section of every new event. Tasks can be added, renamed, checked off, assigned a due date, or deleted without changing the saved checklist they came from.
To use a different saved checklist on an event:
1. Open the event's **Tasks** section.
2. Open **Checklist options** (the three-dot menu).
3. Choose **Replace with…**, then select a saved Admin checklist.
4. Confirm **Replace tasks**.
Replacing an event's Admin checklist removes its current tasks and completion history. This cannot be undone.
Select **Manage checklists** from the same menu to open the Admin checklist library.
### Add default tasks to upcoming events
When you add tasks to your default Admin checklist, you can copy the missing tasks to upcoming events:
1. Open **Settings → Checklists** and select **Admin**.
2. Click **Add default tasks to upcoming events**.
3. Confirm **Add tasks to events**.
Existing tasks are kept, and Flashquotes does not add a task when that event already has a matching task.
## Use Event Brief Checklists on Events
The default Event brief checklist is copied to the event brief for each new event. From an event's **Event brief** tab, you can:
* Select **Add checklist** to add the default, copy another checklist on the event, or use a saved checklist.
* Select a checklist name to switch between checklists. Select the active name again to rename it.
* Open **Checklist options** to save the active checklist as a reusable template , edit defaults, or delete the active checklist.
* Edit task descriptions, quantities, and units directly. Drag tasks between stages, or use a task's menu to duplicate or move it.
Multiple checklists on one event require Plus or higher. An event brief must always retain at least one checklist.
Event checklist changes affect only that event. If the changes should be reusable, choose **Checklist options → Save as template**, or update the saved checklist in **Settings → Checklists**.
For the full event workflow, see [Create and manage event briefs](/events/event-brief#checklist-management).
## Best Practices
* Name checklists for their purpose, such as "Wedding reception," "Lead barista," or "Premium bar cart."
* Use a short library description to distinguish similar checklists.
* Begin task descriptions with an action verb and keep them specific.
* Add quantities and units when the event team needs to pack, prepare, or verify an exact amount.
* Review the defaults before a busy season; default changes apply only to new events.
* Duplicate a checklist before making substantial changes for a new event type.
## Next Steps
* [Create event briefs with checklists](/events/event-brief)
* [Set up event timelines](/events/timeline)
* Test your default checklists on a new event
# Company Settings
Source: https://docs.flashquotes.com/settings/general
Configure basic company information, Stripe setup, and location settings
## Overview
Company settings (found at `/settings` and labeled "Company" in navigation) contain your core business configuration. This includes company information, Stripe payment setup, and location management.
**When you need this:** Initial account setup and any time you need to update business details.
## Company Information
Steps:
1. Go to Settings (labeled "Company" in navigation)
2. Click the edit (pencil) icon to open the "Update company info" modal
3. Update your company details:
* Company name
* Invoice display name
* Invoice address
* Contact email and phone
4. Click Save Changes
**What happens next:** This information appears on all invoices and client communications.
**Company Name vs. Invoice Display Name:**
* **Company Name** is shown in the app and in emails to your customers.
* **Invoice Display Name** is the business name printed on your quotes and invoices. Renaming your company doesn't change what prints on existing quotes and invoices.
Names can be up to 191 characters and can't contain commas.
Only Admins and Owners can edit company info. Members can view it, but the edit (pencil) controls are hidden for them on both the Company settings page and the invoice edit page.
Company and location IDs are used for building automations with platforms like Zapier.
## Stripe Payment Setup
Steps:
1. Go to Settings > Stripe Connect section
2. Click "Connect Stripe Account"
3. Complete Stripe onboarding process
4. Verify connection status shows "Connected"
**What happens next:** You can accept payments through forms and quotes.
**Common issues:**
* Connection fails: Verify business information matches Stripe requirements
* Payments not processing: Check Stripe dashboard for account restrictions
## Location Management
Steps:
1. Scroll to Location section in Company settings
2. Set headquarters address (where resources are stored)
3. Configure timezone for accurate event scheduling
4. Set default email account for quote delivery
5. Set default tax rate for automatic quote calculations
To clear a previously chosen default, open the Default email or Default tax rate selector and choose "No default email" or "No default tax rate".
**What happens next:** Drive times and service areas calculate accurately.
**Common issues:**
* Incorrect drive times: Verify headquarters address is where equipment is stored
* Wrong timezone: Events will display incorrect times to clients
### Archive a location
Archiving hides a location you no longer use without deleting any of its data. Only members with the Admin or Owner role can archive or restore locations.
Steps:
1. Scroll to the Location section in Company settings.
2. Open the actions menu on the location row.
3. Click Archive.
**What happens next:**
* The location moves to the collapsed Archived section and stops appearing in location menus, service-area calculations, and aggregate views.
* Quotes and events already linked to the location are not impacted.
* No data is deleted — you can restore the location at any time.
**Common issues:**
* Don't see the Archive option: You're not an Admin or Owner, or this is your last active location. You can't archive your last active company location — create another location first.
### Restore a location
Steps:
1. Scroll to the Location section in Company settings.
2. Next to the Archived heading, click Show to expand the archived locations.
3. Open the actions menu on the archived location and click Restore.
**What happens next:** The location returns to the Active list and is immediately available in menus and service-area calculations again.
Only Owner and Admin roles can see archived locations.
## Currency and Locale
Flashquotes supports multiple currencies and locales for businesses operating in different countries. Currency and locale are set during company onboarding based on your country and determine how amounts are formatted across quotes, invoices, payments, and reports.
### Supported currencies
| Currency | Code | Regions |
| ----------------------- | ---- | ---------------------- |
| US Dollar (USD) | USD | United States |
| British Pound (GBP) | GBP | United Kingdom |
| Australian Dollar (AUD) | AUD | Australia, New Zealand |
| Canadian Dollar (CAD) | CAD | Canada |
### Supported locales
| Locale | Code | Formatting Example |
| ------------------------ | ----- | ------------------ |
| English (United States) | en-US | \$1,250.00 |
| English (United Kingdom) | en-GB | £1,250.00 |
| English (Australia) | en-AU | \$1,250.00 |
| English (Canada) | en-CA | \$1,250.00 |
| English (Ireland) | en-IE | €1,250.00 |
Your locale controls how currency symbols, decimal separators, and number grouping appear throughout the application. All amounts are stored in the smallest currency unit (cents/pence) for precision.
Currency and locale are configured during onboarding. You can change your currency and locale anytime in Company Settings.
For details on which countries are supported and tax ID requirements, see [Supported Countries & Tax IDs](/settings/supported-countries).
## Best Practices
1. Connect Stripe before launching any forms
2. Set headquarters to actual equipment storage location
3. Configure default tax rate to avoid manual entry
4. Link primary business email for quote delivery
## Next Steps
After configuring company settings:
* [Set up branding](/settings/branding) (logo and colors only)
* [Configure quote settings](/settings/quotes)
* [Add service charges](/settings/service-charges)
## Delete a company
A company member with the Owner role can permanently delete a company and all of its data. This cannot be undone. Non-owner roles cannot delete a company.
Steps:
1. Go to Settings and click Company.
2. Scroll to the Danger Zone section at the bottom of the page and click Delete company.
3. Review what will happen, then click "I understand, continue".
4. Type your company name exactly as shown to confirm.
5. Click Permanently delete.
**What happens next:**
* Your lead intake form on your website goes offline
* Public pages like customer quotes stop loading
* All users lose access to the company right away
* Any active flashquotes subscription is automatically canceled
* Third-party connections like Google and QuickBooks are disconnected
* All your company data is scheduled for permanent deletion
**Common issues:**
* Don't see the Danger Zone: You're not the Owner for this company. Ask the current Owner, or have them transfer ownership first
* "Permanently delete" stays disabled: The typed name has to match your company name exactly, including capitalization and spaces
# Choosing Your Email Service Provider
Source: https://docs.flashquotes.com/settings/integrations/email-provider
Why Google Workspace/Gmail is strongly recommended for the best Flashquotes experience
Use Google Workspace/Gmail for the best Flashquotes experience. Other email providers work but with major limitations.
## Why Google Workspace is strongly recommended
With Gmail integration, you unlock these features:
### Professional email sending
* Send quotes and invoices from your business email (not generic Flashquotes addresses)
* Customers see your company name and domain in their inbox
* Better deliverability and trust with recipients
### Complete email activity tracking
* See all email conversations with contacts in one place
* Automatic email sync shows replies and responses
* Thread management keeps conversations organized
### Two-way communication
* Reply to customer emails directly from Flashquotes
* View entire email history with each contact
* Compose and send emails without leaving the platform
### Advanced automation
* Auto-watching for new emails and replies
* Real-time email activity updates
* Workflow triggers based on email interactions
### Reliable delivery with fallback
* Primary sending through your Gmail account
* Automatic fallback to Flashquotes servers if Gmail fails
* Never miss sending important quotes or invoices
## What happens without Gmail
If you don't connect Gmail:
* Emails send from generic Flashquotes.com addresses
* No email activity feed or conversation history
* Can't reply to customers from within Flashquotes
* Missing automated email tracking features
* Less professional appearance to customers
## Connect Gmail
Go to Settings > Integrations in your Flashquotes dashboard
Find the Google section and click "+ Add account"
Sign in with your business Gmail account
Grant permissions for sending and reading emails
Your Gmail appears in the connected accounts list. You can now send from your business email and see customer replies in Flashquotes.
## Improve email deliverability
Our first recommendation is to connect your Google Workspace account and select it as the sender in Flashquotes. Next, have your domain administrator verify **SPF, DKIM, and DMARC** for your business domain. Connecting Gmail does not automatically configure these DNS settings.
Follow the [Gmail deliverability guide](/settings/integrations/google-gmail-send#improve-email-deliverability) for setup steps, links to Google's recommendations, and instructions to verify authentication on a test quote.
## Common issues
* **Connection error status**: Click Reconnect to refresh permissions
* **Can't see email activity**: Reconnect with expanded permissions enabled
* **Multiple accounts needed**: Connect additional Gmail accounts as needed for team members
## Best practices
Professional branded email addresses provide the best customer experience
While not as professional, personal Gmail accounts have full functionality
Google Workspace gives you the complete Flashquotes experience. Other providers work for basic quote sending but you'll miss the powerful email management features that make customer communication seamless.
## Next steps
After connecting Gmail:
* [Send your first quote](/contacts/sending-quotes)
* [Set default sending email for each location](/settings/general#location-management)
# Google Integration
Source: https://docs.flashquotes.com/settings/integrations/google
Connect Google services for email, calendars, analytics, and booking attribution
Connect Google services to manage email and calendars, track leads, and attribute booked revenue.
## What you can do
The Google integration provides these capabilities:
* **Send Email** - Send quotes directly from your Gmail account (all plans)
* **Read Email** (Plus/Pro) - Sync email activity from your contacts
* **Lead Detection** (Beta, all plans) - Find quote requests in your inbox and build quotes from them
* **Calendar Sync** (Plus/Pro) - Automatically sync bookings to Google Calendar
* **Analytics Tracking** (Pro) - Track form conversions with GA4 or Google Tag Manager
* **Google Ads Booking Conversions** (Scale) - Send booked revenue to GA4 for Google Ads attribution
Learn why [Google Workspace/Gmail is strongly recommended](/settings/integrations/email-provider) for the best Flashquotes experience.
## Getting started
Navigate to Settings > Integrations
Find the Google section and click "+ Add account"
Sign in to your Google account and grant the requested permissions
## Feature details
Send quotes from your Gmail account
Sync email activity from your contacts (Plus/Pro)
Sync booked events to Google Calendar (Plus/Pro)
Find quote requests in your inbox with Flashquotes AI (Beta, all plans)
## Analytics tracking (Pro)
Track form conversions with Google Analytics 4 or Google Tag Manager to measure your marketing effectiveness.
Track form conversions directly in GA4
Send booked revenue to GA4 for Google Ads attribution
Manage multiple tracking pixels via GTM
## Best practices
1. **Use a business Google Workspace account** - More reliable than personal Gmail for business use
2. **Connect one primary account** - Use your main business email as default
3. **Keep permissions current** - Reconnect promptly if you see disconnection warnings
## Upgrading to Plus
Full Gmail integration and Google Calendar sync require Flashquotes Plus or Pro.
[Learn more about Flashquotes Plus](https://flashquotes.com/pricing)
## Troubleshooting
### Google account disconnected
* Reconnect your account in Settings > Integrations
* You may need to re-grant permissions
* Calendar events and email syncing will resume after reconnection
### Need more help?
* [Gmail sending issues](/settings/integrations/google-gmail-send#troubleshooting)
* [Gmail sync issues](/settings/integrations/google-gmail-read#troubleshooting)
* [Calendar sync issues](/settings/integrations/google-calendar#troubleshooting)
* [GA4 tracking issues](/settings/integrations/google-analytics#troubleshooting)
* [GTM tracking issues](/settings/integrations/google-tag-manager#troubleshooting)
## Next steps
* [Set up Gmail sending](/settings/integrations/google-gmail-send)
* [Enable full Gmail integration](/settings/integrations/google-gmail-read)
* [Turn on lead detection](/flashquotes-ai/lead-detection)
* [Configure calendar sync](/settings/integrations/google-calendar)
* [Track form conversions with GA4](/settings/integrations/google-analytics)
* [Track Google Ads booking conversions](/settings/integrations/google-offline-conversions)
* [Set up Google Tag Manager](/settings/integrations/google-tag-manager)
# Google Analytics (GA4)
Source: https://docs.flashquotes.com/settings/integrations/google-analytics
Track lead form conversions with Google Analytics 4
**Pro subscription required.** Analytics tracking is available on the Flashquotes Pro plan. [Learn more about upgrading](https://flashquotes.com/pricing).
Track when leads view your forms, start filling them out, and successfully submit. This data flows directly to Google Analytics 4 so you can measure your marketing effectiveness.
To connect a Google Ads click to booked revenue after the lead converts, set up [Google Ads offline conversions](/settings/integrations/google-offline-conversions).
## What gets tracked
Flashquotes automatically sends these events to your GA4 property when visitors interact with your lead intake forms:
| Event | When it fires | What it tells you |
| --------------- | ----------------------- | ------------------------------------------- |
| `form_view` | Form page loads | How many people see your form |
| `form_start` | First field interaction | How many people start filling out your form |
| `generate_lead` | Successful submission | How many leads you captured |
Each event includes:
* **form\_id** - The unique identifier for your form
* **form\_name** - The name you gave your form in Flashquotes
* **UTM parameters** - utm\_source, utm\_medium, utm\_campaign, utm\_term, utm\_content (when present in URL)
The `generate_lead` event also includes:
* **lead\_id** - The Flashquotes contact ID
* **quote\_id** - The associated quote ID (if created)
## Set up GA4 tracking
Your Measurement ID looks like `G-XXXXXXXXXX`. Find it in your Google Analytics account:
1. Go to [Google Analytics](https://analytics.google.com)
2. Click **Admin** (gear icon)
3. Under **Property**, click **Data streams**
4. Select your web stream
5. Copy the **Measurement ID** (starts with `G-`)
[Google's guide to finding your Measurement ID](https://support.google.com/analytics/answer/9539598)
1. Go to **Settings > Integrations**
2. Find the **Google Analytics** card
3. Click **Connect** and paste your Measurement ID
4. Click **Save**
You can also access this setting from **Forms > \[Your Form] > Settings** under the **Tracking & Analytics** section.
1. Open your lead intake form in a new browser tab
2. In Google Analytics, go to **Reports > Realtime**
3. You should see a `form_view` event appear within a few seconds
4. Fill out a test field to trigger `form_start`
5. Submit the form to trigger `generate_lead`
## Using Google Analytics on Wix
Wix embeds your form inside a sandboxed iframe served from a separate Wix domain. Because of that sandbox, your form can't read the visitor's original traffic source or Google Ads click from the page it's embedded on — so GA4 records form events as **`direct`** instead of the campaign or ad that actually drove the visit.
To fix attribution, add this script to your Wix site's header:
```html theme={null}
```
It passes the real traffic source from your page into the embedded form, so events are attributed correctly.
Adding custom code requires a **paid Wix plan with a connected domain**.
In your Wix dashboard, go to **Settings** > **Custom Code**, then click **+ Add Custom Code**.
1. Paste the script above into the code box
2. Under **Add Code to Pages**, choose **All pages**
3. Under **Place Code in**, select **Head**
4. Click **Apply**
Visit your form's page with a test parameter like `?gclid=test123`, then submit a test lead. In GA4 **Reports > Realtime**, confirm the `generate_lead` event shows a source such as `google / cpc` instead of `direct`.
Use a fresh name, email, and phone number on each test — reusing the same details can merge into an existing contact and skip recording the source.
Only Wix needs this script. WordPress, Squarespace, Webflow, and other builders place your form directly on the page, so attribution already works. See [Wix Embed Best Practices](/forms/wix-embeds) for more on Wix's constraints.
## Using UTM parameters
Flashquotes automatically captures UTM parameters from your form URLs and includes them in all events. This lets you track which marketing campaigns drive the most leads.
**Example URL with UTM parameters:**
```
https://yoursite.com/get-quote?utm_source=facebook&utm_medium=paid&utm_campaign=summer_promo
```
These parameters will be included in all three events (form\_view, form\_start, generate\_lead), so you can build reports showing:
* Which sources drive the most form views
* Which campaigns have the best form completion rates
* Which channels generate the most leads
## Build reports in GA4
### Create a conversion funnel
1. In GA4, go to **Explore**
2. Create a new **Funnel exploration**
3. Add steps: form\_view → form\_start → generate\_lead
4. See your form conversion rates
### Track lead sources
1. Go to **Reports > Acquisition > Traffic acquisition**
2. Add a secondary dimension of "Event name"
3. Filter to show only `generate_lead` events
4. See which sources drive the most leads
## Best practices
1. **Test before launching campaigns** - Submit a test lead and verify events appear in GA4 Realtime before spending on ads
2. **Use consistent UTM parameters** - Create a UTM naming convention for your team
3. **Set up GA4 conversions** - Mark `generate_lead` as a conversion event in GA4 for easier reporting
4. **Connect Google Ads** - Link GA4 to Google Ads to import conversions for better ad optimization
## Troubleshooting
**Use Google Tag Assistant for debugging.** [Google Tag Assistant](https://tagassistant.google.com/) is the best tool for verifying your setup. It shows exactly what events are firing, what data they contain, and helps identify issues in real-time. Open Tag Assistant, connect it to your form page, and watch events flow as you interact with your form.
### Events not appearing in GA4
1. **Check Measurement ID format** - Must start with `G-` followed by 6-12 alphanumeric characters
2. **Wait a few minutes** - GA4 can have a slight delay; use Realtime reports for faster verification
3. **Check for ad blockers** - Browser extensions may block GA4 tracking
4. **Verify Pro subscription** - Analytics tracking requires Flashquotes Pro
### Duplicate events
* Each page load should trigger one `form_view`
* If you see duplicates, check that you haven't also added GA4 tracking manually to the page
### UTM parameters not tracking
* UTM parameters must be in the URL when the form loads
* Check that your marketing links include the UTM parameters
* Parameters are case-sensitive
## Next steps
* [Track Google Ads booking conversions](/settings/integrations/google-offline-conversions) when a quote becomes a booking
* [Set up Google Tag Manager](/settings/integrations/google-tag-manager) for advanced tracking needs
* [Learn about form embedding](/forms/embed-your-form) to add forms to your website
* [View your contacts](/contacts) to see captured form submissions
# Google Calendar Sync
Source: https://docs.flashquotes.com/settings/integrations/google-calendar
Automatically sync booked events to Google Calendar
Google Calendar synchronization requires Flashquotes Plus or Pro.
Automatically sync your Flashquotes booked events to Google Calendar to maintain a unified view of your schedule.
## What gets synced
**Event details:**
* Event name and description
* Shift start and end time
* Event start and end time
* Event location/venue address
* Links back to Flashquotes event details and brief
**Benefits:**
* See Flashquotes events in Google Calendar
* Automatic updates when you change events
* Share availability with team members by inviting them to the GCal event
* Avoid double-booking with personal events
## Enable calendar sync
Ensure your account has an active Flashquotes Plus or Pro subscription
If your Google account isn't already connected with Calendar permissions:
1. Go to Settings > Integrations
2. Click "Reconnect" next to an existing account
3. Grant the additional permissions
1. In Settings > Integrations, click "Configure" next to Google
2. For each location, select which Google account should receive calendar events
3. Choose which specific calendar events sync to (or use Primary calendar)
4. Choose "None" if you don't want calendar sync for a location
All future booked events will automatically create events in your selected Google Calendar
## Choose a specific calendar
After selecting a calendar sync account, choose which calendar receives events.
1. Go to Settings > Integrations > Configure Google
2. Find the location with calendar sync enabled
3. Click the Calendar dropdown (appears after selecting sync account)
4. Select a calendar or use Primary calendar (default)
What happens next: Events migrate to the new calendar. Events are removed from the old calendar and created in the new one. Migration takes a few minutes.
**Calendar options:**
* **Primary calendar**: Your main Google Calendar
* **Other calendars**: Any calendar you own or manage
You can create and sync to a dedicated "Booked events" calendar which can have its own color and be shared with your team.
## Auto-invite staff to calendar events
This feature requires [Flashquotes Pro](https://flashquotes.com/pricing).
When you assign staff to an event, they automatically get a Google Calendar invite. Staff can see event details and timing in their own calendar.
**Requirements:**
* [Pro plan](https://flashquotes.com/pricing)
* Google Calendar connected
* Staff need valid email addresses (update in [Staff](/staff))
### Turn on auto-invites
1. Go to Settings > Integrations > Google
2. Find "Auto-invite assigned staff to calendar events"
3. Toggle it on
4. Confirm in the popup
What happens next: When you assign staff to an event, they'll receive a calendar invite at their email address. If you remove them from the event, the invite gets canceled automatically.
### Turn off auto-invites
Toggle the setting off. Staff will stop receiving automatic calendar invites for new assignments. Existing calendar events won't be affected.
**Common issues:**
* **Staff didn't get invite**: Check their email address in [Staff](/staff). They need a valid email configured.
* **Some staff got invites, others didn't**: Only staff with valid email addresses receive invites. Invalid emails are filtered out automatically.
* **Setting won't toggle on**: This feature requires a [Pro plan](https://flashquotes.com/pricing).
## Choose service time or shift time
Control whether calendar events show just customer-facing service hours or your full commitment including setup and breakdown.
**Where to configure:**
1. Go to Settings > Locations
2. Edit a location
3. Find "Calendar sync timing" setting
4. Choose Service Time or Shift Time
**Service Time:**
* Syncs only the hours customers see you working
* Example: 2:00 PM - 4:00 PM (customer event window)
* Use when you want calendar to show only billable hours
**Shift Time (default):**
* Syncs your full commitment including setup/breakdown
* Example: 1:00 PM - 5:00 PM (with 1hr setup and 1hr breakdown)
* Use when you need to block your entire schedule
What happens next: Future events sync with your selected timing. Existing calendar events update within a few minutes.
Most users prefer Shift Time to accurately block their full schedule and prevent double-booking during setup/breakdown.
## How calendar sync works
**Events are created when:**
* A quote is booked by your customer
* You create a manual booking in Flashquotes
* You copy a booking with events
**Events are updated when:**
* You change booking details (date, time, location)
* Event name or description changes
* Shift times change
**Events are deleted when:**
* You cancel or delete a booking in Flashquotes
* You disconnect a Google account that was syncing to calendar
* You change which Google account syncs calendar for a location
**Event details included:**
* **Title:** Event name
* **Time:** Shift start/end
* **Location:** Event venue address
* **Description:** Event details and link to Flashquotes
* **Source:** Shows "Flashquotes" as the event source
## View sync status and trigger manual sync
You can check calendar sync status and manually trigger syncs directly from Flashquotes.
**Where to find sync status:**
* The Google Calendar icon in the event logistics and calendar event details conveys the status
* If the event is synced, the icon will be solid and will display the sync date on hover
* If the event is **not** synced, the icon will be transparent and you can click on it to trigger a manual sync
If an event shows "Failed" status, try the manual sync button before reconnecting your entire Google account.
## Manage calendar sync
**Change which calendar receives events:**
1. Go to Settings > Integrations > Configure Google
2. Select a different Google account for a location
3. Flashquotes will:
* Remove future events from the old calendar
* Create events in the new calendar for all future bookings
**Disable calendar sync for a location:**
1. Go to Settings > Integrations > Configure Google
2. Select "None" for the location
3. All future events will be removed from Google Calendar for that location
**Disconnect Google Calendar:**
* When you disconnect a Google account, all future calendar events created by Flashquotes are removed
* Past events remain in your calendar but won't receive further updates
Changing calendar sync settings affects all future events for that location. Review which locations use which Google accounts regularly.
## Best practices
1. **Configure calendar per company location** - Link calendars to company locations appropriately
2. **Don't manually edit synced events** - Changes in Google Calendar won't sync back; edit in Flashquotes
3. **Review sync settings regularly** - Ensure the right accounts sync to the right locations
4. **Use one calendar per business unit** - Keep different services or locations in separate calendars if needed
## Troubleshooting
### Calendar events not syncing
* Confirm you have an active Plus or Pro subscription
* Verify "Calendar Sync" permission is granted
* Check that calendar sync is configured for the location in Settings > Integrations > Configure
* Ensure this is a booked event (quotes don't sync)
* Try reconnecting your Google account
### Events not updating
* Verify your Google account is still connected
* Check that you're editing the booking in Flashquotes (not in Google Calendar)
* Allow a few minutes for updates to sync
* Reconnect your account if issues persist
### Events appearing in wrong calendar
* Check location calendar configuration in Settings > Integrations > Configure
* Update the Google account selection for that location
* Events will migrate to the correct calendar
### Events disappeared
* Check if your Google account was disconnected
* Verify calendar sync is still configured for the location
* Reconnect your account to resume syncing
## Next steps
* [Enable full Gmail integration](/settings/integrations/google-gmail-read) to sync customer emails (Plus/Pro)
* [Set up location defaults](/settings/general)
* [Upgrade to Plus](https://flashquotes.com/pricing) if you don't have it yet
# Full Gmail Integration
Source: https://docs.flashquotes.com/settings/integrations/google-gmail-read
Sync email activity from your contacts
Full Gmail integration requires Flashquotes Plus or Pro.
Bring customer email conversations into Flashquotes to see the total context of customer communications within contact activity feeds.
## What gets synced
* Email threads between you and customers
* Replies and responses from customers
* Email timestamps and conversation context
* Automatic activity feed updates
**Where emails appear:**
* Contact activity feeds show all email correspondence with contacts in one place
* You can find the activity feed on the contact details view and easily filter it for email
* Click the email icon on the Contacts page to initiate new emails
## Enable full Gmail integration
Ensure your account has an active Flashquotes Plus or Pro subscription
If you previously connected Gmail for sending only, reconnect to grant read permissions:
1. Go to Settings > Integrations
2. Click "Reconnect" next to your Google account
3. Grant the additional permissions
Flashquotes will begin syncing recent email conversations with your contacts and customers
## How email syncing works
**Automatic monitoring:**
* Flashquotes monitors for new emails from customers
* Checks for new messages every few minutes
**Smart matching:**
* Emails are automatically linked to the correct contact
* Matching uses customer email addresses
**Real-time updates:**
* New email activity appears in activity feeds within minutes
* No manual action required
**Privacy first:**
* Only emails related to your Flashquotes contacts are synced
* Other Gmail conversations remain private
**Workflow deactivation:**
* When a contact replies to an email, active follow-up workflows stop automatically
* Prevents automated emails from sending after contacts engage
* Only affects workflows started before the email response
If you disconnect your Google account, email syncing stops. Existing synced emails remain in activity feeds but no new emails are captured.
## Start new emails directly in Flashquotes
Start email conversations directly from your contact details page.
1. Go to contact details page
2. Click the email icon in the contact header
3. Compose your email using the built-in editor
4. Send from your connected Gmail account
What happens next: Email sends from your Gmail and appears in both Flashquotes activity feed and your Gmail sent folder.
## Best practices
1. **Monitor activity feeds** - Check contact activity feeds regularly for new correspondence
2. **Keep account connected** - Don't disconnect unless necessary
3. **Use one primary account** - Connect the email account you use most for customer communication
4. **Use email icon for follow-ups** - Initiate emails from the Contacts page for quick follow-ups
## Troubleshooting
### Emails not appearing in activity feeds
* Confirm you have an active Plus or Pro subscription
* Verify "Read Email" permission is granted
* Check that the email address matches the contact email exactly
* Allow up to 15 minutes for new emails to sync
* Try reconnecting your Google account
### Old emails not syncing
* Email sync only captures recent conversations automatically
* When viewing the contact details a full email sync will trigger
### Some emails missing
* Verify the email address on the contact matches exactly
* Check that emails aren't in spam or trash
* Ensure the email is from/to a contact email address in Flashquotes
### Sync stopped working
* Check if your Google account is still connected
* Look for disconnection warnings in Settings > Integrations
* Reconnect your account if needed
## Next steps
* [Connect Google Calendar](/settings/integrations/google-calendar) to sync bookings (Plus/Pro)
* [Learn about workflows](/workflows/overview) to automate email responses
* [Upgrade to Plus](https://flashquotes.com/pricing) if you don't have it yet
# Gmail Sending
Source: https://docs.flashquotes.com/settings/integrations/google-gmail-send
Send quotes from Gmail and improve deliverability with Google Workspace domain authentication
Send quotes and communications from your Gmail account to maintain your email history in one place.
Our first recommendation for improving email deliverability is to connect your business Google Workspace account and select it when sending from Flashquotes. Then [authenticate your domain with SPF, DKIM, and DMARC](#improve-email-deliverability).
## Why use Gmail for sending
Sending from your Gmail account:
* Maintains conversation history in Gmail
* Uses your existing email signature and branding
* Creates more personal connections with contacts
* Supports multiple Gmail accounts per team
## Connect Gmail
Navigate to Settings > Integrations
Find the Google section and click "+ Add account"
Sign in to your Google account and grant permissions
## Send quotes from Gmail
**From quote view:**
1. Open any quote
2. Click "Send Quote"
3. Select your Gmail account from the dropdown
4. Review and send
**Set default sender:**
* Go to Settings > General > Locations
* For each location, select default sending email
* New quotes will use this sender by default
## Improve email deliverability
Start by confirming that your Google Workspace account is connected, selected as the sender, and that the message appears in Gmail's **Sent** folder. Connecting the account alone does not configure authentication for your business domain.
Authentication helps receiving email services verify that messages really come from your domain and can improve deliverability. It does not guarantee placement in the inbox or Gmail's Primary tab.
### Authenticate your Google Workspace domain
Ask your Google Workspace administrator or the person who manages your domain's DNS records to check all three methods below. These settings apply to your custom business domain, such as `yourbusiness.com`. Google manages authentication for personal `@gmail.com` addresses.
#### SPF: authorize your email senders
SPF lists the services allowed to send email for your domain. If Google Workspace is your **only** sender, Google's example DNS TXT record is:
```text theme={null}
v=spf1 include:_spf.google.com ~all
```
If other services also send email for your domain, include them in the same SPF record. Update the existing record rather than adding a second SPF record or replacing other authorized senders with the Google-only example. Follow [Google's SPF setup guide](https://knowledge.workspace.google.com/admin/security/set-up-spf).
#### DKIM: sign outgoing messages
DKIM adds a digital signature that receiving services can verify using your domain's DNS record.
Ask your Google Workspace administrator to follow [Google's DKIM setup guide](https://support.google.com/a/answer/174124).
#### DMARC: check alignment and monitor failures
DMARC checks that the domain in the visible From address aligns with a domain authenticated by SPF or DKIM. It also lets you request reports and specify how receivers should handle messages that fail.
Ask your domain administrator to follow [Google's DMARC setup guide](https://support.google.com/a/answer/2466580) and [recommended DMARC rollout](https://support.google.com/a/answer/10032473).
### Verify authentication on a delivered message
After DNS changes have taken effect, send a test quote from Flashquotes to a separate Gmail or Google Workspace recipient. In the recipient's Gmail, open the message and choose **More > Show original** next to Reply. Check the authentication results for **SPF: PASS**, **DKIM: PASS**, and **DMARC: PASS**. Google explains [how to view message headers](https://support.google.com/mail/answer/29436?hl=en).
If a check fails, share the original message headers with your domain administrator. Confirm that DKIM signs with your business domain and that SPF or DKIM aligns with the From domain for DMARC.
### Follow Google's sending recommendations
* Send to people who expect to hear from you, such as customers who requested a quote.
* Use an accurate sender name and subject, and clearly label the quote link.
* Keep quote emails focused on the customer's inquiry; avoid adding unrelated promotions.
* Avoid sudden bursts of sending, especially from a new domain.
* If a customer finds your message in Spam, ask them to mark it as **Not spam** and add your sending address to their contacts.
See [Google's email sender guidelines](https://support.google.com/mail/answer/81126?hl=en) for more recommendations.
## Manage sending accounts
**View connected accounts:**
* Go to Settings > Integrations
* All connected Google accounts appear in the Google section
**Disconnect an account:**
1. Find the account in Settings > Integrations
2. Click "Disconnect"
3. Confirm removal
Disconnecting an account removes the ability to send from that email. Existing sent emails remain in your Gmail.
## Best practices
1. **Set defaults per location** - Configure each location with the appropriate sending email
2. **Use professional signatures** - Your Gmail signature appears in all sent quotes
3. **Monitor your sent folder** - All Flashquotes emails appear in your Gmail Sent folder
4. **Connect your primary business email** - Use your main business email for most communications
## Troubleshooting
### Emails going to spam or showing no opens
First, [verify your Gmail sender and domain authentication](#improve-email-deliverability). A low or zero open count does not prove that a message went to spam; Google cautions against using open rates alone to diagnose delivery problems. Ask the recipient to check Spam and Promotions, and review any bounce message for the rejection reason. See [Google's delivery troubleshooting guidance](https://support.google.com/mail/answer/81126?hl=en#open-rate).
If problems continue, contact [Flashquotes support](mailto:support@flashquotes.com) with the sending address, recipient address, approximate send time, and any bounce error or authentication results.
### Email not sending
* Verify your Google account is connected in Settings > Integrations
* Check that "Send Email" permission is enabled
* Ensure your Gmail account isn't over quota
* Try reconnecting your account
### Wrong sender showing
* Check location default email settings
* Verify the correct account is selected when sending
* Update location defaults in Settings > General
### Signature not appearing
* Your Gmail signature is pulled automatically
* Update your signature in Gmail settings
* Reconnect your Google account to refresh
## Next steps
* [Enable full Gmail integration](/settings/integrations/google-gmail-read) to sync customer emails (Plus/Pro)
* [Connect Google Calendar](/settings/integrations/google-calendar) to sync bookings (Plus/Pro)
* [Set up location defaults](/settings/general)
# Google Ads Offline Conversions
Source: https://docs.flashquotes.com/settings/integrations/google-offline-conversions
Send booked revenue from Flashquotes to Google Analytics and Google Ads
**Scale subscription required.** Booking conversion tracking is available on the Flashquotes Scale plan. [Learn more about upgrading](https://flashquotes.com/pricing).
Flashquotes can report revenue from Google Ads leads after their quotes become bookings. This connects the ad click captured by your Flashquotes form to a server-side `purchase` event in Google Analytics 4 (GA4). You can then use that event as a conversion in Google Ads.
Flashquotes sends the event to GA4 through Google's Measurement Protocol. It does not upload a conversion directly to Google Ads.
## Before you begin
You need:
* A Flashquotes Scale subscription
* A GA4 web data stream with a Measurement ID
* A Measurement Protocol API secret for that same data stream
* Lead tracking connected in Flashquotes before the Google Ads lead submits your form
Complete the Google-side configuration with Google's documentation:
* [Find your GA4 Measurement ID](https://support.google.com/analytics/answer/9539598)
* [Create a Measurement Protocol API secret](https://developers.google.com/analytics/devguides/collection/protocol/ga4/sending-events?client_type=gtag#api-secret)
* [Turn on user-provided data collection](https://support.google.com/analytics/answer/14077171)
* [Connect Google Ads to Google Analytics](https://support.google.com/analytics/answer/9379420)
* [Create a Google Ads conversion from the GA4 `purchase` event](https://support.google.com/google-ads/answer/2375435)
Use the Measurement ID and API secret from the same GA4 web data stream. Keep the API secret private.
## Set up Flashquotes
1. Go to **Settings > Integrations**.
2. Find the **Google Analytics** card.
3. Under **Lead tracking**, click **Connect**.
4. Enter the Measurement ID for your GA4 web data stream and save.
Lead tracking captures the Google click and GA client information that Flashquotes needs to connect a later booking to the original form submission.
Under **Booking tracking**, click **Connect**, paste the Measurement Protocol API secret from the same GA4 web data stream, and click **Save**.
Flashquotes stores the secret securely and only shows a masked preview after you save it. You cannot reveal the saved secret, but you can replace or delete it.
1. Open the **Booking tracking** connection.
2. Click **Send test event**.
3. In GA4 Realtime, look for `fq_connection_test` and compare the displayed reference.
The test carries no customer information or revenue and does not create a record in Flashquotes. Do not mark `fq_connection_test` as a key event or import it into Google Ads.
A successful test confirms that Google accepted the request. It does not confirm that GA4 processed the event or that Google Ads can attribute a future booking.
## How booking attribution works
Google adds a click identifier such as `gclid`, `gbraid`, or `wbraid` to the landing page URL. When the customer submits a Flashquotes lead form, Flashquotes saves the Google click identifier and GA client ID with that quote.
When the quote is booked, Flashquotes sends a server-side GA4 `purchase` event using the original attribution and the booking's invoice total.
GA4 associates the purchase with the original visitor when it can. If GA4 is linked to Google Ads and the `purchase` event is configured as a Google Ads conversion, Google Ads can use the booked revenue in reporting and bidding.
Google determines the final match and attribution according to your property, consent, and conversion-window settings. A successfully sent event does not guarantee that Google Ads will attribute a conversion.
### Wix embedded forms
Wix places embedded forms inside a sandbox that prevents them from reading the Google click and GA client information on the parent page. Install the Flashquotes attribution script described in [Wix Embed Best Practices](/forms/wix-embeds) before collecting leads. Other supported website builders do not need this extra script.
## Which bookings are sent
Flashquotes sends a booking conversion only when all of these conditions are met:
* The company has an active Scale subscription
* Lead tracking and booking tracking are both connected
* The quote came from a Flashquotes form submission attributed to Google Ads
* The submission included a valid GA client ID
* The quote becomes a booking through the standard booking flow
* The booking has at least one active, non-voided invoice
* All booking invoices use one supported currency: USD, CAD, GBP, AUD, or EUR
Flashquotes does not send conversions for direct or organic traffic, leads attributed to another ad platform, imported bookings, or bookings without the required Google attribution.
## What Flashquotes sends
Each eligible booking produces one GA4 `purchase` event with:
* The booking timestamp
* A stable, non-identifying transaction ID
* The invoice currency
* The full total of all active, non-voided invoices
* One aggregate item named `Booking`, with a quantity of `1`
* The saved GA client ID from the original quote submission
* Hashed email and international phone number when valid values are available
The reported value is booked revenue, not money collected. It reflects the invoice total after discounts and includes service charges, gratuity, and tax. Deposits, later payments, and invoice edits do not create additional purchase events.
Flashquotes hashes customer data before sending it, but hashing does not replace your privacy, disclosure, consent, or opt-out obligations. Review Google's [user-provided data requirements](https://support.google.com/analytics/answer/14077171) before enabling this integration.
Flashquotes uses a stable transaction ID so GA4 can deduplicate retries. Do not also send a browser-side `purchase` or directly upload the same booking to Google Ads, because that can double-count the conversion.
## Manage the connection
Use the menu next to **Booking tracking** to replace the API secret or delete the connection.
* Deleting **Booking tracking** removes the API secret and stops future booking events. Lead tracking remains connected.
* Deleting the Google Analytics **Lead tracking** connection removes both the Measurement ID and API secret, stopping lead and booking tracking.
## Troubleshooting
### Test event does not appear
* Confirm the Measurement ID and API secret belong to the same GA4 web data stream
* Send another test and check the GA4 Realtime report
* Replace the API secret in Flashquotes if it was revoked in Google Analytics
* Confirm your company still has an active Scale subscription
### A booking does not appear
* Confirm the lead submitted the form after both tracking connections were configured
* Confirm the quote originated from a Google Ads click, not direct traffic or another source
* If the form is embedded on Wix, verify the [Wix attribution script](/forms/wix-embeds#google-analytics-and-ad-tracking) is installed
* Confirm the booking was not imported and its invoices use one supported currency
* Allow time for GA4 and Google Ads reporting to update
### Revenue does not match a payment
This integration reports the full booked invoice total when the quote becomes a booking. It does not report deposits or payment transactions.
## Next steps
* [Track lead form activity with GA4](/settings/integrations/google-analytics)
* [Review Wix embed requirements](/forms/wix-embeds)
* [Learn how Google imports GA4 conversions](https://support.google.com/google-ads/answer/2375435)
# Google Tag Manager
Source: https://docs.flashquotes.com/settings/integrations/google-tag-manager
Use GTM for advanced analytics tracking on lead forms
**Pro subscription required.** Analytics tracking is available on the Flashquotes Pro plan. [Learn more about upgrading](https://flashquotes.com/pricing).
Google Tag Manager (GTM) lets you manage multiple tracking pixels and analytics tools from one place. Use GTM when you need to track conversions across multiple platforms like Facebook, LinkedIn, or TikTok.
## Why use Google Tag Manager
GTM is ideal when you need to:
* **Track multiple platforms** - Send conversion data to Facebook Pixel, LinkedIn Insight Tag, TikTok Pixel, etc.
* **Use advanced triggers** - Fire tags based on specific form events or custom conditions
* **Manage tracking centrally** - Update all your tracking from one GTM container
* **A/B test tracking** - Experiment with different tracking configurations
If you only need Google Analytics 4 tracking, the simpler [GA4 direct integration](/settings/integrations/google-analytics) may be all you need.
## Events pushed to dataLayer
Flashquotes pushes these events to the GTM dataLayer when visitors interact with your lead intake forms:
| Event | When it fires | What it tells you |
| --------------- | ----------------------- | ------------------------------------------- |
| `form_view` | Form page loads | How many people see your form |
| `form_start` | First field interaction | How many people start filling out your form |
| `generate_lead` | Successful submission | How many leads you captured |
Each event includes this data in the dataLayer:
```javascript theme={null}
{
event: 'form_view', // or 'form_start' or 'generate_lead'
form_id: 'abc123',
form_name: 'Wedding Inquiry Form',
utm_source: 'facebook',
utm_medium: 'paid',
utm_campaign: 'summer_promo',
utm_term: 'wedding photographer',
utm_content: 'video_ad'
}
```
The `generate_lead` event also includes:
* **lead\_id** - The Flashquotes contact ID
* **quote\_id** - The associated quote ID (if created)
## Set up GTM tracking
Your Container ID looks like `GTM-XXXXXXX`. Find it in Google Tag Manager:
1. Go to [Google Tag Manager](https://tagmanager.google.com)
2. Select your container (or create one)
3. Your Container ID appears at the top of the workspace
[Google's guide to finding your Container ID](https://support.google.com/tagmanager/answer/6103696)
1. Go to **Settings > Integrations**
2. Find the **Google Tag Manager** card
3. Click **Connect** and paste your Container ID
4. Click **Save**
You can also access this setting from **Forms > \[Your Form] > Settings** under the **Tracking & Analytics** section.
In your GTM container, create triggers for each Flashquotes event:
1. Go to **Triggers > New**
2. Choose **Custom Event** as the trigger type
3. Set **Event name** to match (e.g., `generate_lead`)
4. Save the trigger
5. Repeat for `form_view` and `form_start`
1. Create or edit your conversion tag (e.g., Facebook Pixel)
2. Under **Triggering**, add your new trigger
3. Save and publish your container
## Example: Facebook Pixel setup
Here's how to track Flashquotes leads as Facebook conversions:
### 1. Create variables for form data
In GTM, go to **Variables > User-Defined Variables > New**:
| Variable Name | Variable Type | Data Layer Variable Name |
| -------------- | ------------------- | ------------------------ |
| FQ - Form ID | Data Layer Variable | `form_id` |
| FQ - Form Name | Data Layer Variable | `form_name` |
| FQ - Lead ID | Data Layer Variable | `lead_id` |
### 2. Create the trigger
1. Go to **Triggers > New**
2. Choose **Custom Event**
3. Set **Event name** to `generate_lead`
4. Name it "FQ - Lead Generated"
### 3. Create the Facebook Pixel tag
1. Go to **Tags > New**
2. Choose **Facebook Pixel** (or Custom HTML if not available)
3. Configure the Lead event with your Pixel ID
4. Add the "FQ - Lead Generated" trigger
5. Save and publish
### 4. Test in Preview mode
1. Click **Preview** in GTM
2. Open your Flashquotes form
3. Submit a test lead
4. Verify the tag fires in GTM's debug panel
## Best practices
1. **Use GTM Preview mode** - Always test new tags before publishing
2. **Name things clearly** - Use prefixes like "FQ -" for Flashquotes-related items
3. **Document your setup** - Note which tags use which triggers
4. **Test conversions end-to-end** - Verify data appears in your ad platforms
5. **Don't double-track** - If using GTM, don't also add GA4 directly in Flashquotes
## Troubleshooting
**Use Google Tag Assistant for debugging.** [Google Tag Assistant](https://tagassistant.google.com/) is the best tool for verifying your setup. It shows exactly what events are firing, what tags are triggered, and what data is being sent. Open Tag Assistant, connect it to your form page, and watch the dataLayer events in real-time as you interact with your form.
### Events not appearing in GTM Preview
1. **Check Container ID format** - Must be `GTM-` followed by 6-10 alphanumeric characters
2. **Refresh the page** - GTM loads on page load
3. **Check for conflicts** - Ensure GTM isn't also loaded by your website
### Tags not firing
1. **Verify trigger setup** - Event names are case-sensitive (`generate_lead` not `Generate_Lead`)
2. **Check trigger conditions** - Make sure there are no extra conditions blocking the trigger
3. **Test in Preview mode** - GTM Preview shows exactly why tags fire or don't fire
### Data not appearing in ad platform
1. **Allow time for sync** - Some platforms take hours to show conversion data
2. **Check pixel/tag setup** - Verify your ad platform tag is configured correctly
3. **Test with platform tools** - Use Facebook Pixel Helper, LinkedIn Insight Tag debugger, etc.
### Using both GA4 and GTM
If you add both GA4 and GTM IDs in Flashquotes:
* Both will receive events
* Make sure you're not sending duplicate data to GA4 (once directly, once via GTM)
* Choose one method: either direct GA4 or GA4 via GTM
## Next steps
* [Set up direct GA4 tracking](/settings/integrations/google-analytics) if you only need Google Analytics
* [Learn about form embedding](/forms/embed-your-form) to add forms to your website
* [View your contacts](/contacts) to see captured form submissions
# Integrations Overview
Source: https://docs.flashquotes.com/settings/integrations/overview
Connect Flashquotes with your favorite business tools
## Overview
Flashquotes integrations allow you to connect with popular business tools and automate your workflows. Available on Pro tier plans and higher, these integrations help streamline your operations and reduce manual data entry.
## Available Integrations
Connect Gmail, Calendar, Analytics, and Google Ads booking attribution.
Sync invoices and payments with QuickBooks Online for seamless accounting.
Connect with thousands of apps to automate your workflows.
## Integration Benefits
### Financial Management
* Automatic invoice syncing with QuickBooks
* Payment tracking and reconciliation
* Tax rate synchronization
### Communication
* Send quotes from your Gmail account
* Sync email activity from your contacts (Plus/Pro)
* Sync booked events to Google Calendar (Plus/Pro)
### Automation
* Connect with 3000+ apps via Zapier
* Automate repetitive tasks
* Custom workflow creation
## Getting Started
1. [Choose your email service provider](/settings/integrations/email-provider)
2. Connect essential services first:
* Google for email and calendar
* QuickBooks for financial tracking
3. Add automation as needed
4. Test integrations thoroughly
## Best Practices
1. Keep credentials current
2. Monitor integration activity
3. Review permissions regularly
4. Document custom workflows
5. Train team members
## Next Steps
* [Set up QuickBooks](/settings/integrations/quickbooks)
* [Connect Google](/settings/integrations/google)
* [Configure Zapier](/settings/integrations/zapier)
# QuickBooks Integration
Source: https://docs.flashquotes.com/settings/integrations/quickbooks
Sync your Flashquotes financial data with QuickBooks
Connect QuickBooks from Settings > Integrations to automatically sync invoices and payments.
## What it does
The QuickBooks integration automatically syncs your invoices and payments between Flashquotes and QuickBooks Online, streamlining your accounting processes and ensuring accurate financial records.
## Connect QuickBooks
Navigate to Settings > Integrations
Locate the QuickBooks section and click "Connect to QuickBooks"
Sign in to QuickBooks and authorize Flashquotes access
Set up:
* Account mappings
* Tax rates
* Product/service items
* Payment methods
Requires a QuickBooks Online account and Pro tier Flashquotes subscription.
QuickBooks syncing is currently only available for accounts using USD currency in the United States. If your company uses a different currency, QuickBooks integration will not be available.
Verify all mappings before initiating your first sync.
## What syncs
**Invoice sync**:
* Invoice details
* Line items
* Tax calculations
* Customer information
Invoices sync automatically when created or updated in Flashquotes.
**Payment sync**:
* Payment records
* Payment methods
* Transaction dates
* Payment status
* Manual sync for individual payments and refunds
**Deposit sync**:
* Stripe payments: deposits created automatically when Stripe sends the payout to your bank
* Manual payments (cash, check): deposits created immediately when synced
* Aggregate deposits group multiple payments from the same Stripe payout
* Payout trace ID included for bank reconciliation
## How sync works
**Sync behavior**:
* Real-time updates
* Error handling
* Conflict resolution
* Historical data sync
**Customer data**:
* Contact syncing
* Profile matching
* Address updates
* Communication preferences
## Best Practices
1. Review initial sync results
2. Maintain consistent naming
3. Monitor sync status
4. Keep mappings updated
5. Regular reconciliation
## Troubleshooting
**Common issues**:
* Connection errors
* Sync failures
* Data mismatches
* Authorization issues
**Support resources**:
* Documentation
* Support tickets
* Integration status
* Error messages
## Manual payment sync
For granular control, you can manually sync individual payments and refunds from the invoice payment tables. This is useful for:
* Syncing historical payments after connecting QuickBooks
* Handling specific transactions that failed automatic sync
* Controlling the timing of accounting entries
See [Manual Payment Sync](/finance/quickbooks-sync) for step-by-step instructions.
## Next steps
After setting up QuickBooks:
* Test invoice syncing
* Verify payment tracking
* Try manual payment sync
* Monitor sync status
# Zapier Integration
Source: https://docs.flashquotes.com/settings/integrations/zapier
Automate workflows by connecting Flashquotes to thousands of apps
Generate an API key from Settings > Integrations to connect Flashquotes with thousands of apps.
## What it does
The Zapier integration allows you to connect Flashquotes with thousands of other apps and create automated workflows. Available for Pro tier subscribers, this integration helps streamline your operations through custom automations.
## Get your API key
Navigate to Settings > Integrations
Find the Zapier card and click "Generate API key". On the Scale plan, the card is called "API & Zapier" — the same key also works for the full [REST API](/api-reference/introduction).
Copy the generated key for use in Zapier
Go to Zapier.com, search for Flashquotes, and enter your API key
Keep your API key secure and never share it publicly.
You'll need a Zapier account and the Flashquotes Pro plan or higher. The full REST API needs Scale — see [API plan access](/api-reference/introduction#plan-access).
## Available triggers
**Lead triggers**:
* New lead received
* Lead form submitted
* Lead status changes
* Quote generated
**Event triggers**:
* New booking created
* Event status changes
* Timeline updates
* Resource assignments
**Invoice triggers**:
* New invoice created
* Payment received
* Invoice status changes
* Refund processed
## Popular automations
**Ready-to-use workflows**:
* Lead to CRM sync
* Calendar integration
* Team notifications
* Document generation
Start with pre-built Zaps and customize as needed.
**Example automations**:
* Slack notifications for new leads
* Google Calendar event creation
* Custom email sequences
* Task management integration
## Best Practices
1. Test Zaps thoroughly
2. Monitor automation usage
3. Document custom workflows
4. Review error logs regularly
5. Keep triggers organized
## Troubleshooting
**Common issues**:
* Authentication errors
* Trigger failures
* Data mapping issues
* Rate limiting
**Support resources**:
* Zapier documentation
* Flashquotes support
* Integration logs
* Community forums
## Next steps
After setting up Zapier:
* [Review API documentation](/api-reference/introduction)
* Create test automations
* Monitor workflow performance
* Plan scaling strategy
# Managing Team Members
Source: https://docs.flashquotes.com/settings/members
Learn how to invite and manage team members in your Flashquotes workspace
You only need to invite admins to your workspace. Event staff can see
everything they need without a Flashquotes account.
## Inviting New Team Members
### Step 1: Access the Members Page
1. Click your company name in the top-left, then choose **Settings**
2. Select **Members** from the settings menu
### Step 2: Send an Invitation
1. Click the **Invite Member** button in the top right corner
2. In the Invite Member dialog, enter the email address of the person you want to invite. **Be sure the email is tied to a Google account**, since they will need to sign in with Google to join your workspace.
3. **Select a Role**: Choose between:
* **Admin** - Full access to all features and financial data
* **Member** - Full access except for aggregate financial data
4. Click **Send Invitation**
The invited user will receive an email with a unique link to join your company
workspace.
### Step 3: User Acceptance
When a user receives an invitation:
1. They click the invitation link in their email
2. On the Invitation Page, they can:
* Sign in with Google
* Create a new account (if they don't have one)
3. After signing in, they're automatically added to your company workspace with the role you specified
The invitation must be accepted with the exact email address it was sent to. **Sign in with Google** uses whichever Google account is already signed in on that browser, so if the invitee is signed into a different Google account (for example, a personal one, or the inviter's account on a shared computer), Google will hand that account to Flashquotes and the invitation page will show **Signed in with a different account** with the message "This invitation is not for \[email]. You must sign out and sign in with the invited email address to accept."
To avoid this, ask the invitee to either open the invitation link in an incognito or private window, or sign out of any other Google accounts first, and then pick the invited email address when Google prompts them.
## Team Roles and Permissions
flashquotes has three team roles. The hierarchy is: **Owner > Admin > Member**.
### Owner Role
Every company has exactly one Owner. The Owner has full Admin access, plus:
* Can remove Admins from the team
* Can transfer company ownership to another member
The Owner can't be removed from the team — they must transfer ownership first. You can't assign the Owner role through the role dropdown; ownership only changes via a transfer.
### Admin Role
**Full access to all features including:**
* All booking management features
* All invoice and payment features
* All contact and quote management
* Company settings and configuration
* **Aggregate financial data** (revenue totals, payment statistics, etc.)
* Member management: invite, promote, demote, and remove Members and Admins
* Can view and restore removed members
### Member Role
**Full access to all features except:**
* Aggregate financial data (revenue totals, payment statistics)
* Member management (can't invite, promote, demote, or remove other members)
Members can still see individual invoice amounts and booking details, but they
can't see aggregate financial statistics like total revenue, overdue amounts,
or payment summaries.
### Changing Member Roles
Only Admins and Owners can change member roles. You can't assign the Owner role through this dropdown — use Transfer Ownership instead.
1. Go to **Settings** → **Members**
2. Find the member you want to modify
3. Click the dropdown menu (⋮) next to their name
4. Select **Promote to Admin** or **Demote to Member**
Be careful when promoting members to Admin, as they'll gain access to all
financial data and member management capabilities.
## Transferring Ownership
Only the current Owner can transfer ownership to another member.
1. Go to **Settings** → **Members**
2. Find the member you want to make Owner
3. Click the dropdown menu (⋮) next to their name
4. Select **Transfer Ownership**
5. Type "transfer" to confirm
After the transfer, the selected member becomes Owner and you're demoted to Admin. You can only regain ownership if the new Owner transfers it back to you.
This action is immediate and can't be undone by you.
## Removing Team Members
Admins and Owners can remove Members from the team. Only the Owner can remove Admins. The Owner can't be removed — they must transfer ownership first.
Removed members lose access immediately.
1. Go to **Settings** → **Members**
2. Click the dropdown menu (⋮) next to the member's name
3. Select **Remove from team**
Removed members appear in a **Removed Members** section at the bottom of the page. You can restore a removed member from that section at any time.
If you re-invite a previously removed member, their membership is automatically restored.
## Managing Invitations
### Tracking Invitation Status
* View all pending invitations under the "Invited" section on the Members page
* For pending invitations, click the dropdown menu to resend the invitation
Invitation links expire after 7 days. If a link expires, simply send a new
invitation.
### Troubleshooting Invitations
If an invited user can't find their invitation:
1. Ask them to check their spam folder
2. Use the "Resend Invitation" option
3. If issues persist, [contact support](mailto:support@flashquotes.com)
After adding team members:
* Help them get familiar with [flashquotes basics](/quickstart)
* Set up their [profile settings](/settings/my-profile)
* Review [company settings](/settings/general) together
# Profile Settings
Source: https://docs.flashquotes.com/settings/my-profile
Manage your email notification preferences
## Overview
Profile settings (found at `/settings/profile`) let you control your email notification preferences. Personal information like name and email is read-only from your account session.
**When you need this:** To customize which email alerts you receive.
## Email Notifications
Steps:
1. Go to Settings > Profile (or visit `/settings/profile`)
2. Review available notification types:
* New bookings
* Payment receipts
* Lead submissions
3. Toggle notifications on/off for each type
4. Changes save automatically
**What happens next:** You'll only receive emails for enabled notification types.
**Common issues:**
* Not receiving notifications: Check spam folder and verify email address
* Too many emails: Disable non-essential notifications
## Personal Information
Your name and email address display on the profile page but cannot be edited. These come from your account session.
**To update personal information:** Contact support or update through your authentication provider.
## Best Practices
1. Enable notifications for critical events (new bookings, payments)
2. Disable non-essential alerts to reduce email volume
3. Review settings when team roles change
## Next Steps
After configuring notifications:
* [Complete company settings](/settings/general)
* [Set up branding](/settings/branding)
* [Configure quote settings](/settings/quotes)
# Plans & Pricing
Source: https://docs.flashquotes.com/settings/plans
Compare Flashquotes subscription plans and discover which features are included at each tier
## Which Plan Is Right for Me?
Flashquotes plans are designed to match your stage of business growth:
For solo operators just getting started.
CRM essentials for growth.
Move faster with automations and integrations.
For organizations seeking advanced control & flexibility.
Want a deeper dive on the 5 levels of mobile event businesses? Listen to [Episode 1 of the Flashquotes Podcast](https://www.youtube.com/watch?v=BWYPvsIUSjE) for the full breakdown.
***
## Plan Pricing
All plans include a 14-day free trial for paid tiers.
| Plan | Monthly | Annual | Savings |
| ----------- | -------- | ------------------------------------ | ------------- |
| **Starter** | Free | FreeBilled annually | – |
| **Plus** | \$59/mo | \$49/moBilled annually | 2 months free |
| **Pro** | \$119/mo | \$99/moBilled annually | 2 months free |
| **Scale** | \$249/mo | \$199/moBilled annually | 2 months free |
Get 2 months free with annual billing. [Upgrade your plan →](https://app.flashquotes.com/settings/plans)
***
## Starter (Free)
The Starter plan includes everything you need to capture leads, create quotes, and manage events.
**Includes 1 service** – Perfect for single-offering operators. Use [pricing rules](/services/pricing) and [add-ons](/services/add-ons) to handle variations like different durations, guest counts, and extras.
* [Lead intake forms](/forms/lead-intake) with real-time availability
* [Instant booking forms](/forms/booking) for direct conversions
* [Auto-drafted quotes](/contacts/autodraft) from form submissions
* [Quote delivery](/contacts/sending-quotes) via email
* [Event scheduling](/events) and management
* [Timeline calculations](/events/timeline) with drive times
* [Event briefs](/events/event-brief) with basic checklists
* [Invoice generation](/invoices) from quotes
* [Payment collection](/finance/payments) via Stripe
* [Service charges](/settings/service-charges) and tax configuration
***
## Plus
Everything in Starter, plus powerful integrations and advanced automation tools.
**Includes 5 services** – Room for multiple distinct offerings like espresso bar, hot chocolate cart, and matcha bar. See [Structuring Your Services](/services/structuring-services) for best practices.
Connect your Gmail account for seamless email management:
* [Send emails](/settings/integrations/google-gmail-send) directly from Flashquotes
* [Sync and view](/settings/integrations/google-gmail-read) complete email threads with clients
* Automatic email organization and history
* Never miss important client communications
[Set up Gmail →](/settings/integrations/google)
Keep your calendar in sync automatically:
* Events sync to [Google Calendar](/settings/integrations/google-calendar) in real-time
* Updates propagate automatically when event details change
* Calendar events include links back to Flashquotes
* Share events by inviting team members
[Connect Google Calendar →](/settings/integrations/google-calendar)
Create up to 10 automated email workflows:
* Quote Requested workflow trigger
* Quote Sent workflow trigger
* Quote Booked workflow trigger
* Invoice Due workflow trigger
[Learn about workflows →](/workflows/overview)
Automate communications around your actual event dates:
* **[First Event Start](/workflows/triggers#first-event-start)**: Send emails before, during, or after the first event begins
* **[Last Event End](/workflows/triggers#last-event-end)**: Perfect for post-event follow-ups and review requests
* Emails automatically reschedule when event dates change
* Access booking-specific shortcodes
[Learn about triggers →](/workflows/triggers)
Build and reuse checklists across events:
* [Save checklists for reuse](/settings/checklists#create-a-saved-checklist)
* Apply multiple checklists to a single event brief
* Create templates for different event types
* Share templates across your team
[Manage checklists →](/settings/checklists)
Control which add-ons and resources are available per service:
* Link specific add-ons to each service so customers only see relevant options
* Link specific resources to each service for accurate availability tracking
* New items are auto-linked to all existing services on creation
[Learn more →](/services/core-services#service-specific-add-ons)
Add contracts to your booking flow:
* Electronic signature capture with legal acknowledgment
* Dynamic shortcodes for personalized content
* Download and print signed contracts
* Up to 2 contract templates
[Learn about contracts →](/templates/contracts/overview)
Assign add-ons and resources to specific services so they only appear when those services are selected:
* Link [add-ons](/services/add-ons) to the services they belong to
* Link [resources](/resources) to the services that use them
* Keep your booking experience clean and relevant for customers
Assign team members to contacts for clear ownership and accountability:
* Assign an owner when creating or editing a contact
* Filter contacts by owner to manage your pipeline
* Track who's responsible for each client relationship
Create dynamic forms that adapt based on customer responses:
* Set page visibility rules based on earlier answers
* Show or hide form sections conditionally
* Build smarter, more relevant booking experiences
[Learn about form logic →](/forms/conditional-logic)
Create multiple quote templates for different scenarios:
* Design templates for different event types (weddings, corporate, festivals)
* Customize gallery images, testimonials, and add-ons per template
* Quickly apply the right template to any quote
[Learn about quote templates →](/templates/quote-templates)
***
## Pro
Everything in Plus, plus enterprise-grade features for scaling your business.
**Unlimited services** – For multi-concept operations offering coffee, bartending, photo booths, and more.
Let clients receive and book quotes immediately:
* Automated quote calculation from form submissions
* Clients see pricing instantly—no waiting
* Seamless booking experience in one visit
* Configurable price thresholds for high-ticket review
[Set up instant quoting →](/contacts/instant-pricing)
Sync your financial data automatically:
* [Invoices sync to QuickBooks](/finance/quickbooks-sync) when created
* Payments recorded automatically
* [Custom account mappings](/finance/quickbooks-custom-mappings) for proper categorization
* Automatic payout tracking
[Connect QuickBooks →](/settings/integrations/quickbooks)
Build custom automations with thousands of apps:
* Trigger Zaps on new bookings, events, and more
* Send data to CRMs, spreadsheets, and other tools
* Create custom notification workflows
[Set up Zapier →](/settings/integrations/zapier)
Remove Flashquotes branding from client-facing pages:
* Quote views without "Powered by Flashquotes"
* Booking forms without attribution
* Professional, branded client experience
Add tracking to your booking forms for conversion insights:
* Add a GA4 Measurement ID to track form activity
* Add a GTM Container ID for advanced tag management
* Measure lead generation and booking conversion rates
[Set up tracking →](/settings/integrations)
Automatically add staff members to synced Google Calendar events:
* Staff assigned to events are added as calendar attendees
* Team members receive calendar invites automatically
* Keep your crew informed without manual calendar management
Create unlimited quote templates for different scenarios:
* Design templates for different event types (weddings, corporate, festivals)
* Customize gallery images, testimonials, and add-ons per template
* Quickly apply the right template to any quote
[Learn about quote templates →](/templates/quote-templates)
Create unlimited contract templates for your business:
* Different contracts for different event types or services
* Electronic signature capture with legal acknowledgment
* Dynamic shortcodes for personalized content
[Learn about contracts →](/templates/contracts/overview)
***
## Scale
Everything in Pro, plus dynamic pricing tools and enterprise-grade API and support for high-volume operations.
Unlock dynamic pricing, full API access, and VIP priority support.
Connect ad clicks to booked revenue:
* Send eligible bookings to GA4 as `purchase` events
* Report full booked invoice value for campaign measurement
* Use hashed customer data to improve Google's conversion matching
[Set up booking conversions →](/settings/integrations/google-offline-conversions)
Adjust pricing based on demand, timing, event type, and more:
* **Surge pricing** for high-demand dates
* **Upcharge last-minute bookings** when lead time is short
* **Charge more (or less) for certain event types** to match how you actually price work
Build custom integrations with our REST API:
* Generate and manage [API keys](/api-reference/introduction)
* Access event, task, invoice, and form data
* Create custom workflows and integrations
* Full programmatic control of your data
[View API documentation →](/api-reference/introduction)
Get faster responses from our support team:
* Priority email support queue
* Dedicated assistance for complex setups
***
## Feature Comparison
| Feature | Starter | Plus | Pro | Scale |
| ------------------------------------------ | :-------: | :-------: | :-------: | :-------: |
| **Services & Pricing** | | | | |
| [Services](/services/structuring-services) | 1 | 5 | Unlimited | Unlimited |
| [Add-ons](/services/add-ons) | Unlimited | Unlimited | Unlimited | Unlimited |
| Dynamic pricing | – | – | – | ✅ |
| Surge pricing | – | – | – | ✅ |
| Last-minute upcharges | – | – | – | ✅ |
| Event-type pricing | – | – | – | ✅ |
| **Lead Capture** | | | | |
| Lead intake forms | ✅ | ✅ | ✅ | ✅ |
| Booking forms | ✅ | ✅ | ✅ | ✅ |
| Conditional form logic | – | ✅ | ✅ | ✅ |
| **Quoting & Invoicing** | | | | |
| Quote creation & delivery | ✅ | ✅ | ✅ | ✅ |
| Quote templates | 1 | Up to 3 | Unlimited | Unlimited |
| Instant quoting | – | – | ✅ | ✅ |
| Invoice generation | ✅ | ✅ | ✅ | ✅ |
| Stripe payments | ✅ | ✅ | ✅ | ✅ |
| Automated travel fee | – | ✅ | ✅ | ✅ |
| **Contracts** | | | | |
| Digital contracts | – | Up to 2 | Unlimited | Unlimited |
| **Event Management** | | | | |
| Event management | ✅ | ✅ | ✅ | ✅ |
| Checklist templates | – | ✅ | ✅ | ✅ |
| Staff auto-invite to calendar | – | – | ✅ | ✅ |
| **CRM** | | | | |
| Contact owners | – | ✅ | ✅ | ✅ |
| **Automation** | | | | |
| Workflows | – | Up to 10 | Unlimited | Unlimited |
| Basic workflow triggers | – | ✅ | ✅ | ✅ |
| Advanced workflow triggers | – | ✅ | ✅ | ✅ |
| **Integrations** | | | | |
| Gmail integration | – | ✅ | ✅ | ✅ |
| Google Calendar sync | – | ✅ | ✅ | ✅ |
| Service-specific add-ons | – | ✅ | ✅ | ✅ |
| Service-specific resources | – | ✅ | ✅ | ✅ |
| QuickBooks integration | – | – | ✅ | ✅ |
| Google Analytics & GTM | – | – | ✅ | ✅ |
| Zapier integration | – | – | ✅ | ✅ |
| Full API access | – | – | – | ✅ |
| **Support & Branding** | | | | |
| Remove branding | – | – | ✅ | ✅ |
| VIP support | – | – | – | ✅ |
***
## Platform Fee
Flashquotes charges a platform fee on payments processed through the platform. This fee funds ongoing development, support, and infrastructure.
The fee only applies to online payments made through Flashquotes. If your customer pays you directly (check, cash, wire transfer), no platform fee applies.
### Who Pays the Fee?
You control whether the fee is passed to your customer or absorbed by your business:
* **Pass to customer (default):** The fee is added on top of the invoice total as a separate line item, visible to your customer on the payment page. There is no cost to you.
* **Absorb the fee:** The fee is deducted from your proceeds and is not visible to your customer. Your quoted prices and invoice totals remain unchanged.
#### Quote-Level Override
Override the company default on any individual quote. When editing a quote, change the platform fee setting to pass or absorb for that quote only.
This allows quote and customer-level flexibility on whether you want to show the fee or not.
This only affects that quote and its invoice — your company default stays the same.
International businesses (United Kingdom, Canada & Australia) are required to absorb the platform fee. The fee is deducted from your proceeds and is not displayed to your customer.
The Flashquotes platform fee is a business-to-business charge between your company and Flashquotes for use of the platform.
The platform fee is separate from [service charges](/settings/service-charges), which are business-defined fees you add to quotes (like gratuity or service fees).
### Fees on Customer Refunds
When you issue a full refund to a customer, Stripe processing fees and Flashquotes platform fees are not refunded. These fees remain on the invoice and will show as a Flashquotes fee paid by you (the merchant), since the original customer payment that covered the fee has been refunded.
***
## Frequently Asked Questions
Yes! You can upgrade or downgrade your plan at any time from [Settings → Plans](https://app.flashquotes.com/settings/plans). When upgrading, you'll have immediate access to new features. When downgrading, you'll retain access until the end of your current billing period.
Plus, Pro, and Scale plans include a 14-day free trial. You'll have full access to all features during the trial. If you don't subscribe before the trial ends, you'll be moved to the Starter plan.
No! All Flashquotes plans include unlimited team members at no additional cost.
Yes—annual billing gets you 2 months free compared to monthly.
Each plan includes a set number of [services](/services/structuring-services): Starter includes 1, Plus includes 5, and Pro and Scale include unlimited. A service is a distinct, bookable offering (like "Espresso Bar" or "Hot Chocolate Cart").
Most businesses need only 1-3 services—use [pricing rules](/services/pricing) for variations (duration, guest count) and [add-ons](/services/add-ons) for extras (custom cups, additional hours). All plans include unlimited add-ons.
If you pass the fee to your customer (default for US businesses), it appears as a separate line item on the invoice payment page before they complete payment. It also appears on the receipt after payment for accounting purposes. If you absorb the fee, it is not visible to your customer anywhere.
The fee only applies to online payments processed through Flashquotes. If a customer ends up paying by check or another direct method, no fee applies. Including it on the quote would show a charge that may never be collected, which could cause confusion for you and your customer.
Customers who pay you directly (check, cash, bank transfer) outside of Flashquotes don't pay a fee. The fee only applies to payments processed through the platform.
Yes. In **Settings → Company**, choose to absorb the platform fee. The fee will be deducted from your proceeds instead of being added to your customer's total. You can switch between passing and absorbing at any time.
You can also override this on individual quotes — absorb the fee on a specific quote without changing your company-wide default.
If you pass the fee to customers and want full transparency upfront, consider mentioning it in your communications. For example: "A small platform fee applies to online payments. No fee for check or direct payments."
***
## Ready to Upgrade?
Compare plans and start your free trial in the Flashquotes dashboard
# Quotes
Source: https://docs.flashquotes.com/settings/quotes
Configure default quote settings and presentation options
## Overview
Quote settings control how your quotes are presented to clients and set default parameters for quote generation. These settings help maintain consistency in your pricing and presentation while optimizing conversion rates.
## Quote Defaults
Configure default quote expiration settings that apply to all new quotes. When quotes expire, customers can no longer book them directly - they'll be prompted to request a new quote or contact your company.
### How Quote Expiration Works
When a quote is created, its expiration date is automatically set to whichever comes **first**:
1. **Standard Expiration**: Current date + configured expiration days (default: 14 days)
2. **Event-Based Expiration**: Midnight of the day before the event (in the event location's timezone)
**Example:** If an event is scheduled for October 27 at 2:00 PM MST, the quote will expire on October 26 at 12:00 AM MST. This ensures customers have until the end of the day before the event to book, while giving you time to prepare.
Expired quotes cannot be booked. Customers viewing expired quotes will see options to request a fresh quote or contact you directly.
Set expiration dates that create urgency while giving clients reasonable time to decide. You can extend individual quote expiration dates from the contact details, quote edit, or quote view pages.
## Pricing Rules
Control how instant quotes behave when generated from your lead intake forms.
### Auto-Enroll in Workflow
When enabled, all instant quotes are automatically enrolled in your quote follow-up workflow. This ensures consistent follow-up for every contact without manual intervention.
Combine auto-enrollment with a well-designed [quote follow-up workflow](/workflows) to maximize conversion rates on instant quotes.
### High Ticket Threshold
Set a maximum quote value for instant quoting. When a quote exceeds this threshold, it's routed to manual review instead of being sent automatically.
**How it works:**
* Quotes **at or below** the threshold are sent instantly to the customer
* Quotes **above** the threshold are saved as drafts for your review
* Leave empty to allow instant quotes at any price
The threshold is based on the quote subtotal (before taxes and discounts). Set this value carefully to balance automation with oversight on larger deals.
**Example**: With a \$2,000 threshold:
* \$1,500 quote → Sent instantly to customer
* \$2,000 quote → Sent instantly to customer
* \$2,500 quote → Saved as draft for manual quoting
## Quote Templates
Every Flashquotes company gets one default quote template that is fully customizable with your own gallery images, testimonials, add-ons, and other visual elements.
Want to create multiple templates for different event types or services? This feature is available on the [Pro plan](/settings/plans).
Learn how to create, customize, and manage quote templates
### Key Template Features
* **Gallery Images**: Showcase your services with high-quality photos
* **Testimonials**: Build trust with customer reviews and quotes
* **Add-ons**: Control which upsells appear on quotes
* **Service Details**: Dynamic text with shortcode support
One template is always set as the default and is automatically applied to new quotes. You can change a quote's template at any time from the Quote Template tab.
## Quote Delivery
Set a custom subject line for all quote emails you send. You can use any shortcode from the Quote Sent workflow to personalize subject lines (like `{{lead.first_name}}` or `{{company.name}}`).
[See all available shortcodes →](/workflows/shortcodes/overview)
**Example Subject Lines:**
* `☕ {{lead.first_name}}, your quote is ready!`
* `✨ {{lead.full_name}}, review your quote and book online in minutes!`
💡 Including emojis in your subject lines can boost open rates by making emails more visually appealing and less likely to be filtered as spam.
If no custom subject is set, flashquotes will use a default subject line. You can always edit the subject when sending individual quotes.
Set a custom default email body for all quote emails. You can use any shortcode from the Quote Sent workflow to personalize your message (like `{{lead.first_name}}` or `{{company.name}}`).
[See all available shortcodes →](/workflows/shortcodes/overview)
**Example Email Body:**
```
Hi {{lead.first_name}},
Thanks for requesting a quote! I've put together custom pricing for your event.
Click the link below to review details and book online in minutes.
Let me know if you have questions!
```
**Live Preview:**
As you type, the preview shows how your email will look with real contact data. This helps you verify formatting and personalization before saving.
Emoji work great in email bodies! They make messages feel personal and friendly. 😃
You can edit the email body when sending individual quotes if you need custom messaging for specific contacts.
## Best Practices
1. Set an expiration window that creates urgency while giving clients reasonable time to decide
2. Use the High Ticket Threshold to route large quotes to manual review before they auto-send
3. Enable auto-enroll so every instant quote enters your follow-up workflow
## Next Steps
After configuring quote settings:
* [Create and manage quote templates](/templates/quote-templates)
* [Configure add-ons](/services/add-ons)
* [Configure service charges](/settings/service-charges)
* [Set up branding](/settings/branding)
* [Create a test quote](/contacts/quotes)
# Service Charges
Source: https://docs.flashquotes.com/settings/service-charges
Add percentage or flat fees to quotes and invoices
## Creating Service Charges
Navigate to **Settings > Service Charges** and click **Create Service Charge**.
**Required fields:**
* **Name**: e.g., "Service Fee", "Corkage Fee"
* **Type**: Percentage or Flat Amount
* **Value**: Percentage (0-100%) or dollar amount
**Options:**
* **Taxable**: Include in tax calculations
* **Auto-Apply**: Add to all new quotes automatically
Percentage charges calculate from quote subtotal before tax.
## Managing Charges
* Toggle tax and auto-apply settings directly in the table
* Delete charges with the trash icon (doesn't affect existing quotes)
* Name and value cannot be edited after creation
## How It Works
**Calculation order:**
1. Quote subtotal (services + add-ons)
2. Service charges
3. Discounts
4. Tax
5. Final total
**Auto-applied charges** appear on new quotes but can be removed manually. **Manual charges** can be added individually when editing quotes.
## Working with Service Charges
**Adding charges to quotes:**
* Auto-applied charges appear automatically on new quotes
* Add manual charges using the service charges dropdown
* Remove any charge by clicking the trash icon
* Charges apply to all line items except gratuity
**What customers see:**
* Service charges display as separate line items
* Included in quote total calculations
* Visible in the quote presentation
**From quote to invoice:**
* Service charges automatically carry over from quotes
* Adjust amounts during invoice editing if needed
* Appear as line items on customer invoices
* Included in payment calculations
**How taxable charges work:**
* Taxable charges: Included in tax calculations
* Non-taxable charges: Added after tax calculation
* Respects your location-based tax settings
* Shows tax breakdown to customers
## Common Examples
| Use Case | Type | Value | Taxable | Auto-Apply |
| ----------- | ---------- | ----- | ------- | ---------- |
| Gratuity | Percentage | 20% | Yes | Yes |
| Corkage Fee | Flat | \$75 | No | No |
| Service Fee | Percentage | 10% | Yes | Yes |
## Application Rules
**What gets charged:**
* Applies to all line items EXCEPT gratuity
* Percentage charges calculate from the subtotal of applicable items
* Flat charges add a fixed amount regardless of quote value
* When both percentage and flat charges are on a quote, percentage charges are calculated first
**Customer visibility:**
* Shows on quote presentations
* Appears on booking confirmation forms
* Listed as separate line items on invoices
* Included in all total calculations
## Integration
Service charges work with:
* Discounts (applied after charges)
* Tax rates (respects location settings)
* QuickBooks (syncs as line items)
* Invoices (carries through from quotes)
* Quote template (displays in modern interface)
# Supported Countries & Tax IDs
Source: https://docs.flashquotes.com/settings/supported-countries
Learn which countries Flashquotes supports and how to provide your tax ID
## Overview
Flashquotes is currently available for businesses in **four countries**. During signup, your country is detected from your business address. Non-US businesses must provide a valid tax identification number to connect to Stripe and accept payments.
## Supported Countries
| Country | Currency | Tax ID Required? |
| -------------- | -------- | -------------------- |
| United States | USD | No |
| United Kingdom | GBP | Yes — VAT Number |
| Canada | CAD | Yes — GST/HST Number |
| Australia | AUD | Yes — ABN |
Your country, currency, and locale are set automatically based on the business address you enter during onboarding. You can update your currency and locale anytime in **Settings → Company**.
For details on how the Flashquotes platform fee is handled in your country, see [Plans & Pricing → Platform Fee](/settings/plans#platform-fee).
## Tax ID Formats
If your business is in the UK, Canada, or Australia, you must provide a valid tax ID. Flashquotes validates the format before saving.
* **Format:** `GB` followed by 9 or 12 digits
* **Example:** `GB123456789` or `GB123456789012`
* Your VAT number is issued by HMRC. You can find it on your VAT registration certificate or in your HMRC online account.
* **Format:** 9-digit Business Number + `RT` + 4-digit account number
* **Example:** `123456789RT0001`
* Your GST/HST number is issued by the CRA. You can find it on your GST/HST registration confirmation or in your CRA Business Account.
* **Format:** 11 digits (no spaces or dashes)
* **Example:** `12345678901`
* Your ABN is issued by the Australian Business Register. You can look it up at [abr.business.gov.au](https://abr.business.gov.au).
A valid tax ID is required before you can connect to Stripe and accept payments. Make sure to enter it exactly in the format shown above — no spaces, dashes, or extra characters.
## How to Add or Update Your Tax ID
### During signup
When you enter a business address in the UK, Canada, or Australia during onboarding, a tax ID field appears automatically. Enter your tax ID before proceeding.
### From the banner or settings
If your account is missing a tax ID, you will see an amber banner at the top of your dashboard prompting you to add it.
1. Click **Update** in the banner
2. Enter your tax ID in the modal
3. Click **Save**
You can also update your tax ID anytime from **Settings → Company** in the billing information section.
## Unsupported Countries
If your business is located outside the four supported countries, you will see a message during signup that Flashquotes is not yet available in your region.
Want to be notified when Flashquotes expands to your country? Email [support@flashquotes.com](mailto:support@flashquotes.com?subject=Waitlist%20-%20Country%20Expansion) to join the waitlist.
## Next Steps
* [Company Settings](/settings/general) — configure your company details and Stripe connection
* [Payments](/finance/payments) — learn how payments work in Flashquotes
# Staff
Source: https://docs.flashquotes.com/staff
Learn how to manage your team members in Flashquotes
## Overview
Flashquotes provides tools for managing your staff members, enabling team coordination and event assignments. Staff members are used for event assignments and can access event briefs, but they do not have login access to the Flashquotes system.
**Staff vs Team Members**: Staff members are used for event assignments and
can access event briefs. To grant login access to your Flashquotes account,
invite team members through the [Members](/settings/members) section instead.
## Staff Management
### Adding Staff Members
**[Pro feature](https://flashquotes.com/pricing):** Add valid email addresses to staff profiles to automatically send Google Calendar invites when they're assigned to events. [Learn more about auto-invite staff →](/settings/integrations/google-calendar#auto-invite-staff-to-calendar-events)
To add a new staff member:
1. Go to **Staff** in the sidebar
2. Click `Add Staff` in the top right
3. Enter required information:
* First name
* Last name
* Email
* Phone number
* Status
* Location
For multi-city operations, staff location determines their availability for specific city events.
Current staff features include:
* Direct calling between team members via event brief
* Basic contact management
* Location-based availability
* Event brief access (no login required)
Additional staff-facing tools are planned for future updates.
## Best Practices
1. Keep staff contact information current
2. Assign appropriate locations for multi-location operations
3. Update availability status regularly
4. Ensure proper city assignments for multi-location operations
## Next Steps
After setting up staff:
* [Manage events](/events)
* [Configure event briefs](/events/event-brief)
* Review staff assignments
* Monitor team coordination
# Contract Editor
Source: https://docs.flashquotes.com/templates/contracts/editor
Build professional contracts with the rich text editor
## Overview
The contract editor provides a rich text toolbar for creating professional contracts with dynamic content. Use headers, lists, and signature blocks to build clear, well-organized contracts.
## Editor Toolbar
The toolbar includes text formatting, structural elements, and special contract features.
### Text Formatting
Format text with standard controls:
* **Bold** and *Italic* text
* Underline and strikethrough
* Links to external resources or policies
* Text alignment (left, center, right)
* Line dividers to separate sections
### Headers
Use headers to organize your contract into clear sections. Headers create visual hierarchy and make contracts easier to scan.
**Common sections:**
* Services Provided
* Payment Terms
* Cancellation Policy
* Liability and Insurance
* Terms and Conditions
### Lists
**Bullet lists** work well for:
* Terms and conditions
* Included services
* Customer responsibilities
**Numbered lists** work well for:
* Sequential steps
* Ordered clauses
* Priority items
### Signature Block
The signature block is where customers sign electronically. Click the signature icon in the toolbar to insert one anywhere in your contract.
**What signature blocks show:**
* Signer name (entered by customer)
* Electronic signature (adopted style)
* Date signed (automatic timestamp)
Customers click the signature block to open a modal where they enter their name, initials, and email. They acknowledge that electronic signatures are legally binding. Multiple signature blocks are supported if needed.
All contracts must have at least one signature block to be used successfully in the booking flow.
### Page Breaks
Insert page breaks to control where pages break when printed or downloaded as PDF. Page breaks are hidden when viewing on screen but honored in PDF and print output.
**When to use page breaks:**
* Before major sections
* To keep related content together
* To start signature blocks on a clean page
## Using Shortcodes
Insert shortcodes to personalize contracts with customer and quote data. Shortcodes appear as highlighted tags in the editor and automatically populate when customers view the contract.
**Example:** `{{lead.full_name}}` becomes "John Smith" in the signed contract.
[Learn about all available shortcodes →](/templates/contracts/shortcodes)
## Preview Your Contract
Click **Preview** to see how your contract will appear to customers. In preview mode, you can select a recent quote to see exactly how the contract would be presented for that specific quote, with all shortcodes populated with real data. This helps you verify formatting and content before assigning the contract to quotes.
## Tips for Effective Contracts
Use simple, direct language. Avoid legal jargon when plain English works better. Your customers should understand what they're signing.
Break your contract into logical sections with clear headers. This makes it easier for customers to find specific terms and for you to update sections later.
Put the signature block after all terms and conditions. Customers should read everything before signing.
Always preview your contract before using it. Check that shortcodes render correctly and the layout looks professional.
Many customers will sign contracts on their phones. Keep paragraphs short and avoid wide tables or images.
## Common Contract Structures
**Structure for service-based businesses:**
1. **Introduction** - Brief statement of agreement
2. **Services Provided** - What you'll deliver
3. **Payment Terms** - When and how much
4. **Cancellation Policy** - Refund and cancellation rules
5. **Liability** - Limits on responsibility
6. **Signatures** - Electronic signature block
**Structure for event businesses:**
1. **Event Details** - Date, time, location (use shortcodes)
2. **Services Included** - What's provided
3. **Client Responsibilities** - Venue access, permits, etc.
4. **Payment Schedule** - Deposit and balance terms
5. **Changes and Cancellations** - How changes are handled
6. **Force Majeure** - Uncontrollable circumstances
7. **Signatures** - Electronic signature block
**Structure for equipment rental:**
1. **Rental Items** - What's being rented
2. **Rental Period** - Pickup and return times
3. **Fees and Charges** - Rental fee, damage fees, late fees
4. **Care and Responsibility** - How to handle equipment
5. **Damage and Loss** - Customer liability
6. **Return Requirements** - Condition expectations
7. **Signatures** - Electronic signature block
## Next Steps
Insert dynamic customer and event data
Add contracts to the booking flow
# Contracts
Source: https://docs.flashquotes.com/templates/contracts/overview
Add digital contracts to your booking flow with electronic signatures
## Overview
Have a contract signed before customers pay. Contracts are fully digital with electronic signatures, making the process fast for customers and secure for you.
Contracts require a [Plus or Pro plan](/settings/plans). Plus subscribers can create up to 2 contract templates. Pro subscribers get unlimited templates.
Build professional contracts with the rich text editor
Personalize contracts with dynamic customer data
See what customers experience when signing
## How Contracts Work
Customers sign contracts during the booking flow, after filling out details but before payment. Once all signatures are complete, they proceed to payment or booking if no payment is required to book. The signed contract is saved and available for both you and your customer.
## Creating a Contract Template
1. Go to **Templates** in the sidebar, then open the **Contracts** tab
2. Click **New Contract**
3. Give your contract a name
4. Use the rich text editor to write your contract
5. Add signature blocks where customers should sign
6. Save your template
[Learn more about the contract editor →](/templates/contracts/editor)
## Assigning a Contract to a Quote
Add contracts to quotes in the Booking Flow section of the quote editor. Select a contract from the dropdown or create a new one.
1. Open a quote
2. Scroll to **Booking Flow**
3. Click the Contract dropdown
4. Select a contract template
[Duplicating a quote](/contacts/quotes#duplicating-a-quote) keeps the same contract as the original, so repeat clients get the terms they've already seen.
## Setting a Default Contract
Set a default contract to automatically assign it to new quotes.
1. Open any quote
2. Go to **Booking Flow**
3. Click the Contract dropdown
4. Click **Edit** next to a contract
5. Toggle **Set as default**
## The Signing Experience
Customers review and sign contracts after filling out event details but before payment and booking. Here's what they see:
1. Contract displays in full with all personalized details
2. Signature blocks show where they need to sign
3. They click a signature block to begin signing
4. They enter their name, initials, and email
5. They acknowledge electronic signatures are legally binding
6. Once all signatures complete, a **Finish** button appears
7. They click Finish to fully execute the contract and proceed to the next step
## After Signing
The signed contract is saved with signature data and timestamp. Both you and your customer can download or print it anytime from the booking details page.
## Next Steps
Build contracts with formatting and signature blocks
Insert dynamic customer and quote data
Configure the booking experience
# Contract Shortcodes
Source: https://docs.flashquotes.com/templates/contracts/shortcodes
Use dynamic shortcodes to personalize your contracts
## Overview
Shortcodes automatically insert quote and contact information into your contracts. They ensure accurate, personalized contracts without manual data entry.
Shortcodes are formatted as `{{entity.attribute}}` and appear as highlighted tags in the editor.
## Available Shortcodes
Contracts support the same shortcodes available in [workflow emails](/workflows/shortcodes/overview) for the Quote Sent trigger.
### Contact Information
| Shortcode | Description | Example |
| ----------------------- | ----------------------- | ------------------------------------------- |
| `{{lead.first_name}}` | Contact's first name | John |
| `{{lead.last_name}}` | Contact's last name | Doe |
| `{{lead.full_name}}` | Contact's full name | John Doe |
| `{{lead.email}}` | Contact's email address | [john@example.com](mailto:john@example.com) |
| `{{lead.company_name}}` | Contact's company name | Acme Inc |
| `{{lead.phone}}` | Contact's phone number | +1 234-567-890 |
| `{{lead.city}}` | Contact's city | New York |
### Company Information
| Shortcode | Description | Example |
| --------------------------- | ------------------ | ------------------------------------------------- |
| `{{company.name}}` | Your company name | Bean Scene Coffee |
| `{{company.contact_email}}` | Your contact email | [hello@beanscene.com](mailto:hello@beanscene.com) |
| `{{company.contact_phone}}` | Your contact phone | +1 234-567-890 |
### Quote Information
| Shortcode | Description | Example |
| ---------------------------------------- | ---------------------------------------------------- | ------------------------- |
| `{{quote.event_start_date}}` | Event start date | May 1, 2025 |
| `{{quote.event_start_time}}` | Event start time | 10:00 AM |
| `{{quote.event_end_date}}` | Event end date | May 2, 2025 |
| `{{quote.event_end_time}}` | Event end time | 10:00 PM |
| `{{quote.event_address}}` | Event location | 123 Main St, Anytown, USA |
| `{{quote.guest_count}}` | Number of guests | 150 |
| `{{quote.number_of_days}}` | Number of days | 2 |
| `{{quote.number_of_staff}}` | Number of staff | 3 |
| `{{quote.service_duration_hours}}` | Total service duration across all days | 8 |
| `{{quote.daily_service_duration_hours}}` | Average service duration per day (rounded to 15 min) | 4 |
## Using Shortcodes
1. Position your cursor where you want the shortcode
2. Type the shortcode exactly as shown (case-sensitive)
3. The shortcode highlights automatically when recognized
4. Preview your contract to verify shortcodes render correctly
Shortcodes are case-sensitive. Use exactly as shown in the tables above.
## Common Use Cases
Identify the parties entering the agreement:
```
This agreement is made between {{company.name}} ("Service Provider")
and {{lead.full_name}} ("Client") on this date.
```
**Renders as:**
"This agreement is made between Bean Scene Coffee ("Service Provider") and John Smith ("Client") on this date."
Reference specific event dates and times:
```
Services will be provided on {{quote.event_start_date}} from
{{quote.event_start_time}} to {{quote.event_end_time}} at
{{quote.event_address}}.
```
**Renders as:**
"Services will be provided on May 1, 2025 from 10:00 AM to 4:00 PM at 123 Main St, Anytown, USA."
Describe the scope of services:
```
Service Provider will provide coffee catering services for
{{quote.guest_count}} guests with {{quote.number_of_staff}} staff
members for {{quote.service_duration_hours}} hours.
```
**Renders as:**
"Service Provider will provide coffee catering services for 150 guests with 3 staff members for 4 hours."
Include contact details for both parties:
```
Client Contact: {{lead.full_name}}
Email: {{lead.email}}
Phone: {{lead.phone}}
Service Provider Contact: {{company.name}}
Email: {{company.contact_email}}
Phone: {{company.contact_phone}}
```
## Sample Contract with Shortcodes
Here's a basic service agreement structure using shortcodes:
```
SERVICE AGREEMENT
This Service Agreement ("Agreement") is entered into between
{{company.name}} ("Service Provider") and {{lead.full_name}}
("Client") for services to be provided on {{quote.event_start_date}}.
EVENT DETAILS
Date: {{quote.event_start_date}}
Time: {{quote.event_start_time}} to {{quote.event_end_time}}
Location: {{quote.event_address}}
Guest Count: {{quote.guest_count}}
SERVICES PROVIDED
Service Provider will provide coffee catering services including
{{quote.number_of_staff}} trained staff members for
{{quote.service_duration_hours}} hours of service.
PAYMENT TERMS
Client agrees to pay the total amount specified in the quote.
Payment terms and schedule are outlined in the booking confirmation.
CANCELLATION POLICY
[Your cancellation terms here]
CONTACT INFORMATION
Client: {{lead.full_name}}
Email: {{lead.email}}
Phone: {{lead.phone}}
Service Provider: {{company.name}}
Email: {{company.contact_email}}
Phone: {{company.contact_phone}}
[Add signature block here]
```
## Shortcode Best Practices
Use the preview feature to verify shortcodes render correctly before assigning the contract to quotes.
Use `{{lead.full_name}}` instead of `{{lead.first_name}}` in legal text and signature sections.
Use `{{quote.event_address}}` for the full address rather than just city.
Include both `{{quote.event_start_time}}` and `{{quote.event_end_time}}` to clarify the service window.
Some shortcodes may be empty if that information wasn't collected. Test with various quote types to ensure your contract reads well even with missing optional fields.
## Troubleshooting
* Check spelling and capitalization (they're case-sensitive)
* Ensure you have both opening `{{` and closing `}}`
* Verify you're using a valid shortcode from the tables above
* The shortcode may not be recognized - check the spelling
* Some fields may be empty if data wasn't collected
* Verify you're using quote-level shortcodes (contracts don't support booking-level shortcodes)
Contracts support the same shortcodes as Quote Sent workflow emails. Check the [workflow shortcodes documentation](/workflows/shortcodes/overview) for the complete list.
## Next Steps
Build and format your contract template
See all available shortcodes in detail
# Quote Templates
Source: https://docs.flashquotes.com/templates/quote-templates
Create reusable quote designs for consistent branding across all your quotes
## Overview
Quote templates allow you to create reusable designs for your quotes, making it easy to maintain consistent branding and presentation across all your quotes.
Every company gets one default quote template that is fully customizable. Creating multiple templates for different event types or services requires a [Pro plan](/settings/plans).
Design multiple templates for different event types or services
Configure gallery images, testimonials, add-ons, and more
Assign templates to any quote and refresh quotes that fall behind
Choose a default template for new quotes
## Creating a Quote Template
All plans include one default quote template. To create additional templates, upgrade to [Pro](/settings/plans).
You can create a new quote template in two ways:
### From the Templates Page
Go to **Templates** in the sidebar. Quotes is the first tab.
Click the **Create Template** button in the top right.
You'll be taken to the template editor where you can customize your new template.
### From a Quote Page
Open any quote detail page.
Click on the **Quote Template** tab.
In the template selector dropdown, click **Create new template**.
You'll be redirected to the template editor to customize your new template.
When you create a template, it starts with default settings. You can then customize it with your own images, testimonials, add-ons, and other elements.
## Editing a Quote Template
To edit an existing template:
Go to **Templates** in the sidebar.
Click on the template card you want to edit.
Use the template editor to customize gallery images, testimonials, add-ons, and other settings.
The template editor provides a live preview of how your quote will look with the current template settings. You can toggle between desktop and mobile views to see how your template appears on different devices.
### Editing the Template Name
1. In the template editor, click on the template name at the top of the page
2. Type the new name
3. Press **Enter** or click the checkmark to save, or **Escape** to cancel
The template name is saved automatically.
## What You Can Edit on Templates
Add up to multiple images that will be displayed in a gallery on your quote page. These images help showcase your services, products, or past events.
* **Adding Images**: Click on an empty image slot in the gallery section, then select an image from your image library
* **Replacing Images**: Click on an existing image slot to replace it with a different image
* **Removing Images**: Click the remove button on any image to remove it from the gallery
* **Reordering**: Images are displayed in the order they appear in your template settings
Use high-quality images at 1200×900px (4:3 ratio) for best results. Include a mix of service results, your team in action, and equipment shots.
Customize the service description text that appears on your quotes. You can add multiple lines of text, and each line supports Handlebars template variables to dynamically insert quote-specific information.
* **Adding Lines**: Click the "Add line" button to add a new service detail line
* **Editing Lines**: Click on any existing line to edit its text
* **Removing Lines**: Click the remove button next to any line to delete it
* **Reordering**: Drag and drop lines to change their display order
**Available Shortcodes:**
* `{{quote.guest_count}}` - Number of guests
* `{{quote.staff_count}}` - Number of staff
* `{{quote.service_duration_hours}}` - Total service duration across all days
* `{{quote.daily_service_duration_hours}}` - Average service duration per day
* `{{quote.event_address}}` - Event location
Configure how reviews appear on your quotes to build trust with potential customers.
* **Show/Hide Reviews**: Toggle whether to display your company's review rating and count
* **Rating Value**: Set your company's average rating (typically from Google Business Profile)
* **Rating Count**: Set the total number of reviews
Add customer testimonials that will be displayed on your quotes.
* **Adding Testimonials**: Click "Add testimonial" to create a new testimonial with customer name and quote text
* **Editing Testimonials**: Click the edit button on any testimonial to modify it
* **Removing Testimonials**: Click the delete button to remove a testimonial
* **Reordering**: Drag and drop testimonials to change their display order
Add 3-5 compelling testimonials for best results. Use specific, detailed testimonials that mention results.
Control which add-ons are displayed on quotes using this template.
* **Enabling Add-ons**: Toggle add-ons on or off to include or exclude them from quotes
* **Reordering**: Drag and drop enabled add-ons to change their display order
* **Creating New Add-ons**: Click "Create add-on" to add a new add-on to your company's add-on library
Add-ons configured here are the default for this template. You can still customize add-ons for individual quotes.
Your company logo isn't edited here. It's pulled from [Branding settings](/settings/branding) and appears automatically at the top of every quote. Go to **Settings → Branding** to change it.
## Assigning a Template to a Quote
You can change which template is assigned to a quote at any time:
Open the quote detail page for the quote you want to update.
Click on the **Quote Template** tab.
In the template selector dropdown at the top, select the template you want to use.
The quote will automatically update to use the selected template.
The template selector shows:
* All available templates for your company
* Which template is currently assigned (marked with a checkmark)
* Which template is set as the default (marked with a star icon)
* An option to create a new template
When you change a quote's template, the quote immediately reflects the new template's settings, including gallery images, testimonials, add-ons, and other visual elements.
## Updating a Quote to the Latest Template Version
Each quote stores a snapshot of its template at the moment the template was applied. Editing a template later doesn't change quotes that already use it, so a quote you've sent never shifts under the customer. When a quote's snapshot no longer matches its template, Flashquotes lets you know and offers a one-click refresh.
On the quote detail page, click the **Quote Template** tab.
If the quote's photos, add-ons, testimonials, or service details differ from the linked template, an **Update to latest version** button appears next to the template selector. If the quote already matches, there's nothing to show.
Click the button. The confirmation lists exactly which sections will change and which template they'll match. Choose **Update to latest version** to apply it, or **Keep current version** to leave the quote alone.
Updating replaces the quote's snapshot with the template's current content and can't be undone.
Duplicated quotes keep the exact appearance of the quote they were copied from, so they're a common place to see this button. See [Duplicating a quote](/contacts/quotes#duplicating-a-quote).
## Managing Templates
### Viewing All Templates
Go to **Templates** in the sidebar to see all your quote templates. Each template card shows:
* A thumbnail preview (using the first gallery image, if available)
* The template name
* How many quotes are currently using the template
* When the template was last updated
* Whether it's set as the default template
### Setting a Default Template
The default template is automatically applied to new quotes. To set a template as default:
**From the Templates Page:**
1. Go to **Templates** in the sidebar
2. Click the three-dot menu (⋮) on the template card
3. Select **Set as default**
**From the Template Editor:**
1. Click the three-dot menu in the top right
2. Select **Set as default**
Only one template can be the default at a time. Setting a new default automatically removes the default status from the previous default template.
### Duplicating a Template
To create a copy of an existing template:
Go to **Templates** in the sidebar.
Click the three-dot menu (⋮) on the template you want to duplicate.
Select **Duplicate**.
Enter a name for the new template.
Click **Duplicate Template**.
The new template will be an exact copy of the original, including all gallery images, testimonials, add-ons, and other settings. You can then edit the duplicate independently.
### Deleting a Template
To delete a template:
1. Go to **Templates** in the sidebar
2. Click the three-dot menu (⋮) on the template you want to delete
3. Select **Delete**
4. Confirm the deletion
You cannot delete the default template. You must set another template as default first.
Deleting a template does not affect existing quotes that were created using that template. Those quotes will continue to display with the template settings they had when they were created, and duplicating one of them keeps that same appearance.
## Default Templates
Every company has one default template. The default template is:
* Automatically applied to new quotes when they're created
* Marked with a star icon and "Default" badge
* Protected from deletion (you must set another template as default first)
When you create your first template, it automatically becomes the default. You can change the default template at any time, and only one template can be the default at once.
## Tips for Using Templates
Creating multiple templates requires a [Pro plan](/settings/plans).
Consider creating different templates for different types of events or services. For example:
* "Wedding Package" with romantic imagery and wedding-focused testimonials
* "Corporate Event" with professional photos and business testimonials
* "Coffee Service" with product-focused images
Give your templates clear, descriptive names so you can easily identify which one to use for each quote. Good examples:
* "Premium Wedding Package"
* "Corporate Catering"
* "Festival & Large Events"
Always preview your templates in mobile view to ensure they look good on all devices. Many customers will view quotes on their phones.
Regularly review and update your templates to ensure they reflect your current branding and offerings. Update testimonials and images seasonally.
Add testimonials that are relevant to the type of quote you're sending. Wedding testimonials for wedding templates, corporate testimonials for business templates.
## Frequently Asked Questions
Yes, you can edit templates at any time. However, changes to a template only affect new quotes that use it. Existing quotes retain the template settings they had when they were created. To bring an existing quote up to date, open its **Quote Template** tab and click **Update to latest version**. See [Updating a quote to the latest template version](#updating-a-quote-to-the-latest-template-version).
Existing quotes are not affected. They will continue to display with the template settings they had when they were created.
Creating multiple templates is a Pro feature. All plans include one default template that you can fully customize. Pro users can create unlimited templates for different event types, service packages, or branding variations. [Upgrade to Pro](/settings/plans)
On the quote detail page, go to the **Quote Template** tab. The currently selected template will be shown in the template selector dropdown.
Templates are shared across all quotes. If you need quote-specific customizations, you can create a new template or duplicate an existing one and modify it for that specific use case.
## Next Steps
Learn how to create and send quotes to leads
Set up add-ons to include in your templates
Configure default quote settings and delivery options
Learn best practices for sending quotes to customers
# Troubleshooting & FAQs
Source: https://docs.flashquotes.com/troubleshooting
Common issues and frequently asked questions
## Frequently Asked Questions
First, connect your business Google Workspace account, select it when sending a quote, and confirm the email appears in Gmail's **Sent** folder. Then have your domain administrator verify **SPF, DKIM, and DMARC**. See the [Gmail deliverability guide](/settings/integrations/google-gmail-send#improve-email-deliverability) for setup and verification steps.
No recorded opens does not prove an email went to spam. Ask the customer to check Spam and Promotions, and review any bounce message. For more help, follow [email delivery troubleshooting](/settings/integrations/google-gmail-send#emails-going-to-spam-or-showing-no-opens).
The booking form blocks the address step until the address is complete enough to dispatch a crew to. Clicking **Next** silently does nothing and an inline message appears under the field:
> Enter the full event address, including a street, city, and state or ZIP code.
**A complete address needs all three:**
1. A street number and name (`123 Main St`) — or a venue name, when the address has three or more comma-separated parts (`Fort Mason, San Francisco, CA 94109`)
2. A city or town
3. A state or province, or a ZIP/postal code
The exact wording follows your company's country: the UK and Ireland ask for a postcode instead of a state.
**Most common causes:**
* The address is only a city, state, or country ("Niagara Falls", "France"), carried over from a lead form — lead intake accepts free text, booking does not
* The customer typed the address by hand instead of picking a suggestion from the address autocomplete
* The venue is outside your company's country
More detail: [Event address requirement](/contacts/booking-flow#event-address-requirement).
Our general recommendation is to add an acknowledgement type question to your booking form.
**Implementation Steps:**
1. Add an acknowledgement question to your booking form
2. Word it something like: "I acknowledge that by completing this booking form I agree to the service terms and conditions of \[Company Name]"
3. Use a markdown hyperlink to link to your service contract on your web page
**Example:**
```
I acknowledge that by completing this booking form I agree to the
[service terms and conditions](https://yourwebsite.com/terms) of Company X.
```
This approach ensures customers explicitly agree to your terms before booking, providing legal protection while maintaining a smooth booking experience.
For more information on customizing booking forms, see [Forms → Booking](/forms/booking).
Wix has unique technical constraints that affect how iframe embeds display on mobile devices, particularly a 320px width limit and sandboxed rendering.
**Recommended Solution:**
Use a hybrid approach - embed the form for desktop users, but on mobile, use a button that links to your form's hosted Share Link page.
**Implementation:**
1. Create a [Share Link](/forms/share-links) in your Flashquotes dashboard
2. In Wix's mobile editor, hide the HTML iframe element
3. Add a button like "Get Custom Pricing" or "Request Quote"
4. Link the button to your Share Link URL
This ensures mobile users get the full, responsive form experience without Wix's display constraints.
**If you prefer to embed on mobile:**
Follow the mobile optimization steps in our [Wix Embed Best Practices](/forms/wix-embeds) guide, including using fixed dimensions and testing on real devices.
For the best mobile conversion rates, we strongly recommend using Share Links for Wix mobile users instead of embedded iframes.
***
## More FAQs
Have a question that's not answered here? Contact our support team at [support@flashquotes.com](mailto:support@flashquotes.com) or use the chat widget in the bottom right corner.
# Overview
Source: https://docs.flashquotes.com/workflows/overview
Learn how to use Workflows in Flashquotes to enhance contact follow-up and engagement
## What are Workflows?
Workflows automate contact communication in Flashquotes with intelligent email sequences. The platform offers five workflow triggers: Quote Requested workflows that engage contacts immediately after form submission, Quote Sent workflows that follow up after you send quotes, Quote Booked workflows that automate post-booking communications, and event-based triggers (First Event Start and Last Event End) that automate communications around actual event dates.
## Available Features
* **Quote Requested Workflows**: Automatically engage contacts the moment they submit your lead intake form
* **Quote Sent Workflows**: Customizable email sequence for quote follow-ups — create multiple workflows and choose which one to use when sending each quote
* **Quote Booked Workflows**: Automate post-booking communications when a quote is booked
* **First Event Start Workflows**: Time-sensitive communications before, during, or after the first event begins
* **Last Event End Workflows**: Post-event follow-ups and re-engagement campaigns after the final event concludes
* **Flexible Workflow Management**: Add, edit, or delete workflow steps to match your sales process
* **Automated Timing**: Configure follow-up intervals optimized for your business
* **Automatic Rescheduling**: Event-based workflows reschedule when event dates change
* **Dynamic Content**: Shortcodes automatically insert quote, contact, and booking details
* **Email Templates**: Pre-built templates for Quote Sent workflows, fully customizable for others
* **Gmail Integration**: Choose which connected Gmail account sends workflow emails
* **Multiple Workflows per Trigger**: Create multiple workflows for the same trigger and set a default
* **Resume Capability**: Restart stopped workflows when contacts re-engage
## How It Works
**Quote Requested Workflows:**
1. Create a workflow with the Quote Requested trigger
2. Add custom email steps for initial contact engagement
3. Publish the workflow
4. Contacts are automatically enrolled when they submit your lead intake form
**Quote Sent Workflows:**
1. When sending a quote, toggle "Enroll in workflow" to activate the sequence
2. Select which workflow to use from the dropdown (the default is pre-selected)
3. Contacts automatically receive follow-up emails based on the selected workflow
4. Each email uses customizable templates with your quote details
## Who Receives Workflow Emails
Workflow emails go to the contact on the quote or booking that triggered the workflow:
* **Quote workflows** (Quote Requested, Quote Sent) send to the contact on the quote
* **Booking workflows** (Quote Booked, First Event Start, Last Event End) send to the contact on the booking
The recipient is resolved when each email sends, not when the workflow starts. That means the sequence always follows the current record:
* Update a contact's email address, and the remaining steps go to the new address
* [Change which contact a booking is under](/bookings#changing-the-booking-contact), and pending steps go to the new contact
* Extra recipient addresses you type into the Send Quote modal receive that quote email only — workflow follow-ups go to the quote's contact
There's no per-workflow recipient setting for these quote and booking sequences. To change who receives a sequence, update the contact's email or change the contact on the booking. [Invoice reminders](/invoices/reminders) use the individual invoice's **Bill to details** email instead.
## What's Included
**Quote Requested workflows** help you:
* Acknowledge quote requests immediately
* Build trust while preparing quotes
* Set expectations about your process
* Share your company story early
**Quote Sent workflows** include:
* Welcome email (immediate)
* Follow-up reminders (scheduled intervals)
* Booking encouragement messages
* Final opportunity emails
**Quote Booked workflows** help you:
* Send booking confirmation details
* Share next steps and preparation info
* Kick off onboarding communications
**First Event Start workflows** enable:
* Pre-event preparation reminders
* Day-of arrival and parking instructions
* Last-minute contact information
* Post-event thank you messages
**Last Event End workflows** enable:
* Thank you emails after event completion
* Review and feedback requests
* Photo/video delivery notifications
* Re-booking campaigns
## Next Steps
* Learn about [workflow triggers](/workflows/triggers)
* Explore [workflow templates](/workflows/templates)
* Understand [shortcodes](/workflows/shortcodes/overview)
# Helper Functions
Source: https://docs.flashquotes.com/workflows/shortcodes/helpers
Understanding and using helper functions with shortcodes in Flashquotes
Helper functions add flexibility to shortcodes in workflow templates. Currently, one helper function is available.
## Available Functions
* [Default Values](/workflows/shortcodes/helpers/default) - Specify fallback values when fields are empty
## Coming Soon
Additional helper functions are in development:
* If Conditions - Conditional content based on values
* Unless Conditions - Inverse conditional logic
These helpers are not yet implemented in the system.
# Default Value
Source: https://docs.flashquotes.com/workflows/shortcodes/helpers/default
Learn how to use the default value helper function to handle empty values in shortcodes
The `default` helper function allows you to specify a fallback value when a shortcode field is empty. This ensures your emails always display something meaningful, even when data is missing.
## Syntax
The syntax for this helper function is:
```
{{default shortcode_value fallback_default_value}}
```
Where:
* `default` is the function name
* `shortcode_value` is the primary value you want to display
* `fallback_default_value` is what will be displayed if the `shortcode_value` is empty
## Examples
### Using a String Fallback
```
Hey {{default lead.full_name 'there'}}!
```
If `lead.full_name` exists:
```
Hey John Doe!
```
If `lead.full_name` is empty:
```
Hey there!
```
### Using Another Shortcode as Fallback
```
Contact us at {{default company.contact_phone company.contact_email}}
```
If `company.contact_phone` exists:
```
Contact us at +1 234-567-890
```
If `company.contact_phone` is empty:
```
Contact us at contact@acmeinc.com
```
## Best Practices
* Always use default values for critical personalization fields
* Keep default values generic but professional
* Test your templates with both filled and empty fields
* Consider using other shortcodes as fallbacks when appropriate
* Preview your templates to ensure the fallbacks work as expected
# If Conditions
Source: https://docs.flashquotes.com/workflows/shortcodes/helpers/if-else
Learn how to use if/else conditional logic in your workflow message templates
The `if` helper is not currently available in Flashquotes workflows. This feature is in development.
The `if` helper will allow you to conditionally include content based on whether a value exists.
## Planned Features
When available, the `if` helper will support:
* Basic conditional logic
* Else blocks for alternative content
* Multiple conditions in templates
* Nested conditions for complex logic
## Alternative Solution
For now, use the [default helper](/workflows/shortcodes/helpers/default) to provide fallback values when fields are empty.
## Coming Soon
This feature is in development. Check back for updates on availability.
# Unless Conditions
Source: https://docs.flashquotes.com/workflows/shortcodes/helpers/unless
Learn how to use unless conditional logic in your workflow message templates
The `unless` helper is not currently available in Flashquotes workflows. This feature is in development.
The `unless` helper will be the inverse of the `if` helper, executing content when values are empty or missing.
## Planned Features
When available, the `unless` helper will support:
* Inverse conditional logic ("if not")
* Checking for missing or empty values
* Else blocks for alternative content
* Nested conditions
## Alternative Solution
For now, use the [default helper](/workflows/shortcodes/helpers/default) to provide fallback values when fields are empty.
## Coming Soon
This feature is in development. Check back for updates on availability.
# Overview
Source: https://docs.flashquotes.com/workflows/shortcodes/overview
Understanding and using shortcodes in Flashquotes workflows
Shortcodes are dynamic placeholders that automatically insert relevant information into your workflow emails and quote line items. They help personalize content and ensure accurate information is always included.
Shortcodes are formatted as `{{entity.attribute}}` and must be surrounded by `{{}}` to be translated to a dynamic value.
After adding shortcodes to a message template, [preview
it](/workflows/templates) with a quote to make sure
they work as expected.
## Where Shortcodes Work
Shortcodes resolve in:
* **Workflow email templates** — Quote Sent, Quote Booked, First Event Start, Last Event End
* **Quote line item descriptions** — Service and Add-on descriptions on a quote. Personalize each line with guest count, event date, customer name, and more using the same `{{entity.attribute}}` syntax. Shortcodes resolve when the quote is created.
## Available Shortcodes by Trigger
Specific shortcodes are only available for certain triggers based on what data is available at that stage of the customer journey.
### Contact Information
| Shortcode | Description | Example |
| ----------------------- | ----------------------- | ------------------------------------------- |
| `{{lead.first_name}}` | Contact's first name | John |
| `{{lead.last_name}}` | Contact's last name | Doe |
| `{{lead.full_name}}` | Contact's full name | John Doe |
| `{{lead.email}}` | Contact's email address | [john@example.com](mailto:john@example.com) |
| `{{lead.company_name}}` | Contact's company name | Acme Inc |
| `{{lead.phone}}` | Contact's phone number | +1 234-567-890 |
| `{{lead.city}}` | Contact's city | New York |
### Company Information
This is information about your company.
| Shortcode | Description | Example |
| --------------------------- | ---------------------------- | ------------------------------------------------- |
| `{{company.name}}` | Company name | Acme Inc |
| `{{company.contact_email}}` | Company contact email | [contact@acmeinc.com](mailto:contact@acmeinc.com) |
| `{{company.contact_phone}}` | Company contact phone number | +1 234-567-890 |
### Quote Information
| Shortcode | Description | Example |
| ---------------------------------------- | -------------------------------------------------------------- | ------------------------- |
| `{{quote.event_start_date}}` | Quote event start date | May 1, 2025 |
| `{{quote.event_start_time}}` | Quote event start time | 10:00 AM |
| `{{quote.event_end_date}}` | Quote event end date | May 2, 2025 |
| `{{quote.event_end_time}}` | Quote event end time | 10:00 PM |
| `{{quote.event_address}}` | Quote event address | 123 Main St, Anytown, USA |
| `{{quote.guest_count}}` | Quote guest count | 10 |
| `{{quote.number_of_days}}` | Quote number of days | 2 |
| `{{quote.number_of_staff}}` | Quote number of staff | 2 |
| `{{quote.number_of_resources}}` | Quote number of resources | 2 |
| `{{quote.expiration_date}}` | Quote expiration date | May 30, 2025 |
| `{{quote.service_duration_hours}}` | Total service duration across all days, in hours | 8 |
| `{{quote.daily_service_duration_hours}}` | Average service duration per day, in hours (rounded to 15 min) | 4 |
### Contact Information
| Shortcode | Description | Example |
| ----------------------- | ----------------------- | ------------------------------------------- |
| `{{lead.first_name}}` | Contact's first name | John |
| `{{lead.last_name}}` | Contact's last name | Doe |
| `{{lead.full_name}}` | Contact's full name | John Doe |
| `{{lead.email}}` | Contact's email address | [john@example.com](mailto:john@example.com) |
| `{{lead.company_name}}` | Contact's company name | Acme Inc |
| `{{lead.phone}}` | Contact's phone number | +1 234-567-890 |
| `{{lead.city}}` | Contact's city | New York |
### Company Information
This is information about your company.
| Shortcode | Description | Example |
| --------------------------- | ---------------------------- | ------------------------------------------------- |
| `{{company.name}}` | Company name | Acme Inc |
| `{{company.contact_email}}` | Company contact email | [contact@acmeinc.com](mailto:contact@acmeinc.com) |
| `{{company.contact_phone}}` | Company contact phone number | +1 234-567-890 |
### Booking Information
These shortcodes are available for booking-based workflow triggers.
| Shortcode | Description | Example |
| --------------------------------------------- | ------------------------------------------------ | ------------------------- |
| `{{booking.first_event_start_date}}` | First event start date | May 1, 2025 |
| `{{booking.first_event_start_time}}` | First event start time | 10:00 AM |
| `{{booking.last_event_end_date}}` | Last event end date | May 2, 2025 |
| `{{booking.last_event_end_time}}` | Last event end time | 10:00 PM |
| `{{booking.first_event_end_date}}` | First event end date | May 1, 2025 |
| `{{booking.first_event_end_time}}` | First event end time | 4:00 PM |
| `{{booking.last_event_start_date}}` | Last event start date | May 2, 2025 |
| `{{booking.last_event_start_time}}` | Last event start time | 9:00 AM |
| `{{booking.first_event_address}}` | First event venue address | 123 Main St, Anytown, USA |
| `{{booking.first_event_guest_count}}` | First event guest count (shows "TBD" if not set) | 50 |
| `{{booking.first_event_number_of_staff}}` | First event staff count | 2 |
| `{{booking.first_event_number_of_resources}}` | First event resource count | 2 |
| `{{booking.number_of_events}}` | Number of events in booking | 3 |
| `{{booking.created_date}}` | Date booking was created | April 15, 2025 |
Booking shortcodes are available for **Quote Booked**, **First Event Start**, and **Last Event End** triggers. First Event Start and Last Event End require a Plus or Pro subscription.
`{{booking.first_name}}`, `{{booking.last_name}}`, `{{booking.full_name}}`, `{{booking.email}}`, and `{{booking.phone}}` have been retired and removed from the shortcode picker. Existing templates that already use them keep working and now pull from the live contact record. Use the `{{lead.*}}` shortcodes above instead.
Quote shortcodes like `{{quote.number_of_staff}}` and `{{quote.number_of_resources}}` are **not** available in booking-based triggers (First Event Start, Last Event End) — bookings can exist without a quote, so quote data isn't guaranteed. Use `{{booking.first_event_number_of_staff}}` and `{{booking.first_event_number_of_resources}}` instead.
## Shortcode Availability Matrix
| Shortcode Category | Quote Requested | Quote Sent | Quote Booked | First Event Start | Last Event End |
| ------------------ | --------------- | ---------- | ------------ | ----------------- | -------------- |
| **Contact** | ✓ | ✓ | ✓ | ✓ | ✓ |
| **Company** | ✓ | ✓ | ✓ | ✓ | ✓ |
| **Quote** | ✓ | ✓ | - | - | - |
| **Booking** | - | - | ✓ | ✓ | ✓ |
Ready to become a shortcodes power user? Check out our [Helper
Functions](/workflows/shortcodes/helpers) for additional features like default
values and more.
# Templates
Source: https://docs.flashquotes.com/workflows/templates
Learn how to customize and manage workflow templates in Flashquotes
## Understanding Workflow Templates
Workflow templates are pre-configured email sequences for contact follow-up. The quote follow-up workflow includes 7 email templates designed for optimal conversion rates.
## What's Included
Each email template includes:
* **Subject Line**: Pre-written subject optimized for engagement
* **Message Body**: Professional content designed for conversions
* **Timing**: Optimized sending intervals (immediate to 30 days)
* **Shortcodes**: Automatic insertion of quote and contact details
## Template Sequence
The 7-step sequence includes:
1. Welcome email (immediate)
2. 3-day follow-up
3. 7-day reminder
4. 14-day check-in
5. 21-day final offer
6. 28-day last chance
7. 30-day archive notice
## Using Shortcodes
Templates include shortcodes that automatically insert your data:
* `{{lead.full_name}}`: The contact's full name
* `{{quote.event_start_date}}`: The date of the first event
* `{{company.name}}`: Your company name
Learn more about [shortcodes](/workflows/shortcodes/overview).
## Customizing Your Workflow
While templates come pre-configured and ready to use, you have full control to customize them to fit your business needs:
### Adding New Steps
You can add additional steps to your workflow at any position:
1. Navigate to **Workflows** in the sidebar
2. Click on the Quote Follow-up workflow
3. Click **Add Step** between existing steps or at the end
4. The system automatically calculates a smart delay based on surrounding steps
5. Customize the email subject and message content for your new step
### Editing Step Content
Each workflow step includes an email template that you can customize:
1. Click on any workflow step to edit
2. Modify the subject line and message body
3. Use shortcodes to personalize content with contact and quote data
4. Changes are saved automatically
### Deleting Steps
Remove steps that don't fit your follow-up strategy:
1. Click on the workflow step you want to remove
2. Click the **Delete** button in the step editor
3. Confirm deletion - this will soft-delete the step and its message template
Deleting a step will **immediately** prevent that step from being sent, even for active workflows.
Adding a step only impacts **future workflow enrollments**. The new step will **not** be added to existing active workflows.
## How Templates Work
Templates are pre-configured and automatically activated when you:
1. Send a quote with "Enroll in workflow" enabled
2. The system sends emails according to the preset schedule
3. Each email uses the appropriate template for that step
# Triggers
Source: https://docs.flashquotes.com/workflows/triggers
Understanding workflow triggers and automation in Flashquotes
## Available Triggers
Flashquotes offers multiple workflow triggers to automate customer communications at different stages of the customer journey. Each trigger has access to specific shortcodes relevant to that stage.
All workflows require a [Plus subscription or higher](https://flashquotes.com/pricing). Plus includes up to 10 workflows; Pro and above remove the limit.
### Quote Requested
The Quote Requested trigger automatically enrolls contacts in workflows when they submit a quote request through your lead intake forms. This allows you to engage contacts immediately after they express interest, before you even send a formal quote.
**How it works:**
1. A contact submits your lead intake form
2. Flashquotes automatically enrolls them in any active Quote Requested workflows
3. The email sequence begins immediately based on your configured timing
4. Workflows continue until the contact books or you stop them manually
**Key Features:**
* **Automatic Enrollment**: No manual action required - contacts are enrolled as soon as they submit the form
* **Immediate Engagement**: Connect with contacts during the critical window between request and quote delivery
* **Gmail Account Selection**: Choose which connected Gmail account sends the workflow emails
* **Customizable Templates**: Create email sequences tailored to new inquiries
**Common Use Cases:**
* Send immediate acknowledgment confirming quote request receipt
* Share your company story and build trust while preparing their quote
* Provide helpful event planning tips and resources
* Set expectations about your quote preparation timeline
* Answer common questions proactively
**Setting Up Quote Requested Workflows:**
To create a Quote Requested workflow:
1. Navigate to Workflows from your main navigation
2. Create a new workflow
3. Select "Quote Requested" as the trigger type
4. Add email steps with your desired timing and content
5. Publish the workflow to activate automatic enrollment
### Quote Sent
The Quote Sent trigger automatically starts the workflow when you send a quote with "Enroll in workflow" enabled. You can create multiple Quote Sent workflows and choose which one to use for each quote.
**How it works:**
1. Send a quote from the quotes page
2. Toggle "Enroll in workflow" before sending
3. Select which workflow to use from the dropdown (the default is pre-selected)
4. The email sequence begins automatically based on the selected workflow
**Key Features:**
* **Multiple Workflows**: Create different follow-up sequences for different situations
* **Default Workflow**: Set a default that's pre-selected in the send modal — the first workflow created is automatically set as default
* **Manual Control**: Choose whether to enroll each quote individually
* **Customizable**: Modify timing, content, and number of steps to match your sales process
**Managing Defaults:**
* Navigate to any Quote Sent workflow and click **Set as default** in the header
* The default workflow shows a "Default" badge in the workflows list
* If you delete the default workflow, the next oldest is automatically promoted
### Quote Booked
The Quote Booked trigger fires automatically when a customer completes a booking. Use this to send post-booking communications like confirmation details, next steps, or onboarding information.
**How it works:**
1. Create a workflow with the Quote Booked trigger
2. Add email steps with your desired timing and content
3. Publish the workflow
4. When a quote is booked, the contact is automatically enrolled
**Key Features:**
* **Automatic Enrollment**: Contacts enroll as soon as their quote is booked
* **Contact & Booking Shortcodes**: Access contact, company, and booking details in email templates
* **Gmail Integration**: Send from your connected Gmail account
* **Customizable Templates**: Create sequences tailored to post-booking communications
**Common Use Cases:**
* Send booking confirmation with event details
* Share preparation guides and next steps
* Deliver important information and links
* Begin onboarding communications
* Request additional information needed for the event
### First Event Start
The First Event Start trigger allows you to send workflow emails based on when the first event in a booking begins. This is perfect for time-sensitive communications that need to happen before, during, or after the event starts.
**How it works:**
1. Create a workflow with the First Event Start trigger
2. Add email steps with delays relative to the event start time (e.g., "2 days before" or "1 hour after")
3. Publish the workflow
4. When bookings are created, they're automatically enrolled
5. Emails are scheduled based on the actual first event start time
6. If event dates change the workflow emails automatically reschedule
**Key Features:**
* **Automatic Enrollment**: Bookings enroll automatically when created
* **Dynamic Scheduling**: Emails schedule based on actual event start times
* **Automatic Rescheduling**: Updates when event dates change
* **Contact & Booking Shortcodes**: Access contact, company, and booking details in email templates
* **Gmail Integration**: Send from your connected Gmail account
**Common Use Cases:**
* Remind clients of their upcoming service
* Send details and set expectations with clients
* Morning-of message with setup information
* Immediate post-event thank you message
**Scheduling Details:**
* Steps can be scheduled before or after the event start time
* Rescheduling happens automatically when event dates change
**Requirements:**
* [Plus subscription or higher](https://flashquotes.com/pricing)
### Last Event End
The Last Event End trigger allows you to send workflow emails based on when the final event in a booking concludes. This is ideal for post-event follow-ups, review requests, and re-engagement campaigns.
**How it works:**
1. Create a workflow with the Last Event End trigger
2. Add email steps with delays relative to the event end time (e.g., "1 day after" or "7 days after")
3. Publish the workflow
4. When bookings are created, they're automatically enrolled
5. Emails are scheduled based on the actual last event end time
6. If event dates change the workflow emails automatically reschedule
**Key Features:**
* **Automatic Enrollment**: Bookings enroll automatically when created
* **Dynamic Scheduling**: Emails schedule based on actual event end times
* **Automatic Rescheduling**: Updates when event dates change
* **Contact & Booking Shortcodes**: Access contact, company, and booking details in email templates
* **Gmail Integration**: Send from your connected Gmail account
**Common Use Cases:**
* Thank you email immediately after the last event
* Review request 1-2 days after event completion
* Feedback survey request 1 week after event
* Re-booking campaign 30-60 days after event
**Scheduling Details:**
* Steps are typically scheduled after the event end time
* Rescheduling happens automatically when event dates change
**Requirements:**
* [Plus subscription or higher](https://flashquotes.com/pricing)
## Workflow Trigger Comparison
| Feature | Quote Requested | Quote Sent | Quote Booked | First Event Start | Last Event End |
| ------------------------ | --------------------------------- | -------------------------------- | -------------------------- | ------------------------------ | ------------------------------ |
| **Activation** | Automatic on form submission | Manual toggle when sending quote | Automatic when booked | Automatic when booking created | Automatic when booking created |
| **Timing** | Immediately after form submission | When you send the quote | When quote is booked | Relative to first event start | Relative to last event end |
| **Use Case** | Initial engagement | Quote follow-up | Post-booking comms | Pre/during/post first event | Post-event follow-up |
| **Default Templates** | None (create custom) | 7 pre-configured emails | None (create custom) | None (create custom) | None (create custom) |
| **Enrollment** | Automatic for all forms | Optional per quote | Automatic for all bookings | Automatic for all bookings | Automatic for all bookings |
| **Subscription** | Plus and above | Plus and above | Plus and above | Plus and above | Plus and above |
| **Available Shortcodes** | Contact, Company, Quote | Contact, Company, Quote | Contact, Company, Booking | Contact, Company, Booking | Contact, Company, Booking |
| **Rescheduling** | No | No | No | Yes (on event date change) | Yes (on event date change) |
## Choosing the Right Trigger
### For Contact Engagement
* **Quote Requested**: First touchpoint when a contact shows interest
* **Quote Sent**: Follow up after presenting your proposal
### For Post-Booking Communication
* **Quote Booked**: Immediate post-booking confirmation and onboarding
* **First Event Start**: Time-sensitive pre-event and day-of communications
* **Last Event End**: Post-event follow-up and relationship building
## Available Shortcodes by Trigger
Different triggers have access to different shortcodes based on what information is available at that stage:
* **All Triggers**: Company shortcodes (`{{company.name}}`, `{{company.contact_email}}`, etc.)
* **Quote-Based** (Quote Requested, Quote Sent): Contact and Quote shortcodes
* **Booking-Based** (Quote Booked, First Event Start, Last Event End): Contact and Booking shortcodes
[View complete shortcodes reference →](/workflows/shortcodes/overview)
# Troubleshooting
Source: https://docs.flashquotes.com/workflows/troubleshooting
Why a workflow didn't start, skipped a step, or didn't send a scheduled email
## Why Didn't My Workflow Send?
"Skipped" can mean four different things. Each has a different fix:
| What you're seeing | What happened |
| ----------------------------------------------------- | --------------------------------------------------------------------------------------- |
| The workflow never appears for the contact or booking | [It was never enrolled](#the-workflow-never-started) |
| The workflow is running, but an early step is missing | [The step's send time had passed](#a-step-was-skipped-because-its-send-time-had-passed) |
| The workflow shows as stopped | [The enrollment was stopped](#the-workflow-was-stopped) |
| A step shows **Skipped**, or its email never sent | [The step couldn't send](#a-scheduled-step-couldnt-send) |
Check the status pills on the contact's Workflows tab. **Skipped** means the
send time passed without the email going out. Steps dropped at enrollment
don't appear in the list at all. Stopped workflows show remaining steps as
**Cancelled**.
## The Workflow Never Started
If the workflow never appears for a contact or booking, it wasn't enrolled. Common reasons:
* **The workflow isn't published.** Draft workflows never enroll anyone.
* **The workflow was deleted** before the trigger fired.
* **The workflow has no active steps.** Nothing to send means no enrollment.
* **Every step would land in the past.** Nothing is left to schedule, so enrollment is skipped. Common when the event already happened.
* **Your plan doesn't include workflows.** All workflows need [Plus or higher](https://flashquotes.com/pricing). Plus includes 10 workflows. Pro removes the limit.
* **The record isn't eligible.** The quote, booking, invoice, or event was deleted or no longer qualifies.
**To fix it:**
1. Publish the workflow
2. Confirm it has at least one active step
3. Check your plan includes workflows
4. For existing bookings, [bulk enroll upcoming bookings](/workflows/workflow-enrollments#bulk-enrolling-bookings)
## A Step Was Skipped Because Its Send Time Had Passed
At enrollment, flashquotes calculates a send time for each step. Steps already in the past are dropped. Only future steps get scheduled. The workflow still runs. It just starts partway through. Dropped steps don't appear in the step list.
This happens when:
* You enroll an older quote or booking, so early follow-ups fall in the past
* An event-based workflow enrolls a booking whose event is soon or has passed
* An invoice is already overdue when reminders begin
**To fix it:** nothing needed. Flashquotes never backfills past emails, so contacts don't get a burst of stale follow-ups. Want the contact to get that content anyway? Send it manually, or build a workflow whose timing starts from today.
## The Workflow Was Stopped
Stopped workflows appear under **Canceled Workflows** on the contact's Workflows tab. This happens when:
* **Someone stopped it** with **Stop all** (quote view) or **Stop Workflow** (contact's Workflows tab)
* **The booking was canceled**
* **The contact booked.** Quote follow-up workflows stop automatically once they commit
* **The contact replied.** Quote nurture workflows that stop on reply are deactivated
**To fix it:** [resume the workflow](/workflows/workflow-enrollments#resuming-stopped-workflows) from the contact's Workflows tab. This only works while future steps remain.
## A Scheduled Step Couldn't Send
Flashquotes re-checks every step at send time. Blocked steps show a **Skipped** pill once their send time passes. A step is blocked when:
**The enrollment changed**
* The workflow was stopped, or the enrollment was removed
* The step already sent or failed
**The record changed**
* The quote was deleted, expired, or marked lost
* The quote's event date passed
* The booking was deleted or canceled
* The booking has no events left (event-based workflows)
* The invoice was deleted or paid in full. Paid invoices get no more [reminders](/invoices/reminders)
**The workflow or plan changed**
* The step or its email template was deleted
* The email template couldn't render
* Your plan no longer includes workflows
**To fix it:** usually nothing. These checks stop emails about dead quotes, bookings, and invoices. Blocked unexpectedly? Confirm:
1. The quote or booking is still active
2. The workflow and its templates still exist
3. Your plan still includes workflows
Then re-enroll.
## Still Stuck?
Email [support@flashquotes.com](mailto:support@flashquotes.com) with the contact name and workflow. We'll check the enrollment for you.
# Workflow Enrollments
Source: https://docs.flashquotes.com/workflows/workflow-enrollments
Learn how to enroll contacts in workflows and manage active enrollments
## Enrolling Contacts in Workflows
### Automatic Enrollment
Contacts are automatically enrolled in workflows based on the trigger type:
* **Quote Requested**: Contacts enroll when they submit your lead intake form
* **Quote Sent**: Enroll contacts when sending quotes (toggle in send quote modal, then select a workflow)
* **Quote Booked**: Contacts enroll automatically when a quote is booked
* **First Event Start** / **Last Event End**: Bookings enroll automatically when created
Each workflow email is addressed at send time to the current contact on the
quote or booking. See [Who receives workflow
emails](/workflows/overview#who-receives-workflow-emails).
### During Quote Sending
1. Navigate to the Send Quote modal when preparing to send a quote
2. At the top of the modal, locate the "Enroll in workflow" toggle
3. Enable the toggle to enroll the contact in a follow-up workflow
4. Select which workflow to use from the dropdown — your default workflow is pre-selected
5. Send the quote as normal
You can create multiple Quote Sent workflows for different follow-up strategies. Set a default workflow from the workflow detail page so it's always pre-selected when sending quotes.
## Bulk Enrolling Bookings
For workflows with First Event Start or Last Event End triggers, you can enroll multiple existing bookings at once. This saves time when you create a new workflow and want to include existing upcoming bookings.
**To bulk enroll bookings:**
1. Navigate to Workflows from your main navigation
2. Click on a published workflow with event-based triggers
3. Select the **Enrollments** tab
4. Click the **Enroll Upcoming Bookings** button in the top right
5. Review the list of eligible bookings
6. Select the bookings you want to enroll
7. Click **Enroll Selected**
**Eligible bookings:**
* Have at least one future event (event hasn't occurred yet)
* Are not already enrolled in this workflow
* Match the workflow's trigger type (First Event Start or Last Event End)
**What you'll see:**
* Booking name
* Event name
* Event date and time (in the location's timezone)
* Checkbox to select for enrollment
**When to use bulk enrollment:**
* You created a new workflow and want to include existing upcoming bookings
Bulk enrollment is only available for published workflows. Draft workflows must be published first before you can enroll bookings.
## Tracking Enrollments
### Workflow-Level View
View all active enrollments for a specific workflow from the Enrollments tab in the workflow details page. This gives you a complete overview of every contact currently enrolled in that workflow.
From the Enrollments tab, you can:
* **View all active enrollments**: See every contact currently enrolled in the workflow with their name and email
* **Track progress**: See how many steps each contact has completed out of the total steps (e.g., "3/7")
* **Monitor enrollment timing**: See when each contact was enrolled (e.g., "2 days ago")
* **Quick navigation**: Click any enrollment row to jump directly to that contact's Workflows tab
**To access workflow enrollments:**
1. Navigate to Workflows from your main navigation
2. Click on any workflow to view its details
3. Select the **Enrollments** tab
4. View the table showing all active enrollments with progress bars
This view is especially useful for Quote Requested workflows where enrollments happen automatically, giving you visibility into how many contacts are receiving your automated sequences and how far they've progressed through the steps.
### Quote-Level View
From the quote details page, you can:
* See a banner showing how many workflows the quote is enrolled in
* View all scheduled emails for active workflows
* Preview the content of upcoming scheduled messages
* Click **Stop all** to stop all workflows for the quote with a single click
### Contact-Level View
The Contact Details View includes a dedicated Workflows tab that shows:
* **Active Workflows**: Currently running sequences
* **Completed Workflows**: Successfully finished sequences
* **Canceled Workflows**: Manually stopped sequences
From this view, you can:
* Stop individual or multiple workflows
* Preview scheduled email content
* Access workflow templates for editing
* Track the progress of each enrollment
### Contact Quote List
Within the quotes tab in the contact details view, you can easily identify quotes enrolled in a workflow with an orange workflow enrollment icon and counter.
## Managing Active Workflows
### Stopping Workflows
You may want to stop an active workflow because the contact has replied and is engaging with your team or because they've said they no longer need your services.
You can stop workflows in several ways:
1. **From Quote View**:
* Click "Stop all" in the workflow banner to stop all active workflows
The "Stop all" button stops workflow enrollments for this specific quote only.
It does not affect workflow enrollments for other quotes this contact may have.
2. **From Contact Workflows Tab**:
* Select individual workflows to stop
* You can easily click **Stop Workflow** on all active workflows for this contact
### Resuming Stopped Workflows
If you've stopped a workflow but want to restart the automated follow-up sequence, you can easily resume it:
1. Navigate to the **Contact Workflows Tab** in the contact details view
2. Locate the stopped workflow in the "Canceled Workflows" section
3. Click the **Resume Workflow** button (only visible if there are future scheduled steps)
4. The workflow will reactivate and continue sending scheduled emails
You can only resume a workflow if it has scheduled steps in the future. Workflows that have completed all their steps cannot be resumed.
**When to Resume Workflows:**
* The contact initially showed no interest but has now re-engaged
* You accidentally stopped a workflow too early
* The contact requested more time to consider and now wants to continue receiving information
* A communication misunderstanding has been resolved
### Automatically Stopping Workflows
When a contact books a quote, all active workflows for that contact will be stopped automatically.
This includes workflows across multiple quotes that may be active.
This automatic stopping ensures you maintain a professional relationship with your contacts and don't continue sending sales-focused follow-ups after they've already decided to work with you.
When a contact replies before booking, quote nurture workflows that stop on
reply are deactivated automatically. Any other active workflows continue
until you stop them manually.
## Best Practices
* Regularly review active workflows to ensure relevance
* Stop workflows if direct engagement begins with the contact
* Monitor email analytics to optimize workflow effectiveness