# Zoho TeamInbox

> Shared team inbox from Zoho. Send email from a team inbox, find, assign, follow, archive and trash conversations, add contacts, and post new messages to a webhook.

App · Email · 16 actions. Web page: https://docs.lodol.com/docs/integrations/zoho-teaminbox

## Actions

### Archive a conversation

Archive a conversation, taking it out of the open view.

**Inputs**

- Workspace (`workspace_id`, text, required): The TeamInbox organisation to work in.
- Team (`team`, text, required): The shared team to work in.
- Inbox (`inbox_id`, text, required): The team's inbox.
- Conversation ID (`thread_id`, text, required): The conversation's id: the thread_id from 'Send an email', or the entityId from 'List unassigned conversations' or 'Search conversations'.
- Channel (`channel`, text): Optional. The conversation's channel; Mail unless it came from chat. One of: `1` (Mail), `2` (Telegram), `3` (WhatsApp), `4` (Discussion), `5` (Instagram), `6` (Facebook). Default: `1`.

**Outputs**: The conversation that was changed.

- `archived` (true/false): True after archiving.
- `assignee_zuid` (text): Who the conversation was assigned to.
- `following` (true/false): True after following.
- `status_code` (number): TeamInbox's status code.
- `status_description` (text): TeamInbox's status description.
- `thread_id` (text): The conversation's id.
- `trashed` (true/false): True after moving to trash.

**Example output**

```json
{
  "archived": true,
  "status_code": 200,
  "status_description": "success",
  "thread_id": "1727700000000100001"
}
```

### Assign a conversation

Assign a conversation to a member of its team.

**Inputs**

- Workspace (`workspace_id`, text, required): The TeamInbox organisation to work in.
- Team (`team`, text, required): The shared team to work in.
- Inbox (`inbox_id`, text, required): The team's inbox.
- Conversation ID (`thread_id`, text, required): The conversation's id: the thread_id from 'Send an email', or the entityId from 'List unassigned conversations' or 'Search conversations'.
- Assignee (`assignee_zuid`, text, required): The team member to assign it to.
- Channel (`channel`, text): Optional. The conversation's channel; Mail unless it came from chat. One of: `1` (Mail), `2` (Telegram), `3` (WhatsApp), `4` (Discussion), `5` (Instagram), `6` (Facebook). Default: `1`.

**Outputs**: The conversation that was changed.

- `archived` (true/false): True after archiving.
- `assignee_zuid` (text): Who the conversation was assigned to.
- `following` (true/false): True after following.
- `status_code` (number): TeamInbox's status code.
- `status_description` (text): TeamInbox's status description.
- `thread_id` (text): The conversation's id.
- `trashed` (true/false): True after moving to trash.

**Example output**

```json
{
  "assignee_zuid": "812345678",
  "status_code": 200,
  "status_description": "success",
  "thread_id": "1727700000000100001"
}
```

### Create a contact

Add a contact to a team.

**Inputs**

- Workspace (`workspace_id`, text, required): The TeamInbox organisation to work in.
- Team (`team`, text, required): The shared team to work in.
- Name (`name`, text, required): The contact's name.
- Email (`email`, text): Optional. The contact's email address.
- Mobile (`mobile`, text): Optional. The contact's mobile number.
- Description (`description`, text): Optional. Notes about the contact.
- Facebook profile URL (`facebook_profile_url`, text): Optional. A full https:// address.
- Instagram profile URL (`instagram_profile_url`, text): Optional. A full https:// address.

**Outputs**: The contact that was created.

- `contact_id` (text): The new contact's id.
- `email` (text): The contact's email address, if one was given.
- `name` (text): The contact's name.

**Example output**

```json
{
  "contact_id": "4000000099999",
  "email": "sam@example.com",
  "name": "Sam Lee"
}
```

### Create a webhook rule

Create a rule that posts an inbox's matching conversations to a webhook URL when messages arrive or are sent. Text conditions match when the field contains the text.

**Inputs**

