Zapier Integration
Overview
Zapier is an automation platform that connects over 6,000 apps without any coding. Cotizera's native Zapier integration lets you automate workflows like:
- Get Slack notifications when a quote is created or accepted
- Automatically sync new clients to your CRM
- Create Google Sheets rows every time a quote is generated
- Send automated emails when a quote status changes
Unlike generic webhooks, the native Zapier integration provides a guided experience: you select "Cotizera" as an app, choose a trigger or action, and Zapier handles the rest.
Prerequisites
- Pro plan on Cotizera (Zapier integration requires Pro)
- A Zapier account (free plan allows up to 5 Zaps)
- A Cotizera API key generated at Configuración → Integraciones → Claves API
Your API key has the format ctza_... and is unique per tenant. Never share it publicly.
Connecting Cotizera to Zapier
Step 1: Accept the Invitation
Cotizera is available as a private app on Zapier. Access it via the invitation link:
Accept Cotizera's Zapier Invitation
Click "Accept Invite & Build a Zap" to add Cotizera to your Zapier account.
Step 2: Create a New Zap
- In Zapier, click "Create Zap"
- For the trigger, search for "Cotizera"
- Select one of the available triggers (e.g., "New Quote")
- Click "Continue"
Step 3: Authenticate with API Key
- Zapier will ask you to connect your Cotizera account
- Click "Sign in to Cotizera"
- Enter your API key (
ctza_...) from Configuración → Integraciones → Claves API - Click "Yes, Continue"
You can generate multiple API keys for different integrations. Each key can have specific permissions.
Step 4: Test the Connection
- Zapier will attempt to fetch sample data from your account
- If you have existing data (quotes, clients, products), you'll see example records
- Select a test record and click "Continue"
If you have no data in your account, create at least one test record before setting up the Zap.
Available Triggers
Triggers are events in Cotizera that automatically start a Zap.
| Trigger | Event | Description | Use Case |
|---|---|---|---|
| New Quote | quote_created |
Fires when a new quote is created | Notify team, log to Sheets |
| Quote Status Changed | quote_status_changed |
Fires when a quote status changes | Alert on accept/reject |
| Quote Sent | quote_sent |
Fires when a quote is sent to a client | Log sends, notify manager |
| New Client | client_created |
Fires when a new client is added | Sync to CRM, send welcome |
| New Product | product_created |
Fires when a new product is added | Update external catalog |
Trigger Output Fields
New Quote / Quote Sent:
| Field | Type | Description |
|---|---|---|
id |
string | Unique quote ID |
quoteNumber |
string | Quote number (e.g., COT-0042) |
status |
string | Status: GENERATED, SENT, ACCEPTED, REJECTED |
total |
number | Quote total |
clientId |
string | Associated client ID |
clientName |
string | Client name |
clientEmail |
string | Client email |
createdAt |
string | Creation date (ISO 8601) |
items |
array | Quote line items with product, quantity, price |
Quote Status Changed:
Includes all fields above plus:
| Field | Type | Description |
|---|---|---|
previousStatus |
string | Previous status |
newStatus |
string | New status |
New Client:
| Field | Type | Description |
|---|---|---|
id |
string | Unique client ID |
name |
string | Client name |
email |
string | Email address |
phone |
string | Phone number |
company |
string | Company name |
rfc |
string | RFC (tax ID) |
createdAt |
string | Creation date (ISO 8601) |
New Product:
| Field | Type | Description |
|---|---|---|
id |
string | Unique product ID |
name |
string | Product name |
sku |
string | SKU / product code |
price |
number | Unit price |
unit |
string | Unit of measure |
description |
string | Product description |
createdAt |
string | Creation date (ISO 8601) |
Available Actions
Actions are operations that Zapier performs in Cotizera as part of a Zap.
| Action | Description | Required Fields |
|---|---|---|
| Create Quote | Creates a new quote | clientId, items (array with productId, quantity) |
| Create Client | Creates a new client | name, email |
| Create Product | Creates a new product | name, price |
Create Quote Fields
| Field | Required | Type | Description |
|---|---|---|---|
clientId |
Yes | string | Client ID (use "Find Client" search) |
items |
Yes | array | Line items: productId, quantity, unitPrice (optional) |
notes |
No | string | Additional quote notes |
validDays |
No | number | Validity in days (default: 30) |
discount |
No | number | Global discount percentage |
Create Client Fields
| Field | Required | Type | Description |
|---|---|---|---|
name |
Yes | string | Full name or company name |
email |
Yes | string | Email address |
phone |
No | string | Phone number |
company |
No | string | Company name |
rfc |
No | string | RFC / tax ID |
address |
No | string | Full address |
Create Product Fields
| Field | Required | Type | Description |
|---|---|---|---|
name |
Yes | string | Product name |
price |
Yes | number | Unit price |
sku |
No | string | SKU / code |
unit |
No | string | Unit of measure (piece, hour, kg, etc.) |
description |
No | string | Product description |
Available Searches
Searches let you find existing records in Cotizera to use in later Zap steps.
| Search | Description | Search Fields |
|---|---|---|
| Find Client | Search clients by name or email | name or email |
| Find Product | Search products by name or SKU | name or sku |
Use searches in combination with actions. For example, search for a client before creating a quote to get their clientId.
Example Workflows
Slack Notification on New Quote
- Trigger: Cotizera → New Quote
- Action: Slack → Send Channel Message
- Configure message:
- Channel:
#sales - Message:
New quote {{quoteNumber}} created for {{clientName}} — ${{total}}
- Channel:
Google Sheets Logging
- Trigger: Cotizera → New Quote
- Action: Google Sheets → Create Spreadsheet Row
- Map fields:
- Column A:
{{quoteNumber}} - Column B:
{{clientName}} - Column C:
{{total}} - Column D:
{{status}} - Column E:
{{createdAt}}
- Column A:
CRM Sync on New Client
- Trigger: Cotizera → New Client
- Action: HubSpot → Create Contact
- Map fields:
- First Name:
{{name}} - Email:
{{email}} - Phone:
{{phone}} - Company:
{{company}}
- First Name:
Email Notification on Quote Accepted
- Trigger: Cotizera → Quote Status Changed
- Filter: Only continue if
newStatusisACCEPTED - Action: Gmail → Send Email
- Configure:
- To: sales-manager@yourcompany.com
- Subject:
Quote {{quoteNumber}} accepted - Body:
Client {{clientName}} accepted quote {{quoteNumber}} for ${{total}}.
Testing Your Zaps
- Test the trigger: Zapier shows sample data during setup. Verify that fields display correctly.
- Test the action: Use Zapier's "Test Action" button to execute the action with real data.
- End-to-end test: Create a test record in Cotizera and verify the Zap runs correctly.
Action tests create real data in connected apps (e.g., send real Slack messages). Use test channels during setup.
Troubleshooting
| Problem | Solution |
|---|---|
| "Invalid API Key" when connecting | Verify your API key is correct and not expired. Generate a new one at Configuración → Integraciones → Claves API |
| Trigger doesn't fire | Verify the Zap is turned ON. Check that the event occurred after activating the Zap |
| Empty fields in trigger | Make sure you have existing data. Zapier needs at least one record to detect fields |
| Error creating a quote | Verify that clientId and productId are valid IDs from your account |
| Rate limit (429) | Cotizera allows 30 requests per minute. Reduce your Zap frequency |
For more complex issues, see the Zapier Troubleshooting Guide.