NotificationsPusher Integration
Notifications

Pusher Integration

Pusher API Client for real-time messaging and channel management. Enables triggering events, managing channels, authenticating users, and handling presence channels via the Pusher Channels service.

Pusher

Category: Notifications
Provider Key: Pusher
SDK Packages: pusher@^5.2.0

Pusher API Client for real-time messaging and channel management. Enables triggering events, managing channels, authenticating users, and handling presence channels via the Pusher Channels service.


Configuration

To use Pusher in your project, add it to your project integrations and provide the following configuration:

ParameterTypeRequiredDescription
appIdstringYesThe Pusher application ID
keystringYesThe Pusher application key
secretstringYesThe Pusher application secret
clusterstringYesThe Pusher cluster (e.g., 'us2', 'eu', 'ap1')
useTLSbooleanNoWhether to use TLS for connections
hoststringNoOptional custom host (overrides cluster)
portnumberNoOptional custom port
encryptionMasterKeyBase64stringNoBase64-encoded 32-byte key for end-to-end encryption
proxystringNoOptional HTTP proxy URL
timeoutnumberNoRequest timeout in milliseconds
keepAlivebooleanNoWhether to enable keep-alive connections

Example Configuration

{
  "provider": "Pusher",
  "configuration": [
    { "name": "appId", "value": "your-appId" },
    { "name": "key", "value": "your-key" },
    { "name": "secret", "value": "your-secret" },
    { "name": "cluster", "value": "your-cluster" },
    { "name": "useTLS", "value": false },
    { "name": "host", "value": "your-host" },
    { "name": "port", "value": 0 },
    { "name": "encryptionMasterKeyBase64", "value": "your-encryptionMasterKeyBase64" },
    { "name": "proxy", "value": "your-proxy" },
    { "name": "timeout", "value": 0 },
    { "name": "keepAlive", "value": false }
  ]
}

Available Methods

Quick reference:

  • Events: triggerEvent, triggerMultipleChannels, triggerBatch, sendToUser
  • Channels: listChannels, getChannel, getChannelUsers
  • Authentication: authenticateUser, authorizeChannel
  • Users: terminateUserConnections
  • Webhooks: validateWebhook
  • Utilities: createSignedQueryString, customGet, customPost

Events

triggerEvent

Trigger Event

Triggers an event on a single channel. Sends real-time data to all subscribers of the specified channel.

Parameters:

ParameterTypeRequiredDescription
channelstringYesThe channel name (max 200 chars, alphanumeric, '_', '-')
eventstringYesThe event name (max 200 chars)
dataObjectYesThe event payload data
socketIdstringNoSocket ID to exclude from receiving the event
infostring ("subscription_count", "user_count", "subscription_count,user_count")NoRequest subscription/user counts ('subscription_count', 'user_count')

IntegrationAction example:

{
  "extendClassName": "IntegrationAction",
  "name": "triggerEventAction",
  "provider": "Pusher",
  "action": "triggerEvent",
  "parameters": [
    { "parameterName": "channel", "parameterValue": "'your-channel'" },
    { "parameterName": "event", "parameterValue": "'your-event'" },
    { "parameterName": "data", "parameterValue": "{}" },
    { "parameterName": "socketId", "parameterValue": "'your-socketId'" },
    { "parameterName": "info", "parameterValue": "'your-info'" }
  ],
  "contextPropertyName": "triggerEventResult"
}

MScript example:

await _Pusher.triggerEvent({
  channel: /* string */,
  event: /* string */,
  data: /* Object */,
  socketId: /* string */,
  info: /* string */,
})

Service library example:

const { getIntegrationClient } = require("integrations");
const client = await getIntegrationClient("Pusher");
const result = await client.triggerEvent({
  channel: /* string */,
  event: /* string */,
  data: /* Object */,
  socketId: /* string */,
  info: /* string */,
});

triggerMultipleChannels

Trigger Multi-Channel Event

Triggers an event on multiple channels simultaneously. Sends the same event to up to 100 channels in a single request.

Parameters:

