CRM

Freshsales ad attribution, with the setup cost stated first

Freshsales is the one CRM Attribi connects to that cannot create its own attribution fields, because Freshworks exposes no API for it. You create sixteen custom fields on the Contact object once, in the admin screens, and Attribi checks them and tells you exactly which are missing rather than half-working. After that it behaves like the others: won deals become offline conversions on every ad platform you have connected, carrying the deal amount in the currency Freshsales recorded it in.

No credit card required · 5-minute setup

What Attribi does with Freshsales

Won deal revenue upload, judged deal by deal

Imports

Every deal is checked against its own stage before any revenue is counted, so the view it happens to sit in never decides the outcome. Tell us which stages mean won and those are definitive. Otherwise Attribi follows the won and lost designation Freshsales keeps on each stage, recognises the ordinary won names, and refuses anything reading as lost or cancelled.

Stops rather than guesses

Imports

If a deal turns up in a stage Attribi cannot read, usually a second pipeline, the sync stops and tells you which setting to fill in. It imports nothing and moves no watermark, so once you answer it picks the whole period back up. A sync that stops is something you can fix. Revenue invented inside your ad platform’s bidding model is not.

The deal’s real currency, not a guess

Imports

Freshsales stores a numeric currency id on the deal rather than a code. Attribi loads your account’s currency list once per run and resolves each deal to its actual ISO currency, so a EUR deal uploads as EUR instead of being flattened into dollars.

Qualified from a view you name

Imports

Build a filter view in Freshsales for the deals you consider qualified, then give Attribi its exact name. Every deal in that view fires a qualified conversion. Change your mind later and you edit the filter in Freshsales, not a setting here.

Attribution fields on the contact

Sends

Once the fields exist, Attribi fills the visitor id, the first touch source, campaign and time, the last touch source and campaign, and the touch count as leads convert, so a rep opening a contact can see which campaign produced them.

Click ID recovery without a tracker

Imports

Two of the sixteen fields exist for your own forms to fill with the ad click ID and its type. Attribi never writes those two, it reads them back off the contact when a deal moves, which is what keeps click-level matching alive with no script on your site.

On the roadmap

Planned, not live today. Listed so you can see what this integration does not do yet, before you sign up.

Automatic field creation

Planned Sends

Creating the sixteen fields for you, the way Attribi does for HubSpot, Salesforce, Zoho and Pipedrive. This one is not ours to schedule: it needs Freshworks to publish a stable field-creation API, and the moment they do the rest of the connection already works by field name and needs no change.

Not yet available.

Setting up Freshsales

  1. 1

    Create the sixteen fields in Freshsales

    In Freshsales go to Admin, Fields, Contact, and add the sixteen custom fields Attribi lists. They are the same set every CRM connection uses, prefixed cf_mta_. On the free plan this fits inside the twenty-five custom field limit with room to spare. Do this before connecting and the next step passes first time.

  2. 2

    Connect with your API key

    Freshsales has no OAuth, so you paste your bundle address, such as acme.myfreshworks.com, and an API key from your Freshsales profile. Choose whether Attribi may create contacts Freshsales does not hold, or should only enrich records you already own. Attribi then verifies the sixteen fields and names any that are missing.

  3. 3

    Confirm which deals get scanned, then name your qualified view

    Attribi scans the first deal view whose name says won and does not say lost. That choice no longer decides what counts as revenue, since every deal is checked against its own stage, but it does decide which deals are looked at, so if you keep several views with won in the title confirm the right one is being read or none of your wins are seen. For mid-funnel, create a filter view of the deals you treat as qualified and type its name exactly as Freshsales spells it. Leave it blank and Attribi reports on won deals only. If your won stages are unusual, or you run more than one pipeline, send us those stage names at onboarding: there is no picker for them in the product yet.

Funnel stages

Stages Attribi supports for Freshsales.

  • Lead
  • Qualified
  • Closed Won

Works with

Frequently asked questions

Why do we have to create the fields ourselves?

Because Freshworks has no documented, stable API for creating custom contact fields with a bundle API key. Rather than ship a provisioner that works on some accounts and silently fails on others, Attribi verifies instead: it reads your current contact schema, compares it to the sixteen fields it needs, and if any are missing it stops and lists them by name with the admin path to create them. Click provision again afterwards and it confirms. HubSpot, Salesforce, Zoho and Pipedrive are all one button, so this is the one connection where the setup is genuinely longer.

Which Freshsales fields does Attribi actually fill in?

Seven of the sixteen: visitor id, first touch source, first touch campaign, first touch time, last touch source, last touch campaign, and touchpoint count. Two more, the click ID and click ID type, are meant to be filled by your own forms and read back by Attribi. The remaining seven, including the attribution path, landing page and referrer, exist so the schema is complete but are not written by Attribi today. Create all sixteen anyway, because the verification step checks for the full set.

Does this work on the Freshsales free plan?

Yes. The free plan caps custom contact fields at twenty-five and Attribi needs sixteen, which leaves room for your own. Growth, Pro and Enterprise all have more headroom. The API key you connect with is per bundle and works the same on every plan, and there is no OAuth app to approve.

How does Attribi decide a Freshsales deal is won?

By the deal’s own stage, checked one deal at a time. If you have told us which stages mean won, those are the only ones that count and they are matched exactly, which is the setting to use when a stage is named something like Agreement Signed or when you run more than one pipeline. Otherwise Attribi follows the won and lost designation Freshsales already keeps against each stage, and where a stage carries none it recognises the ordinary won names and refuses anything reading as lost, rejected or cancelled. Where none of that settles it, the sync stops with a message naming the setting to fill in rather than booking the deal, and it moves no watermark, so nothing is skipped once you answer. Two more things: there is no stage picker in the product yet, so unusual stages are configured with us at onboarding, and a won deal with no amount is recorded but sends no revenue conversion.

Do we need the tracking script on our website?

Not for revenue. Qualified and closed-won outcomes are read out of Freshsales and uploaded to your ad platforms whether or not any script is installed, and a form that fills the click ID fields keeps click-level matching too. Without the script you lose the visit history: no page views and no multi-touch path, only what Freshsales holds.

Updated

Connect Freshsales to Attribi.

Sign up and connect it from the Connections page.

Start Free

No credit card · Free up to 500 visitors a month