UMAP360 attributes each profile's activity to the campaigns that drove it, and forwards qualifying conversions back to the ad platforms (Google / Meta) through their conversion APIs (CAPI). It does this from the campaign context you attach to events.
Send campaign context
Put acquisition data under context.campaign. UMAP360 recognises the standard
UTM fields and the platform click-IDs:
{
"type": "page",
"messageId": "msg_2001",
"timestamp": "2026-06-08T10:00:00.000Z",
"anonymousId": "anon_xyz789",
"context": {
"campaign": {
"source": "google",
"medium": "cpc",
"name": "spring_sale",
"term": "running shoes",
"content": "ad_a",
"gclid": "Cj0KCQ...",
"fbclid": "IwAR2...",
"ttclid": "...",
"msclkid": "...",
"li_fat_id": "..."
}
}
}Beyond the five above, UMAP360 also recognises gbraid, wbraid, twclid,
igshid, epik, dclid, rdt_cid, and gad_source, plus a
campaign.referrer_chain (the cross-domain referrers that led to the session).
All are associated with the visitor's profile. The Web SDK captures these from the
URL and populates context.campaign for you; over REST you attach the fields
yourself — see the full context
shape.
First touch and last touch
Each profile records both its first touch (the source/medium/campaign of the
first event seen) and its last touch (the most recent), so you can attribute
on either model. These are surfaced per profile through the Profiles
API (first_touch / last_touch).
Conversion forwarding (CAPI)
When a conversion event is ingested for a profile that has stored click-IDs and an active ad connector, UMAP360 queues a conversion to the matching platform (Google Ads / Meta CAPI), hashing PII (email / phone) before it leaves.
Conversion capture matches on the exact event name. By default these names
qualify (send the literal name, optionally $-prefixed):
purchase | sign_up | add_to_cart | initiate_checkout | lead | subscribe |
|---|
The event name must match exactly
A track event is stored under whatever you put in event. event: "purchase"
qualifies for conversion forwarding; event: "Purchase Completed" does not —
it's a perfectly valid event, but the name doesn't match the conversion set.
Connectors can be configured with a custom set of qualifying names; absent that,
the defaults above apply.
Conversion value is taken from properties.value and properties.currency
(currency defaults to INR when omitted), and properties.order_id is used to
de-duplicate the conversion:
{
"type": "track",
"event": "purchase",
"messageId": "msg_2002",
"timestamp": "2026-06-08T10:05:00.000Z",
"anonymousId": "anon_xyz789",
"userId": "user_456",
"properties": { "order_id": "ORD-123", "value": 49.99, "currency": "USD" }
}An out-of-range or non-numeric value is stored as null (the conversion still
ingests) rather than dropping the whole event.
Next
- Profiles API — read a profile's
stored click-IDs via
GET /v1-profiles/:id/identities. - Identity stitching — click-IDs attach to the resolved profile, so accurate identity is what makes attribution work.
- Event ingestion —
the full
contextshape.
Last updated 2026-06-10