# Record Attribution

The `recordAttribution` method provides a low-level standalone API to submit events to Nosto for processing in the backend. It is to be used for a standalone attribution submission that is not covered by the alternatives:

* Parameterless attribution usage
* The usage of attribution URL parameters
* The Session API
* The Request API (`api.createRecommendationRequest`)

```typescript
nostojs(api => api.recordAttribution({ 
  type: "vp",
  target: "6829460553806", 
  ref: "191666803", 
  refType: "cmp" })
  .done() 
)
```

The API method `recordAttribution` accepts one event at a time, but users can chain multiple calls to `recordAttribution` and add as many events as they want.

## Parameters

<table><thead><tr><th width="271" align="center">name</th><th align="center">field type</th><th align="center">is required</th><th align="center">description</th></tr></thead><tbody><tr><td align="center">type</td><td align="center">string</td><td align="center">yes</td><td align="center">type of event to which a placement (ref) should be attributed. Refer <a data-mention href="#event-types">#event-types</a></td></tr><tr><td align="center">target</td><td align="center">string</td><td align="center">yes</td><td align="center">id of the element that's been loaded as a result of the event</td></tr><tr><td align="center">ref</td><td align="center">string</td><td align="center">no</td><td align="center">recommendation id of the result that contained the link which triggered the event</td></tr><tr><td align="center">refSrc</td><td align="center">string</td><td align="center">no</td><td align="center">product id of parent element of the link that triggered the event</td></tr><tr><td align="center">targetFragment</td><td align="center">string</td><td align="center">no</td><td align="center">the <code>skuId</code> in case of `<code>vp</code>events</td></tr><tr><td align="center">refType</td><td align="center">string</td><td align="center">no</td><td align="center">Refer <a data-mention href="#event-ref-types">#event-ref-types</a></td></tr></tbody></table>

## Event Types

Nosto supports following predefined event types

|               Type               | Description                                                                                                                                                                                                                                                              |
| :------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|         View Product (VP)        | An event associated with viewing a single product                                                                                                                                                                                                                        |
|        View Category (VC)        | An event associated with event a single category of items                                                                                                                                                                                                                |
|       Internal Search (IS)       | An event associated with results of search internal to a merchant's website                                                                                                                                                                                              |
|         Add to cart (CP)         | An event associated with adding a product or bundle to a cart                                                                                                                                                                                                            |
|      External Campaign (EC)      | An event associated with campaigns, which are not part of nosto, that directed a user to a merchant website. These campaigns will contain google's UTM parameters ([UTM parameters](https://en.wikipedia.org/wiki/UTM_parameters) for more info.) in the request URL     |
|       Custom Campaign (CC)       | An event associated with campaigns, which are not part of nosto, that directed a user to a merchant website. These campaigns will not contain google's UTM parameters in the request URL                                                                                 |
|       External Search (ES)       | An event associated with search outside of merchant's website (Google for e.g.) that brought the user to merchant's website                                                                                                                                              |
|         Give Coupon (GC)         | An event associated with a coupon code campaign popup in which the customer has acted upon                                                                                                                                                                               |
|           Source (SRC)           | An event associated with a customer action which needs to be attributed to one of Nosto's feature (api, email, rec, imgrec, cmp). Here the information is usually passed through a pre-configured source parameters name (`nosto_source`, by default) in the request URL |
| Cart Popup Recommendations (CPR) | An event associated with a recommendation, that's shown when a product is added to cart, in which a customer has acted upon                                                                                                                                              |
|          Page Load (PL)          | An event associated with a page load merchant's website                                                                                                                                                                                                                  |
|      Content Campaign (CON)      | Event triggered when a customer performs an action inside a content campaign                                                                                                                                                                                             |

## Event Ref Types

The `refType` (reference types) parameter is introduced as a replacement for Nosto's legacy `src`event. It's specifies the type of source (Nosto feature) that contributed to the attribution. The table below lists all possible reference types

| Ref Type | Description                                           |
| -------- | ----------------------------------------------------- |
| email    | Triggered email                                       |
| imgrec   | Email widgets                                         |
| rec      | Onsite recommendation (Nosto recommendation template) |
| api      | API recommendations (Session/JS API)                  |
| oc       | Onsite campaigns                                      |
| cmp      | Category merchandising                                |
| os       | Onsite search                                         |

## Examples

### Attributing a placement click to a `vp` (View Product) event

```javascript
nostojs(api => {
  api
  .recordAttribution({ type: "vp", target: "12345678", ref: "frontpage-nosto-1" })
  .done()
});
```

In the above example,

* `vp` specifies the type of event and it corresponds to View Product
* `12345678` specifies the target and it corresponds to the ID of the product that's being viewed
* `frontpage-nosto-1` specifies the slot’s ID from the placement that hosted the product that’s being clicked

### Attributing a placement click to a `cc` (Custom Campaign) event

```javascript
nostojs(api => {
  api
  .recordAttribution({ type: "cc", target: "12345678", ref: "frontpage-nosto-1" })
  .done()
})
```

In the above example,

* `cc` specifies the type of event and it corresponds to Custom Campaign
* `12345678` specifies the target and it corresponds to the ID of the product that's being viewed
* `frontpage-nosto-1` specifies the slot’s ID from the placement that hosted the product that’s being clicked

### Adding the fourth `refSrc` parameter

```javascript
nostojs(api => api
  .recordAttribution({ type: "vp", target: "7513863258337", ref: "productpage-nosto-3", refSrc: "7513872007393" })
  .done()
})
```

In the above example,

* `vp` specifies the type of event and it corresponds to View Product
* `7513863258337` specifies the target and it corresponds to the ID of the product that's being viewed
* `productpage-nosto-3` specifies the slot’s ID from the placement that hosted the product that’s being clicked
* `7513872007393` specifies the reference source and it corresponds to the ID of the product displayed in current page (PDP), that contained the `ref` element, (`productpage-nosto-3`)

Here we are recording a `View Product` event for product 7513863258337 which was clicked from the recommendation slot `productpage-nosto-3` while on another product page `7513872007393`

### Attributing a click inside a content campaign to a `con` (Content Campaign) event

```javascript
nostojs(api => {
  api
    .recordAttribution({ type: "con", target: "6ef452da787623f2" })
    .done()
})
```

In the above example,

* `con` specifies the type of event and it corresponds to Content Campaign
* `6ef452da787623f2` specifies the target and it corresponds to the ID of the content campaign inside which a customer performs an action

In similar way, we will be able to record attribution for all the event types listed under `Event Types` section of this documentation.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.nosto.com/techdocs/apis/frontend/js-apis/record-attribution.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
