Acoustic Connect can consume behavior signals originating from external systems in near real-time. These signals are processed just like native signals generated by the Connect library.
You can use external signals on their own without integrating our library into your application, or as an addition to native Connect signals. This is useful for merging signals from multiple sources when the Connect library doesn't have access to parts of the user journey that rely on third-party components (payment processors, ticket management solutions, etc.).
Requirements
-
Signal limits: Import signals supported by your Connect subscription
- Connect Pro: 3 signals
- Connect Premium and Ultimate: 9 signals
-
Signal format: Each signal must follow our predefined format (see Prepare signal content for import)
-
Contact mapping: Each signal must map to a contact using one of these attributes:
- Contact key (for existing contacts)
- Email address
- Phone number (SMS or WhatsApp channel)
-
Batch size: Maximum 500 signals per mutation
Before you begin
Get your application key (it maps imported signals to an application).
- Connect Pro: Key provided during onboarding
- Connect Premium and Ultimate: Generate through Connect interface (see Get an application key for the Connect library)
Running the mutation
If you haven't used our API before, see Using the Connect API for instructions. It explains how to authenticate your calls and suggests some tools for testing.
Basic mutation structure
mutation {
createSignals(
signals: [
{
appKey: "your-app-key-here"
identifiableAttributes: { contactKey: "AAUN-132417508" }
sessionId: "OOII97671461464332a1111"
signalContent: {
signalType: "addToCart"
name: "Add product to cart in online store"
category: "Behavior"
signalTimestamp: "2025-09-21T08:29:30.001Z"
currency: "USD"
productId: "AC-PNT-WHT-SM"
productName: "AWESOME COLORS Interior Paint Satin Finish 32 Fl Oz"
effect: "positive"
itemQuantity: 2
unitPrice: 39.99
discount: 7
productCategory: "Painting & Decorating / Paint"
productUrls: [
"https://www.example.com/painting-and-decorating/paint/awesome-colors-interior-satin-paint"
"https://www.example.com/painting-and-decorating/must-haves/awesome-colors-interior-satin-paint"
]
}
}
{
appKey: "00000000000xxx000000000xxxx"
identifiableAttributes: { email: "[email protected]" }
sessionId: "OOII97671461464332a1112"
signalContent: {
signalType: "pageView"
name: "Sample product view"
category: "Behavior"
signalTimestamp: "2025-09-22T10:35:07.001Z"
effect: "positive"
url: "https://example.com/shoes/sandal-beige"
pageCategory: "Shoes"
}
}
]
) {
signalIds
}
}
Mutation arguments
Argument | Type | Required? | Description |
---|---|---|---|
signals | Array of objects | Required | Create an object for each signal you want to import |
Signals object fields
appKey
(required): String - Your application identifier in ConnectidentifiableAttributes
(required): Object - Contact mapping attribute (see Identifiable attributes object below)sessionId
: String - Session ID for grouping signals from the same contactsignalContent
(required): JSON object - Signal content (see Prepare signal content for import)test
: Boolean - Flag for importing test signals (default:false
)
Identifiable attributes object
Use one of these fields to map signals to contacts:
contactKey
: String - Contact key associated with the contactemail
: String - Email address associated with the contactsms
: String - Phone number in SMS channel associated with the contactwhatsapp
: String - Phone number in WhatsApp channel associated with the contact
Session ID behavior
When you provide a sessionId
:
- System registers the session as if generated by Connect library
- Signals included in aggregate reports and in-market interest calculation
- System appends timestamp to make it unique (e.g.,
OOII97671461Jgfa9999
becomesOOII97671461Jgfa9999.1751479037630
)
When you skip sessionId
:
- Signals appear in contacts' activity feed
- Signals not used for aggregate reports
Test signals
When test
is set to true
:
- Signals go through standard validation
- No impact on campaigns
- Not visible in activity feed, Segmentation, or Insights
Response fields
signalIds
(required): Array of strings - Unique identifiers assigned to imported signals (share with support for troubleshooting)
Verification methods
Method 1: Contact details
- Log in to Acoustic Connect.
- Navigate to Data management > Audience.
- Select contact from All contacts tab.
- Find signals in activity feed.

Notes:
- Activity feed shows 5 most recent signals per session (identification signal not displayed)
- Displays last 1000 signals or signals from last 30 days
- Newly added signals may not be immediately visible
Method 2: Signal management
- Navigate to Behavioral management > Signal management.
- View all signal types supported by your subscription.
- Click on signal types to see details.

Method 3: Sessions (Connect Ultimate only)
For Ultimate subscriptions with replay-able sessions generated by Connect library:
- Navigate to Insights > Sessions > Session search.
- Find session by ID and select it.
- Click Inspect signals.
- Review imported signal content.
Important
Sessions with external system-generated IDs are not searchable.

Contact mapping behavior
When Connect receives a signal, it processes the value in the identifiableAttributes
object to determine how to handle the signal:
-
Existing contact found: If there's a contact with that identifiable attribute (contact key, email, or phone number), the system maps the signal to that contact.
-
New contact w/ addressable attribute: If no contact exists but the identifiable attribute is addressable (email or phone number), the system creates a new contact in the audience and maps the signal to it.
-
New contact w/ contact key: If no contact exists and the identifiable attribute is a contact key, the signal gets discarded (contact keys alone cannot create reachable contacts).
Important
All signal processing and contact mapping relies entirely on the identifiable attributes you provide. The system cannot process signals without proper identifiable attributes.
Example usage
Import shopping behavior signals
mutation {
createSignals(
signals: [
{
appKey: "your-app-key-here"
identifiableAttributes: { email: "[email protected]" }
sessionId: "shopping-session-001"
signalContent: {
signalType: "addToCart"
name: "Added item to cart"
category: "Behavior"
signalTimestamp: "2025-09-21T14:30:00.000Z"
effect: "positive"
productId: "PROD-001"
productName: "Premium Headphones"
unitPrice: 199.99
itemQuantity: 1
}
}
]
) {
signalIds
}
}
Import test signals for validation
mutation {
createSignals(
signals: [
{
appKey: "your-app-key-here"
identifiableAttributes: { contactKey: "TEST-CONTACT-001" }
test: true
signalContent: {
signalType: "pageView"
name: "Test page view"
category: "Behavior"
signalTimestamp: "2025-09-21T15:00:00.000Z"
effect: "positive"
url: "https://example.com/test-page"
}
}
]
) {
signalIds
}
}