Skip to content

Freshservice

Works with: Freshservice (cloud). What SafeHanded does in Freshservice: private notes on every step · a customer-visible reply for link delivery · the chain-of-custody certificate attached on purge · close-to-purge · request from a ticket (deep link).

  • A Freshservice admin, and a SafeHanded Owner/Admin on the Team plan or above.
  • About ten minutes.
  1. In Freshservice, open your profile settings and copy Your API key.
  2. In SafeHanded: Settings → Integrations, choose Connect and pick Freshservice. Give the connection a name, enter your domain URL (e.g. https://acme.freshservice.com) and the API key, then click Connect and test.

Nothing to set up. SafeHanded polls Freshservice for status changes, so resolving or closing a ticket purges its credential on the next poll. SafeHanded re-reads the ticket via the API before anything is purged — see how ticketing works.

Freshservice has no built-in button that opens a web address, so add the link as a canned response that agents drop into a private note.

  1. In Freshservice, go to Admin → Canned Responses and click New response. Name it, for example, Create SafeHanded request.
  2. In the body, write Create a SafeHanded request: and paste the link below. {{ticket.id}} is Freshservice’s placeholder for the ticket’s ID (it is also under Insert Placeholders); Freshservice fills it in when the response is used.
  3. Save, and share it with the agent groups that need it.
  4. On a ticket, the agent adds a private note, inserts the canned response, saves the note and clicks the link in it.
https://safehanded.com/app/requests/new?ticket={{ticket.id}}

To copy this link, open Settings → Integrations, select your Freshservice integration and go to its Activity tab.

Want a proper sidebar button instead? That needs a small Freshworks Marketplace app (the ticket_sidebar location); the canned response needs no app.

Choosing a preset (optional). A preset is a saved request — the reason, how long the credential is kept, who receives it and how the link is sent. To start from one, add &preset= and the preset’s slug to the end of the link, for example &preset=password-reset. Each preset’s slug is shown, with a copy button, under Settings → Request presets. With no preset in the link, SafeHanded uses the client’s default preset, then the organisation default (Settings → Policy → Default preset for new requests), and otherwise the policy defaults.

No click at all. Point a Workflow Automator Web Request node at a generic webhook integration’s trigger URL (Settings → Integrations → Generic webhook) with the SafeHanded trigger body; SafeHanded then creates the request with no one present. This needs a second ticketing integration (the generic webhook), which the MSP plan allows; the Team plan includes one ticketing integration. A request created this way is linked through the generic webhook integration, so its close-to-purge follows that integration’s setup, not Freshservice’s polling.

Freshservice statuses are integers — 2 Open → open, 3 Pending → pending, 4 Resolved → resolved, 5 Closed → closed. A custom status appears as Status and its number (for example Status 6) and shows as unknown (never purge) until you map it under Status mapping on the integration’s Configuration tab.

  • Private notes: created · submitted · (optionally) revealed · destroyed · expired · revoked · rotation recommended.
  • Public reply (if the preset delivers in-ticket): the secure link and a one-line explanation — never the challenge code.
  • The certificate PDF attached on destruction, if Attach the chain-of-custody certificate to the ticket is on in your policy.
SymptomCause / fix
Test connection failsCheck the API key (profile settings) and the domain (include https://).
Picker misses an older ticketThe picker matches the 100 most recent tickets by subject or ticket ID. Open the new-request link with ?ticket= and the ticket’s ID added to link an older ticket.
“Unknown status” on the cardMap the status (shown as Status and its number) under Status mapping.