- Workspace (`workspace_id`, text, required): The TeamInbox organisation to work in.
- Team (`team`, text, required): The shared team to work in.
- Inbox (`inbox_id`, text, required): The team's inbox.
- Name (`name`, text, required): The rule's name.
- Webhook URL (`webhook_url`, text, required): The http(s) URL TeamInbox should post to.
- Events (`events`, list, required): When the rule runs. Choose one or more. One or more of: `5` (Inbound message), `6` (Inbound reply), `2` (Outbound message), `3` (Outbound reply).
- Match (`match`, text): Optional. How the conditions combine. One of: `all` (All conditions must match), `any` (Any condition may match). Default: `all`.
- Assigned to (`assignee_zuid`, text): Optional. Only conversations assigned to this member.
- From contains (`from_contains`, text): Optional.
- To contains (`to_contains`, text): Optional.
- Cc contains (`cc_contains`, text): Optional.
- Subject contains (`subject_contains`, text): Optional.
- Message contains (`body_contains`, text): Optional.

**Outputs**: The rule that was created.

- `events` (list): The event codes the rule fires on.
- `name` (text): The rule's name.
- `rule_id` (text): The new rule's id.
- `webhook_url` (text): The URL the rule posts to.

**Example output**

```json
{
  "events": [
    "5"
  ],
  "name": "Post new mail",
  "rule_id": "4000000055555",
  "webhook_url": "https://hooks.example.com/ti"
}
```

### Delete a rule

Delete one of a team's rules.

**Inputs**

- Workspace (`workspace_id`, text, required): The TeamInbox organisation to work in.
- Team (`team`, text, required): The shared team to work in.
- Rule ID (`rule_id`, text, required): The rule_id from 'Create a webhook rule'.

**Outputs**: The rule that was deleted.

- `deleted` (true/false): True once deleted.
- `rule_id` (text): The deleted rule's id.

**Example output**

```json
{
  "deleted": true,
  "rule_id": "4000000055555"
}
```

### Follow a conversation

Follow a conversation so its updates notify you.

**Inputs**

- Workspace (`workspace_id`, text, required): The TeamInbox organisation to work in.
- Team (`team`, text, required): The shared team to work in.
- Inbox (`inbox_id`, text, required): The team's inbox.
- Conversation ID (`thread_id`, text, required): The conversation's id: the thread_id from 'Send an email', or the entityId from 'List unassigned conversations' or 'Search conversations'.
- Channel (`channel`, text): Optional. The conversation's channel; Mail unless it came from chat. One of: `1` (Mail), `2` (Telegram), `3` (WhatsApp), `4` (Discussion), `5` (Instagram), `6` (Facebook). Default: `1`.

**Outputs**: The conversation that was changed.

- `archived` (true/false): True after archiving.
- `assignee_zuid` (text): Who the conversation was assigned to.
- `following` (true/false): True after following.
- `status_code` (number): TeamInbox's status code.
- `status_description` (text): TeamInbox's status description.
- `thread_id` (text): The conversation's id.
- `trashed` (true/false): True after moving to trash.

**Example output**

```json
{
  "following": true,
  "status_code": 200,
  "status_description": "success",
  "thread_id": "1727700000000100001"
}
```

### List inboxes

List a team's inboxes with their settings and members.

**Inputs**

- Workspace (`workspace_id`, text, required): The TeamInbox organisation to work in.
- Team (`team`, text, required): The shared team to work in.

**Outputs**

- `count` (number): How many inboxes were returned.
- `inboxes` (list): The inboxes.

**Example output**

```json
{
  "count": 1,
  "inboxes": [
    {
      "id": "4000000067890",
      "name": "support@acme.example",
      "team_id": "4000000012345"
    }
  ]
}
```

### List rules

List a team's rules, including webhook rules.

**Inputs**

- Workspace (`workspace_id`, text, required): The TeamInbox organisation to work in.
- Team (`team`, text, required): The shared team to work in.

**Outputs**

- `count` (number): How many rules were returned.
- `rules` (list): The rules.

**Example output**

```json
{
  "count": 1,
  "rules": [
    {
      "actions": [
        {
          "type": "11",
          "value": "https://hooks.example.com/ti"
        }
      ],
      "rule_name": "Post to webhook"
    }
  ]
}
```

### List sender addresses

List the From addresses of a workspace. By default only enabled, verified ones; pick an inbox to keep only those it can send from.

**Inputs**

