---
title: "Validate contact data in Freshdesk"
url: "https://lookvalid.com/integrations/freshdesk.md"
canonical_url: "https://lookvalid.com/integrations/freshdesk"
last_updated: "2026-10-22"
type: "how-to"
summary: "Check the email domain of each new Freshdesk requester so tickets from throwaway addresses are tagged for a closer look."
related: ["https://lookvalid.com/integrations.md", "https://lookvalid.com/docs/api/email-domain-check.md", "https://lookvalid.com/docs/quickstart.md"]
---

# Validate contact data in Freshdesk

Check the email domain of each new Freshdesk requester so tickets from throwaway addresses are tagged for a closer look.

In Freshdesk every ticket gets a requester, an SLA clock and an assignment. A disposable address in the requester slot means replies that bounce while the clock keeps running, and a role mailbox can hide which real person is asking. Agents notice only after the first reply fails.

## What LookValid checks

- [Email Domain Check](https://lookvalid.com/products/email-domain-check.md): Returns a good, risky or undeliverable signal for the requester domain, from its MX, SPF and DMARC records. It cannot confirm the mailbox. Flags disposable domains, free providers and role mailboxes so a rule can route those tickets differently. (1 credit per address checked)
- [IP Intelligence](https://lookvalid.com/products/ip.md): Locates the IP address of a ticket submitted through a web form by country and network, and marks hosting ranges and Tor exits. (1 credit per lookup)
- [Phone Numbering-Plan Validation](https://lookvalid.com/products/phone.md): Reads a requester phone number against numbering-plan rules and returns E.164, to fix the contact before a call back. (1 credit per valid number)

## Connect it in four steps

1. Sign up at LookValid, go to the dashboard and generate a key in API keys.
2. In Freshdesk add a Trigger Webhook action under Admin, Workflows, Automations with your function URL, switch on Requires authentication if the function needs your Freshdesk API key, and keep the LookValid key in the LOOKVALID_API_KEY variable of the function host.
3. Pass the requester email in the JSON body of the webhook, let the function post it to the email-domain-check endpoint, and when the answer is found:false or an error, log it and leave the ticket alone.
4. Write the three values to the requester with PUT /api/v2/contacts/{id}, placing them in the custom_fields dictionary by the field names you created, and add a disposable tag to the contact tags array when the domain is disposable. The call authenticates with your Freshdesk API key as the basic auth username.

A Node function at the URL that a Freshdesk Trigger Webhook automation action calls on ticket creation. The call is `POST https://YOUR_API_HOST/v1/email-domain-check`.

```js
const API_URL = "https://YOUR_API_HOST/v1/email-domain-check";

export async function validateFreshdeskEmail(value) {
  const response = await fetch(API_URL, {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.LOOKVALID_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "email": value,
    }),
  });
  const result = await response.json();
  if (!response.ok) throw new Error(`${result.error.code}: ${result.error.fix}`);
  if (!result.found) return null;
  return {
      "email_signal": result.data?.deliverability_signal ?? null,
      "disposable_domain": result.data?.disposable ?? null,
      "free_provider": result.data?.free_provider ?? null,
  };
}
```

| Response field | Goes into |
| --- | --- |
| `data.deliverability_signal` | email_signal |
| `data.disposable` | disposable_domain |
| `data.free_provider` | free_provider |

## Without code

If you want no hosting at all, an automation platform with a generic HTTP request step does it without a dedicated app. Trigger on a new Freshdesk ticket, post the requester email to the LookValid endpoint in the HTTP step, and add a step that tags the ticket or updates the contact with the returned signal.

## Questions

### Will it slow down ticket creation?

The webhook runs after the ticket exists, so the ticket appears as usual. Freshdesk documents that a GET webhook response cannot feed later actions, which is why the function writes back through the API itself.

### How many credits per ticket?

One email-domain-check lookup per ticket, at the pricing page rate. Freshdesk caps webhook calls per hour, so busy desks should check its current limit.

### Where does the key go?

The LookValid key stays in an environment variable of the function host. The Freshdesk webhook action has its own authentication switch for your Freshdesk key.

## Sources

- [Freshdesk support, using webhooks in automation rules](https://support.freshdesk.com/support/solutions/articles/132589-using-webhooks-in-automation-rules), read 2026-10-18
- [Freshdesk API reference, Contacts (update a contact)](https://developers.freshdesk.com/api/#update_contact), read 2026-10-18

## Related

- [LookValid integrations](https://lookvalid.com/integrations.md)
- [Email Domain Check reference](https://lookvalid.com/docs/api/email-domain-check.md)
- [Quickstart](https://lookvalid.com/docs/quickstart.md)
