Skip to main content

Sortlist Webhooks – Guide for developers

⚡ Connect Sortlist to your favorite tools for developers

Written by Thibaut Vanderhofstadt

Connect Sortlist to your favorite tools (Zapier, Slack, HubSpot, etc.)
Get instant updates when something happens — new opportunities, applications, or client messages.


🧭 Introduction: How Webhooks Work

A webhook lets your app receive real-time HTTP POST requests from Sortlist when specific events occur — no need for polling.

Here’s how it works:

┌──────────────┐        POST JSON           ┌────────────────────┐
│ Sortlist │ ─────────────────────────▶ │ Your App / URL │
│ (Event fired)│ │ (Webhook endpoint) │
└──────────────┘ └────────────────────┘
│ │
▼ ▼
Sends signed event Process, log, or trigger
(with payload JSON) CRM, Slack, or Zapier flow

Flow summary:

  1. You create a webhook in Sortlist and select a trigger.

  2. When the event happens, Sortlist sends a signed HTTP POST to your endpoint.

  3. You receive structured JSON data and can use it to automate actions.


🚀 Getting Started

  1. Go to Sortlist → Integrations → Actions & Triggers → Webhooks.

  2. Click New Webhook.

  3. Enter a Name (e.g., “CRM Sync”, “Slack Alerts”).

  4. Choose one of the 4 triggers below.

  5. Paste your Webhook URL (HTTPS required).

  6. Save, you should see yo

  7. Send test payload → Verify it works.

You can always edit, delete, or test webhooks from the dashboard.

🎯 Webhook Triggers

🔹 1. Opportunity Received

When Sortlist sends this trigger, your agency has received a new project briefing — the client is still anonymous.

🔔 When it triggers
Automatically when your agency gets a new opportunity.

📦 What you get
Project briefing + anonymized company info.

💡 How to use it

  • Notify sales teams in Slack/Teams.

  • Log opportunities in your CRM.

  • Build automation to auto-filter projects.

📨 Example Payload

{   
"id": "T3Bwb3J0dW5pdHkvMTIzNDU",
"applied_at": null,
"received_at": "2023-01-01T00:00:00Z",
"project_id": 12345,
"locale": "en",
"provider_slug": "agency-slug",
"opportunity_link": "https://agency.sortlist.com/brief/12345", "integration": {
"uuid": "integration-uuid",
"owner": "manager@agency.com",
"trigger_name": "opportunity_received"
},
"budget_min": 10000,
"budget_max": 25000,
"budget_monthly": true,
"budget_not_set_yet": false,
"location": "New York, US",
"country": "US",
"expertise": "Web Development",
"sector": "Technology",
"remote_work_accepted": true,
"languages_required": "en, fr",
"provider_size_required": "small, medium",
"briefing_description": "Project description...",
"price_in_credit": 100.0,
"title": "Sortlist Opportunity 12345: Project Title",
"company": { "size_min": 10, "size_max": 50, "turnover_min": 1000000, "turnover_max": 10000000, "type": "NGO" }, "contacts": [] }

Pro Tip: The faster you react, the higher your conversion rate.

🔹 2. Opportunity Applied

When your agency applies and pays for a project, Sortlist sends this event.

🔔 When it triggers
Right after payment confirmation.

📦 What you get
Application + project details + company info (no contacts yet).

💡 How to use it

  • Auto-create deals in your CRM.

  • Track spend and ROI.

  • Assign opportunities automatically.

📨 Example Payload

{   "id": "T3Bwb3J0dW5pdHkvMTIzNDU",   
"applied_at": "2023-01-01T12:00:00Z",
"project_id": 12345,
"locale": "en",
"provider_slug":
"agency-slug",
"opportunity_link": "https://agency.sortlist.com/brief/12345", "integration": {
"uuid": "integration-uuid",
"owner": "manager@agency.com",
"trigger_name": "opportunity_applied"
},
"applied_by":
{"id": "QWdlbmN5TWVtYmVyLzY3ODkw",
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@agency.com"
},
"budget_min": 10000,
"budget_max": 25000,
"budget_monthly": true,
"budget_not_set_yet": false,
"location": "New York, US",
"country": "US",
"expertise": "Web Development",
"sector": "Technology",
"remote_work_accepted": true,
"languages_required": "en, fr",
"provider_size_required": "small, medium",
"briefing_description": "Project description...",
"price_in_credit": 100.0,
"price_in_euro": 90.0,
"title": "Sortlist Opportunity 12345: Acme Inc.",
"company": {
"size_min": 10,
"size_max": 50,
"turnover_min": 1000000,
"turnover_max": 10000000,
"type": "NGO",
"name": "Acme Inc.",
"website": "https://acme.com"
},
"contacts": [] }