ParameterTypeRequiredDescription
channelsstring[]YesArray of channel names (max 100)
eventstringYesThe event name
dataObjectYesThe event payload data
socketIdstringNoSocket ID to exclude from receiving the event
infostring ("subscription_count", "user_count", "subscription_count,user_count")NoRequest subscription/user counts

IntegrationAction example:

{
  "extendClassName": "IntegrationAction",
  "name": "triggerMultipleChannelsAction",
  "provider": "Pusher",
  "action": "triggerMultipleChannels",
  "parameters": [
    { "parameterName": "channels", "parameterValue": "[]" },
    { "parameterName": "event", "parameterValue": "'your-event'" },
    { "parameterName": "data", "parameterValue": "{}" },
    { "parameterName": "socketId", "parameterValue": "'your-socketId'" },
    { "parameterName": "info", "parameterValue": "'your-info'" }
  ],
  "contextPropertyName": "triggerMultipleChannelsResult"
}

MScript example:

await _Pusher.triggerMultipleChannels({
  channels: /* string[] */,
  event: /* string */,
  data: /* Object */,
  socketId: /* string */,
  info: /* string */,
})

Service library example:

const { getIntegrationClient } = require("integrations");
const client = await getIntegrationClient("Pusher");
const result = await client.triggerMultipleChannels({
  channels: /* string[] */,
  event: /* string */,
  data: /* Object */,
  socketId: /* string */,
  info: /* string */,
});

triggerBatch

Trigger Batch Events

Triggers multiple events in a single batch request. Sends up to 10 different events in one HTTP request for efficiency.

Parameters:

ParameterTypeRequiredDescription
eventsObject[]YesArray of event objects (max 10)
eventsstringYesChannel name for this event
eventsstringYesEvent name
eventsObjectYesEvent payload data
eventsstringNoSocket ID to exclude
eventsstringNoRequest counts for this event

IntegrationAction example:

{
  "extendClassName": "IntegrationAction",
  "name": "triggerBatchAction",
  "provider": "Pusher",
  "action": "triggerBatch",
  "parameters": [
    { "parameterName": "events", "parameterValue": "'your-events'" },
    { "parameterName": "events", "parameterValue": "'your-events'" },
    { "parameterName": "events", "parameterValue": "'your-events'" },
    { "parameterName": "events", "parameterValue": "{}" },
    { "parameterName": "events", "parameterValue": "'your-events'" },
    { "parameterName": "events", "parameterValue": "'your-events'" }
  ],
  "contextPropertyName": "triggerBatchResult"
}

MScript example:

await _Pusher.triggerBatch({
  events: /* Object[] */,
  events: /* string */,
  events: /* string */,
  events: /* Object */,
  events: /* string */,
  events: /* string */,
})

Service library example:

const { getIntegrationClient } = require("integrations");
const client = await getIntegrationClient("Pusher");
const result = await client.triggerBatch({
  events: /* Object[] */,
  events: /* string */,
  events: /* string */,
  events: /* Object */,
  events: /* string */,
  events: /* string */,
});

sendToUser

Send to User

Sends an event to a specific authenticated user. Requires user authentication to be set up on the client side.

Parameters:

ParameterTypeRequiredDescription
userIdstringYesThe authenticated user's ID
eventstringYesThe event name
dataObjectYesThe event payload data

IntegrationAction example:

{
  "extendClassName": "IntegrationAction",
  "name": "sendToUserAction",
  "provider": "Pusher",
  "action": "sendToUser",
  "parameters": [
    { "parameterName": "userId", "parameterValue": "'your-userId'" },
    { "parameterName": "event", "parameterValue": "'your-event'" },
    { "parameterName": "data", "parameterValue": "{}" }
  ],
  "contextPropertyName": "sendToUserResult"
}

MScript example:

await _Pusher.sendToUser({
  userId: /* string */,
  event: /* string */,
  data: /* Object */,
})

Service library example:

const { getIntegrationClient } = require("integrations");
const client = await getIntegrationClient("Pusher");
const result = await client.sendToUser({
  userId: /* string */,
  event: /* string */,
  data: /* Object */,
});

