Acoustic Campaign: Telltide Seed Address Guide
Place Telltide seeds in Acoustic Campaign databases and programs.
Acoustic Campaign (formerly IBM Watson Marketing Automation, Silverpop Engage) uses a database-centric model where contacts live in Databases (flat-file or relational). The platform has a native Seed List type that is purpose-built for monitoring. Seed List contacts receive a copy of every mailing associated with the list, bypass the master suppression list entirely, and are excluded from campaign performance reporting metrics. This makes Acoustic's seed management significantly simpler than most platforms.
Quick reference
| Send type | Where to add seeds | Complexity |
|---|---|---|
| Scheduled (Mailing) | Add seed address to a Seed List associated with the mailing | Low |
| Ongoing (Program) | Add seed to the Database; trigger program entry via the configured entry event | Medium |
1. Scheduled / one-off sends (Mailings)
Acoustic Campaign Mailings are individual email sends (template + recipient source + schedule). Seeds are managed via the native Seed List type, a special database variant whose members receive a copy of every mailing the Seed List is associated with.
Seed List behavior
- Bypasses master suppression list. Contacts in a Seed List receive the mailing even if they are on the account-level suppression list. This is the primary advantage of Seed Lists for monitoring purposes.
- Excluded from reporting metrics. Seed List opens, clicks, and bounces do not appear in the mailing's performance report.
- Position options. Seeds can be configured to receive the mailing at the "Beginning of Send" or "End of Send".
- Fields are locked. Seed Lists cannot have extra fields added beyond the default set.
Non-technical path
For CRM managers who prefer the Acoustic UI, this covers UI add-to-database/contact-list, CSV upload, and web form enrollment.
Step-by-step: Create a Seed List
- Navigate to Data > Databases in the main nav
- Click Create
- Select database type Seed List (the UI offers Double Opt-in, Single Opt-in, Test List, Seed List, or Suppression List)
- Enter a name (for example, "Telltide Seeds")
- Save
Step-by-step: Add seed addresses to the Seed List (UI)
- Navigate to Data > Databases > [Seed List name]
- Click Add Contact
- Enter the seed email address
- Save
CSV upload (bulk seed onboarding)
- Prepare a CSV containing an
EMAILcolumn and any default Seed List fields you want to populate - Navigate to Data > Databases > [Seed List name]
- Choose Import and upload the CSV
- Map columns and run the import
Web form enrollment
If your account uses Acoustic web forms, attach a form to the target Database and submit the form once with the seed email address. With the Database "Opted in" entry trigger configured, this also fires Programs that key off opt-in (see Always-on flow coverage below).
Step-by-step: Associate the Seed List with a Mailing
- Open the target Mailing in the campaign builder
- Open Send Settings for the mailing
- Find the Seed List setting
- Select your "Telltide Seeds" Seed List
- Choose position: Beginning of Send or End of Send
- The Seed List contacts receive the mailing on every launch
Adding seed directly to the recipient Database
For seeds that should appear in reporting (unlike Seed List members), add the seed as a regular contact in the target Database:
- Navigate to Data > Databases > [Database name]
- Click Add Contact
- Enter field values: email address, first name, last name, any personalization fields
- Click Save
Technical path
For developers integrating programmatically with the Acoustic Campaign XML API.
Authentication (OAuth 2.0 refresh-token flow)
Acoustic Campaign uses OAuth 2.0 with a long-lived refresh token. In the UI, an Organization administrator creates an application via Settings > Organization Settings > Application Account Access > Add Application, which produces a Client ID and Client Secret. Adding account access for a user generates the User Refresh Token (emailed to the administrator).
Exchange the refresh token for a 4-hour access token:
POST https://api-campaign-us-{N}.goacoustic.com/oauth/token
Content-Type: application/x-www-form-urlencoded
grant_type=refresh_token&client_id={{client_id}}&client_secret={{client_secret}}&refresh_token={{refresh_token}}
The response includes access_token and expires_in (typically 14400 seconds). Reuse the same access token across calls; refresh roughly every 3 hours to stay within the 4-hour window.
API base URLs by pod
The base URL depends on your pod and region. Find your pod from the host of your Acoustic login URL.
| Pod | Base URL |
|---|---|
| US Pod 1 | https://api-campaign-us-1.goacoustic.com |
| US Pod 2 | https://api-campaign-us-2.goacoustic.com |
| US Pod 3 | https://api-campaign-us-3.goacoustic.com |
| US Pod 5 | https://api-campaign-us-5.goacoustic.com |
| US Pod 6 | https://api-campaign-us-6.goacoustic.com |
| EU Pod | https://api-campaign-eu-1.goacoustic.com |
| AP Pod | https://api-campaign-ap-2.goacoustic.com |
The legacy api{N}.silverpop.com hosts have been replaced by the api-campaign-* hosts above. Update older integrations.
Step-by-step: Add a contact via XML API
POST https://api-campaign-us-{N}.goacoustic.com/XMLAPI
Authorization: Bearer {{access_token}}
Content-Type: text/xml
<Envelope>
<Body>
<AddRecipient>
<LIST_ID>{{database_id}}</LIST_ID>
<CREATED_FROM>0</CREATED_FROM>
<UPDATE_IF_FOUND>TRUE</UPDATE_IF_FOUND>
<COLUMN>
<NAME>EMAIL</NAME>
<VALUE>seed@example.com</VALUE>
</COLUMN>
<COLUMN>
<NAME>FIRST_NAME</NAME>
<VALUE>Seed</VALUE>
</COLUMN>
<COLUMN>
<NAME>LAST_NAME</NAME>
<VALUE>Monitor</VALUE>
</COLUMN>
</AddRecipient>
</Body>
</Envelope>
CREATED_FROM values: 0 = database, 1 = imported file, 2 = web form/opt-in, 3 = API.
UPDATE_IF_FOUND: TRUE updates the existing record if the email already exists. FALSE returns an error if the email exists.
The same AddRecipient call works against a Seed List (database type 6), a regular Database, or a Test List, by passing the appropriate LIST_ID.
Profile attributes required
Seeds need:
- Email address
- Not on the master suppression list (unless using a Seed List, which bypasses suppression)
- Values for any personalization fields referenced in the mailing template (empty fields render blank)
Ensuring seeds receive the same version as real recipients
Queries as mailing audience. If the mailing targets a Query (a saved filter of the Database), the seed must satisfy the Query's conditions to appear in the regular audience. Use a Seed List if you want seeds to receive the mailing without needing to satisfy Query conditions.
Dynamic content. Acoustic Campaign supports dynamic content using contact field values. The seed receives the block matching its own field values. Set the seed's fields to match the recipient segment you want to monitor.
Gotchas
Seed Lists have locked fields. You cannot add extra fields to a Seed List. If your mailing requires personalization tokens that reference custom fields (beyond the default set), Seed List contacts may receive the mailing with blank personalization. Add the seed as a regular contact in the target Database if personalization is important.
Frequency rules apply per 24-hour rolling interval. Acoustic Campaign tracks frequency on a 24-hour rolling interval. If frequency rules are active and the seed has received an email in the last 24 hours, subsequent sends may be blocked. Seed List contacts bypass this restriction entirely.
2. Ongoing / automated journeys (Programs)
Acoustic Campaign Programs are multi-step automated workflows built in a visual drag-and-drop canvas. Programs are the most powerful automation tier (above Autoresponders and Automated Message Groups).
Always-on flow coverage
Triggered Programs, Autoresponders, and Automated Message Groups do not let you attach a recipient list to a single message at send time. Instead, the seed has to qualify for the workflow itself. Use the Acoustic primitive that matches the workflow type:
- Database-level Seed List association. In Data > Databases > [Database] > Settings, enable a seed list at the database level. Every mailing that uses this Database as its source (including Programs, Autoresponders, and Automated Messages) will include the linked Seed List automatically. This is the closest equivalent to "attach seeds to every send" and the recommended default for always-on coverage.
- Query-level Seed List association. When a mailing or Program step targets a Query rather than a whole Database, enable the seed list at the Query level so seeds ride along with that segment.
- Organization-level (account-wide) Seed List. Administrators can enable a seed list at the organization level so it attaches to all mailings sent from the org. Useful for compliance monitoring across every Program in the account.
- Contact in the trigger Database. For entry triggers that key off a contact event ("Opted in", "Added to database", "Date field", or "Recurring"), the seed must also exist as a contact in the trigger Database with values that satisfy the entry condition. The Seed List association ensures the seed receives the message; the Database membership ensures it can enter the Program in the first place where the entry trigger requires it.
- Web tracking and behavioral entries. For "Website behavior", "Email behavior", or "Web form behavior" entries, fire the underlying event with the seed identified (cookie set via tracked email click, form submit with the seed email, or server-side event fired with the seed's recipient ID). A Seed List association alone will not trigger these; the behavior must occur.
Telltide-specific guidance: enable a Seed List at the Database level for any Database whose Programs send marketing email you want monitored. This guarantees coverage even when authors add new Program steps later.
Program entry trigger types
| Entry trigger | How it works | Seed approach |
|---|---|---|
| Opted in | Contact opts in via web form, UI "Add Contact" button, or API with CREATED_FROM=2 | Add contact to the opt-in trigger database via UI or API |
| Added to database | Contact is added to the database by any method | Add the seed to the trigger database |
| Date field | Contact's date field matches a condition (e.g., "anniversary is today") | Set the date field on the seed |
| Email behavior | Contact clicks a link in a specific email | Click the link in the test email sent to the seed |
| Web form behavior | Contact submits a web form | Submit the form with the seed email |
| Website behavior | Contact fires a web tracking event | Trigger via site tracking or API |
| Recurring/scheduled | Checks eligible contacts on a recurring schedule | Seed must qualify at the scheduled check time |
Creating trap profiles per journey type
Welcome / onboarding (Opted in entry or Added to database entry)
- Entry - Opted in: Fires when a contact opts in via web form, UI "Add Contact" click, or API with
CREATED_FROM=2 - Seed requirements: Email address, active (not suppressed) status
- How to trigger: Add the seed to the opt-in trigger database using the UI "Add Contact" button (not via import). Or use the API with
CREATED_FROM=2:
POST https://api-campaign-us-{N}.goacoustic.com/XMLAPI
Content-Type: text/xml
<Envelope>
<Body>
<AddRecipient>
<LIST_ID>{{database_id}}</LIST_ID>
<CREATED_FROM>2</CREATED_FROM>
<UPDATE_IF_FOUND>FALSE</UPDATE_IF_FOUND>
<COLUMN>
<NAME>EMAIL</NAME>
<VALUE>seed@example.com</VALUE>
</COLUMN>
</AddRecipient>
</Body>
</Envelope>
- Entry - Added to database: Fires when any new contact is added to the database regardless of opt-in method. Simpler to trigger: just add the contact.
Abandoned cart (Website behavior / Relational Table approach)
- Trigger: Website behavior (custom web tracking event) or a program that queries a Relational Table for recent cart records with no subsequent purchase
- Seed requirements: Email address in the database; cart data in a linked Relational Table
- Relational Table: Abandoned cart data (product name, price, cart URL) is stored in a Relational Table linked to the contact's database record by email key. Populate this before triggering the program.
- Via API (ImportList to Relational Table): Upload cart data via the
ImportListXML API endpoint to the Relational Table ID, with the seed's email as the linking key.
Browse abandonment
- Trigger: Website behavior entry using a custom tracking event fired when the contact views a product page without adding to cart
- Seed requirements: Email address, website tracking enabled and linked to the database
- How to trigger: Requires actual browser navigation on the tracked site while the seed is identified (e.g., clicked a tracked email link that cookied the browser). Browser-based navigation is the most reliable approach.
Winback / re-engagement (Date field entry)
- Entry: Program configured with a Date field entry:
[Last Purchase Date] anniversary is today(using a custom date field in the Database) - Query variant: Create a Query with rule
[Last Purchase Date] is older than 90 daysand use a Recurring Program entry targeting contacts in that Query - Seed requirements: Email address in the Database;
Last Purchase Datecustom field set to a date in the trigger window
Set the date field via API:
<AddRecipient>
<LIST_ID>{{database_id}}</LIST_ID>
<CREATED_FROM>0</CREATED_FROM>
<UPDATE_IF_FOUND>TRUE</UPDATE_IF_FOUND>
<COLUMN>
<NAME>EMAIL</NAME>
<VALUE>seed@example.com</VALUE>
</COLUMN>
<COLUMN>
<NAME>LAST_PURCHASE_DATE</NAME>
<VALUE>01/15/2025</VALUE>
</COLUMN>
</AddRecipient>
Post-purchase (Website behavior or Date field entry)
- Entry: Web tracking event on purchase confirmation page, or Recurring Program checking a "Last Purchase Date" field that was recently updated
- Seed requirements: Email address in the Database; order data in a Relational Table or contact fields
Birthday / anniversary (Date field entry)
- Entry: Date field entry trigger:
[Date of Birth] anniversary is today - Seed requirements: Email address in the Database;
DATE_OF_BIRTHcustom field (Date type) set on the contact - Date format: Acoustic uses
MM/DD/YYYYfor date fields in the database. Set the seed'sDATE_OF_BIRTHto today's date inMM/DD/YYYYformat. - For same-day testing: Set the seed's
DATE_OF_BIRTHto today's date. The Program evaluates date entries on a recurring schedule; the seed enters on the next evaluation run.
How to reset seeds for repeated Program testing
Opted-in / Added-to-database entries: Remove the seed from the database (or opt them out), wait for the Program to process the exit, then re-add the seed to re-trigger the entry event.
Date field entries: The Program re-evaluates on each scheduled run. If the seed still has the qualifying date, it may re-enter on the next cycle (depending on re-entry configuration). Change the date field to a non-qualifying date, wait one cycle, then set it back to the trigger date.
Recurring Programs: Seeds that match the filter are re-evaluated on each scheduled run. Update the seed's qualifying fields between cycles if needed.
3. Platform-specific considerations
API options
Acoustic Campaign uses an XML-based API (XMLAPI) for most operations. A newer REST API is available for some functions, including OAuth token creation and a subset of program/mailing endpoints.
Authenticate (exchange refresh token for access token):
POST https://api-campaign-us-{N}.goacoustic.com/oauth/token
Content-Type: application/x-www-form-urlencoded
grant_type=refresh_token&client_id={{client_id}}&client_secret={{client_secret}}&refresh_token={{refresh_token}}
Access tokens are valid for up to 4 hours (expires_in is 14400 seconds). Refresh tokens are long-lived and only invalidate if the user's access is revoked in Organization Settings.
Add or update a contact (AddRecipient):
POST https://api-campaign-us-{N}.goacoustic.com/XMLAPI
Authorization: Bearer {{access_token}}
Content-Type: text/xml
<Envelope><Body><AddRecipient>...</AddRecipient></Body></Envelope>
Bulk import contacts (ImportList):
POST https://api-campaign-us-{N}.goacoustic.com/XMLAPI
Uses an SFTP-hosted CSV file plus a mapping file. Parameters: MAP_FILE, SOURCE_FILE, SYNC_FIELDS, FILE_ENCODING.
Retrieve contact data (SelectRecipientData):
POST https://api-campaign-us-{N}.goacoustic.com/XMLAPI
<SelectRecipientData>
<LIST_ID>{{id}}</LIST_ID>
<EMAIL>seed@example.com</EMAIL>
</SelectRecipientData>
Schedule a mailing (ScheduleMailing):
POST https://api-campaign-us-{N}.goacoustic.com/XMLAPI
<ScheduleMailing>
<MAILING_ID>{{id}}</MAILING_ID>
<SCHEDULE_DATETIME>{{datetime}}</SCHEDULE_DATETIME>
</ScheduleMailing>
Send transactional email to one contact (SendMailing):
POST https://api-campaign-us-{N}.goacoustic.com/XMLAPI
Limit: 10,000 calls per day per organization. For single-contact transactional sends only. For higher volume transactional traffic, Acoustic recommends Transact rather than the Campaign API.
API pod URL. Found in your account settings or login URL host. Replace us-{N} with eu-1 or ap-2 for non-US pods.
Rate limits
| Scope | Limit |
|---|---|
| Concurrent authenticated API requests | 10 per organization, OAuth method |
| Legacy login-session method | 20 active sessions per organization |
SendMailing (transactional single send) | 10,000 calls per day per organization |
| General XMLAPI throughput | Not publicly documented. Use bulk ImportList for large operations |
Requests above the concurrent limit are rejected immediately rather than queued. Acoustic Campaign recommends using bulk ImportList for large operations to reduce API call volume.
Duplicate contact handling
Default behavior: if multiple records share the same email address in a Database, Campaign sends each record its own copy of the mailing. When a contact opts out, all records sharing that email are added to the suppression list.
When using AddRecipient with UPDATE_IF_FOUND=TRUE, the API updates the existing record matching the email, so no duplicate is created. With UPDATE_IF_FOUND=FALSE, a duplicate error is returned if the email exists.
Platform-specific terminology
| Acoustic Campaign term | What it means |
|---|---|
| Database | The primary contact store (equivalent to a List/Audience in other platforms). |
| Flexible Database | Standard flat-file database. One row per email/key. Recommended for most use cases. |
| Restricted Database | Multi-table database supporting Relational Tables and Suppression Lists. |
| Query | A saved filter view of a Database. Mailings can target a Database or a Query result. |
| Relational Table | A one-to-many data table linked to a Database by a key field (e.g., cart items, order history). |
| Mailing | An individual email send (template + audience + schedule). |
| Program | A multi-step automated journey workflow (the most powerful automation tier). |
| Autoresponder | A basic single-email automation triggered by a contact event. |
| Automated Message Group | A multi-email automation sequence with more options than Autoresponders but less than Programs. |
| Seed List | A special database type (type 6) whose members receive all associated mailings, bypass suppression, and are excluded from performance reporting. Purpose-built for monitoring. |
| Suppression List | A database type (type 13) storing email addresses blocked from receiving mailings. Can be org-level or database-level. |
| Master Suppression List | The account-level suppression list. Catches all hard bounces, spam complaints, and opt-outs. Seed List contacts bypass this. |
| CREATED_FROM | Parameter indicating how a contact was added: 0=DB, 1=Import, 2=Web form/opt-in, 3=API. Used for opt-in trigger conditions in Programs. |
Known limitations and workarounds
Seed Lists have locked field schemas. Fields cannot be added to a Seed List beyond the default set. If personalization tokens require custom field values, add the seed as a regular Database contact instead of a Seed List member.
XMLAPI uses XML, not JSON. All API requests and responses are in XML format. Ensure seed management scripts generate valid XML envelopes.
CREATED_FROM=2 is required to fire "Opted in" Program entries via API. If you use CREATED_FROM=0 or CREATED_FROM=1, the "Opted in" entry trigger does not fire. Use CREATED_FROM=2 when adding seeds via API if the welcome Program uses an "Opted in" entry.
Frequency rules track on a 24-hour rolling basis. If a seed receives an email and the same Database has a frequency rule of "1 email per 24 hours," the seed cannot receive another mailing within 24 hours. Seed List contacts are exempt from this restriction.
Pod number must match your account. API calls to the wrong pod fail or return authentication errors. Confirm your pod (and region: us, eu, or ap) from your account login URL host.
Legacy silverpop.com hosts have been retired. The current base host pattern is api-campaign-{region}-{N}.goacoustic.com. Update any older integration code or stored runbooks that still reference api{N}.silverpop.com.
Start monitoring your Acoustic Campaign sends
Place a Telltide seed in your Acoustic Campaign audience, and we will tell you when an expected email did not land.
Start free