SKILL.md
---
name: sales-omnisend
description: "Omnisend platform help — email campaigns, SMS marketing, web push notifications, marketing automation workflows, popups/forms, segmentation, product recommendations, reporting, Shopify/WooCommerce/BigCommerce integrations, API. Use when Omnisend emails aren't reaching inboxes, automation workflows aren't triggering, SMS campaigns aren't delivering, popups aren't converting, ecommerce integration isn't syncing orders, or Omnisend API calls are failing. Do NOT use for cross-platform email marketing strategy (use /sales-email-marketing), cross-platform SMS strategy (use /sales-sms-marketing), cross-platform deliverability (use /sales-deliverability), cross-platform push strategy (use /sales-push-notification), or connecting tools (use /sales-integration)."
argument-hint: "[describe what you need help with in Omnisend]"
license: MIT
version: 1.0.0
tags: [sales, email-marketing, ecommerce, sms, platform]
github: "https://github.com/omnisend"
---
# Omnisend Platform Help
Help the user with Omnisend platform questions — from email/SMS campaign setup and automation workflows through popups, segmentation, reporting, ecommerce integrations, and API.
## Step 1 — Gather context
If `references/learnings.md` exists, read it first for accumulated knowledge.
Ask the user:
1. **What area of Omnisend do you need help with?**
- A) Email campaigns — creating, designing, sending broadcasts
- B) SMS campaigns — setting up SMS marketing
- C) Automation workflows — welcome, cart abandonment, browse abandonment, win-back, custom
- D) Popups & forms — signup forms, exit-intent, wheel of fortune
- E) Segmentation — creating segments, targeting by behavior/purchase history
- F) Web push notifications — browser push setup and campaigns
- G) Reporting & analytics — campaign performance, revenue attribution
- H) Integrations — Shopify, WooCommerce, BigCommerce, Zapier, API
- I) Deliverability — domain authentication, warmup, sender reputation
- J) Admin — billing, plan features, account settings
- K) Something else — describe it
2. **What's your ecommerce platform?**
- A) Shopify
- B) WooCommerce
- C) BigCommerce
- D) Wix
- E) Custom / other
- F) Not using ecommerce
3. **What are you trying to accomplish?** (describe your specific goal or question)
**If the user's request already provides most of this context, skip directly to the relevant step.** Lead with your best-effort answer using reasonable assumptions (stated explicitly), then ask only the most critical 1-2 clarifying questions at the end — don't gate your response behind gathering complete context.
## Step 2 — Route or answer directly
If the request maps to a specialized skill, route:
- Email marketing strategy (platform-agnostic) → `/sales-email-marketing`
- SMS marketing strategy (platform-agnostic) → `/sales-sms-marketing`
- Cross-platform deliverability → `/sales-deliverability`
- Push notification strategy → `/sales-push-notification`
- Tool integration architecture → `/sales-integration`
- List/audience growth strategy → `/sales-audience-growth`
Otherwise, answer directly from platform knowledge using the reference below.
## Step 3 — Omnisend platform reference
**Read `references/platform-guide.md`** for detailed module documentation, pricing, integrations, and data model.
*You no longer need the platform guide details — focus on the user's specific situation.*
## Step 4 — Actionable guidance
Based on the user's specific question:
1. **Step-by-step instructions** — numbered steps with Omnisend UI navigation paths
2. **Configuration recommendations** — specific settings to change
3. **Common pitfalls** — what can go wrong and how to avoid it
4. **Verification** — how to confirm the change worked
5. **For API questions** — always include a pointer: "For the full endpoint catalog, request/response schemas, and rate limits, see `references/omnisend-api-reference.md`."
## Gotchas
*Best-effort from research — review these, especially items about plan-gated features and integration gotchas that may be outdated.*
- **Don't confuse "campaign" with "automation."** In Omnisend, a campaign is a one-time broadcast. An automation (workflow) is a trigger-based sequence. Claude often generates automation advice when the user asks about campaigns and vice versa.
- **Don't assume SMS is included on all plans.** The Free plan has only 60 SMS credits. Standard plan requires SMS credits as a paid add-on. Pro plan includes SMS credits but they're country-dependent and limited. Always check the user's plan before recommending SMS workflows.
- **Don't skip SMS consent.** Omnisend requires separate SMS opt-in consent. Email opt-in does NOT grant SMS permission. Multi-step popups (email first, then SMS) are the recommended approach.
- **Don't recommend features without checking the plan.** Campaign Booster, advanced reporting, and higher SMS allowances are plan-gated. A/B testing for automations requires Standard+.
- **Don't overlook the ecommerce platform connection.** Most Omnisend features depend on an active ecommerce integration. Product recommendations, cart abandonment, browse abandonment, and order-based segments all require product/order data syncing from Shopify/WooCommerce/BigCommerce.
- **Segment-based audience filters can silently block automations.** If a workflow uses a segment-based audience filter, there's a race condition: it can take 1-2 minutes for a contact to be added to a segment, but the automation trigger fires immediately. The contact isn't in the segment yet → exits the workflow. Use contact property filters instead of segment filters for time-sensitive triggers, or add a short delay before the filter check.
- **Template customization has real limits.** G2's top complaint about Omnisend is limited design control. If the user needs pixel-perfect layouts or highly custom visual elements, set expectations early — Omnisend trades deep design flexibility for ease of use. For advanced designs, suggest coding custom HTML templates or using a dedicated email design tool and importing.
- **Reporting is shallower than Klaviyo.** Users migrating from Klaviyo frequently miss the depth of analytics — custom reporting, data visualization, cohort analysis. If the user needs advanced reporting, recommend exporting data to Google Sheets/Looker or using the API to build custom dashboards.
- **Self-improving**: If you discover something not covered here, append it to `references/learnings.md` with today's date.
## Step 5 — Related skills
- `/sales-email-marketing` — Cross-platform email marketing strategy (broadcasts, nurture, automation, segmentation)
- `/sales-sms-marketing` — Cross-platform SMS marketing strategy (opt-in, compliance, campaign types)
- `/sales-deliverability` — Cross-platform email deliverability — SPF/DKIM/DMARC, warmup, inbox placement
- `/sales-push-notification` — Cross-platform push notification strategy (opt-in, timing, frequency)
- `/sales-audience-growth` — Growing your email/SMS list (lead magnets, popups, cross-promotion)
- `/sales-integration` — Connect Omnisend to other tools via webhooks, Zapier, or API
- `/sales-klaviyo` — Klaviyo platform help (if using Klaviyo instead of Omnisend)
- `/sales-mailchimp` — Mailchimp platform help (if using Mailchimp instead of Omnisend)
- `/sales-do` — Not sure which skill to use? The router matches any sales objective to the right skill. Install: `npx skills add sales-skills/sales --skill sales-do`
## Examples
### Example 1: Cart abandonment automation
**User says**: "How do I set up abandoned cart emails in Omnisend?"
**Skill does**:
1. Confirms ecommerce platform is connected (Shopify/WooCommerce/BigCommerce required)
2. Walks through enabling the pre-built Abandoned Cart workflow: Automation > Pre-built Workflows > Abandoned Cart
3. Recommends 3-step sequence: email at 1 hour (reminder + product image), email at 24 hours (social proof), SMS at 48 hours (urgency + discount)
4. Explains exit conditions (auto-stop on purchase) and split testing options
**Result**: User has abandoned cart automation active with multi-channel sequence
### Example 2: Setting up SMS marketing
**User says**: "I want to start sending SMS campaigns in Omnisend. I'm on the Standard plan with Shopify."
**Skill does**:
1. Explains SMS credit add-on requirement for Standard plan
2. Walks through SMS opt-in setup: create a multi-step popup (email → SMS consent)
3. Configures SMS compliance settings (quiet hours, STOP keyword handling)
4. Shows how to add SMS steps to existing automation workflows
5. Warns about character limits and per-country credit costs
**Result**: User has SMS opt-in collection, compliance configured, and SMS added to key automations
### Example 3: API product sync
**User says**: "I'm on a custom ecommerce platform and need to sync products and orders to Omnisend via API"
**Skill does**:
1. Points to `references/omnisend-api-reference.md` for full API docs
2. Explains Product and Order endpoints — POST to sync catalog, POST events for order tracking
3. Covers authentication (X-API-KEY header) and versioning (Omnisend-Version header)
4. Shows how to send custom events for cart/browse tracking without a native integration
**Result**: User has an API integration plan for product sync, order tracking, and event-based automation
## Troubleshooting
### Low open rates on campaigns
**Symptom**: Campaign open rates below 15%
**Cause**: Sending to full list without segmentation, missing domain authentication, or poor subject lines
**Solution**: Authenticate your sending domain (Settings > Sender Domains — add SPF/DKIM/DMARC). Segment by engagement — send to 90-day active contacts first. Use Campaign Booster to auto-resend to non-openers. A/B test subject lines. See `/sales-deliverability` for a full diagnosis.
### Automation not triggering
**Symptom**: Workflow is active but contacts aren't entering
**Cause**: Trigger conditions not met, ecommerce platform not connected, contacts don't match entry conditions, or segment-based filter race condition
**Solution**: Each trigger has four stages contacts must pass in sequence: Trigger & Trigger Filters → Audience Filters → Frequency → Exit Conditions. Use the **Trigger Preview Tool** to identify which stage blocked entry. Common culprits:
1. **Workflow not published** — unpublished workflows don't fire, even if events occur. Click Start Workflow.
2. **Ecommerce integration disconnected** — check Settings > Integrations is active and syncing.
3. **Segment-based audience filter timing** — if the workflow uses a segment filter, contacts may not be in the segment yet when the trigger fires (1-2 min delay). Switch to contact property filters or add a delay before the filter.
4. **Multi-channel subscription gaps** — in a workflow with email + SMS steps, contacts not subscribed to SMS will skip those steps. Check Workflow Channel Settings.
5. **Exit conditions firing early** — if the exit condition (e.g., "placed order") is met before the first message sends, the contact exits silently.
Verify by checking the Events tab on a test contact to confirm the trigger event is firing.
### Double order confirmation emails (Omnisend + Shopify)
**Symptom**: Customers receive two order confirmation emails — one from Omnisend and one from Shopify
**Cause**: Both Omnisend's transactional automation and Shopify's built-in order notification are active
**Solution**: Disable one of them. If using Omnisend's order confirmation automation (recommended — more customizable), go to Shopify Admin > Settings > Notifications > Order Confirmation and uncheck the notification. If using Shopify POS, note that POS order confirmations are separate from online order confirmations — you may need to disable both.
### Subscriber count mismatch between Omnisend and Shopify
**Symptom**: Omnisend shows more (or fewer) subscribers than Shopify's customer list
**Cause**: Omnisend and Shopify track subscriptions independently. Omnisend collects subscribers via its own popups/forms that may not sync back to Shopify's marketing consent field. Conversely, Shopify customers who opt in at checkout may not immediately appear in Omnisend if the sync is delayed.
**Solution**: Check Settings > Integrations > Shopify and verify the sync is active. For contacts collected via Omnisend forms, they'll be in Omnisend but may not have Shopify marketing consent. For an accurate count, treat Omnisend as your source of truth for email marketing subscribers.
### SMS credits running out fast
**Symptom**: SMS credits depleted faster than expected
**Cause**: Messages exceeding 160 characters (split into multiple segments), sending to international numbers (higher credit cost), or automation sending more frequently than expected
**Solution**: Keep SMS messages under 160 characters (GSM-7 encoding — avoid emojis and special characters which switch to Unicode at 70 chars). Check per-country credit costs in Settings > SMS. Review automation frequency — add rate limiting or cooldown periods between SMS steps.
references/learnings.md
# Omnisend Platform Help Learnings
Accumulated tips, gotchas, and corrections discovered during use. Claude reads this at the start of each invocation and appends new learnings as they're discovered. Once significant learnings have accumulated, use `/sales-request-skill` to share them back to the community. Shared and declined entries are marked so they won't be re-prompted.
<!-- Add entries below in format: **YYYY-MM-DD**: Learning description -->
references/omnisend-api-reference.md
### Omnisend REST API — Comprehensive Reference
**Base URL**: `https://api.omnisend.com/api/`
**Docs**: https://api-docs.omnisend.com/
**Current API version**: 2026-03-15
---
## Authentication
Two authentication methods supported:
| Method | Header | Use case |
|---|---|---|
| API Key | `X-API-KEY: your-api-key` | Direct integrations, server-to-server |
| OAuth 2.0 | `Authorization: Bearer {token}` | Third-party apps, marketplace integrations |
**API Key generation**: Store Settings → API Keys → Create API Key. Select permissions (read/write per resource).
**OAuth 2.0 flow**: Authorization Code Grant. Submit an integration form to Omnisend to receive OAuth credentials (1-3 business days). Redirect users to Omnisend's authorization endpoint, exchange code for token.
---
## Versioning
Omnisend uses **header-based versioning**. Include the version header with every request:
```
Omnisend-Version: 2026-03-15
```
Available versions: v3, v4.0, v5, 2026-03-15 (current stable). If omitted, the API defaults to the latest stable version.
---
## Request & Response Format
### Requests
- **Content-Type**: `application/json`
- **Methods**: Standard REST — GET for reads, POST for creates, PATCH/PUT for updates, DELETE for deletes
### Response Format
List endpoints return:
```json
{
"data": [...],
"paging": {
"cursors": {
"after": "opaque_cursor_string",
"before": "opaque_cursor_string"
}
}
}
```
Single-record endpoints return:
```json
{
"data": { ... }
}
```
### Error Responses
Errors follow **RFC 9457 Problem Details**:
```json
{
"type": "https://api-docs.omnisend.com/errors/validation",
"title": "Validation Error",
"status": 422,
"detail": "Email address is required",
"errors": [
{
"field": "email",
"message": "Email address is required"
}
]
}
```
---
## Pagination
**Type**: Cursor-based (opaque tokens)
| Parameter | Type | Description |
|---|---|---|
| `after` | string | Cursor from `paging.cursors.after` — fetch next page |
| `before` | string | Cursor from `paging.cursors.before` — fetch previous page |
| `limit` | integer | Results per page (default varies by endpoint) |
**How to paginate**:
1. Make the initial request without cursor params
2. If `paging.cursors.after` exists, pass it as `?after={cursor}` for the next page
3. Continue until no `after` cursor is returned
---
## Rate Limits
Rate limit details are not comprehensively documented. The API returns standard HTTP 429 responses when limits are exceeded. Implement exponential backoff on 429 responses.
*Flag: Rate limit specifics (requests per minute/second) were not found in public documentation — verify with Omnisend support for production integrations.*
---
## All API Endpoints
All paths are relative to `https://api.omnisend.com/api/`.
---
### Contacts
| Method | Endpoint | Description |
|---|---|---|
| GET | `/contacts` | List all contacts with optional filters |
| GET | `/contacts/{contactID}` | Get a single contact by ID |
| POST | `/contacts` | Create a new contact |
| PATCH | `/contacts/{contactID}` | Update a contact |
| DELETE | `/contacts/{contactID}` | Delete a contact |
| POST | `/contacts/{contactID}/tags` | Add tags to a contact |
| DELETE | `/contacts/{contactID}/tags/{tag}` | Remove a tag from a contact |
**Contact object fields**:
| Field | Type | Description |
|---|---|---|
| `contactID` | string | Unique contact identifier |
| `email` | string | Contact email address |
| `phone` | string | Contact phone number (E.164 format) |
| `firstName` | string | First name |
| `lastName` | string | Last name |
| `tags` | array | Array of tag strings |
| `status` | string | Subscription status: `subscribed`, `unsubscribed`, `nonSubscribed` |
| `smsStatus` | string | SMS subscription: `subscribed`, `unsubscribed`, `nonSubscribed` |
| `createdAt` | datetime | Creation timestamp (ISO 8601) |
| `customProperties` | object | Custom key-value pairs |
**Example — Create a contact**:
```bash
curl -X POST https://api.omnisend.com/api/contacts \
-H "X-API-KEY: your-api-key" \
-H "Omnisend-Version: 2026-03-15" \
-H "Content-Type: application/json" \
-d '{
"email": "jane@example.com",
"firstName": "Jane",
"lastName": "Doe",
"tags": ["shopify", "vip"],
"status": "subscribed"
}'
```
---
### Products
| Method | Endpoint | Description |
|---|---|---|
| GET | `/products` | List all products |
| GET | `/products/{productID}` | Get a single product |
| POST | `/products` | Create/sync a product |
| PATCH | `/products/{productID}` | Update a product |
| DELETE | `/products/{productID}` | Delete a product |
**Product object fields**:
| Field | Type | Description |
|---|---|---|
| `productID` | string | Unique product identifier (from your store) |
| `title` | string | Product name |
| `productUrl` | string | Product page URL |
| `imageUrl` | string | Product image URL |
| `price` | number | Product price |
| `currency` | string | ISO 4217 currency code |
| `status` | string | `inStock`, `outOfStock`, `discontinued` |
| `vendor` | string | Product vendor/brand |
| `variants` | array | Array of variant objects (size, color, etc.) |
---
### Product Categories
| Method | Endpoint | Description |
|---|---|---|
| GET | `/categories` | List all product categories |
| GET | `/categories/{categoryID}` | Get a single category |
| POST | `/categories` | Create a category |
| PATCH | `/categories/{categoryID}` | Update a category |
| DELETE | `/categories/{categoryID}` | Delete a category |
---
### Campaigns
| Method | Endpoint | Description |
|---|---|---|
| GET | `/campaigns` | List all campaigns |
| GET | `/campaigns/{campaignID}` | Get a single campaign with stats |
| POST | `/campaigns` | Create a new campaign |
| PATCH | `/campaigns/{campaignID}` | Update a campaign |
| POST | `/campaigns/{campaignID}/actions/send` | Send a campaign |
| POST | `/campaigns/{campaignID}/actions/cancel` | Cancel a scheduled/sending campaign |
**Campaign statuses**: `draft`, `scheduled`, `sending`, `sent`, `cancelled`
---
### Events
| Method | Endpoint | Description |
|---|---|---|
| POST | `/events` | Send a custom event for a contact |
**Event tracking** is critical for custom ecommerce platforms without native integrations. Send events for:
- Page views (product viewed, category viewed)
- Cart events (added to cart, cart updated, cart abandoned)
- Order events (placed order, order fulfilled, order cancelled)
- Custom events (any action relevant to your automations)
**Example — Track a cart event**:
```bash
curl -X POST https://api.omnisend.com/api/events \
-H "X-API-KEY: your-api-key" \
-H "Omnisend-Version: 2026-03-15" \
-H "Content-Type: application/json" \
-d '{
"email": "jane@example.com",
"eventName": "added to cart",
"properties": {
"productID": "prod_123",
"productTitle": "Blue T-Shirt",
"price": 29.99,
"currency": "USD"
}
}'
```
---
### Segments
| Method | Endpoint | Description |
|---|---|---|
| GET | `/segments` | List all segments |
| GET | `/segments/{segmentID}` | Get a segment with contact count |
| GET | `/segments/{segmentID}/contacts` | List contacts in a segment |
*Note: Segments are created and managed via the Omnisend UI. The API provides read access for syncing segment data to external systems.*
---
### Brands
| Method | Endpoint | Description |
|---|---|---|
| GET | `/brands` | List connected brands/stores |
| GET | `/brands/{brandID}` | Get brand details |
---
### Batches
| Method | Endpoint | Description |
|---|---|---|
| POST | `/batches` | Submit a batch operation (bulk contact create/update) |
| GET | `/batches/{batchID}` | Check batch operation status |
Use batches for bulk operations (importing thousands of contacts). Submit an array of operations, receive a batch ID, poll for completion.
---
### Email Content
| Method | Endpoint | Description |
|---|---|---|
| GET | `/templates` | List email templates |
| GET | `/templates/{templateID}` | Get a template |
---
### Images
| Method | Endpoint | Description |
|---|---|---|
| POST | `/images` | Upload an image |
| GET | `/images` | List uploaded images |
---
### Analytics
| Method | Endpoint | Description |
|---|---|---|
| GET | `/reports` | Generate analytics reports |
*Flag: Analytics API endpoints were not fully documented in public docs. The reports endpoint may require specific query parameters for date ranges, metrics, and grouping. Verify with Omnisend API documentation.*
---
## Webhooks
Omnisend supports webhooks for real-time event notifications. Configure in Store Settings → Webhooks or via the API.
*Flag: Webhook event types and payload formats were not fully documented in the public API reference reviewed. The API docs reference page indicated webhooks exist but details were limited. Verify webhook capabilities and setup with Omnisend support or the latest API documentation.*
---
## JavaScript Snippet (Client-Side Tracking)
For tracking website behavior (page views, cart events) without a native ecommerce integration:
```html
<script>
window.omnisend = window.omnisend || [];
omnisend.push(["accountID", "YOUR_ACCOUNT_ID"]);
omnisend.push(["track", "$pageViewed", {
$productID: "prod_123",
$title: "Blue T-Shirt"
}]);
</script>
```
The JavaScript snippet enables browse abandonment and product recommendation features for custom platforms.
---
## Key Differences from Other Marketing APIs
| Feature | Omnisend Behavior |
|---|---|
| Versioning | **Header-based** (`Omnisend-Version`), not URL-based |
| Pagination | **Cursor-based** (opaque tokens), not page-number-based |
| Authentication | API key as **header** (`X-API-KEY`), not query param |
| Error format | **RFC 9457 Problem Details** with structured `errors` array |
| Contacts | Single entity for email + SMS + push — not separate lists |
| Events | Generic event tracking API — send any event name with properties |
| Batches | Async bulk operations with polling for completion |
---
## Common Integration Patterns
**Product catalog sync**: POST products and categories via API → enable product recommendations and browse abandonment automations.
**Order tracking**: POST events for order lifecycle (placed, fulfilled, cancelled) → trigger post-purchase automations.
**Custom cart tracking**: POST "added to cart" and "cart abandoned" events → trigger cart abandonment workflows without native ecommerce integration.
**Contact sync**: POST/PATCH contacts with tags and custom properties → maintain audience segments for targeted campaigns.
**Bulk import**: Use `/batches` for importing large contact lists → poll batch status for completion.
---
## Source URLs
- API Documentation: https://api-docs.omnisend.com/
- API Authentication: https://api-docs.omnisend.com/reference/authentication
- Help Center: https://support.omnisend.com/
- Integrations: https://support.omnisend.com/en/articles/2888766-integrations-with-omnisend
references/platform-guide.md
# Omnisend Platform Guide
## Email Campaigns
- **What it is**: Broadcasts sent to contacts or segments — newsletters, promotions, product announcements
- **Editor**: Drag-and-drop email editor with 250+ templates, product picker (pulls from your store), dynamic discount codes, product recommendations
- **A/B testing**: Test subject lines, sender name, and content on Standard+ plans. Split audience automatically, send winner to remainder.
- **Campaign Booster**: Auto-resend campaign to non-openers with a different subject line after a configurable delay
- **Best practices**: Use product recommendation blocks for ecommerce. Segment by engagement. A/B test subject lines on every campaign.
## SMS Marketing
- **What it is**: SMS campaigns and automated SMS messages sent to opted-in contacts
- **Opt-in**: Separate SMS consent required (not inherited from email opt-in). Collect via popups, checkout, or keyword opt-in.
- **SMS credits**: Pro plan includes SMS credits; Standard plan has SMS as paid add-on. Credits vary by country.
- **Character limits**: 160 chars (GSM-7) or 70 chars (Unicode). Messages over limit split into multiple segments at higher cost.
- **MMS**: Supported — include images in SMS messages for higher engagement
- **Two-way SMS**: Contacts can reply to SMS messages. Replies visible in Omnisend.
- **Compliance**: TCPA compliance built in — automatic quiet hours, opt-out handling ("STOP" keyword), consent tracking
## Automation Workflows
- **What it is**: Trigger-based automated message sequences — the core of Omnisend's value
- **Pre-built workflows** (ready to activate):
- Welcome series (new subscriber)
- Abandoned cart (cart created, not completed)
- Browse abandonment (product/category viewed, no purchase)
- Order confirmation & shipping updates
- Post-purchase follow-up (review request, cross-sell)
- Win-back / re-engagement (lapsed customer)
- Birthday / anniversary
- Back-in-stock notification
- **Custom workflows**: Build from scratch with any trigger + conditions + actions
- **Multi-channel**: Each workflow step can be email, SMS, or web push — mix channels in one automation
- **Splits and conditions**: A/B split testing within workflows, conditional branches based on segment membership, purchase history, engagement
- **Timing**: Configurable delays between steps (minutes, hours, days)
- **Exit conditions**: Auto-remove contacts from workflow when they take the desired action (purchase, resubscribe)
## Popups & Forms
- **Types**: Popup, embedded form, landing page, Wheel of Fortune (gamified spin-to-win), teaser (small persistent trigger)
- **Targeting**: Show based on URL, device, referral source, time on page, scroll depth, exit intent, new vs returning visitor
- **Multi-step forms**: Collect email first, then SMS on a second step (increases overall opt-in rate)
- **Discount delivery**: Auto-apply discount codes to form submissions
- **A/B testing**: Test form design, copy, and offers
## Segmentation
- **Segment types**: Based on shopping behavior (purchased, viewed, added to cart), email/SMS engagement (opened, clicked, subscribed date), contact properties (tags, location, custom fields), and campaign activity
- **Dynamic segments**: Auto-update as contacts match/unmatch conditions
- **Lifecycle stages**: Omnisend auto-assigns lifecycle stages — New Subscriber, Active Customer, At Risk, Lapsed, Champions
- **Product-based segments**: Contacts who bought/viewed specific products or categories
- **RFM analysis**: Built-in Recency-Frequency-Monetary scoring for customer value segmentation
## Web Push Notifications
- **What it is**: Browser push notifications to opted-in website visitors
- **Unlimited on all plans**: Including free plan — no extra cost
- **Triggers**: Manual send or automation workflow step
- **Content**: Title, message, image, URL, action buttons
- **Limitation**: Web push only — no native mobile app push (use with Shopify's native push or a dedicated push tool for mobile)
## Reporting & Analytics
- **Campaign reports**: Opens, clicks, unsubscribes, revenue attributed per campaign
- **Automation reports**: Revenue per workflow, conversion rate, per-step performance
- **Sales dashboard**: Revenue attribution across all channels (email, SMS, push), customer lifetime value trends
- **Segment performance**: Compare performance across segments
- **Click maps**: Visual heatmap of where contacts click in your emails
## Omnisend data model
Core entities — understand these to navigate the UI and work with the API:
| Entity | What it represents | Key relationships |
|---|---|---|
| **Contact** | A person in your audience (email, phone, or both) | Has Tags, belongs to Segments, has Events |
| **Campaign** | A one-time email/SMS broadcast | Sent to a Segment or list of Contacts |
| **Automation** (Workflow) | A trigger-based multi-step sequence | Contains Steps (email, SMS, push, delay, split) |
| **Product** | A product from your ecommerce store | Synced from Shopify/WooCommerce/BigCommerce |
| **Order** | A completed purchase | Belongs to a Contact, contains Products |
| **Event** | A tracked action (page view, cart, purchase) | Belongs to a Contact, triggers Automations |
| **Segment** | A dynamic group of contacts based on rules | Used as campaign audience or workflow condition |
| **Form** | A popup, embedded form, or landing page | Creates/tags Contacts on submission |
## API & Integrations
**For detailed API documentation including all endpoints, authentication, rate limits, and data models, always consult `references/omnisend-api-reference.md`.** Point the user to this file for the full endpoint catalog, request/response schemas, and rate limit details.
**Quick reference**: Base URL `https://api.omnisend.com/api/`, API key auth (`X-API-KEY` header), header-based versioning (`Omnisend-Version: 2026-03-15`), cursor-based pagination. Key capabilities: contact management, campaign CRUD, product sync, event tracking, segment management, analytics.
## Native integrations
- **Ecommerce**: Shopify (deep — products, orders, carts, customers, browse events), WooCommerce (plugin), BigCommerce (native), Wix, Ecwid
- **Ecommerce features**: Product sync, order sync, cart tracking, browse tracking, customer data sync, revenue attribution
- **Automation**: Zapier (triggers for new subscriber, new order; actions for adding contacts), Make
- **Reviews**: Shopify product reviews, Loox, Judge.me, Yotpo, Stamped
- **Loyalty**: Smile.io, LoyaltyLion
- **Other**: Google Ads (audience sync), Facebook Ads (audience sync), Gorgias, Zendesk
## Pricing (as of April 2026 — verify current pricing)
- **Free**: 250 contacts, 500 emails/mo, unlimited web push, all features, 60 SMS credits
- **Standard**: From $16/mo (500 contacts, 6,000 emails/mo, SMS add-on)
- **Pro**: From $59/mo (unlimited emails, advanced reporting, higher SMS allowance)
- Scales by contact count. 30% discount for 3-month prepay on first subscription.