Event Metadata Types
$ curl https://api.intercom.io/events \
-X POST \
-H 'Authorization:Bearer <Your access token>' \
-H "Content-Type: application/json" -d'
{
"event_name" : "placed-order",
"created_at": 1389913941,
"user_id": "314159",
"metadata": {
"order_date": 1392036272,
"stripe_invoice": "inv_3434343434",
"order_number": {
"value":"3434-3434",
"url": "https://example.org/orders/3434-3434"
},
"price": {
"currency":"usd",
"amount": 2999
}
}
}'
var more_metadata = {
order_date: 1392036272,
stripe_invoice: 'inv_3434343434',
order_number: {
value: "3434-3434",
url: 'https://example.org/orders/3434-3434'
},
price: {
currency: 'usd',
amount: 2999
}
};
Intercom('trackEvent', 'placed-order', more_metadata);
more_metadata = {
:order_date => Time.now.to_i,
:stripe_invoice => 'inv_3434343434',
:order_number => {
:value => '3434-3434',
:url => 'https://example.org/orders/3434-3434'
},
price: {
:currency => 'usd',
:amount => 2999
}
}
intercom.events.create({
:event_name => "placed-order",
:email => current_user.email,
:created_at => 1391691571,
:metadata => more_metadata
})
<?php
$metadata = ([
"order_date" => time(),
"stripe_invoice" => "inv_3434343434",
"order_number" => ([
"value" => "3434-3434",
"url" => "https://example.org/orders/3434-3434"]),
"price" => ([
"currency" => "usd",
"amount" => 2999])
]);
$intercom->events->create([
"event_name" => "placed-order",
"created_at" => 1500907515,
"user_id" => "20413",
"metadata" => $metadata
]);
?>
Map<String,Object> order = Maps.newHashMap();
order.put("value", "3434-3434");
order.put("url", "https://example.org/orders/3434-3434");
Map<String,Object> price = Maps.newHashMap();
price.put("currency", "usd");
price.put("amount", 2999);
Map<String,Object> meta = Maps.newHashMap();
meta.put("order_date", currentTimeMillis()/1000L);
meta.put("stripe_invoice", "inv_3434343434");
meta.put("price", price);
meta.put("order_number", order);
Event event = new Event()
.setEventName("placed-order")
.setUserID("314159")
.setMetadata(meta);
Event.create(event);
# The metadata key values in the example
# are treated as follows-
#
# - order_date: a Date
# (key ends with '_date').
#
# - stripe_invoice: The identifier of the Stripe invoice
# (has a 'stripe_invoice' key)
#
# - order_number: Rich Link
# (contains 'url' and 'value')
#
# - price: Amount in US Dollars
# (contains 'amount' and 'currency')
Metadata Objects support a few simple types that Intercom can present on your behalf -
Type | Description | Example |
---|---|---|
String | The value is a JSON String | "source":"desktop" |
Number | The value is a JSON Number | "load": 3.67 |
Date | The key ends with the String _date and the value is a Unix timestamp, assumed to be in the UTC timezone. | "contact_date": 1392036272 |
Link | The value is a HTTP or HTTPS URI. | "article": "https://example.org/ab1de.html" |
Rich Link | The value is a JSON object that contains url and value keys. | "article": {"url": "https://example.org/ab1de.html", "value":"the dude abides"} |
Stripe Data | The key is one of - 'stripe_customer', 'stripe_invoice', 'stripe_charge'. The value is a Stripe identifier. | "stripe_customer": "cus_42424242424" |
Monetary Amount | The value is a JSON object that contains amount and currency keys. The amount key is a positive integer representing the amount in cents. The price in the example to the right denotes €349.99. | "price": {"amount": 34999, "currency": "eur"} |
API Responses
- Successful responses to submitted events return
202 Accepted
with an empty body. - Unauthorised access will be rejected with a
401 Unauthorized
or403 Forbidden
response code. - Events sent about users that cannot be found will return a
404 Not Found
. - Event lists containing duplicate events will have those duplicates ignored.
- Server errors will return a
500
response code and may contain an error message in the body.