Channels

listChannels

List Channels

Retrieves a list of all channels in the application. Returns channels with optional filtering and attribute requests.

Parameters:

ParameterTypeRequiredDescription
filterByPrefixstringNoFilter channels by name prefix
infostringNoAttributes to return (e.g., 'user_count' for presence channels)

IntegrationAction example:

{
  "extendClassName": "IntegrationAction",
  "name": "listChannelsAction",
  "provider": "Pusher",
  "action": "listChannels",
  "parameters": [
    { "parameterName": "filterByPrefix", "parameterValue": "'your-filterByPrefix'" },
    { "parameterName": "info", "parameterValue": "'your-info'" }
  ],
  "contextPropertyName": "listChannelsResult"
}

MScript example:

await _Pusher.listChannels({
  filterByPrefix: /* string */,
  info: /* string */,
})

Service library example:

const { getIntegrationClient } = require("integrations");
const client = await getIntegrationClient("Pusher");
const result = await client.listChannels({
  filterByPrefix: /* string */,
  info: /* string */,
});

getChannel

Get Channel Info

Retrieves detailed information about a specific channel. Returns subscription count and user count for presence channels.

Parameters:

ParameterTypeRequiredDescription
channelNamestringYesThe name of the channel to query
infostring ("subscription_count", "user_count", "subscription_count,user_count")NoAttributes to return ('subscription_count', 'user_count')

IntegrationAction example:

{
  "extendClassName": "IntegrationAction",
  "name": "getChannelAction",
  "provider": "Pusher",
  "action": "getChannel",
  "parameters": [
    { "parameterName": "channelName", "parameterValue": "'your-channelName'" },
    { "parameterName": "info", "parameterValue": "'your-info'" }
  ],
  "contextPropertyName": "getChannelResult"
}

MScript example:

await _Pusher.getChannel({
  channelName: /* string */,
  info: /* string */,
})

Service library example:

const { getIntegrationClient } = require("integrations");
const client = await getIntegrationClient("Pusher");
const result = await client.getChannel({
  channelName: /* string */,
  info: /* string */,
});

getChannelUsers

Get Channel Users

Retrieves the list of users subscribed to a presence channel. Only works with presence channels (prefixed with 'presence-').

Parameters:

ParameterTypeRequiredDescription
channelNamestringYesThe presence channel name (must start with 'presence-')

IntegrationAction example:

{
  "extendClassName": "IntegrationAction",
  "name": "getChannelUsersAction",
  "provider": "Pusher",
  "action": "getChannelUsers",
  "parameters": [
    { "parameterName": "channelName", "parameterValue": "'your-channelName'" }
  ],
  "contextPropertyName": "getChannelUsersResult"
}

MScript example:

await _Pusher.getChannelUsers({
  channelName: /* string */,
})

Service library example:

const { getIntegrationClient } = require("integrations");
const client = await getIntegrationClient("Pusher");
const result = await client.getChannelUsers({
  channelName: /* string */,
});

Authentication

authenticateUser

Authenticate User

Authenticates a user for Pusher user authentication. Used in the server-side authentication endpoint for user signin.

Parameters:

ParameterTypeRequiredDescription
socketIdstringYesThe socket ID from the client connection
userDataObjectYesUser data object
userDatastringYesUnique user identifier (required)
userDatastringNoUser display name
userDatastringNoUser email
userDatastringNoUser avatar URL

IntegrationAction example:

{
  "extendClassName": "IntegrationAction",
  "name": "authenticateUserAction",
  "provider": "Pusher",
  "action": "authenticateUser",
  "parameters": [
    { "parameterName": "socketId", "parameterValue": "'your-socketId'" },
    { "parameterName": "userData", "parameterValue": "{}" },
    { "parameterName": "userData", "parameterValue": "'your-userData'" },
    { "parameterName": "userData", "parameterValue": "'your-userData'" },
    { "parameterName": "userData", "parameterValue": "'your-userData'" },
    { "parameterName": "userData", "parameterValue": "'your-userData'" }
  ],
  "contextPropertyName": "authenticateUserResult"
}

