Integrations

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 typeWhere to add seedsComplexity
Scheduled (Mailing)Add seed address to a Seed List associated with the mailingLow
Ongoing (Program)Add seed to the Database; trigger program entry via the configured entry eventMedium

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

  1. Navigate to Data > Databases in the main nav
  2. Click Create
  3. Select database type Seed List (the UI offers Double Opt-in, Single Opt-in, Test List, Seed List, or Suppression List)
  4. Enter a name (for example, "Telltide Seeds")
  5. Save

Step-by-step: Add seed addresses to the Seed List (UI)

  1. Navigate to Data > Databases > [Seed List name]
  2. Click Add Contact
  3. Enter the seed email address
  4. Save

CSV upload (bulk seed onboarding)

  1. Prepare a CSV containing an EMAIL column and any default Seed List fields you want to populate
  2. Navigate to Data > Databases > [Seed List name]
  3. Choose Import and upload the CSV
  4. 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

  1. Open the target Mailing in the campaign builder
  2. Open Send Settings for the mailing
  3. Find the Seed List setting
  4. Select your "Telltide Seeds" Seed List
  5. Choose position: Beginning of Send or End of Send
  6. 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:

  1. Navigate to Data > Databases > [Database name]
  2. Click Add Contact
  3. Enter field values: email address, first name, last name, any personalization fields
  4. 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.

PodBase URL
US Pod 1https://api-campaign-us-1.goacoustic.com
US Pod 2https://api-campaign-us-2.goacoustic.com
US Pod 3https://api-campaign-us-3.goacoustic.com
US Pod 5https://api-campaign-us-5.goacoustic.com
US Pod 6https://api-campaign-us-6.goacoustic.com
EU Podhttps://api-campaign-eu-1.goacoustic.com
AP Podhttps://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 triggerHow it worksSeed approach
Opted inContact opts in via web form, UI "Add Contact" button, or API with CREATED_FROM=2Add contact to the opt-in trigger database via UI or API
Added to databaseContact is added to the database by any methodAdd the seed to the trigger database
Date fieldContact's date field matches a condition (e.g., "anniversary is today")Set the date field on the seed
Email behaviorContact clicks a link in a specific emailClick the link in the test email sent to the seed
Web form behaviorContact submits a web formSubmit the form with the seed email
Website behaviorContact fires a web tracking eventTrigger via site tracking or API
Recurring/scheduledChecks eligible contacts on a recurring scheduleSeed 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 ImportList XML 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 days and use a Recurring Program entry targeting contacts in that Query
  • Seed requirements: Email address in the Database; Last Purchase Date custom 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_BIRTH custom field (Date type) set on the contact
  • Date format: Acoustic uses MM/DD/YYYY for date fields in the database. Set the seed's DATE_OF_BIRTH to today's date in MM/DD/YYYY format.
  • For same-day testing: Set the seed's DATE_OF_BIRTH to 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

ScopeLimit
Concurrent authenticated API requests10 per organization, OAuth method
Legacy login-session method20 active sessions per organization
SendMailing (transactional single send)10,000 calls per day per organization
General XMLAPI throughputNot 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 termWhat it means
DatabaseThe primary contact store (equivalent to a List/Audience in other platforms).
Flexible DatabaseStandard flat-file database. One row per email/key. Recommended for most use cases.
Restricted DatabaseMulti-table database supporting Relational Tables and Suppression Lists.
QueryA saved filter view of a Database. Mailings can target a Database or a Query result.
Relational TableA one-to-many data table linked to a Database by a key field (e.g., cart items, order history).
MailingAn individual email send (template + audience + schedule).
ProgramA multi-step automated journey workflow (the most powerful automation tier).
AutoresponderA basic single-email automation triggered by a contact event.
Automated Message GroupA multi-email automation sequence with more options than Autoresponders but less than Programs.
Seed ListA special database type (type 6) whose members receive all associated mailings, bypass suppression, and are excluded from performance reporting. Purpose-built for monitoring.
Suppression ListA database type (type 13) storing email addresses blocked from receiving mailings. Can be org-level or database-level.
Master Suppression ListThe account-level suppression list. Catches all hard bounces, spam complaints, and opt-outs. Seed List contacts bypass this.
CREATED_FROMParameter 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