| Recruiter whitelist | View tracking | |
|---|---|---|
| Nature | Essential for things to work | Contractual commitment |
| Endpoint | POST /partners/whitelist | POST /partners/events |
| Frequency | Once per recruiter | On every profile view |
| If missing | The recruiter cannot contact the freelancer | API access suspension |
1. Whitelist: essential for recruiter-freelancer contact
Why it is essential
Pylote protects freelancers’ identity: their real email is never exposed. Every profile returned byGET /freelances has a proxy email at @freelance.pylote.io.
For the proxy to work both ways, the recruiter must also have a proxy email. Pylote generates one when you whitelist them: lutessa.marieg@recruiter.pylote.io.
This pair of proxy emails is what enables:
- The recruiter to send an email to the freelancer (relayed by Pylote)
- The freelancer to reply (relayed the other way)
- Pylote to measure interactions in the freelancer’s dashboard
Initial setup: whitelist all your recruiters at once
Ongoing: whitelist a new recruiter
For each new recruiter later added to your platform, the single endpoint:2. Tracking: contractual obligation
Why it is mandatory
Pylote offers freelancers a visibility feature: they see in real time which companies view their profile, with which keywords and which actions. It is a premium feature and a major conversion lever for Pylote. Without partner tracking, freelancers see nothing of the views going through your platform - which degrades the product experience and the value of Pylote.What the freelancer sees
When a Lutessa recruiter views a profile via Agrega, the freelancer sees in their dashboard:Events to track
Every recruiter-freelancer interaction must trigger a call toPOST /partners/events.
| Action | When to send it | Mandatory |
|---|---|---|
profile_view | The recruiter opens the freelancer’s profile | Yes |
click_cv | The recruiter clicks the CV link | Yes |
click_linkedin | The recruiter clicks the LinkedIn link | Yes |
click_phone | The recruiter clicks the phone number | Yes |
click_email | The recruiter clicks the email | Yes |
add_favorite | The recruiter adds the freelancer to their favorites | Yes |
At a minimum,
profile_view, click_cv and click_linkedin must be tracked. The click_phone, click_email and add_favorite events are also expected if those actions are available on your platform.Sending an event
| Field | Description |
|---|---|
recruiterEmail | The recruiter’s real email (must be whitelisted) |
freelanceId | The meta.id field of the JSON Resume returned by GET /freelances |
action | Interaction type (profile_view, click_cv, click_linkedin, click_phone, click_email, add_favorite) |
Implementation example (Node.js)
Full flow
Deletion obligations
In addition to tracking, you must delete deleted profiles from your database within 30 days of receiving the deletion status. WhenGET /freelances returns a profile with meta.status: "deleted":
- Delete the profile from your database
- Delete all associated data (cached CV, notes, etc.)
- Keep only the ID to avoid re-importing the profile
account_deleted- the freelancer deleted their accountaccount_banned- account banned by Pyloteaccount_excluded- account excludedaccount_invisible- profile made invisible
Use the
GET /freelances/deleted-freelances route to fetch the full list of profiles to delete if you missed some syncs.Data destruction on termination
If the partnership agreement is terminated (for any reason whatsoever):- Your API key will be revoked on the effective date of termination
- You must stop all use of the API immediately
- You must destroy all data obtained from the API stored in your systems
Exception: data already integrated into the profiles of your recruiter clients and processed under their own responsibility is not subject to this destruction obligation.