MScript example:

await _Pusher.authenticateUser({
  socketId: /* string */,
  userData: /* Object */,
  userData: /* string */,
  userData: /* string */,
  userData: /* string */,
  userData: /* string */,
})

Service library example:

const { getIntegrationClient } = require("integrations");
const client = await getIntegrationClient("Pusher");
const result = await client.authenticateUser({
  socketId: /* string */,
  userData: /* Object */,
  userData: /* string */,
  userData: /* string */,
  userData: /* string */,
  userData: /* string */,
});

authorizeChannel

Authorize Channel

Authorizes a client to access a private or presence channel. Used in the server-side authorization endpoint.

Parameters:

ParameterTypeRequiredDescription
socketIdstringYesThe socket ID from the client connection
channelstringYesThe channel name to authorize
channelDataObjectNoAdditional data for presence channels
channelDatastringYesUser ID for presence channel
channelDataObjectNoAdditional user info for presence channel

IntegrationAction example:

{
  "extendClassName": "IntegrationAction",
  "name": "authorizeChannelAction",
  "provider": "Pusher",
  "action": "authorizeChannel",
  "parameters": [
    { "parameterName": "socketId", "parameterValue": "'your-socketId'" },
    { "parameterName": "channel", "parameterValue": "'your-channel'" },
    { "parameterName": "channelData", "parameterValue": "{}" },
    { "parameterName": "channelData", "parameterValue": "'your-channelData'" },
    { "parameterName": "channelData", "parameterValue": "{}" }
  ],
  "contextPropertyName": "authorizeChannelResult"
}

MScript example:

await _Pusher.authorizeChannel({
  socketId: /* string */,
  channel: /* string */,
  channelData: /* Object */,
  channelData: /* string */,
  channelData: /* Object */,
})

Service library example:

const { getIntegrationClient } = require("integrations");
const client = await getIntegrationClient("Pusher");
const result = await client.authorizeChannel({
  socketId: /* string */,
  channel: /* string */,
  channelData: /* Object */,
  channelData: /* string */,
  channelData: /* Object */,
});

Users

terminateUserConnections

Terminate User Connections

Terminates all connections for a specific authenticated user. User will need to reconnect after this operation.

Parameters:

ParameterTypeRequiredDescription
userIdstringYesThe ID of the user whose connections to terminate

IntegrationAction example:

{
  "extendClassName": "IntegrationAction",
  "name": "terminateUserConnectionsAction",
  "provider": "Pusher",
  "action": "terminateUserConnections",
  "parameters": [
    { "parameterName": "userId", "parameterValue": "'your-userId'" }
  ],
  "contextPropertyName": "terminateUserConnectionsResult"
}

MScript example:

await _Pusher.terminateUserConnections({
  userId: /* string */,
})

Service library example:

const { getIntegrationClient } = require("integrations");
const client = await getIntegrationClient("Pusher");
const result = await client.terminateUserConnections({
  userId: /* string */,
});

Webhooks

validateWebhook

Validate Webhook

Validates a webhook request from Pusher. Checks content type, body format, and signature authenticity.

Parameters:

ParameterTypeRequiredDescription
headersObjectYesRequest headers (lowercase keys)
rawBodystringYesRaw request body string
additionalTokensObject[]NoAdditional app tokens to check
additionalTokensstringYesAdditional app key
additionalTokensstringYesAdditional app secret

IntegrationAction example:

{
  "extendClassName": "IntegrationAction",
  "name": "validateWebhookAction",
  "provider": "Pusher",
  "action": "validateWebhook",
  "parameters": [
    { "parameterName": "headers", "parameterValue": "{}" },
    { "parameterName": "rawBody", "parameterValue": "'your-rawBody'" },
    { "parameterName": "additionalTokens", "parameterValue": "'your-additionalTokens'" },
    { "parameterName": "additionalTokens", "parameterValue": "'your-additionalTokens'" },
    { "parameterName": "additionalTokens", "parameterValue": "'your-additionalTokens'" }
  ],
  "contextPropertyName": "validateWebhookResult"
}

