Maropost Marketing Cloud: Telltide Seed Address Guide
Place Telltide seeds in Maropost contact lists and journeys.
Maropost uses a contact list model where contacts can belong to multiple lists simultaneously. Journeys are the primary automation builder, using a Trigger widget that defines how contacts enter. The most important constraint for seed management: the Do Not Mail (DNM) list is a global suppression list - contacts added to it receive no email from the account whatsoever, and the only way to include a DNM-listed contact in sends is to remove them from the list first.
Quick reference
| Send type | Where to add seeds | Complexity |
|---|---|---|
| Scheduled (Campaign) | Add seed contact to a list or segment included in the campaign audience | Low |
| Ongoing (Journey) | Add seed contact to the trigger list, apply the trigger tag, or fire the API Event trigger | Medium |
1. Scheduled / one-off sends (Campaigns)
Maropost Campaigns are one-time or recurring email sends. The audience is built by selecting include lists, include segments, suppress lists, and suppress segments. Seeds must be on at least one included list or segment with active subscription status.
Where to add seed addresses
Add seed contacts to a dedicated "Telltide Seeds" contact list. Include that list in every campaign's audience. This ensures seeds always receive the campaign without needing to satisfy the main segment conditions.
Step-by-step: Create a seed contact via UI (manual add)
- Navigate to Contacts > Lists > [select target list]
- Open the Actions dropdown
- Select Add Contact (or equivalent single-contact add option)
- Enter the seed email address (required), first name, last name, and any custom field values
- Save
Step-by-step: Import seeds via CSV
- Navigate to Contacts > Lists > [target list]
- Click Actions > Import List
- Select File Import
- Upload your CSV file (email is the only required column)
- Map columns to Maropost contact fields
- Confirm and run the import
Step-by-step: Create a seed contact via REST API
POST https://api.maropost.com/accounts/{account_id}/lists/{list_id}/contacts?auth_token={{auth_token}}
Content-Type: application/json
{
"contact": {
"email": "seed@example.com",
"first_name": "Seed",
"last_name": "Monitor",
"subscribe": true,
"add_tags": ["telltide-seed"]
}
}
Authentication: auth_token is passed as a query string parameter on all requests (GET, POST, PUT, DELETE). Find your auth token at: your username (top right) > Connections > REST API tab.
subscribe: true: Ensures the contact is subscribed to the list. Without this, the contact is created but may not be in active subscription status.
add_tags: Applies tags to the contact. Tags can be used as trigger conditions in Journeys.
account_id: Your Maropost account identifier, visible in the account settings or URL.
list_id: The ID of the target contact list, visible in the list settings.
Profile attributes required
Seeds need:
- Email address (required; unique identifier per list)
- Active subscription status on the target list
- Not on the Do Not Mail (DNM) list
- Values for any custom fields or personalization tags referenced in the campaign email
Ensuring seeds receive the same version as real recipients
Segment-based audiences: If the campaign targets a segment (filter-based dynamic view), the seed must satisfy the segment conditions, or be included via a separate list (OR logic). The separate "Telltide Seeds" list approach bypasses segment filtering for seeds.
A/B testing campaigns: Maropost supports A/B split test campaigns for subject lines, content, and sender names. Seeds are assigned to one variant. Use multiple seed contacts to monitor all variants.
Gotchas
Do Not Mail (DNM) list blocks all sends. The DNM list is a global suppression list - it blocks all email from the account to that address, including campaigns, A/B campaigns, journey messages, and test sends. If a seed is on the DNM list, remove it before attempting any send.
Suppress workflows option. Campaigns have a "Suppress contacts currently in a journey" option. If enabled, seed contacts currently in an active journey are excluded from the campaign send. Disable this for seed testing or ensure seeds are not in active journeys when sending campaigns.
2. Ongoing / automated journeys (Journeys)
Maropost Journeys are visual drag-and-drop automation workflows. Every Journey requires a Trigger widget that defines how contacts enter the Journey. Journey Actions include: Send Email, Add/Remove Tag, Subscribe/Unsubscribe from List, Update Contact Field, Wait/Delay, Condition branching.
Journey trigger types
| Trigger | Description | Seed approach |
|---|---|---|
| New Subscription | Fires when a new subscriber is added to the selected list | Add seed to the trigger list as a new subscriber |
| Subscription Changed | Fires when subscription status changes on the selected list | Change seed's subscription status |
| Tag Event | Fires when a tag is added to or removed from a contact | Apply the trigger tag to the seed |
| Contact Field Updated | Fires when specified contact field(s) change value | Update the trigger field on the seed |
| Link Clicks | Fires when a contact clicks a specific link in a campaign | Click the link in a sent campaign |
| Web Funnel | Fires on web funnel completion, abandonment, or recovery | Trigger via web funnel tracking |
| Segment Event | Fires when a contact enters or exits a specified segment | Set attributes to enter/exit the segment |
| API Event | Fires via POST API call for a specific contact | Call the Journey API trigger endpoint |
Creating trap profiles per journey type
Welcome / onboarding (New Subscription trigger)
- Trigger: "New Subscription" - fires when a new subscriber is added to the trigger list
- Seed requirements: Email address, not previously subscribed to the trigger list (so the subscription event fires)
- How to trigger: Add the seed as a new contact to the trigger list via the API. The "New Subscription" trigger fires for new additions.
POST https://api.maropost.com/accounts/{account_id}/lists/{list_id}/contacts?auth_token={{auth_token}}
Content-Type: application/json
{
"contact": {
"email": "seed@example.com",
"first_name": "Seed",
"last_name": "Monitor",
"subscribe": true
}
}
If the seed already exists on the list, the "New Subscription" trigger does not re-fire. Use a different seed email, or use the "Subscription Changed" trigger variant by unsubscribing and re-subscribing.
Abandoned cart (API Event trigger or Web Funnel trigger)
- Trigger: "API Event" - fired via API call from the ecommerce platform when abandonment is detected; or "Web Funnel" if using Maropost's web tracking
- Seed requirements: Email address, subscribed to a list in the account
- How to trigger via API Event:
Navigate to the Journey's Trigger settings to find the API Event trigger URL and required parameters. The trigger call format varies by account configuration. Example:
POST https://api.maropost.com/accounts/{account_id}/journeys/{journey_id}/trigger?auth_token={{auth_token}}
Content-Type: application/json
{
"contact": {
"email": "seed@example.com"
},
"trigger_data": {
"cart_value": "95.00",
"cart_product": "Widget Pro",
"cart_url": "https://yourstore.com/cart"
}
}
Refer to your Maropost account's REST API documentation (username > Connections > REST API) for the exact API Event trigger endpoint.
Browse abandonment (Web Funnel or API Event trigger)
- Trigger: "Web Funnel" - fires based on web funnel stage (abandonment detected from tracked pages) or "API Event"
- Seed requirements: Email address, web funnel tracking installed on the store
- How to trigger: Web-based navigation with seed identified on tracked pages, or API Event call
Winback / re-engagement (Segment Event or Recurring Data Journey)
- Trigger: "Segment Event" - fires when the contact enters a segment with condition
last_purchase_date > 90 days ago; or use a Recurring Data Journey - Seed requirements: Contact with
last_purchase_datecustom field set to a date older than the threshold
Set the date field on the seed:
POST https://api.maropost.com/accounts/{account_id}/contacts?auth_token={{auth_token}}
Content-Type: application/json
{
"contact": {
"email": "seed@example.com",
"last_purchase_date": "2025-01-15"
}
}
Date/Time custom fields use format YYYY-MM-DD/HH:MM:SS-05:00 (ISO 8601 with timezone offset) in Maropost API calls.
Post-purchase (Subscription Changed or API Event trigger)
- Trigger: "Subscription Changed" on a "Recent Purchasers" list (ecommerce integration adds contacts on purchase) or "API Event"
- Seed requirements: Email address, subscribed to the trigger list
- How to trigger: Add the seed to the "Recent Purchasers" trigger list via API after setting relevant order data fields
Birthday / anniversary (Contact Field Updated trigger + delay)
- Trigger: "Contact Field Updated" on the
date_of_birth(or equivalent) Date/Time custom field - Seed requirements: Contact with
date_of_birthcustom field populated - Journey setup: Trigger fires on field update > Journey Delay node set to "Wait until anniversary date of
date_of_birth" > Send Birthday Email - Date/Time field format:
YYYY-MM-DD/HH:MM:SS-05:00
Set the birthday field:
POST https://api.maropost.com/accounts/{account_id}/contacts?auth_token={{auth_token}}
Content-Type: application/json
{
"contact": {
"email": "seed@example.com",
"date_of_birth": "1990-04-15/00:00:00-05:00"
}
}
The trigger fires when this field value is set or updated. The Journey Delay advances the contact to the send step at the next anniversary of the stored date.
Manually triggering a Journey via API Event
For any Journey with an "API Event" trigger configured, call the trigger endpoint directly:
- In the Journey builder, click the Trigger widget
- Select "API Event" trigger type
- Note the auto-generated API endpoint URL
- Call the endpoint with the seed contact's email:
POST https://api.maropost.com/accounts/{account_id}/journeys/{journey_id}/contacts/trigger?auth_token={{auth_token}}
Content-Type: application/json
{
"contact": {
"email": "seed@example.com"
}
}
Exact endpoint format may vary. Check the Journey's API Event trigger panel for the configured URL.
How to reset seeds for repeated Journey testing
New Subscription trigger: Subscribe the seed to a different list (or unsubscribe and re-subscribe from the trigger list) to fire a new subscription event.
Tag Event trigger: Remove the trigger tag, wait for the contact to exit the Journey, then re-apply the tag.
API Event trigger: Call the API trigger endpoint again. If the Journey allows re-entry, the seed enters again.
Contact Field Updated trigger: Change the trigger field to a different value, then back to the intended value to fire the update event again.
Pause/Restart from profile: Navigate to the seed contact's profile > Journeys & Email Series section > find the Journey > click Restart to remove and allow re-entry on the next trigger.
3. Platform-specific considerations
API options
Base URL: https://api.maropost.com/accounts/{account_id}/
All requests require auth_token as a query string parameter.
Add contact to list:
POST https://api.maropost.com/accounts/{account_id}/lists/{list_id}/contacts?auth_token={{auth_token}}
Update contact fields:
PUT https://api.maropost.com/accounts/{account_id}/contacts/{id}?auth_token={{auth_token}}
Get contact by email:
GET https://api.maropost.com/accounts/{account_id}/contacts/email?contact[email]=seed%40example.com&auth_token={{auth_token}}
API documentation location: Within the Maropost application: username (top right) > Connections > REST API tab. The full REST API reference is at api.maropost.com/api/.
Rate limits
Maropost does not publish specific rate limit numbers publicly. Implement exponential backoff on 429 responses.
Duplicate contact handling
Email address is the unique identifier per list. An optional custom uid field can be set to reference contacts by an external ID. If the same email is added to the same list again, the existing record is updated (not duplicated). A contact can appear on multiple lists independently.
Segments deduplicate contacts automatically - even if a contact appears on multiple included lists, they receive the campaign only once.
Platform-specific terminology
| Maropost term | What it means |
|---|---|
| Contact | A person record in Maropost. |
| Contact List | A static grouping of contacts. A contact can be on multiple lists. |
| Segment | A dynamic filter-based view of contacts based on rules (engagement, purchase, field values, tags). |
| Tag | A label applied to contacts for segmentation and journey triggering. |
| Campaign | A one-time or recurring email send. |
| Journey | An automated multi-step workflow triggered by a Trigger widget. |
| Data Journey | A journey type triggered by data events (scheduled, recurring, file upload, campaign sent). More data-manipulation focused. |
| Trigger widget | The required first element of every Journey that defines how contacts enter. |
| Do Not Mail (DNM) list | Global suppression list. Contacts in it receive no email from the account at all. |
| Secure List | Suppression list that persists across platform boundaries, protecting against accidental sends to unsubscribed contacts. |
auth_token | API authentication parameter. Passed as a query string on all REST API requests. |
Known limitations and workarounds
auth_token in query string is a security consideration. Unlike bearer token authentication, the auth_token parameter is visible in server logs and HTTP referrer headers. Use HTTPS on all API calls and restrict the token's permissions to the minimum required.
Do Not Mail list blocks all sends including tests. Remove seed addresses from the DNM list before any testing. Navigate to Contacts > Do Not Mail to manage list membership.
"New Subscription" trigger does not re-fire for existing subscribers. If a seed is already subscribed to the trigger list, re-adding them does not fire the "New Subscription" trigger. Unsubscribe the seed first, wait for the Journey exit, then re-subscribe to fire a fresh entry.
Contact Field Updated trigger fires on any field change, not just initial set. If the seed's trigger field is updated multiple times, the trigger fires each time (depending on Journey re-entry settings). Plan for this in test cycles to avoid duplicate Journey entries.
Date/Time fields require timezone offset in format. Maropost's Date/Time custom fields use YYYY-MM-DD/HH:MM:SS-05:00 format (not standard ISO 8601). Check your account's configured timezone offset before setting date fields via API.
Start monitoring your Maropost sends
Place a Telltide seed in your Maropost audience, and we will tell you when an expected email did not land.
Start free