Connect Flino with Zapier
Zapier is a no-code automation tool that chains triggers and actions across apps. This guide shows you how to build a Zap that creates an offer in Flino whenever a new deal lands in your CRM.
This guide is illustrative. The same approach works almost identically with Make, n8n, Pipedream, or your own script — the webhook endpoint is tool-agnostic.
Prerequisites
Section titled “Prerequisites”- An active Zapier account
- Owner role in your Flino organisation
- A source system with a Zapier integration (CRM, form tool, sheet, …)
Step 1 — Create an API token in Flino
Section titled “Step 1 — Create an API token in Flino”- In Flino: Settings → Integrations → API tokens.
- Click New token, give it a name (e.g. “Zapier”).
- Create token.
- Immediately copy the displayed plaintext token to your clipboard.
- Also copy the webhook URL from the “Zapier Webhook URL” section — it looks like this:
https://<your-project>.supabase.co/functions/v1/zapier-offer-import
More details under API tokens.
Step 2 — Create a Zap in Zapier
Section titled “Step 2 — Create a Zap in Zapier”- In Zapier: Create Zap.
- Pick your trigger — e.g. “New Deal in Pipedrive”, “New Submission in Typeform”, “New Row in Google Sheets”.
- Configure and test the trigger — Zapier shows you sample data.
Step 3 — Action: Webhook → POST
Section titled “Step 3 — Action: Webhook → POST”- Pick Webhooks by Zapier → POST as the next action.
- Configure the action:
- URL: your Flino webhook URL from step 1
- Payload Type:
json - Data: the fields Flino expects — see the next section
- Headers:
x-flino-token: your plaintext tokenContent-Type:application/json
Recommended field mapping
Section titled “Recommended field mapping”In the Data area you create key/value pairs. Map the values from your trigger output:
| Key | Recommended value (from trigger) | Required? |
|---|---|---|
title | Deal title or form subject | ✅ |
external_id | Deal ID or submission ID from your system | ✅ |
external_source | A constant string, e.g. pipedrive or typeform | ✅ |
amount | Deal value | optional |
currency | Deal currency or constant EUR | optional |
contact_name | Contact’s full name | optional |
contact_email | Contact’s email | optional |
company_name | Company | optional |
offer_number | Your offer number from the source system | optional |
valid_until | Date as ISO string YYYY-MM-DD | optional |
Important on
external_idandexternal_source: these two fields together form the idempotency key. If your trigger fires the same record twice, Flino does not create the offer twice. Pick values that are truly unique in your source system.
Step 4 — Test the call
Section titled “Step 4 — Test the call”- In Zapier, click Test step.
- Zapier sends the POST request to Flino.
- Expected response: HTTP 200 with body
{"success": true, "created": true, "offer_id": "...", "status": "draft"}. - In Flino: go to the pipeline — the new offer appears with status New.
Step 5 — Activate the Zap
Section titled “Step 5 — Activate the Zap”If the test was successful: Publish Zap. From now on, every new deal/submission in your source system creates an offer in Flino automatically.
What you do after the import
Section titled “What you do after the import”The webhook only creates a draft. To get value, you need a quick manual step:
- Open the offer in Flino.
- Fill in missing data (salutation, description, email address if needed).
- Send it via Send offer.
- Activate a follow-up sequence.
If you want to automate this step too (e.g. “send right after import”): not part of the API at the moment — sending stays manual.
Common errors during setup
Section titled “Common errors during setup”| Error | Cause / fix |
|---|---|
| HTTP 401: Missing x-flino-token header | Add the header in the Zap action |
| HTTP 401: Invalid or unknown token | Typo in the token or wrong org → copy again |
| HTTP 401: Token has been revoked | Token was revoked — create a new one |
| HTTP 400: Field ‘title’ is required | Mapping in Zapier shows no value; re-test the trigger |
| HTTP 400: Field ‘currency’ must be one of: EUR, USD, CHF | Wrong string — set a constant or clean up the mapping |
| HTTP 400: Field ‘contact_email’ is not a valid email address | Empty string or typo — leave empty (drop the field) or fix the format |
| HTTP 400: Invalid JSON body | Set Payload Type in Zapier to json, not form |
| Duplicate offers | external_id is different per call — use a real source ID per record |
Security notes
Section titled “Security notes”- Store the token only in Zapier’s secret field, not in the mapping.
- One token per tool — if you also run Make or your own script, create a token per tool. If a tool is compromised, you can revoke that single token.
- Rotate tokens on staff change.