# Sender

> Manage your Sender email marketing audience: add, update and delete subscribers, organise them in groups, create custom fields, draft campaigns and start people on automation workflows.

App · 20 actions. Web page: https://docs.lodol.com/docs/integrations/sender

## Actions

### Add subscribers to group

Add existing subscribers to a group by email. Emails Sender does not know are listed in 'not_found'.

**Inputs**

- Group (`group_id`, text, required): The group.
- Subscriber emails (`emails`, list, required): The subscribers' email addresses. Type several separated by commas, or pass a list from an earlier step.
- Start automations (`trigger_automation`, true/false): Let workflows that start on this change run. Turn off to make the change quietly. Default: `true`.

**Outputs**

- `added` (list): Who was added
- `group_id` (text): The group
- `not_found` (list): Emails that are not subscribers
- `warnings` (list): Anything to know

**Example output**

```json
{
  "added": [
    "jo@example.com"
  ],
  "group_id": "eZVD4w",
  "not_found": [],
  "warnings": []
}
```

### Create campaign

Create a draft email campaign from HTML or plain text for groups or segments. It is not scheduled or sent; review and send it from Sender.

**Inputs**

- Subject (`subject`, text, required): The email's subject line.
- From name (`sender_name`, text, required): The sender name subscribers see.
- Reply-to email (`reply_to`, text, required): The address shown as the sender. It must be on a domain you have verified in Sender.
- Content type (`content_type`, text, required): Whether the content is HTML or plain text. One of: `html`, `text` (Plain text). Default: `html`.
- Content (`content`, text): The email body. Personalise with {{ firstname }} and {{ email }}; older {$firstname} tags are converted.
- Add unsubscribe link (`add_unsubscribe_link`, true/false): Add an unsubscribe link at the end when the content has none ({{ unsubscribe_link }}). Default: `true`.
- Campaign name (`title`, text): A name for the campaign in Sender's reports.
- Preview text (`preheader`, text): The text inboxes show after the subject.
- Groups (`groups`, list): Groups the campaign will go to.
- Segments (`segments`, list): Segments the campaign will go to.
- Google Analytics tracking (`google_analytics`, true/false): Add Google Analytics tracking to the campaign's links.

**Outputs**

- `campaign` (object): The new draft campaign

**Example output**

```json
{
  "campaign": {
    "campaign_groups": [
      "eZVD4w"
    ],
    "created": "2026-10-10 10:00:00",
    "from": "Acme",
    "html": {
      "has_preview": false,
      "id": "x1",
      "thumbnail_url": null
    },
    "id": "aMeL1Y",
    "last_action": "api",
    "modified": "2026-10-10 10:00:00",
    "preheader": "Three things",
    "reply_to": "hello@acme.example",
    "segments": [],
    "status": "DRAFT",
    "subject": "What's new in October",
    "title": "October newsletter"
  }
}
```

### Create field

Create a custom subscriber field of text, number or date.

**Inputs**

- Field name (`title`, text, required): The new field's name, as shown in Sender.
- Type (`field_type`, text, required): What the field holds. One of: `text`, `number`, `datetime` (Date and time). Default: `text`.

**Outputs**

- `field` (object): The new field

**Example output**

```json
{
  "field": {
    "created": "2026-09-01 10:00:00",
    "default": false,
    "field_name": "{$company}",
    "id": "o2lk68Y",
    "modified": "2026-09-01 10:00:00",
    "position": 5,
    "show": true,
    "title": "Company",
    "type": "text"
  }
}
```

### Create group

Create a group to collect subscribers in.

**Inputs**

- Name (`title`, text, required): The group's name.

**Outputs**

- `group` (object): The new group

**Example output**

```json
{
  "group": {
    "active_subscribers": 118,
    "bounced_count": 0,
    "created": "2026-09-01 10:00:00",
    "id": "eZVD4w",
    "modified": "2026-10-01 10:00:00",
    "recipient_count": 120,
    "title": "Newsletter",
    "unsubscribed_count": 2
  }
}
```

