Automations
Overview
Automations let you define "when X happens, do Y" rules for your quotes. Instead of performing repetitive manual actions, configure an automation once and let it work.
Automations are a PRO plan feature.
Automations vs Webhooks
| Automations | Webhooks | |
|---|---|---|
| Purpose | Execute internal actions (email, change status, notify) | Notify external systems |
| Conditions | Advanced field filters (total > 5000, client contains "Acme") | None — always fire |
| Actions | 6 types: email, notification, change status, label, reminder, webhook | Only send HTTP POST |
| Configuration | From the Cotizera UI | API or UI |
| Delay | Yes — execute N minutes later | No — immediate |
Use the fire_webhook action in automations to combine the best of both: advanced conditions + external service notification.
Create Your First Automation
Let's create an automation that emails the client when a quote over $5,000 is sent.
Step 1: Go to Automations
Navigate to Settings → Automations and click "Create automation".
Step 2: Configure the Trigger
Select the "Quote sent" event (QUOTE_SENT). The automation will run every time you send a quote.
Step 3: Add Conditions
Add a condition to filter only large quotes:
- Field: Total
- Operator: Greater than
- Value: 5000
You can add more conditions — all must be met (AND logic).
Step 4: Configure the Action
Select the "Send email" action:
- Recipient: Client
- Subject: "Your quote is ready"
- Message: "Thank you for your interest. We've prepared a personalized quote."
Step 5: Save
Click "Create". The automation is active and will run the next time you send a quote that meets the conditions.
Advanced Conditions
Conditions let you precisely filter when an automation executes. Fields are organized into three groups.
Quote Fields
Evaluate quote properties: total, subtotal, tax, currency, status, shipping cost, view count, and notes.
Example: Only execute when total is greater than $10,000:
{ "field": "total", "operator": "gt", "value": 10000 }Client Fields
Evaluate the associated client's data: name, company, email, and phone.
Example: Only execute when the client has a registered company:
{ "field": "client.companyName", "operator": "is_not_empty" }Product Fields
Evaluate the products included in the quote. These use "any product matches" logic — the condition is met if at least one product in the quote matches.
Example: Execute when any product is named "Premium service":
{ "field": "items.productName", "operator": "contains", "value": "premium" }Example: Execute when any product has a price greater than $5,000:
{ "field": "items.unitPrice", "operator": "gt", "value": 5000 }Operators by field type
| Field type | Available operators |
|---|---|
| Select (status, currency) | equals, not equals |
| Number (total, price, quantity) | equals, not equals, greater than, less than, greater or equal, less or equal |
| Text (name, email, notes) | equals, not equals, contains, starts with, is empty, is not empty |
The is_empty and is_not_empty operators don't require a value — they simply check whether the field has content or not.
Action: Fire Webhook
The fire_webhook action sends a POST request with the quote data to any external URL. It's the most flexible way to integrate Cotizera with external services.
Use cases
- Zapier: Send data to a Zap using a Zapier webhook URL
- Slack: Post to a channel using a Slack Incoming Webhook
- CRM: Sync quotes with your management system
- Any API: Send data to any endpoint that accepts POST
Configuration
- URL: The webhook address (e.g.,
https://hooks.zapier.com/hooks/catch/...) - Headers (optional): Additional HTTP headers like
Authorizationfor authentication - Include products: Include or exclude the quote's products in the payload
Payload sent
The webhook receives a JSON with the event, timestamp, and complete quote data including client and products (if enabled).
The webhook has a 5-second timeout. If your server doesn't respond in time, the execution is marked as failed in the history.
Execution Delay
You can configure a delay in minutes before the actions execute. This is useful for:
- Give the client time: Send a follow-up email 24 hours after sending the quote (
delayMinutes: 1440) - Avoid spam: Wait 30 minutes before notifying the team about a viewed quote (
delayMinutes: 30) - Staggered follow-up: Create multiple automations with different delays for the same event
Execution History
Each automation keeps a record of all its executions. You can view the history by clicking "History" on the automation card.
Each entry shows:
- Status: Triggered, Completed, or Failed
- Quote: ID of the quote that triggered the execution
- Time: When it executed
- Error: Error message (only if failed)
Practical Examples
Notify the team in Slack when a large quote is accepted
- Trigger: Quote accepted
- Condition: Total > $10,000
- Action: fire_webhook → Slack Incoming Webhook URL
Label VIP client quotes
- Trigger: Quote created
- Condition:
client.companyNamecontains "Group" ORtotal> $50,000 - Action: add_label → "VIP" label
Automatic follow-up for unanswered quotes
- Trigger: Quote sent
- Delay: 2880 minutes (48 hours)
- Action: send_email → Friendly reminder to the client
Next steps
- Automations API — manage automations via API
- Webhooks Guide — registered webhooks for integrations
- Zapier Integration — connect to 6,000+ apps