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):

purchasesign_upadd_to_cartinitiate_checkoutleadsubscribe

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 context shape.

Last updated 2026-06-10

We use cookies for analytics — to understand how visitors use UMAP360 and improve the product. Essential cookies (session, forms) always run; analytics cookies wait for your call. See cookie policy.