Freshdesk-connector
Verbind Freshdesk met Brevo via Tajo om support- en marketingdata te verenigen. Synchroniseer klantsupporttickets, contactprofielen en satisfactionscores om gerichte communicatie aan te sturen op basis van supportinteracties.
Overzicht
| Eigenschap | Waarde |
|---|---|
| Platform | Freshdesk |
| Categorie | Support |
| Setupcomplexiteit | Eenvoudig |
| Officiële integratie | Nee |
| Gesynchroniseerde data | Tickets, Contacten, Agents, Bedrijven |
| Beschikbare skills | 6 |
Functies
- Contactsynchronisatie - Bidirectionele sync van Freshdesk-contacten naar Brevo-contactlijsten
- Ticket-event-tracking - Stuur events voor ticket-aanmaak, -wijziging en -afhandeling door naar Brevo
- CSAT-sync - Synchroniseer klanttevredenheidsscores als Brevo-contactattributen
- Bedrijfssync - Koppel Freshdesk-bedrijven aan Brevo-contactsegmentatie
- Agentdata - Track agenttoewijzingen voor interne workflowautomatisering
- Custom velden - Koppel Freshdesk-customticket- en contactvelden aan Brevo-attributen
Vereisten
Voordat je begint, zorg dat je beschikt over:
- Een Freshdesk-account met admin-toegang
- Je Freshdesk API Key (te vinden in Profile Settings)
- Je Freshdesk-domein (bijv.
yourcompany.freshdesk.com) - Een Brevo-account met API-toegang
- Een Tajo-account met API-inloggegevens
Authenticatie
API-sleutel-authenticatie
Freshdesk gebruikt API-sleutelauthenticatie via HTTP Basic Auth. De API-sleutel wordt gebruikt als gebruikersnaam met een willekeurige string (meestal X) als wachtwoord.
curl -u "YOUR_API_KEY:X" \ https://yourcompany.freshdesk.com/api/v2/ticketsOf via Base64-encoding in de Authorization-header:
curl https://yourcompany.freshdesk.com/api/v2/tickets \ -H "Authorization: Basic BASE64_ENCODED_API_KEY:X" \ -H "Content-Type: application/json"Je API-sleutel vinden
- Log in op je Freshdesk-account
- Klik rechtsboven op je profielfoto
- Ga naar Profile Settings
- Je API Key staat aan de rechterkant
Configuratie
Basisopzet
connectors: freshdesk: enabled: true domain: "yourcompany.freshdesk.com" api_key: "your-freshdesk-api-key"
# Data sync options sync: contacts: true tickets: true companies: true satisfaction_ratings: true
# Brevo list assignment lists: all_support_contacts: 30 open_tickets: 31 resolved_tickets: 32Contactveldmapping
Koppel Freshdesk-contactvelden aan Brevo-attributen:
contact_mapping: email: email name: FULLNAME phone: SMS company_id: COMPANY job_title: JOB_TITLE twitter_id: TWITTER language: LANGUAGE time_zone: TIMEZONE
# Support metrics total_tickets: TICKET_COUNT open_tickets: OPEN_TICKETS avg_csat: CSAT_SCORE last_ticket_date: LAST_SUPPORT_DATE
# Custom fields custom_fields.account_type: ACCOUNT_TYPE custom_fields.subscription_tier: PLANTicket-event-mapping
Koppel Freshdesk-ticket-events aan Brevo-automation-triggers:
ticket_events: ticket_created: "support_ticket_created" ticket_updated: "support_ticket_updated" ticket_resolved: "support_ticket_resolved" ticket_closed: "support_ticket_closed" ticket_reopened: "support_ticket_reopened" satisfaction_rated: "csat_submitted" note_added: "support_note_added"API-endpoints
| Methode | Endpoint | Beschrijving |
|---|---|---|
GET | /api/v2/tickets | Alle tickets opvragen |
POST | /api/v2/tickets | Ticket aanmaken |
GET | /api/v2/tickets/{id} | Specifieke ticket ophalen |
PUT | /api/v2/tickets/{id} | Ticket bijwerken |
DELETE | /api/v2/tickets/{id} | Ticket verwijderen |
GET | /api/v2/contacts | Alle contacten opvragen |
POST | /api/v2/contacts | Contact aanmaken |
PUT | /api/v2/contacts/{id} | Contact bijwerken |
GET | /api/v2/companies | Alle bedrijven opvragen |
GET | /api/v2/agents | Alle agents opvragen |
GET | /api/v2/surveys/satisfaction_ratings | CSAT-ratings opvragen |
GET | /api/v2/search/tickets?query= | Tickets zoeken |
Codevoorbeelden
Freshdesk-connector initialiseren
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connect Freshdesk accountawait tajo.connectors.connect('freshdesk', { domain: 'yourcompany.freshdesk.com', apiKey: process.env.FRESHDESK_API_KEY});Contacten naar Brevo synchroniseren
// Fetch Freshdesk contacts and sync to Brevoconst response = await fetch( 'https://yourcompany.freshdesk.com/api/v2/contacts?page=1&per_page=100', { headers: { 'Authorization': 'Basic ' + btoa(`${API_KEY}:X`), 'Content-Type': 'application/json' } });
const contacts = await response.json();// Each contact:// {// "id": 12345,// "name": "Jane Kim",// "email": "[email protected]",// "phone": "+15551234567",// "company_id": 678,// "job_title": "Product Manager",// "created_at": "2024-01-15T10:30:00Z"// }Ticket-events tracken
// Set up Freshdesk webhook to forward ticket events// Configure in Freshdesk Admin > Automations > Webhook
// Webhook handlerapp.post('/webhooks/freshdesk', async (req, res) => { const { ticket, event_type } = req.body;
await tajo.connectors.handleWebhook('freshdesk', { topic: event_type, payload: { ticketId: ticket.id, subject: ticket.subject, status: ticket.status, priority: ticket.priority, requesterEmail: ticket.requester.email, createdAt: ticket.created_at } });
res.status(200).send('OK');});Tickets per klant zoeken
// Search for all tickets from a specific customerconst response = await fetch( `https://yourcompany.freshdesk.com/api/v2/search/tickets?query=${query}`, { headers: { 'Authorization': 'Basic ' + btoa(`${API_KEY}:X`) } });
const { results, total } = await response.json();Ratelimits
| Plan | Limiet | Details |
|---|---|---|
| Sprout | 50 requests/min | Free-plan |
| Blossom | 200 requests/min | Starter-plan |
| Garden | 400 requests/min | Growth-plan |
| Estate | 700 requests/min | Pro-plan |
| Forest | 1.000 requests/min | Enterprise-plan |
Aanvullende limieten:
| Resource | Limiet |
|---|---|
| List-endpoints | 30 pagina’s per query |
| Per pagina | 100 records max |
| Search API | 2 requests/sec |
| Bulk-operaties | 10 records/request |
Ratelimit-headers
Freshdesk geeft ratelimit-informatie terug in response-headers. Monitor X-RateLimit-Remaining en implementeer backoff wanneer je limieten nadert.
Probleemoplossing
| Probleem | Oorzaak | Oplossing |
|---|---|---|
401 Unauthorized | Ongeldige API-sleutel | Verifieer API-sleutel in Freshdesk Profile Settings |
403 Forbidden | Onvoldoende rechten | Zorg dat de API-sleutel bij een adminaccount hoort |
| Contacten synchroniseren niet | Ontbrekend e-mailveld | Freshdesk-contacten vereisen een e-mailadres |
| Tickets verschijnen niet | Verkeerd domein | Verifieer je Freshdesk-domein-URL |
| Search geeft leeg resultaat | Query-syntaxfout | Gebruik Freshdesk-zoeksyntax met dubbele aanhalingstekens |
429 Too Many Requests | Ratelimit overschreden | Implementeer rate-limiting op basis van jouw plan |
| Custom velden ontbreken | Veld niet ingeschakeld | Zorg dat custom velden zijn ingeschakeld in de Freshdesk-admin |
Best practices
- Gebruik webhooks voor realtime-sync - Configureer Freshdesk-Automations om webhooks te triggeren bij ticket-events
- Synchroniseer CSAT-scores - Volg klanttevredenheid als Brevo-attributen voor segmentatie
- Koppel ticketstatus aan lijsten - Verplaats contacten automatisch tussen Brevo-lijsten op basis van ticketstatus
- Volg supportmetrics - Synchroniseer aantal tickets, gemiddelde responstijd en oplospercentage per contact
- Gebruik de search API spaarzaam - De search API heeft strengere limieten; cache resultaten waar mogelijk
- Pagineer grote exports - Gebruik paginatie met
page- enper_page-parameters voor de initiële sync
Beveiliging
- API-sleutel-authenticatie - Eenvoudige HTTP Basic Auth met API-sleutel
- Alleen HTTPS - Alle API-communicatie vereist TLS-encryptie
- IP-whitelisting - Beschikbaar op Estate- en Forest-plannen
- Rolgebaseerde toegang - API-sleutelrechten gekoppeld aan de agentrol
- SOC 2 Type II - Freshdesk is SOC 2 Type II-gecertificeerd
- AVG-compliance - Ondersteunt verzoeken tot data-export en -verwijdering