XeniaXenia Docs

Integrations

PreviousNext

The nodes that write to an outside system, and the one that reads a Xenia audience.

Integration nodes reach out of the journey. Five of them write to an outside system, and Audience Lookup reads Xenia's own audience and identity data.

Each of the outside-system nodes needs its connector configured in the same environment, and each needs an email field telling it which variable identifies the person.

Audience Lookup

Checks audience membership, lists an audience's members, or resolves the full customer across connected systems. All three operations read; none of them changes membership.

Configure

SettingWhat it does
AudienceWhich audience
OperationCHECK, GET_ALL, or ENRICH_USER. Unset behaves as CHECK
Email fieldWhich email to look the customer up by

Required: the audience.

Produces

The three operations produce completely different variables.

OperationWhat it publishes
CHECK{{audienceId}}, {{inAudience}}, {{customerId}}
GET_ALL{{audienceId}}, {{count}}, {{memberIds}}, {{members}}
ENRICH_USER{{found}}, {{customerId}}, {{email}}, {{phone}}, the ids this person has in each connected system ({{shopifyCustomerId}}, {{klaviyoProfileId}}, {{hubspotContactId}}, {{salesforceContactId}}, {{xeniaPersonId}}, {{xeniaVisitorId}}, {{externalAnonymousId}}), {{sourceFlags}}, {{createdAt}}, {{updatedAt}}, {{orderCount}}, {{totalSpent}}, {{avgOrderValue}}, {{lastPurchaseAt}}

Watch out

  • ENRICH_USER is the platform-agnostic way to make spend and recency testable, so reach for it when there is no Shopify store connected. With one connected, Enrich Customer reads the store's numbers directly.
  • GET_ALL returns a list, not a customer. Nothing after it can send to a person until you Iterate over the members.
  • CHECK answers membership of one named audience.

Meta Audience Sync

Adds or removes the customer from a Meta Custom Audience, so paid and owned channels agree: suppress buyers from prospecting, or retarget people who did not convert.

Not shown in Shopify-billed workspaces.

Configure

SettingWhat it does
Meta connectorThe connected Meta account
AudienceWhich Custom Audience
OperationADD or REMOVE
Email fieldWhich email to match on
Phone fieldWhich phone to match on

Required: the connector and the audience.

Watch out

  • Removal matters as much as addition. Without a REMOVE somewhere, customers stay in the audience forever.
  • Meta matches on hashed email or phone, so the customer must be identified by the time this runs.
  • If what happened is a conversion rather than a change to who should see the ads, use Meta CAPI Event.

Meta CAPI Event

Sends a server-side conversion event to Meta, for conversions the browser pixel would miss: a server-confirmed purchase, an offline lead.

Not shown in Shopify-billed workspaces.

Configure

SettingWhat it does
Meta connectorThe connected Meta account
Event namePurchase, Lead, ViewContent, AddToCart, or CompleteRegistration
Action sourceWhere the conversion happened: website, email, app, crm, chat, physical store, system generated, or other
Email fieldWhich email to match on
Phone fieldWhich phone to match on
CurrencyCurrency of the value
Value fieldWhich value to report, such as the order total
Event source URLThe URL the conversion is attributed to

Required: the connector and the event name.

Watch out

  • Send the same event only once per conversion. Placing it after a retry or inside a loop double-counts and distorts optimisation.
  • Purchase is only useful with a currency and a value, so pass both from the order.
  • This node carries no event id, so it cannot be deduplicated against a browser pixel's copy of the same event. Do not report an event the pixel already reports.

HubSpot Update Contact

Writes properties onto a HubSpot contact mid-journey, so sales sees what marketing just learned. Listed in the palette as HubSpot: Update Contact.

Configure

SettingWhat it does
HubSpot connectorThe connected HubSpot account
Email fieldWhich email identifies the contact
PropertiesThe properties to write, by internal name

Required: the connector. An empty property set is a no-op rather than a failure.

Watch out

  • The property must already exist in HubSpot with the internal name you use. A name that does not exist fails silently as far as the journey is concerned.
  • Writing a property that a HubSpot Trigger listens for can start another journey. Check for a loop before wiring it.
  • To group the contact rather than record a value, use HubSpot List Sync.

HubSpot List Sync

Adds or removes the contact from a HubSpot static list, so a list that drives someone else's process stays fed. Listed in the palette as HubSpot: List Sync.

Configure

SettingWhat it does
HubSpot connectorThe connected HubSpot account
ListWhich static list
OperationADD or REMOVE. Unset behaves as ADD
Email fieldWhich email identifies the contact

Required: the connector and the list.

Watch out

  • Static lists only. An active list is defined by its own filters in HubSpot and cannot be written to, so set the property its filter reads instead.
  • Without a matching REMOVE somewhere, contacts stay on the list indefinitely.

HubSpot Create Deal

Creates a HubSpot deal and associates it with the contact, so a qualified lead becomes a sales opportunity without anyone retyping it. Listed in the palette as HubSpot: Create Deal.

Configure

SettingWhat it does
HubSpot connectorThe connected HubSpot account
Email fieldWhich email identifies the contact
Deal nameName for the deal
PipelineWhich pipeline, by internal id
Deal stageWhich stage, by internal id
AmountDeal value

Required: the connector and the deal name. An unset pipeline is read as default.

Watch out

  • Pipeline and stage must be the internal ids HubSpot uses, not the labels shown in its UI.
  • It creates a new deal every time it runs. Gate it behind a Rule so one customer passing twice does not open two.
  • If nothing is being sold yet and the point is to record interest, a property on the contact says that without opening a pipeline.