home / skills / composiohq / awesome-claude-skills / omnisend-automation

omnisend-automation skill

/omnisend-automation

This skill automates Omnisend marketing workflows by creating, updating, listing and batching contacts with seamless Composio MCP integration.

npx playbooks add skill composiohq/awesome-claude-skills --skill omnisend-automation

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
5.1 KB
---
name: Omnisend Automation
description: "Automate ecommerce marketing workflows including contact management, bulk operations, and subscriber segmentation through Omnisend via Composio"
requires:
  mcp:
    - rube
---

# Omnisend Automation

Automate ecommerce marketing operations -- create and update contacts, manage subscriber lists with cursor pagination, run bulk batch operations, and segment audiences -- all orchestrated through the Composio MCP integration.

**Toolkit docs:** [composio.dev/toolkits/omnisend](https://composio.dev/toolkits/omnisend)

---

## Setup

1. Connect your Omnisend account through the Composio MCP server at `https://rube.app/mcp`
2. The agent will prompt you with an authentication link if no active connection exists
3. Once connected, all `OMNISEND_*` tools become available for execution

---

## Core Workflows

### 1. Create or Update a Contact
Upsert a contact by email identifier with subscription status, profile fields, and optional welcome message.

**Tool:** `OMNISEND_CREATE_OR_UPDATE_CONTACT`

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `identifiers` | array | Yes | At least one identifier object with `id` (email), `type` (`email`), optional `channels.email.status` (`subscribed`, `nonSubscribed`, `unsubscribed`), and `sendWelcomeMessage` (boolean) |
| `firstName` | string | No | Contact's first name |
| `lastName` | string | No | Contact's last name |
| `gender` | string | No | `m` or `f` |
| `birthdate` | string | No | Format: `YYYY-MM-DD` |
| `country` | string | No | Full country name |
| `countryCode` | string | No | ISO 3166-1 alpha-2 code (e.g., `US`) |
| `city` | string | No | City name |
| `address` | string | No | Street address |
| `postalCode` | string | No | ZIP/postal code |

---

### 2. List Contacts with Pagination
Retrieve contacts in batches with optional filters for email, phone, status, segment, or tag.

**Tool:** `OMNISEND_LIST_CONTACTS`

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Results per page (default: 100, max: 250) |
| `after` | string | No | Cursor for next page (base64-encoded ContactID) |
| `before` | string | No | Cursor for previous page |
| `email` | string | No | Filter by exact email address |
| `phone` | string | No | Filter by full phone number with country code |
| `status` | string | No | Filter by: `subscribed`, `nonSubscribed`, `unsubscribed` |
| `segmentID` | integer | No | Filter by segment ID |
| `tag` | string | No | Filter by tag (e.g., `VIP`) |

---

### 3. Get Contact Details
Retrieve the full profile for a single contact when you already have their contact ID.

**Tool:** `OMNISEND_GET_CONTACT`

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contactId` | string | Yes | Unique contact identifier (e.g., `60e7412b1234567890abcdef`) |

---

### 4. Update an Existing Contact
Patch specific fields on a contact by ID without overwriting the entire record.

**Tool:** `OMNISEND_UPDATE_CONTACT`

Requires the `contactId` and the fields to update. Retrieve the contact ID first via `OMNISEND_LIST_CONTACTS` or `OMNISEND_GET_CONTACT`.

---

### 5. Bulk Batch Operations
Process many records asynchronously in a single call -- contacts, products, orders, events, or categories.

**Tool:** `OMNISEND_CREATE_BATCH`

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `method` | string | Yes | `POST` or `PUT` |
| `endpoint` | string | Yes | Target: `contacts`, `orders`, `products`, `events`, `categories` |
| `items` | array | Yes | Array of payload objects for each operation |
| `eventID` | string | Conditional | Required when endpoint is `events` |

Use batch operations to avoid rate limits when processing large data sets.

---

## Known Pitfalls

| Pitfall | Details |
|---------|---------|
| **Identifier required** | `OMNISEND_CREATE_OR_UPDATE_CONTACT` requires at least one identifier in the `identifiers` array -- only `email` type is supported |
| **Cursor-based pagination** | `OMNISEND_LIST_CONTACTS` uses base64-encoded `after`/`before` cursors, not page numbers -- follow cursors to avoid incomplete data |
| **Contact ID resolution** | `OMNISEND_UPDATE_CONTACT` requires a `contactId` -- always resolve it first via list or get operations |
| **Batch method constraints** | `OMNISEND_CREATE_BATCH` only accepts `POST` or `PUT` methods -- no `DELETE` or `PATCH` |
| **Event ID dependency** | When batching events, the `eventID` parameter is mandatory -- omitting it causes the batch to fail |

---

## Quick Reference

| Tool Slug | Purpose |
|-----------|---------|
| `OMNISEND_CREATE_OR_UPDATE_CONTACT` | Create or upsert a contact by email |
| `OMNISEND_LIST_CONTACTS` | List contacts with filtering and cursor pagination |
| `OMNISEND_GET_CONTACT` | Get full profile for a single contact by ID |
| `OMNISEND_UPDATE_CONTACT` | Patch specific fields on an existing contact |
| `OMNISEND_CREATE_BATCH` | Bulk async operations for contacts, products, orders, events |

---

*Powered by [Composio](https://composio.dev)*

Overview

This skill automates ecommerce marketing workflows in Omnisend via the Composio MCP integration. It handles contact upserts, paginated contact listing, detailed contact retrieval, targeted updates, and large asynchronous batch operations to streamline subscriber and campaign management. Setup is simple: connect your Omnisend account through the Composio MCP server and the tools become available.

How this skill works

The skill exposes a set of tools that call Omnisend endpoints through Composio: create or update contacts by email identifiers, list contacts with cursor-based pagination and filters, fetch a contact by ID, patch contact fields, and submit bulk batches for contacts, orders, products, events, or categories. It manages authentication via Composio and returns structured results to be used in agent workflows or automated pipelines.

When to use it

  • Add or update subscribers with profile fields and subscription status.
  • Export or iterate over large contact lists using cursor-based pagination.
  • Fetch a single contact profile when you have the contactId.
  • Patch specific fields on contacts without overwriting the whole record.
  • Process large datasets (contacts, orders, products, events) with asynchronous batch calls to avoid rate limits.

Best practices

  • Always include at least one identifier (email) when creating or upserting contacts.
  • Use the provided base64 ‘after’/‘before’ cursors for pagination instead of page numbers to ensure complete traversal.
  • Resolve contactId via list or get operations before calling update endpoints.
  • Use batch operations (POST or PUT) for large imports to reduce rate limit issues.
  • When batching events, supply the required eventID to prevent failures.

Example use cases

  • Onboard new customers: upsert contacts, set subscription status, and send an optional welcome message.
  • Segment cleanup: list contacts by tag or status and patch fields to normalize data or remove duplicates.
  • Order-driven flows: batch import orders and link them to contacts for lifecycle campaigns.
  • Targeted updates: fetch a contact by ID then patch loyalty status or custom profile fields.
  • Large migrations: export from another system and use CREATE_BATCH to import contacts and products asynchronously.

FAQ

How do I authenticate the skill?

Connect your Omnisend account through the Composio MCP server (https://rube.app/mcp). The agent will prompt an authentication link if no active connection exists.

What pagination model does listing use?

Listing uses cursor-based pagination with base64-encoded ‘after’ and ‘before’ cursors. Follow the cursors returned by the API to traverse results reliably.