Home › Integrations

SocialScalr integrations

SocialScalr ships HMAC-signed outbound webhooks plus a public REST API. That covers ~95% of the integrations our customers actually wire up: Zapier, Make, n8n, Slack, HubSpot, Pipedrive, Salesforce, and a long tail of custom internal CRMs. This page is the copy-paste recipe book.

By · · All integrations work on the Starter plan and up.

Zapier Live
via Webhooks by Zapier
Make Live
via Custom webhook
n8n Live
via Webhook node
Slack Live
Incoming Webhook
HubSpot Live
via Make / Workflows
Salesforce Live
via Apex REST + Zapier
Pipedrive Live
via Make / Zapier
Discord Live
Incoming Webhook

The event payload (the same one for all destinations)

Every outbound webhook from SocialScalr posts the same JSON shape. Configure events in Settings → Webhooks in the dashboard. Each delivery is signed with an HMAC SHA-256 of the body using your webhook secret, sent in the X-SocialScalr-Signature header.

// POST {your_endpoint}
// X-SocialScalr-Signature: sha256=<hmac>
// Content-Type: application/json
{
  "event": "lead.replied",
  "id": "evt_01HEXBC...",
  "created_at": "2026-05-24T15:32:11Z",
  "data": {
    "lead": {
      "id": "ld_8a2...",
      "name": "Sarah Chen",
      "first_name": "Sarah",
      "company": "Acme Robotics",
      "title": "VP Marketing",
      "linkedin_url": "https://linkedin.com/in/sarahchen",
      "email": "[email protected]",
      "stage": "first_reply",
      "campaign_id": "cmp_22f..."
    },
    "message": {
      "direction": "inbound",
      "text": "Sure, interested. Send me a calendar link.",
      "received_at": "2026-05-24T15:32:09Z"
    }
  }
}

Supported event names: lead.connected, lead.replied, lead.opened (post engagement), campaign.completed, post.published, watchtower.alert. Full list and signing verification in the REST API + webhooks docs.


Zapier Live (no app required)

Get a SocialScalr event into 6,000+ Zapier apps in 90 seconds.

  1. In Zapier, create a new Zap. Trigger app: Webhooks by Zapier, event: Catch Hook.
  2. Copy the catch URL Zapier gives you.
  3. In SocialScalr, go to Settings → Webhooks → New endpoint. Paste the URL. Pick the events you want (typically lead.replied and lead.connected).
  4. Back in Zapier, hit "Test trigger". SocialScalr replays the last event so Zapier learns the schema.
  5. Add any action step. The Lead, Company, Title, LinkedIn URL, and Message Text fields are all available as merge variables.

Common Zaps customers build: Lead replied → add row to Google Sheets, Lead replied → create Trello card, Campaign completed → send Slack DM to founder, Watchtower alert → send to Mailchimp segmentation.

Make (formerly Integromat) Live

Make gives you proper branching, error handling, and rate-limit awareness. Better than Zapier for anything with conditional logic.

  1. New scenario. First module: Webhooks → Custom webhook. Add hook, copy the URL.
  2. Paste the URL into SocialScalr Settings → Webhooks.
  3. Click "Redetermine data structure" in Make, then trigger a test event from SocialScalr's webhook page.
  4. Add downstream modules. Common second-step: HubSpot → Create/Update CRM Object, matching on {{lead.email}} or {{lead.linkedin_url}}.

Verifying the signature inside Make: use the Tools → "Set variable" module + an HMAC SHA-256 hashing block on 1.X-SocialScalr-Signature vs the raw body. Reject scenarios where the computed hash does not match.

n8n Live (self-hosted friendly)

If you self-host n8n, this is the cheapest and most flexible option. Webhook node + Function node for signature verification.

// n8n Function node - signature verification
const crypto = require('crypto');
const secret = 'whsec_xxxxxxxxxxxxxxxx'; // your SocialScalr webhook secret
const sig    = items[0].headers['x-socialscalr-signature'];
const body   = JSON.stringify(items[0].body);
const hash   = 'sha256=' + crypto.createHmac('sha256', secret)
                  .update(body).digest('hex');
if (sig !== hash) throw new Error('Bad signature');
return items;

After verification, branch on $json.event to route different event types to different downstream nodes (Slack for replies, Postgres for analytics, HubSpot for CRM sync).

Slack Live

