Skip to main content
An Interaction in Omneo is a lightweight record of something a customer did that is not a purchase. Each interaction captures one action, in one channel, carrying a signal of positive, neutral, or negative. It is the catch-all activity record for anything that does not have its own dedicated model. Where a Transaction records a purchase and a Visit records physical presence, an interaction records the smaller signals in between: a login, a product view, a form submission, a clienteling screen view. Any one of these on its own is minor. Together they build a picture of how a customer engages with a brand between purchases.

What an interaction captures

Every interaction is described by five required fields.
FieldDescription
actionThe kind of action that took place. One of broadcast, disclose, feedback, product, reach, refer, service, visit, view.
channelWhere it happened. One of app, email, location, push, sms, social, support, website.
signalThe sentiment of the action, as an integer. 1 is positive, 0 is neutral, -1 is negative.
nameA human-readable label for the interaction, for example “Viewed product page”.
namespaceA handle you define to group related interactions, for example web-engagement or clienteling.
A small set of optional fields adds detail: description, url, duration, latitude and longitude, interacted_at (when the action happened, if not now), tags, and a free-form meta array. The signal field is what makes interactions useful for sentiment over time. A run of negative-signal support interactions followed by a positive-signal one tells a story that no single record could.

The catch-all role

Interactions exist so that meaningful customer activity has somewhere to live even when it does not justify its own model. Reach for an interaction when an event is worth remembering but is too small or too varied to model on its own. Do not use an interaction where a dedicated model already exists. Those models carry richer, purpose-built fields and their own reporting, and duplicating them as interactions splits the same activity across two places.
Record this asNot as an interaction
A page view, product view, login, or form submissionA purchase, which is a Transaction
A generic engagement event from any channelA store visit or appointment, which is a Visit
A clienteling screen view or staff-assisted actionA rating, NPS, or CSAT response, which is a Rating
Any signal that has no model of its ownA field change on a profile, which is captured by the profile audit log

Linking to other models

Interactions are deliberately flexible. A single interaction can link to almost any other object in Omneo, which makes it a connecting record as much as an activity record. Use this to attribute an interaction to where, what, and who it involved.
LinkFieldExample
Locationlocation_idA product view in a specific store
Productproduct_idA view or enquiry about a product
Product variantproduct_variant_idInterest in a specific size or colour
Product categoryproduct_category_idBrowsing a category
Staffstaff_idThe staff member who assisted, as a profile
Organisationorganisation_idA B2B account the action belongs to
Beyond these, an interaction can point at almost any other Omneo object through a polymorphic link: set interacted_type to the object type and interacted_id to its ID. Supported types include transaction, order, appointment, questionnaire_submission, rating, reward, benefit, list, and many more. This is how an interaction ties otherwise separate records together, for example linking a feedback interaction to the questionnaire_submission that produced it.

Recording an interaction

How you record an interaction depends on how much you know about the customer.
ContextRouteWhen to use
Server-side integration that knows only an identifierGlobal POST /v3/interactionsYou hold a system identity, email, or mobile, but not the Omneo profile ID. Supply an identifier and Omneo resolves it to the right profile.
Customer-facing experience with a known profileProfile-scoped POST /v3/profiles/{profile}/interactionsA logged-in session or any context where you already hold the profile, such as a loyalty app or clienteling screen.
Both routes write the same kind of record. The difference is how the profile is determined. For the full mechanics, see Working with interactions and Global vs profile-scoped endpoints.

Interactions are event records

Treat an interaction as a record of a moment that has passed. In normal use you create it and move on; you do not go back and change it. This is what makes a profile’s interaction history a reliable timeline. Interactions are not immutable in the way a Transaction is. The API does expose edit and delete operations, each behind its own permission scope, for correcting a mistake or honouring a deletion request. Use them for correction, not as part of normal activity recording.

Convenient, not creepy

Interactions make it easy to record a lot of activity, so the question is not what you can track but what you should.
Only record interactions a customer would expect and find useful. The test is simple: if the customer saw the record, would it feel convenient, or creepy? Track the actions that help you serve them better, and leave the rest.
Actions that pass this test, and that interactions are well suited to, include:
  • A login on a website or app
  • A view of a page or a product
  • A view within a clienteling session
  • A submission of a third-party form

Using interactions

Interactions earn their place in two ways.
  • Reporting: browse interactions across all profiles with the global Interactions API to understand engagement, channel mix, and sentiment trends alongside transaction data.
  • Incentives and gamification: each new interaction fires an interaction.created event, which is available as a Reaction trigger. Use it to award points, issue a benefit, or progress an achievement when a customer takes a tracked action, for example rewarding the first product review of the month.