### Create subscriber

Add a subscriber with their name, phone, groups and custom fields. Workflows that start when someone subscribes run unless 'Start automations' is off.

**Inputs**

- Email (`email`, text, required): The subscriber's email address.
- First name (`first_name`, text): The subscriber's first name.
- Last name (`last_name`, text): The subscriber's last name.
- Phone (`phone`, text): Their phone number with the country code, like +37060000000 or 0037060000000.
- Groups (`groups`, list): Groups to put the subscriber in.
- Custom fields (`fields`, object): Values for custom fields, keyed by the field name 'List fields' shows in field_name (company or {$company} both work).
- Start automations (`trigger_automation`, true/false): Let workflows that start on this change run. Turn off to make the change quietly. Default: `true`.

**Outputs**

- `subscriber` (object): The subscriber

**Example output**

```json
{
  "subscriber": {
    "columns": [],
    "created": "2026-10-01 10:00:00",
    "email": "jo@example.com",
    "firstname": "Jo",
    "id": "dBZ6Zl",
    "lastname": "Rivera",
    "location": null,
    "phone": null,
    "status": {
      "email": "active",
      "temail": "active"
    },
    "subscriber_tags": [
      {
        "id": "eZVD4w",
        "title": "Newsletter"
      }
    ]
  }
}
```

### Delete group

Delete a group. Its subscribers are kept.

**Inputs**

- Group (`group_id`, text, required): The group.

**Outputs**

- `deleted` (true/false): Always true once deleted
- `group_id` (text): The group deleted

**Example output**

```json
{
  "deleted": true,
  "group_id": "eZVD4w"
}
```

### Delete subscribers

Delete subscribers by email. Sender removes them shortly after the step finishes.

**Inputs**

- Subscriber emails (`emails`, list, required): The subscribers' email addresses. Type several separated by commas, or pass a list from an earlier step.

**Outputs**

- `delete_instance` (text): Sender's reference for the deletion
- `deleted` (true/false): Always true once accepted
- `emails` (list): The email addresses
- `message` (text): Sender's message

**Example output**

```json
{
  "delete_instance": "instance_reference_id",
  "deleted": true,
  "emails": [
    "jo@example.com"
  ],
  "message": "Selected subscribers will be deleted shortly"
}
```

### Get campaign

Get one campaign with its content, recipients and results.

**Inputs**

- Campaign ID (`campaign_id`, text, required): The campaign's Sender id, from 'List campaigns' or an earlier step.

**Outputs**

- `campaign` (object): The campaign

**Example output**

```json
{
  "campaign": {
    "campaign_groups": [
      "eZVD4w"
    ],
    "created": "2026-10-10 10:00:00",
    "from": "Acme",
    "html": {
      "has_preview": false,
      "id": "x1",
      "thumbnail_url": null
    },
    "id": "aMeL1Y",
    "last_action": "api",
    "modified": "2026-10-10 10:00:00",
    "preheader": "Three things",
    "reply_to": "hello@acme.example",
    "segments": [],
    "status": "DRAFT",
    "subject": "What's new in October",
    "title": "October newsletter"
  }
}
```

### Get subscriber

Look up a subscriber by email, phone or id, with their statuses, groups and field values.

**Inputs**

- Subscriber (`subscriber`, text, required): The subscriber's email address, phone number with country code, or Sender subscriber id.

**Outputs**

- `subscriber` (object): The subscriber

**Example output**

```json
{
  "subscriber": {
    "columns": [],
    "created": "2026-10-01 10:00:00",
    "email": "jo@example.com",
    "firstname": "Jo",
    "id": "dBZ6Zl",
    "lastname": "Rivera",
    "location": null,
    "phone": null,
    "status": {
      "email": "active",
      "temail": "active"
    },
    "subscriber_tags": [
      {
        "id": "eZVD4w",
        "title": "Newsletter"
      }
    ]
  }
}
```