The fastest possible setup. No middleware needed.

  1. In Slack, go to api.slack.com/apps → Create new app → From scratch.
  2. Enable "Incoming Webhooks", click "Add new webhook to workspace", pick the destination channel.
  3. Copy the webhook URL (it looks like https://hooks.slack.com/services/T0.../B0.../...).
  4. In SocialScalr, add it as a webhook endpoint. Select event type lead.replied only (otherwise the channel gets noisy).

SocialScalr auto-detects Slack URLs and reformats the payload into Slack's blocks format with the lead name, message preview, and a "Reply in SocialScalr" button that deep-links to /app#inbox/{lead_id}.

HubSpot Live (via Make or HubSpot Workflows)

HubSpot has no native LinkedIn outreach trigger, so we route via Make. The upsert key is linkedin_url (preferred) or email.

  1. Build a Make scenario as in the Make recipe above.
  2. Second module: HubSpot → Search Objects, filter linkedin_url EQ {{lead.linkedin_url}}.
  3. Router: if found, update; if not, create.
  4. Map fields: firstname <- {{lead.first_name}}, company <- {{lead.company}}, jobtitle <- {{lead.title}}, custom property linkedin_url <- {{lead.linkedin_url}}, lifecycle stage <- "Lead".
  5. Add a HubSpot Note attached to the contact with the actual message text.

Tip: create a custom contact property socialscalr_campaign in HubSpot, and map {{lead.campaign_id}} to it. That gives you a HubSpot list per SocialScalr campaign and conversion reporting in HubSpot's funnel tool.

Salesforce Live

Two options. Zapier is faster to set up; Apex REST is faster at runtime and works for high-volume teams.

Option A: Zapier (recommended for <500 leads/day):

  1. Zapier → Webhooks by Zapier trigger as above.
  2. Action: Salesforce → Find Record by LinkedIn URL custom field.
  3. Path A (found): Update Contact, add a Salesforce Task with the message text.
  4. Path B (not found): Create Lead with Source = "LinkedIn outbound (SocialScalr)".

Option B: Direct Apex REST endpoint (no middleware, handles 1000s/day):

// Salesforce Apex REST class - paste into Developer Console
@RestResource(urlMapping='/socialscalr/lead/*')
global with sharing class SocialScalrLeadEndpoint {
  @HttpPost
  global static String upsertLead() {
    RestRequest req = RestContext.request;
    Map<String, Object> body = (Map<String, Object>) JSON.deserializeUntyped(
      req.requestBody.toString()
    );
    Map<String, Object> lead = (Map<String, Object>) ((Map<String, Object>) body.get('data')).get('lead');
    Lead l = new Lead(
      FirstName        = (String) lead.get('first_name'),
      LastName         = ((String) lead.get('name')).split(' ', 2)[1],
      Company          = (String) lead.get('company'),
      Title            = (String) lead.get('title'),
      LeadSource       = 'LinkedIn outbound (SocialScalr)',
      LinkedIn_URL__c  = (String) lead.get('linkedin_url')
    );
    upsert l LinkedIn_URL__c;
    return l.Id;
  }
}

Then paste your Salesforce instance URL + /services/apexrest/socialscalr/lead/ into the SocialScalr webhook destination. Use a Salesforce Connected App + OAuth for the Authorization header.

Pipedrive Live (via Make or Zapier)

Pipedrive has a clean REST API and Make ships a built-in Pipedrive module. Two-step scenario:

  1. Make: Custom webhook → Pipedrive "Search persons" by LinkedIn URL.
  2. Router: found → "Create activity" with the message text; not found → "Create person" then "Create deal" with stage = "Discovery".

Map deal value = 0 (you don't know yet) and let your AEs price it on first call.

Discord Live

Identical to Slack: create a server webhook in Discord channel settings, paste the URL into SocialScalr. SocialScalr auto-detects discord.com/api/webhooks/ URLs and reformats with the right embed shape.

Other tools that work via the REST API

Anything not on this page is probably still reachable through SocialScalr's REST API. Common patterns:

Security and rate limits

All webhook deliveries are signed with HMAC SHA-256. Verify the X-SocialScalr-Signature header on receipt - reject anything that doesn't match. We retry failed deliveries with exponential backoff for up to 24 hours, then mark the endpoint as unhealthy and email you. Maximum 100 outbound webhooks per minute per workspace.

If your receiver is slow (more than 5s response), use a queue. SocialScalr times out deliveries at 8 seconds.