Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
165 changes: 157 additions & 8 deletions apps/docs/content/docs/en/integrations/linq.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ Check whether an address (phone number or email) supports RCS
| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `apiKey` | string | Yes | Linq API key |
| `address` | string | Yes | Phone number \(E.164 format\) or email address to check |
| `address` | string | Yes | Phone number \(E.164 format\) to check |
| `from` | string | No | Sender phone number to check from \(defaults to an available number\) |

#### Output
Expand Down Expand Up @@ -277,8 +277,9 @@ Edit the text of a sent message (up to 5 times, within 15 minutes of sending; iM
| `id` | string | Message ID |
| `chatId` | string | ID of the chat the message belongs to |
| `isFromMe` | boolean | Whether the message was sent by you |
| `isDelivered` | boolean | Whether the message was delivered |
| `isRead` | boolean | Whether the message was read |
| `deliveryStatus` | string | Delivery status \(pending, queued, sent, delivered, received, read, failed\) |
| `isDelivered` | boolean | Whether the message was delivered \(deprecated; use deliveryStatus\) |
| `isRead` | boolean | Whether the message was read \(deprecated; use deliveryStatus\) |
| `service` | string | Delivery service \(iMessage, SMS, RCS\) |
| `createdAt` | string | ISO 8601 creation timestamp |
| `updatedAt` | string | ISO 8601 update timestamp |
Expand Down Expand Up @@ -374,8 +375,9 @@ Retrieve a single message by ID, including parts, reactions, and delivery status
| `id` | string | Message ID |
| `chatId` | string | ID of the chat the message belongs to |
| `isFromMe` | boolean | Whether the message was sent by you |
| `isDelivered` | boolean | Whether the message was delivered |
| `isRead` | boolean | Whether the message was read |
| `deliveryStatus` | string | Delivery status \(pending, queued, sent, delivered, received, read, failed\) |
| `isDelivered` | boolean | Whether the message was delivered \(deprecated; use deliveryStatus\) |
| `isRead` | boolean | Whether the message was read \(deprecated; use deliveryStatus\) |
| `service` | string | Delivery service \(iMessage, SMS, RCS\) |
| `createdAt` | string | ISO 8601 creation timestamp |
| `updatedAt` | string | ISO 8601 update timestamp |
Expand Down Expand Up @@ -483,7 +485,8 @@ List all phone numbers assigned to your partner account, with line health
| `phoneNumbers` | array | Phone numbers assigned to the account |
| ↳ `id` | string | Phone number ID |
| ↳ `phoneNumber` | string | Phone number in E.164 format |
| ↳ `healthStatus` | json | Line health status \(status, doc_url\) |
| ↳ `forwardingNumber` | string | Forwarding number in E.164 format, or null |
| ↳ `healthStatus` | json | Line reputation/health status \(status, doc_url\) |

### `linq_list_thread`

Expand Down Expand Up @@ -548,7 +551,7 @@ List all webhook subscriptions on your account

### `linq_mark_chat_read`

Mark all messages in a chat as read
Mark messages in a chat as read (only applies to 1:1 iMessage/RCS; no effect on group chats)

#### Input

Expand Down Expand Up @@ -633,7 +636,7 @@ Send a message to an existing chat, with optional media, link, effect, or reply
| --------- | ---- | ----------- |
| `chatId` | string | ID of the chat the message was sent to |
| `messageId` | string | ID of the sent message |
| `deliveryStatus` | string | Delivery status \(pending, queued, sent, delivered, failed\) |
| `deliveryStatus` | string | Delivery status \(pending, queued, sent, delivered, received, read, failed\) |
| `sentAt` | string | ISO 8601 timestamp the message was sent |
| `service` | string | Delivery service \(iMessage, SMS, RCS\) |
| `message` | json | The full sent message object with parts |
Expand Down Expand Up @@ -785,3 +788,149 @@ Update a webhook subscription (target URL, events, phone filter, or active state
| `updatedAt` | string | ISO 8601 update timestamp |



## Triggers

A **Trigger** is a block that starts a workflow when an event happens in this service.

### Linq Message Delivered

Trigger workflow when a message is delivered

#### Configuration

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `triggerApiKey` | string | Yes | Required to create the webhook subscription in Linq. |
| `triggerPhoneNumbers` | string | No | Comma-separated E.164 numbers to restrict which numbers deliver events. |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `eventType` | string | Event type \(e.g. message.received, message.delivered, reaction.added\) |
| `eventId` | string | Unique event identifier used for deduplication |
| `createdAt` | string | ISO 8601 timestamp of when the event occurred |
| `webhookVersion` | string | Payload schema version of the delivered event |
| `data` | json | Full event payload \(shape varies by event type — message, reaction, chat, etc.\) |


---

### Linq Message Failed

Trigger workflow when a message fails to deliver

#### Configuration

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `triggerApiKey` | string | Yes | Required to create the webhook subscription in Linq. |
| `triggerPhoneNumbers` | string | No | Comma-separated E.164 numbers to restrict which numbers deliver events. |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `eventType` | string | Event type \(e.g. message.received, message.delivered, reaction.added\) |
| `eventId` | string | Unique event identifier used for deduplication |
| `createdAt` | string | ISO 8601 timestamp of when the event occurred |
| `webhookVersion` | string | Payload schema version of the delivered event |
| `data` | json | Full event payload \(shape varies by event type — message, reaction, chat, etc.\) |


---

### Linq Message Read

Trigger workflow when a message is read

#### Configuration

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `triggerApiKey` | string | Yes | Required to create the webhook subscription in Linq. |
| `triggerPhoneNumbers` | string | No | Comma-separated E.164 numbers to restrict which numbers deliver events. |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `eventType` | string | Event type \(e.g. message.received, message.delivered, reaction.added\) |
| `eventId` | string | Unique event identifier used for deduplication |
| `createdAt` | string | ISO 8601 timestamp of when the event occurred |
| `webhookVersion` | string | Payload schema version of the delivered event |
| `data` | json | Full event payload \(shape varies by event type — message, reaction, chat, etc.\) |


---

### Linq Message Received

Trigger workflow when an inbound message is received

#### Configuration

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `triggerApiKey` | string | Yes | Required to create the webhook subscription in Linq. |
| `triggerPhoneNumbers` | string | No | Comma-separated E.164 numbers to restrict which numbers deliver events. |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `eventType` | string | Event type \(e.g. message.received, message.delivered, reaction.added\) |
| `eventId` | string | Unique event identifier used for deduplication |
| `createdAt` | string | ISO 8601 timestamp of when the event occurred |
| `webhookVersion` | string | Payload schema version of the delivered event |
| `data` | json | Full event payload \(shape varies by event type — message, reaction, chat, etc.\) |


---

### Linq Reaction Added

Trigger workflow when a reaction is added to a message

#### Configuration

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `triggerApiKey` | string | Yes | Required to create the webhook subscription in Linq. |
| `triggerPhoneNumbers` | string | No | Comma-separated E.164 numbers to restrict which numbers deliver events. |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `eventType` | string | Event type \(e.g. message.received, message.delivered, reaction.added\) |
| `eventId` | string | Unique event identifier used for deduplication |
| `createdAt` | string | ISO 8601 timestamp of when the event occurred |
| `webhookVersion` | string | Payload schema version of the delivered event |
| `data` | json | Full event payload \(shape varies by event type — message, reaction, chat, etc.\) |


---

### Linq Webhook (All Events)

Trigger on any Linq webhook event (messages, reactions, chats, and more)

#### Configuration

| Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `triggerApiKey` | string | Yes | Required to create the webhook subscription in Linq. |
| `triggerPhoneNumbers` | string | No | Comma-separated E.164 numbers to restrict which numbers deliver events. |

#### Output

| Parameter | Type | Description |
| --------- | ---- | ----------- |
| `eventType` | string | Event type \(e.g. message.received, message.delivered, reaction.added\) |
| `eventId` | string | Unique event identifier used for deduplication |
| `createdAt` | string | ISO 8601 timestamp of when the event occurred |
| `webhookVersion` | string | Payload schema version of the delivered event |
| `data` | json | Full event payload \(shape varies by event type — message, reaction, chat, etc.\) |

19 changes: 19 additions & 0 deletions apps/sim/blocks/blocks/linq.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { LinqIcon } from '@/components/icons'
import type { BlockConfig, BlockMeta } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import { normalizeFileInput } from '@/blocks/utils'
import { getTrigger } from '@/triggers'

const CHAT_ID_OPS = [
'get_chat',
Expand Down Expand Up @@ -559,6 +560,12 @@ export const LinqBlock: BlockConfig = {
condition: { field: 'operation', value: [...PAGINATION_OPS] },
mode: 'advanced',
},
...getTrigger('linq_message_received').subBlocks,
...getTrigger('linq_message_delivered').subBlocks,
...getTrigger('linq_message_failed').subBlocks,
...getTrigger('linq_message_read').subBlocks,
...getTrigger('linq_reaction_added').subBlocks,
...getTrigger('linq_webhook').subBlocks,
],

tools: {
Expand Down Expand Up @@ -863,6 +870,18 @@ export const LinqBlock: BlockConfig = {
events: { type: 'json', description: 'Available webhook event types' },
docUrl: { type: 'string', description: 'Documentation URL' },
},

triggers: {
enabled: true,
available: [
'linq_message_received',
'linq_message_delivered',
'linq_message_failed',
'linq_message_read',
'linq_reaction_added',
'linq_webhook',
],
},
}

export const LinqBlockMeta = {
Expand Down
43 changes: 37 additions & 6 deletions apps/sim/lib/integrations/integrations.json
Original file line number Diff line number Diff line change
Expand Up @@ -10003,7 +10003,7 @@
},
{
"name": "Mark Chat as Read",
"description": "Mark all messages in a chat as read"
"description": "Mark messages in a chat as read (only applies to 1:1 iMessage/RCS; no effect on group chats)"
},
{
"name": "Leave Chat",
Expand Down Expand Up @@ -10119,8 +10119,39 @@
}
],
"operationCount": 34,
"triggers": [],
"triggerCount": 0,
"triggers": [
{
"id": "linq_message_received",
"name": "Linq Message Received",
"description": "Trigger workflow when an inbound message is received"
},
{
"id": "linq_message_delivered",
"name": "Linq Message Delivered",
"description": "Trigger workflow when a message is delivered"
},
{
"id": "linq_message_failed",
"name": "Linq Message Failed",
"description": "Trigger workflow when a message fails to deliver"
},
{
"id": "linq_message_read",
"name": "Linq Message Read",
"description": "Trigger workflow when a message is read"
},
{
"id": "linq_reaction_added",
"name": "Linq Reaction Added",
"description": "Trigger workflow when a reaction is added to a message"
},
{
"id": "linq_webhook",
"name": "Linq Webhook (All Events)",
"description": "Trigger on any Linq webhook event (messages, reactions, chats, and more)"
}
],
"triggerCount": 6,
"authType": "api-key",
"category": "tools",
"integrationType": "communication",
Expand Down Expand Up @@ -15649,11 +15680,11 @@
"landingContent": {
"install": {
"heading": "Add Sim to your Slack workspace",
"intro": "Sim connects to Slack through Slack’s official OAuth flow. The “Add to Slack” button lives inside your Sim account (after sign-in) — connect from there and the Sim bot is installed in your Slack workspace. The steps below show exactly how to reach it.",
"intro": "Sim connects to Slack through Slack’s official OAuth flow. The “Add to Slack” button lives inside your Sim account (after sign-in). Connect from there and the Sim bot is installed in your Slack workspace. The steps below show exactly how to reach it.",
"steps": [
{
"title": "Create your free Sim account",
"body": "Sign up at sim.ai — no credit card required."
"body": "Sign up at sim.ai. No credit card required."
},
{
"title": "Add a Slack block",
Expand All @@ -15673,7 +15704,7 @@
"body": "Sim requests only the Slack permissions its actions and triggers need, and never shows private channel names or messages to people who are not members of those channels in Slack.",
"href": "/privacy"
},
"aiDisclaimer": "Sim agents use AI models to generate messages and responses sent to Slack. AI-generated content can be inaccurate or incomplete review automated outputs before relying on them, especially for important communications."
"aiDisclaimer": "Sim agents use AI models to generate messages and responses sent to Slack. AI-generated content can be inaccurate or incomplete, so review automated outputs before relying on them, especially for important communications."
}
},
{
Expand Down
Loading
Loading