### List campaigns

List email campaigns with their status, subject, sender and results. The HTML body is left out; 'Get campaign' has it.

**Inputs**

- Status (`status`, text): Only campaigns with this status. Leave empty for all. One of: `DRAFT`, `SCHEDULED`, `SENDING`, `SENT`.
- Page (`page`, number): Which page of results to return, starting at 1. At least 1. Default: `1`.
- Results per page (`limit`, number): How many to return per page, 1-100. Defaults to 50. From 1 to 100. Default: `50`.

**Outputs**

- `campaigns` (list): The campaigns
- `count` (number): How many on this page
- `has_more` (true/false): Whether more pages follow
- `last_page` (number): The number of the last page
- `page` (number): This page's number
- `total` (number): How many in all

**Example output**

```json
{
  "campaigns": [
    {
      "campaign_groups": [
        "eZVD4w"
      ],
      "created": "2026-10-10 10:00:00",
      "from": "Acme",
      "html": {
        "has_preview": false,
        "id": "x1",
        "thumbnail_url": null
      },
      "id": "aMeL1Y",
      "last_action": "api",
      "modified": "2026-10-10 10:00:00",
      "preheader": "Three things",
      "reply_to": "hello@acme.example",
      "segments": [],
      "status": "DRAFT",
      "subject": "What's new in October",
      "title": "October newsletter"
    }
  ],
  "count": 1,
  "has_more": false,
  "last_page": 1,
  "page": 1,
  "total": 1
}
```

### List fields

List the subscriber fields, built-in and custom, with the field_name to use in a subscriber's custom fields.

**Inputs**

- Page (`page`, number): Which page of results to return, starting at 1. At least 1. Default: `1`.
- Results per page (`limit`, number): How many to return per page, 1-100. Defaults to 50. From 1 to 100. Default: `50`.

**Outputs**

- `count` (number): How many on this page
- `fields` (list): The fields
- `has_more` (true/false): Whether more pages follow
- `last_page` (number): The number of the last page
- `page` (number): This page's number
- `total` (number): How many in all

**Example output**

```json
{
  "count": 1,
  "fields": [
    {
      "created": "2026-09-01 10:00:00",
      "default": false,
      "field_name": "{$company}",
      "id": "o2lk68Y",
      "modified": "2026-09-01 10:00:00",
      "position": 5,
      "show": true,
      "title": "Company",
      "type": "text"
    }
  ],
  "has_more": false,
  "last_page": 1,
  "page": 1,
  "total": 1
}
```

### List group subscribers

List the subscribers in one group, a page at a time.

**Inputs**

- Group (`group_id`, text, required): The group.
- Page (`page`, number): Which page of results to return, starting at 1. At least 1. Default: `1`.
- Results per page (`limit`, number): How many to return per page, 1-100. Defaults to 50. From 1 to 100. Default: `50`.

**Outputs**

- `count` (number): How many on this page
- `group_id` (text): The group
- `has_more` (true/false): Whether more pages follow
- `last_page` (number): The number of the last page
- `page` (number): This page's number
- `subscribers` (list): The subscribers
- `total` (number): How many in all

**Example output**

```json
{
  "count": 1,
  "group_id": "eZVD4w",
  "has_more": false,
  "last_page": 1,
  "page": 1,
  "subscribers": [
    {
      "columns": [],
      "created": "2026-10-01 10:00:00",
      "email": "jo@example.com",
      "firstname": "Jo",
      "id": "dBZ6Zl",
      "lastname": "Rivera",
      "location": null,
      "phone": null,
      "status": {
        "email": "active",
        "temail": "active"
      },
      "subscriber_tags": [
        {
          "id": "eZVD4w",
          "title": "Newsletter"
        }
      ]
    }
  ],
  "total": 1
}
```

