C
Cotizera Docs

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:

  1. Field: Total
  2. Operator: Greater than
  3. 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

  1. URL: The webhook address (e.g., https://hooks.zapier.com/hooks/catch/...)
  2. Headers (optional): Additional HTTP headers like Authorization for authentication
  3. 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.companyName contains "Group" OR total > $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

© 2026 Cotizera. All rights reserved.