# Setting up Your Events

Setting up your events is the most important part of setting up Freshpaint. Once you've setup your events, you can then send those events into any of the destinations you have enabled. We recommend creating a spreadsheet of all the events you and your team will need. Once you've created this list, go through and define each of them.

{% hint style="info" %}
If you are on our paid account plan, we'll guide you through the implementation process and help you develop an event capture strategy.\
\
Reach out to <support@freshpaint.io> and we'll find a time to jump on an onboarding call together.
{% endhint %}

There are several ways to define events in Freshpaint:

When possible, we recommend defining events with either the visual tagger or with Live View. Here is a table of which ways to define events are supported by each SDK:

|                                                                                                                 | Web     | React Native | iOS     | Android |
| --------------------------------------------------------------------------------------------------------------- | ------- | ------------ | ------- | ------- |
| [The Visual Tagger](https://documentation.freshpaint.io/readme/setting-up-your-events#the-visual-editor)        | **YES** | no           | no      | no      |
| [The Live View](https://documentation.freshpaint.io/readme/setting-up-your-events#liveview)                     | **YES** | no           | no      | no      |
| [The Event Library](#the-event-library)                                                                         | **YES** | **YES**      | no      | no      |
| [With Precision Tracking](https://documentation.freshpaint.io/readme/setting-up-your-events#precision-tracking) | **YES** | **YES**      | **YES** | **YES** |

## The Visual Tagger

![](/files/-MASa8En3qUMokggvs6i)

The visual tagger is the recommended way to setup events for non-technical users. The visual tagger provides a point and click interface for creating events. For more information on how to use the visual tagger, see our guide:

{% content-ref url="/pages/GolcOdNoHBrmglNXb7wP" %}
[Visual Tagger](/admin-panel/events/visual-tagger.md)
{% endcontent-ref %}

## Liveview

![](/files/-MFbToT6WKyRlL3Z9ee7)

Defining events through Liveview is the other way we recommend defining events. If you want to define an action, you can perform it on your website, then click **Create Event** in Liveview next to the action you just performed. This will take you to the events library page with the definition for your event pre-populated. For more information, see our guide to the Liveview:

{% content-ref url="/pages/-MA7mdGn5xPxNWaqgJQk" %}
[Live View](/admin-panel/investigate-testing-and-debugging/liveview.md)
{% endcontent-ref %}

## The Event Library

![](/files/-MAbrHQ1wfF0HX73Q8Vh)

The event library editor is a more advanced way to define events. The event editor is more expressive than either liveview or the visual tagger, but you do need to be a bit technical to understand how to use it. If you are technical and want to create an event definition that you can't easily express in the visual tagger, the event library editor may be the best option available. See our guide to the Event Library for more information:

{% content-ref url="/pages/-MA7mT5mlBxf1RLoYPvc" %}
[Event Library](/admin-panel/events.md)
{% endcontent-ref %}

## Precision Tracking

{% tabs %}
{% tab title="Web" %}

```javascript
freshpaint.track("login", {"property": "value"});
```

{% endtab %}

{% tab title="React Native" %}

```javascript
freshpaint.track("login", {"property": "value"});
```

{% endtab %}

{% tab title="iOS Swift" %}

```swift
Freshpaint.shared().track(
    "Purchase", 
    properties: ["price": 500]
)
```

{% endtab %}

{% tab title="iOS Objective-C" %}

```objectivec
[[FPAnalytics sharedAnalytics]
              track:@"login" 
              properties:@{ @"property": @"value" }];
```

{% endtab %}

{% tab title="Android" %}

```java
Freshpaint
    .with(getActivity().getApplicationContext())
    .track("login", new Properties().putValue("property", "value"));
```

{% endtab %}
{% endtabs %}

If you want to track events that aren't automatically captured by Autotrack, you can use the traditional approach of writing code to collect that data. See the docs on the Precision Tracking source for more information:

{% content-ref url="/pages/-MCFOC93\_TR504V9KDaF" %}
[Precision Tracking](/integrations/sources/web/precision-tracking.md)
{% endcontent-ref %}

## Cross Domain Tracking

Our **Cross-Domain Tracking** feature ensures seamless user tracking across multiple domains by passing unique identifiers and other parameters from one domain to another (Freshpaint must be installed on all domains). This approach eliminates tracking gaps, enhances analytics accuracy, and supports a more comprehensive understanding of the customer journey. Click the link below to read more about Cross Domain tracking.


---

# 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://documentation.freshpaint.io/readme/setting-up-your-events.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.