### List groups

List the account's groups with their subscriber counts.

**Inputs**

- Page (`page`, number): Which page of results to return, starting at 1. At least 1. Default: `1`.
- Results per page (`limit`, number): How many to return per page, 1-100. Defaults to 50. From 1 to 100. Default: `50`.

**Outputs**

- `count` (number): How many on this page
- `groups` (list): The groups
- `has_more` (true/false): Whether more pages follow
- `last_page` (number): The number of the last page
- `page` (number): This page's number
- `total` (number): How many in all

**Example output**

```json
{
  "count": 1,
  "groups": [
    {
      "active_subscribers": 118,
      "bounced_count": 0,
      "created": "2026-09-01 10:00:00",
      "id": "eZVD4w",
      "modified": "2026-10-01 10:00:00",
      "recipient_count": 120,
      "title": "Newsletter",
      "unsubscribed_count": 2
    }
  ],
  "has_more": false,
  "last_page": 1,
  "page": 1,
  "total": 1
}
```

### List segments

List the account's segments with their subscriber counts.

**Inputs**

- Page (`page`, number): Which page of results to return, starting at 1. At least 1. Default: `1`.
- Results per page (`limit`, number): How many to return per page, 1-100. Defaults to 50. From 1 to 100. Default: `50`.

**Outputs**

- `count` (number): How many on this page
- `has_more` (true/false): Whether more pages follow
- `last_page` (number): The number of the last page
- `page` (number): This page's number
- `segments` (list): The segments
- `total` (number): How many in all

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "last_page": 1,
  "page": 1,
  "segments": [
    {
      "active_subscribers": 78,
      "created": "2026-09-01 10:00:00",
      "id": "b2vAR1",
      "modified": "2026-09-01 10:00:00",
      "name": "Opened last 30 days",
      "subscribers": 80
    }
  ],
  "total": 1
}
```

### List subscribers

List the account's subscribers, newest first, a page at a time.

**Inputs**

- Page (`page`, number): Which page of results to return, starting at 1. At least 1. Default: `1`.
- Results per page (`limit`, number): How many to return per page, 1-100. Defaults to 50. From 1 to 100. Default: `50`.

**Outputs**

- `count` (number): How many on this page
- `has_more` (true/false): Whether more pages follow
- `last_page` (number): The number of the last page
- `page` (number): This page's number
- `subscribers` (list): The subscribers
- `total` (number): How many in all

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "last_page": 1,
  "page": 1,
  "subscribers": [
    {
      "columns": [],
      "created": "2026-10-01 10:00:00",
      "email": "jo@example.com",
      "firstname": "Jo",
      "id": "dBZ6Zl",
      "lastname": "Rivera",
      "location": null,
      "phone": null,
      "status": {
        "email": "active",
        "temail": "active"
      },
      "subscriber_tags": [
        {
          "id": "eZVD4w",
          "title": "Newsletter"
        }
      ]
    }
  ],
  "total": 1
}
```

### List workflows

List the account's automation workflows with their status.

**Inputs**

- Status (`status`, text): Only workflows with this status. Leave empty for all. One of: `DRAFT`, `ACTIVE`, `PAUSED`.
- Name starts with (`title`, text): Only workflows whose name starts with this.
- Page (`page`, number): Which page of results to return, starting at 1. At least 1. Default: `1`.
- Results per page (`limit`, number): How many to return per page, 1-100. Defaults to 50. From 1 to 100. Default: `50`.

**Outputs**

