> ## Documentation Index
> Fetch the complete documentation index at: https://docs.salesfinity.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Dial Links

> Build a link that opens the Salesfinity dialer on a specific person and, optionally, starts the call. Use it from your CRM, a spreadsheet, Slack, or anywhere else a URL fits.

A dial link is a normal Salesfinity URL with a person in its query string. When a rep clicks it, the
dialer opens with that person's number and details already filled in. Add `auto_dial=1` and the
call starts on its own after a short countdown.

Nothing has to be created ahead of time. A dial link is just a URL, so your CRM can build one from
record fields, a spreadsheet can build one with a formula, and you can write one by hand.

```text theme={null}
https://web.salesfinity.co/dashboard/dialer?phone_number=%2B14155550142&first_name=Jane&auto_dial=1
```

<Note>
  Dial links are for people on your Salesfinity team. The rep who clicks one must have a Salesfinity
  account, and the call is placed from their dialer. A dial link does not let anyone outside your
  team place calls.
</Note>

## Parameters

`phone_number` is the only required parameter. A URL with `phone_number` opens the dialer, and a URL
without one is an ordinary page load.

| Parameter | Required | What it does |
| - | - | - |
| `phone_number` | Yes | The number to call. Use international format with the country code, such as `+14155550142`. |
| `first_name` | No | Shown on the call card. It also confirms a phone-only contact match. See [Matching your contacts](#matching-your-contacts). |
| `last_name` | No | Shown on the call card. |
| `title` | No | Job title, shown on the call card. |
| `company` | No | Company name, shown on the call card. |
| `email` | No | Used to find the person among your team's contacts. |
| `linkedin` | No | A full LinkedIn profile URL or just the username. Used to find the person among your team's contacts. |
| `notes` | No | Free text shown with the contact, up to 2,000 characters. |
| `auto_dial` | No | `1` or `true` starts the call after a 3-second countdown. Leave it out to only fill in the dialer. |
| `dial_source` | No | A label for where the link was placed, such as `hubspot` or `sheets`. Used only for attribution. |

### Encode every value

Query-string values must be URL-encoded. Most mistakes come from three characters:

| Character | Encode as | Why |
| - | - | - |
| `+` | `%2B` | An unencoded `+` becomes a space, so `+14155550142` loses its country code. |
| `@` | `%40` | Needed in email addresses. |
| Space | `%20` | Needed in names, titles, and notes. |

Most CRMs and spreadsheets have an encoding function. The examples below use it.

### Phone number formats

Salesfinity cleans up the number when the link is clicked, so formats like `(415) 555-0142` or
`415.555.0142` work. A number without a country code is treated as a US number, and one that starts
with `0` is treated as a UK number. For anything else, include the `+` and country code.

If Salesfinity cannot recognize the number, the dialer still opens with it exactly as written, so
the rep can check it and fix it before calling.

## What happens when a rep clicks

<Steps>
  <Step title="The rep signs in if they need to">
    If the rep is signed out, Salesfinity sends them to the login page and then back to the dialer
    with the link intact. They don't need to click the link again.
  </Step>

  <Step title="Salesfinity looks for the person">
    Salesfinity checks your team's contacts for a match. See
    [Matching your contacts](#matching-your-contacts).
  </Step>

  <Step title="The dialer opens">
    The number and the person's details are filled in. With `auto_dial=1`, a 3-second countdown
    starts on a **Calling in 3…** button. The rep can click **Cancel** to stop the call, or click
    the countdown button to call right away. Without `auto_dial`, the rep clicks
    **Call** when ready.
  </Step>

  <Step title="The link is used once">
    Salesfinity removes the link details from the address bar after using them. Refreshing the
    page or clicking **Back** after the call does not dial the person again.
  </Step>
</Steps>

If the rep is already on a call, nothing is lost. The link waits and opens the dialer once the
current call ends.

If Salesfinity cannot process a link, the dialer still opens with the number filled in but never
dials automatically, even if the link includes `auto_dial=1`. The rep checks the number and clicks
**Call**.

## Matching your contacts

When the person is already one of your team's contacts, the dialer opens on that contact, including
their call history and details. Salesfinity looks for a match in this order:

1. **Email or LinkedIn.** A match on either one is used.
2. **Phone number.** A match on the phone number alone is used only when `first_name` also matches.
   Colleagues often share a main line, and mobile numbers get reassigned, so a matching number
   isn't enough on its own to say who is on the call.

If there is no match, the call card shows the name, title, and company from the link, and there's no
call history to show.

<Tip>
  Include `email` whenever you have it. It is the most reliable way to connect the call to the right
  contact.
</Tip>

## Examples

### A complete link

```text theme={null}
https://web.salesfinity.co/dashboard/dialer?phone_number=%2B14155550142&first_name=Jane&last_name=Doe&title=VP%20Sales&company=Acme&email=jane.doe%40acme.com&linkedin=janedoe&notes=Asked%20for%20a%20call%20after%20Q3&auto_dial=1&dial_source=manual
```

### Fill in the dialer only

Leave out `auto_dial` when the rep should review the details before calling.

```text theme={null}
https://web.salesfinity.co/dashboard/dialer?phone_number=%2B14155550142&first_name=Jane
```

### Google Sheets

With the phone number in column A, first name in column B, and company in column C:

```text theme={null}
=HYPERLINK("https://web.salesfinity.co/dashboard/dialer?phone_number="&ENCODEURL(A2)&"&first_name="&ENCODEURL(B2)&"&company="&ENCODEURL(C2)&"&auto_dial=1&dial_source=sheets", "Call")
```

Fill the formula down the column to get a **Call** link on every row.

### Salesforce

Create a formula field of type **Text** on Contact, and it shows a **Call in Salesfinity** link on
every record:

```text theme={null}
HYPERLINK(
  "https://web.salesfinity.co/dashboard/dialer?phone_number=" & URLENCODE(Phone) &
  "&first_name=" & URLENCODE(FirstName) &
  "&last_name=" & URLENCODE(LastName) &
  "&title=" & URLENCODE(Title) &
  "&company=" & URLENCODE(Account.Name) &
  "&email=" & URLENCODE(Email) &
  "&auto_dial=1&dial_source=salesforce",
  "Call in Salesfinity",
  "_blank"
)
```

### HubSpot

Anywhere HubSpot supports personalization tokens, build the link from contact properties:

```text theme={null}
https://web.salesfinity.co/dashboard/dialer?phone_number={{ contact.phone|urlencode }}&first_name={{ contact.firstname|urlencode }}&last_name={{ contact.lastname|urlencode }}&company={{ contact.company|urlencode }}&email={{ contact.email|urlencode }}&auto_dial=1&dial_source=hubspot
```

<Warning>
  Test a template on one record before rolling it out. If a phone number arrives without its `+`,
  the value wasn't encoded. See [Encode every value](#encode-every-value).
</Warning>

## Troubleshooting

<AccordionGroup>
  <Accordion title="The dialer opened, but on the wrong country's number">
    The number had no country code, so Salesfinity treated it as a US number. Store numbers with
    their `+` and country code, and make sure the `+` is encoded as `%2B`.
  </Accordion>

  <Accordion title="The link opened a normal page instead of the dialer">
    The URL has no `phone_number`, or the value is empty. Check that the record has a phone number
    and that the parameter is spelled `phone_number`.
  </Accordion>

  <Accordion title="The call did not start on its own">
    Check that the link includes `auto_dial=1` or `auto_dial=true`. Salesfinity also skips the
    automatic call when it couldn't process the link, so the rep can check the number first.
  </Accordion>

  <Accordion title="The call card has no history for someone we already have">
    Salesfinity didn't find a match. Add `email` to the link, or make sure `first_name` matches the
    contact's first name when you only have a phone number.
  </Accordion>
</AccordionGroup>