🙅 Note: Contacts are still hidden until your application is sent.

🔹 3. Opportunity Application Sent

Your proposal reached the client — anonymity is lifted. You now receive full company and contact details.

🔔 When it triggers
As soon as the application is delivered.

📦 What you get
Full project + company + contacts.

💡 How to use it

  • Sync deals and contacts in CRM.

  • Trigger follow-up sequences instantly.

  • Notify sales teams via Slack.

📨 Example Payload

{   "id": "T3Bwb3J0dW5pdHkvMTIzNDU",   
"applied_at": "2023-01-01T12:00:00Z",
"received_at": "2023-01-01T00:00:00Z",
"project_id": 12345,
"locale": "en",
"provider_slug": "agency-slug",
"opportunity_link": "https://agency.sortlist.com/brief/12345", "integration": {
"uuid": "integration-uuid",
"owner": "manager@agency.com",
"trigger_name": "opportunity_application_sent"
},
"applied_by": {
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@agency.com"
},
"budget_min": 10000,
"budget_max": 25000,
"location": "New York, US",
"expertise": "Web Development",
"sector": "Technology",
"price_in_credit": 100.0,
"price_in_euro": 90.0,
"title": "Sortlist Opportunity 12345: Acme Inc.",
"company":
{"name": "Acme Inc.", "website": "https://acme.com"},
"contacts": [ {
"first_name": "Jane",
"last_name": "Doe",
"email": "jane.doe@example.com",
"phone": "+12025550100",
"linkedin_url": "https://linkedin.com/in/jane-doe",
"job_title": "Marketing Manager"
}
]
}

Pro Tip: Automate your follow-ups the moment the client opens your proposal.


🔹 4. Direct Message Received

Triggered when a potential client sends a new message in your Sortlist inbox.

🔔 When it triggers
Each time a message arrives.

📦 What you get
Message content + company + sender contact.

💡 How to use it

  • Alert your sales team in Slack.

  • Log conversations in your CRM.

  • Trigger automatic WhatsApp or email replies.

📨 Example Payload

{   
"message": "We are looking for a trusted partner for content creation.", "id": "sSL2jvehlxtLv28BAX_ipA",
"received_at": "2025-10-03T09:20:02Z",
"project_id": "12345",
"locale": "en",
"provider_slug": "thisisatest",
"opportunity_link": "https://app.sortlist.com/thisisatest/inbox", "integration":
{
"uuid": "6ee59c0d-2142-4b8f-8f0a-681e2719cc5e",
"owner": "thibaut@sortlist.com",
"trigger_name": "direct_message_received"
},
"location": "New York, US",
"country": "US",
"expertise": "Web Development",
"title": "Sortlist Opportunity 12345: Acme Inc.",
"company": {
"name": "Acme Inc.", "website": "https://acme.com"},
"contacts": [ {
"first_name": "Jane",
"last_name": "Doe",
"email": "jane.doe@example.com",
"phone": "+12025550100",
"linkedin_url": "https://linkedin.com/in/jane-doe",
"job_title": "Software Engineer"
}
]
}

Pro Tip: Never miss messages again — connect this to Slack or WhatsApp.

🧠 Example Lifecycle

  1. Webhook Created → select trigger & URL.

  2. Sortlist Sends Test Payload → check your logs.

  3. Webhook Live → receive real-time JSON events.

  4. Manage → edit, pause, delete anytime.

Sortlist Webhooks = Real-time business automation.
React faster, automate smarter, win more deals. 🚀

Did this answer your question?