- Workspace (`workspace_id`, text, required): The TeamInbox organisation to work in.
- Inbox (`inbox_id`, text): Optional. Only addresses this inbox may send from.
- Team (`team`, text): Optional. Only used to pick the inbox above.
- Usable addresses only (`usable_only`, true/false): Optional. Keep only enabled, verified addresses. On by default. Default: `true`.

**Outputs**

- `count` (number): How many sender addresses were returned.
- `sender_addresses` (list): The sender addresses.

**Example output**

```json
{
  "count": 1,
  "sender_addresses": [
    {
      "accessible_inboxes": [
        "4000000067890"
      ],
      "is_enabled": true,
      "is_verified": true,
      "name": "Acme Support",
      "source": "support@acme.example"
    }
  ]
}
```

### List team members

List a team's members with their roles and the zuid a conversation is assigned to.

**Inputs**

- Workspace (`workspace_id`, text, required): The TeamInbox organisation to work in.
- Team (`team`, text, required): The shared team to work in.

**Outputs**

- `count` (number): How many team members were returned.
- `members` (list): The team members.

**Example output**

```json
{
  "count": 1,
  "members": [
    {
      "email": "priya@example.com",
      "name": "Priya Shah",
      "role_id": "1",
      "role_name": "Admin",
      "zuid": "812345678"
    }
  ]
}
```

### List teams

List the teams in a workspace, optionally only shared teams.

**Inputs**

- Workspace (`workspace_id`, text, required): The TeamInbox organisation to work in.
- Shared teams only (`shared_only`, true/false): Optional. Leave out personal teams. Default: `false`.

**Outputs**

- `count` (number): How many teams were returned.
- `teams` (list): The teams.

**Example output**

```json
{
  "count": 1,
  "teams": [
    {
      "description": "Customer support",
      "member_count": 3,
      "name": "Support",
      "team_id": "4000000012345",
      "team_type": 2
    }
  ]
}
```

### List unassigned conversations

List one page of an inbox's unassigned conversations, newest first. Pass next_start as the start index to get the next page.

**Inputs**

- Workspace (`workspace_id`, text, required): The TeamInbox organisation to work in.
- Team (`team`, text, required): The shared team to work in.
- Inbox (`inbox_id`, text, required): The team's inbox.
- Page size (`limit`, number): Optional. How many to return, 1 to 100. Default 20. From 1 to 100.
- Start index (`start_index`, number): Optional. The next_start of the previous page. At least 0.

**Outputs**

