Skip to content

Logging custom events

Learn how to log custom events through the Braze SDK.

Logging a custom event

To log a custom event, use the following event-logging method.

For native Android, you can use the following method:

1
Braze.getInstance(context).logCustomEvent(YOUR_EVENT_NAME);
1
Braze.getInstance(context).logCustomEvent(YOUR_EVENT_NAME)
1
AppDelegate.braze?.logCustomEvent(name: "YOUR_EVENT_NAME")
1
[AppDelegate.braze logCustomEvent:@"YOUR_EVENT_NAME"];

For a standard Web SDK implementation, you can use the following method:

1
braze.logCustomEvent("YOUR_EVENT_NAME");

If you’d like to use Google Tag Manager instead, you can use the Custom Event tag type to call the logCustomEvent method and send custom events to Braze, optionally including custom event properties. To do this:

  1. Enter the Event Name by either using a variable or typing an event name.
  2. Use the Add Row button to add event properties.

A dialog box showing the Braze Action Tag configuration settings. Settings included are "tag type"(custom event), "event name" (button click), and "event properties".

1
braze.logCustomEvent('YOUR_EVENT_NAME');

If you’ve integrated Infillion Beacons into your Android app, you can optionally use visit.getPlace() to log location-specific events. requestImmediateDataFlush verifies that your event will log even if your app is in the background.

1
2
Braze.getInstance(context).logCustomEvent("Entered " + visit.getPlace());
Braze.getInstance(context).requestImmediateDataFlush();
1
2
Braze.getInstance(context).logCustomEvent("Entered " + visit.getPlace())
Braze.getInstance(context).requestImmediateDataFlush()
1
Braze.logCustomEvent("YOUR_EVENT_NAME");
1
m.Braze.logEvent("YOUR_EVENT_NAME")
1
AppboyBinding.LogCustomEvent("YOUR_EVENT_NAME");
1
UBraze->LogCustomEvent(TEXT("YOUR_EVENT_NAME"));

Adding metadata properties

When you log a custom event, you have the option to add metadata about that custom events by passing a properties object with the event. Properties are defined as key-value pairs. Keys are strings and values can be string, numeric, boolean, or Date objects.

To add metadata properties, use the following event-logging method.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Braze.logCustomEvent("YOUR-EVENT-NAME",
    new BrazeProperties(new JSONObject()
        .put("you", "can")
        .put("pass", false)
        .put("orNumbers", 42)
        .put("orDates", new Date())
        .put("or", new JSONArray()
            .put("any")
            .put("array")
            .put("here"))
        .put("andEven", new JSONObject()
            .put("deeply", new JSONArray()
                .put("nested")
                .put("json"))
        )
));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Braze.logCustomEvent("YOUR-EVENT-NAME",
    BrazeProperties(JSONObject()
        .put("you", "can")
        .put("pass", false)
        .put("orNumbers", 42)
        .put("orDates", Date())
        .put("or", JSONArray()
            .put("any")
            .put("array")
            .put("here"))
        .put("andEven", JSONObject()
            .put("deeply", JSONArray()
                .put("nested")
                .put("json"))
        )
))
1
2
3
4
5
6
7
8
9
10
11
12
13
AppDelegate.braze?.logCustomEvent(
  name: "YOUR-EVENT-NAME",
  properties: [
    "you": "can",
    "pass": false,
    "orNumbers": 42,
    "orDates": Date(),
    "or": ["any", "array", "here"],
    "andEven": [
      "deeply": ["nested", "json"]
    ]
  ]
)
1
2
3
4
5
6
7
8
9
10
11
[AppDelegate.braze logCustomEvent:@"YOUR-EVENT-NAME"
                       properties:@{
  @"you": @"can",
  @"pass": @(NO),
  @"orNumbers": @42,
  @"orDates": [NSDate date],
  @"or": @[@"any", @"array", @"here"],
  @"andEven": @{
    @"deeply": @[@"nested", @"json"]
  }
}];
1
2
3
4
5
6
7
8
9
10
braze.logCustomEvent("YOUR-EVENT-NAME", {
  you: "can", 
  pass: false, 
  orNumbers: 42,
  orDates: new Date(),
  or: ["any", "array", "here"],
  andEven: {
     deeply: ["nested", "json"]
  }
});
1
2
3
4
5
braze.logCustomEvent('custom_event_with_properties', properties: {
    'key1': 'value1',
    'key2': ['value2', 'value3'],
    'key3': false,
});
1
2
3
4
5
Braze.logCustomEvent("custom_event_with_properties", {
    key1: "value1",
    key2: ["value2", "value3"],
    key3: false,
});
1
m.Braze.logEvent("YOUR_EVENT_NAME", {"stringPropKey" : "stringPropValue", "intPropKey" : Integer intPropValue})
1
AppboyBinding.LogCustomEvent("event name", properties(Dictionary<string, object>));
1
2
3
4
5
6
7
8
9
TMap<FString, FString> Properties;
Properties.Add(TEXT("you"), TEXT("can"));
Properties.Add(TEXT("pass"), TEXT("false"));
Properties.Add(TEXT("orNumbers"), FString::FromInt(42));
Properties.Add(TEXT("orDates"), FDateTime::Now().ToString());
Properties.Add(TEXT("or"), TEXT("any,array,here")); // Arrays are stored as comma-separated strings
Properties.Add(TEXT("andEven"), TEXT("deeply:nested,json"));

UBraze->LogCustomEventWithProperties(TEXT("YOUR_EVENT_NAME"), Properties);

Best practices

There are three important checks to carry out so that your custom event properties log as expected:

Multiple properties may be logged each time a custom event is logged.

Verify events

Check with your developers which event properties are being tracked. Keep in mind that all event properties are case-sensitive. For additional information on tracking custom events, check out these articles based on your platform:

Verify log

To confirm that the event properties are successfully tracked, you can view all event properties from the Custom Events page.

  1. Go to Data Settings > Custom Events.
  2. Locate your custom event from the list.
  3. For your event, select Manage Properties to view the names of the properties associated with an event.

Verify values

After adding your user as a test user, follow these steps to verify your values:

  1. Perform the custom event within the app.
  2. Wait for roughly 10 seconds for the data to flush.
  3. Refresh the Event User Log to view the custom event and the event property value that was passed with it.
New Stuff!