- `count` (number): How many on this page
- `has_more` (true/false): Whether more pages follow
- `last_page` (number): The number of the last page
- `page` (number): This page's number
- `total` (number): How many in all
- `workflows` (list): The workflows

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "last_page": 1,
  "page": 1,
  "total": 1,
  "workflows": [
    {
      "created": "2026-08-01 10:00:00",
      "emails_sent": 340,
      "id": "wRk82p",
      "modified": "2026-09-01 10:00:00",
      "status": "ACTIVE",
      "title": "Welcome series",
      "type": "custom"
    }
  ]
}
```

### Remove subscribers from group

Take subscribers out of a group by email. They stay subscribers.

**Inputs**

- Group (`group_id`, text, required): The group.
- Subscriber emails (`emails`, list, required): The subscribers' email addresses. Type several separated by commas, or pass a list from an earlier step.
- Start automations (`trigger_automation`, true/false): Let workflows that start on this change run. Turn off to make the change quietly. Default: `true`.

**Outputs**

- `emails` (list): The email addresses
- `group_id` (text): The group
- `removed` (true/false): Always true once removed

**Example output**

```json
{
  "emails": [
    "jo@example.com"
  ],
  "group_id": "eZVD4w",
  "removed": true
}
```

### Rename group

Give a group a new name.

**Inputs**

- Group (`group_id`, text, required): The group.
- New name (`title`, text, required): The group's new name.

**Outputs**

- `group_id` (text): The group
- `renamed` (true/false): Always true once renamed
- `title` (text): Its new name

**Example output**

```json
{
  "group_id": "eZVD4w",
  "renamed": true,
  "title": "Monthly newsletter"
}
```

### Start workflow

Start someone on an active automation workflow by email. Sender refuses a draft or paused workflow.

**Inputs**

- Workflow (`sender_workflow_id`, text, required): The workflow to start them on. It must be active.
- Email (`email`, text, required): The subscriber's email address.

**Outputs**

- `email` (text): Who was started on it
- `message` (text): Sender's message
- `started` (true/false): Always true once started
- `workflow_id` (text): The workflow

**Example output**

```json
{
  "email": "jo@example.com",
  "message": "jo@example.com added to workflow.",
  "started": true,
  "workflow_id": "wRk82p"
}
```

### Update subscriber

Change a subscriber's name, phone, groups, custom fields or email statuses. Only the fields given change; the result is the subscriber as Sender has them afterwards.

**Inputs**

- Subscriber (`subscriber`, text, required): The subscriber's email address, phone number with country code, or Sender subscriber id.
- First name (`first_name`, text): The subscriber's first name.
- Last name (`last_name`, text): The subscriber's last name.
- Phone (`phone`, text): Their phone number with the country code, like +37060000000 or 0037060000000.
- Groups (`groups`, list): Groups to assign the subscriber to. To add or remove one group without touching the others, use Add subscribers to group or Remove subscribers from group instead.
- Custom fields (`fields`, object): Values for custom fields, keyed by the field name 'List fields' shows in field_name (company or {$company} both work).
- Email status (`subscriber_status`, text): Set whether the subscriber receives campaigns. One of: `ACTIVE`, `UNSUBSCRIBED`, `BOUNCED`, `SPAM_REPORTED` (Reported spam).
- Transactional email status (`transactional_email_status`, text): Set whether the subscriber receives transactional email. One of: `ACTIVE`, `UNSUBSCRIBED`, `BOUNCED`, `SPAM_REPORTED` (Reported spam).
- Start automations (`trigger_automation`, true/false): Let workflows that start on this change run. Turn off to make the change quietly. Default: `true`.

**Outputs**

- `subscriber` (object): The subscriber now
- `updated_fields` (list): The fields sent to Sender

**Example output**

```json
{
  "subscriber": {
    "columns": [],
    "created": "2026-10-01 10:00:00",
    "email": "jo@example.com",
    "firstname": "Jo",
    "id": "dBZ6Zl",
    "lastname": "Rivera",
    "location": null,
    "phone": null,
    "status": {
      "email": "active",
      "temail": "active"
    },
    "subscriber_tags": [
      {
        "id": "eZVD4w",
        "title": "Newsletter"
      }
    ]
  },
  "updated_fields": [
    "lastname"
  ]
}
```
