Freshsales
The Freshsales connector reads and writes contacts, accounts and deals through the Freshsales REST API. Every read goes through a saved view.
When to use it
- You move contacts, accounts and deals between Freshsales and another CRM.
- You push new customers from a database into Freshsales as contacts, or pull won deals into a warehouse.
- You read records, transform them, and write the results back with Update.
What you need
- Your Freshsales bundle alias.
- A Freshsales API key.
Freshsales offers an API key only.
Find your bundle alias
Sign in to Freshsales and look at the browser address bar. The label between
https:// and .myfreshworks.com is your bundle alias. For
https://acme.myfreshworks.com/crm/sales that is acme. Enter the label alone.
A value with a dot, a slash, a colon or an at sign is refused.
Set up in Freshsales
- Sign in to Freshsales and note the bundle alias in the address bar.
- Go to Profile Settings > API Settings and copy the API key.
- In DataLug, add a Freshsales connection.
- Enter the bundle alias and paste the API key.
- Click Test connection.
Connect
The connection form lists its steps on the left. Open any step from that list. The Environments step holds the values that differ per environment.
Test connection is in the form footer. Beside it, Test against picks Base, the connection as saved, or an environment, whose values are applied first.
| Field | Step | What to enter |
|---|---|---|
| Auth Type | Authentication | API Key. Freshsales offers an API key only. |
| API Key | Authentication | From Profile Settings > API Settings. |
| Bundle Alias | Connection | The label alone, such as acme. |
Stored secrets are never sent back to the browser. To change one, use Replace.
Supported operations
Objects. Contact, Account and Deal. Account is the Freshsales sales account.
| Action | Node | Operations |
|---|---|---|
| Query (Source) | Source node | Query, through a saved view, with an optional Limit |
| Load (Target) | Load node | Insert, Update, Delete |
Writes go one record per request to the object itself. Views do not apply to writes.
Not supported: Upsert, Leads, Tasks, Notes, Appointments, Sales Activities.
Every read goes through a view
Freshsales serves records through a saved view, the same views as in the Freshsales sidebar. On a Source node, Configure Action shows a View picker under Query Filters once you pick an object. DataLug loads the object's views and selects the all-records view, such as "All Contacts".
- The view decides what the data pipeline reads. A narrower view reads a subset. The view is the only filter for this connector.
- A Source node with no view does not run, and the run log says so.
Custom fields
Freshsales holds custom field values under a separate custom_field object on
each record. If a custom field maps but arrives empty, the account Owner emails
DataLug support at support@datalug.io with the object and field name.
Limits
Freshsales limits API requests per account, per minute and per hour, and the
limits depend on the plan. Freshsales answers 429 Too Many Requests past a
limit. Find your plan's limit in Freshsales, then enter it under Requests per
period.
The API limits card has no default throttle for Freshsales. Page size is at most 100.
The API limits card on the connection form is collapsed by default. Every field on it is optional, and a blank field uses the default shown below it.
| Setting | What it does | Default |
|---|---|---|
| Requests per period, Period | Paces outgoing calls. Set both to throttle. | No throttle, or the rate shown on the card. |
| Page size | Rows per request. A larger value is reduced to the provider's maximum. | The maximum shown on the card, or set by the provider. |
| Max attempts | Tries per call, including the first. | 3 |
| Cool-off (ms) | The first wait after a 429. Later waits grow from it. | 500 ms |
| Requests at once | Requests open at the same time within one run. | No limit |
A Retry-After header from the provider overrides the cool-off. The pace
applies per connection and is shared by every run on it. See
Run performance.
DataLug retries a call that the provider refused with 429, and a call that
could not connect. A read is also retried after a 408, a 5xx or a dropped
connection. A write is retried only after a 429 or a failed connection.
A Retry-After delay of up to one minute is honoured. A longer one fails the
call with the 429.
Troubleshooting
| What you see | What it means | What to try |
|---|---|---|
Freshsales reads through a saved view. Choose one in Configure Action. | No view is chosen. | Open Configure Action and pick one under Query Filters. |
| The View picker is empty | The object has no views the key's user can see. | Create or share a view in Freshsales, then reopen Configure Action. |
Add the bundle alias to this Freshsales connection and save before testing. | Bundle Alias is blank or not a plain label. | Enter the label alone, such as acme. |
401 on test or on a run | The key is wrong, or its user was deactivated. | Copy the key from Profile Settings > API Settings and paste it with Replace. |
| A run reads fewer records than you expect | The chosen view is narrower than the object. | Pick the all-records view. |
429 Too Many Requests | Past your plan's per-minute or per-hour limit. | The run backs off and retries. If it recurs, set Requests per period to your plan's figure. |
| A custom field maps but arrives empty | Custom field values sit under custom_field. | Email the object and field name to DataLug support at support@datalug.io. |
Related
- Source node and Load node.
- Connections for environments and sharing.
- HubSpot and Pipedrive.