> For the complete documentation index, see [llms.txt](https://docs.luciq.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.luciq.ai/ios/setup-luciq-for-ios/custom-settings/user-identification/user-events.md).

# User Events

You can log custom user events throughout your application. Custom events are automatically included with each report.

{% tabs %}
{% tab title="Swift" %}
{% code overflow="wrap" %}

```swift
Luciq.logUserEvent(withName: "Skipped Walkthrough")
```

{% endcode %}
{% endtab %}

{% tab title="Objective-C" %}
{% code overflow="wrap" %}

```objectivec
[Luciq logUserEventWithName:@"Skipped Walkthrough"];
```

{% endcode %}
{% endtab %}
{% endtabs %}

## Logging User Events with Parameters

Starting from SDK version **19.8.0**, you can attach key-value parameters to a user event to capture additional context. Pass an array of `UserEventParam` instances alongside the event name.

{% tabs %}
{% tab title="Swift" %}
{% code overflow="wrap" %}

```swift
Luciq.logUserEvent(withName: "Completed Purchase", parameters: [
    UserEventParam(key: "item", value: "Premium Plan"),
    UserEventParam(key: "currency", value: "USD")
])
```

{% endcode %}
{% endtab %}

{% tab title="Objective-C" %}
{% code overflow="wrap" %}

```objectivec
[Luciq logUserEventWithName:@"Completed Purchase" parameters:@[
    [[LCQUserEventParam alloc] initWithKey:@"item" value:@"Premium Plan"],
    [[LCQUserEventParam alloc] initWithKey:@"currency" value:@"USD"]
]];
```

{% endcode %}
{% endtab %}
{% endtabs %}

{% hint style="info" %}

#### Scope and behavior

* Keys are limited to 50 characters and values to 200 characters. Entries that are empty, exceed these limits, or repeat a key already added are dropped with a console error.
* Up to 15 parameters can be attached to an event by default. Reach out to Luciq support if your account needs a higher limit.
* Logging additional parameters for the same event name merges them into the existing set using first-wins semantics — an earlier value for a key is kept and the new value is dropped — and the merged set is still capped at the configured limit.
  {% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.luciq.ai/ios/setup-luciq-for-ios/custom-settings/user-identification/user-events.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