- `count` (number): How many conversations were returned.
- `has_more` (true/false): Whether another page is available.
- `next_start` (number): The start index of the next page, when there is one.
- `threads` (list): The conversations.
- `total_count` (number): The count TeamInbox reports for the inbox view.

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "next_start": null,
  "threads": [
    {
      "archived": false,
      "createdTime": "1727700000000",
      "entityId": "1727700000000100001",
      "following": false,
      "from": "customer@example.com",
      "inboxId": "4000000067890",
      "read": false,
      "subject": "Order 1042 has not arrived",
      "summary": "Hi, my order has not arrived yet...",
      "teamId": "4000000012345",
      "threadCount": 1
    }
  ],
  "total_count": 1
}
```

### List workspaces

List the TeamInbox organisations you belong to, with their ids and which one is your default. Useful as a connection check.

**Inputs**: None.

**Outputs**

- `count` (number): How many workspaces were returned.
- `default_workspace_id` (text): The id of the default workspace (or the first one), for chaining.
- `workspaces` (list): The workspaces.

**Example output**

```json
{
  "count": 1,
  "default_workspace_id": "60012345678",
  "workspaces": [
    {
      "is_default": true,
      "name": "Acme Support",
      "soid": "60012345678"
    }
  ]
}
```

### Move a conversation to trash

Move a conversation to trash, marking it for deletion.

**Inputs**

- Workspace (`workspace_id`, text, required): The TeamInbox organisation to work in.
- Team (`team`, text, required): The shared team to work in.
- Inbox (`inbox_id`, text, required): The team's inbox.
- Conversation ID (`thread_id`, text, required): The conversation's id: the thread_id from 'Send an email', or the entityId from 'List unassigned conversations' or 'Search conversations'.
- Channel (`channel`, text): Optional. The conversation's channel; Mail unless it came from chat. One of: `1` (Mail), `2` (Telegram), `3` (WhatsApp), `4` (Discussion), `5` (Instagram), `6` (Facebook). Default: `1`.

**Outputs**: The conversation that was changed.

- `archived` (true/false): True after archiving.
- `assignee_zuid` (text): Who the conversation was assigned to.
- `following` (true/false): True after following.
- `status_code` (number): TeamInbox's status code.
- `status_description` (text): TeamInbox's status description.
- `thread_id` (text): The conversation's id.
- `trashed` (true/false): True after moving to trash.

**Example output**

```json
{
  "status_code": 200,
  "status_description": "success",
  "thread_id": "1727700000000100001",
  "trashed": true
}
```

### Search conversations

Search a workspace's conversations by text or subject, optionally only in some inboxes and including trash or spam.

**Inputs**

- Workspace (`workspace_id`, text, required): The TeamInbox organisation to work in.
- Contains (`contains`, text): Text to look for. Fill in this or Subject.
- Subject (`subject`, text): Text the subject contains. Fill in this or Contains.
- Inbox IDs (`inbox_ids`, list): Optional. Only search these inboxes.
- Include trash (`include_trash`, true/false): Optional. Also search conversations in trash. Default: `false`.
- Include spam (`include_spam`, true/false): Optional. Also search conversations marked spam. Default: `false`.

**Outputs**

- `count` (number): How many conversations were returned.
- `threads` (list): The conversations.

**Example output**

```json
{
  "count": 1,
  "threads": [
    {
      "archived": false,
      "createdTime": "1727700000000",
      "entityId": "1727700000000100001",
      "following": false,
      "from": "customer@example.com",
      "inboxId": "4000000067890",
      "read": false,
      "subject": "Order 1042 has not arrived",
      "summary": "Hi, my order has not arrived yet...",
      "teamId": "4000000012345",
      "threadCount": 1
    }
  ]
}
```

### Send an email

Send a new email from a team inbox. It starts a new conversation whose id later steps can follow, assign, archive or trash.

**Inputs**

- Workspace (`workspace_id`, text, required): The TeamInbox organisation to work in.
- Team (`team`, text, required): The shared team to work in.
- Inbox (`inbox_id`, text, required): The team's inbox.
- From (`from_address`, text, required): An enabled, verified address the inbox can send from.
- To (`to`, list, required): One or more recipient email addresses.
- Subject (`subject`, text, required): The subject line.
- Body (`body`, text): Optional. The message; HTML is allowed.
- Cc (`cc`, list): Optional. Email addresses to copy in.
- Bcc (`bcc`, list): Optional. Email addresses to blind-copy in.
- Archive after sending (`archive`, true/false): Optional. Send and archive the conversation at once. Default: `false`.

**Outputs**: The conversation the email started.

- `archived` (true/false): Whether the conversation was archived on sending.
- `assignee` (text): Who the conversation is assigned to, if anyone.
- `channelId` (text): The channel's id.
- `createdTime` (text): When it was sent (milliseconds since 1970).
- `entityId` (text): The conversation's id, as TeamInbox names it.
- `following` (true/false): Whether you follow the conversation.
- `from` (text): The sender.
- `inboxId` (text): The inbox's id.
- `messageId` (text): The message's id, as TeamInbox names it.
- `message_id` (text): The sent message's id.
- `tdetails` (object): Message details, as TeamInbox sends them.
- `teamId` (text): The team's id.
- `thread_id` (text): The new conversation's id (entityId), for later steps.
- `type` (text): The conversation type.
- `updatedTime` (text): When it last changed (milliseconds since 1970).

**Example output**

```json
{
  "archived": false,
  "entityId": "1727700000000100001",
  "following": true,
  "from": "support@acme.example",
  "inboxId": "4000000067890",
  "messageId": "1727700000000200001",
  "message_id": "1727700000000200001",
  "tdetails": {
    "FROM": "support@acme.example",
    "SUBJECT": "Your order has shipped",
    "TO": "customer@example.com"
  },
  "teamId": "4000000012345",
  "thread_id": "1727700000000100001"
}
```