MScript example:

await _Pusher.validateWebhook({
  headers: /* Object */,
  rawBody: /* string */,
  additionalTokens: /* Object[] */,
  additionalTokens: /* string */,
  additionalTokens: /* string */,
})

Service library example:

const { getIntegrationClient } = require("integrations");
const client = await getIntegrationClient("Pusher");
const result = await client.validateWebhook({
  headers: /* Object */,
  rawBody: /* string */,
  additionalTokens: /* Object[] */,
  additionalTokens: /* string */,
  additionalTokens: /* string */,
});

Utilities

createSignedQueryString

Create Signed Query String

Creates a signed query string for manual REST API requests. Useful when using a custom HTTP client.

Parameters:

ParameterTypeRequiredDescription
methodstringYesHTTP method (GET, POST, etc.)
pathstringYesAPI path (e.g., '/apps/123/events')
bodystringNoRequest body for POST requests
paramsObjectNoAdditional query parameters

IntegrationAction example:

{
  "extendClassName": "IntegrationAction",
  "name": "createSignedQueryStringAction",
  "provider": "Pusher",
  "action": "createSignedQueryString",
  "parameters": [
    { "parameterName": "method", "parameterValue": "'your-method'" },
    { "parameterName": "path", "parameterValue": "'your-path'" },
    { "parameterName": "body", "parameterValue": "'your-body'" },
    { "parameterName": "params", "parameterValue": "{}" }
  ],
  "contextPropertyName": "createSignedQueryStringResult"
}

MScript example:

await _Pusher.createSignedQueryString({
  method: /* string */,
  path: /* string */,
  body: /* string */,
  params: /* Object */,
})

Service library example:

const { getIntegrationClient } = require("integrations");
const client = await getIntegrationClient("Pusher");
const result = await client.createSignedQueryString({
  method: /* string */,
  path: /* string */,
  body: /* string */,
  params: /* Object */,
});

customGet

Custom GET Request

Makes a custom GET request to the Pusher API. For accessing endpoints not covered by specific methods.

Parameters:

ParameterTypeRequiredDescription
pathstringYesAPI path (e.g., '/channels')
paramsObjectNoQuery parameters

IntegrationAction example:

{
  "extendClassName": "IntegrationAction",
  "name": "customGetAction",
  "provider": "Pusher",
  "action": "customGet",
  "parameters": [
    { "parameterName": "path", "parameterValue": "'your-path'" },
    { "parameterName": "params", "parameterValue": "{}" }
  ],
  "contextPropertyName": "customGetResult"
}

MScript example:

await _Pusher.customGet({
  path: /* string */,
  params: /* Object */,
})

Service library example:

const { getIntegrationClient } = require("integrations");
const client = await getIntegrationClient("Pusher");
const result = await client.customGet({
  path: /* string */,
  params: /* Object */,
});

customPost

Custom POST Request

Makes a custom POST request to the Pusher API. For accessing endpoints not covered by specific methods.

Parameters:

ParameterTypeRequiredDescription
pathstringYesAPI path
paramsObjectNoQuery parameters
bodyObjectNoRequest body

IntegrationAction example:

{
  "extendClassName": "IntegrationAction",
  "name": "customPostAction",
  "provider": "Pusher",
  "action": "customPost",
  "parameters": [
    { "parameterName": "path", "parameterValue": "'your-path'" },
    { "parameterName": "params", "parameterValue": "{}" },
    { "parameterName": "body", "parameterValue": "{}" }
  ],
  "contextPropertyName": "customPostResult"
}

MScript example:

await _Pusher.customPost({
  path: /* string */,
  params: /* Object */,
  body: /* Object */,
})

Service library example:

const { getIntegrationClient } = require("integrations");
const client = await getIntegrationClient("Pusher");
const result = await client.customPost({
  path: /* string */,
  params: /* Object */,
  body: /* Object */,
});