Adding Tags to a Request
You can use tagging to supply extra context on errors and performance incidents. Tagging can help to add information that is not already part of a request, such as the session data, headers, environment data, or parameters. Tags can also be used to filter on samples within an incident to find all errors for a specific user or slow pages for a particular locale.
You can set tags wherever the current transaction or span is accessible. We recommend calling it before your application code runs in a request, such as a callback. You can see what tags apply to a sample on the Error and Performance incident page.
Using Link Templates it's possible to add links to your application with tag data, such as the admin panel for the signed-in user. You can see this in practice in the below screenshot, with the Link 1
and Link 2
tags.

Ruby
With the AppSignal for Ruby gem, use the Appsignal.tag_request (or Appsignal.tag_job) helper methods to add tags to error and performance samples.
You can use Appsignal.tag_request wherever the current transaction is accessible, we recommend calling it before your application code runs in the request, such as in a before_action using Rails.
before_action do
Appsignal.tag_request(
:user_id => current_user.id,
:stripe_customer_id => stripe_customer_id,
:locale => I18n.locale,
:default_locale => I18n.default_locale
)
end
Limitations
Tags that do not meet these limitations are dropped without warning.
- The tag key must be a
String
orSymbol
. - The tagged value must be a
String
,Symbol
orInteger
. - The length of the tag key and tagged value must be less than 100 characters.
- Nested hash values are not supported for tags, please use custom data instead.
# Unsupported: hash value type is not supported
Appsignal.tag_request(
:i18n => {
:locale => I18n.locale,
:default_locale => I18n.default_locale
}
)
Elixir
Use the Appsignal.Span.set_sample_data
function to supply extra context on errors and performance samples. Use the "tags"
sample key for the function to add tags to the span.
Appsignal.Span.set_sample_data(
Appsignal.Tracer.root_span,
"tags",
%{
locale: "en",
user_id: user_id,
stripe_customer_id: stripe_customer_id,
locale: locale,
default_locale: default_locale
}
)
Last call is leading
The set_sample_data
helper can be called multiple times, but only the last value will be retained. When the code is run below:
Appsignal.Span.set_sample_data(Appsignal.Tracer.root_span, "tags", %{locale: "en"})
Appsignal.Span.set_sample_data(Appsignal.Tracer.root_span, "tags", %{user: "bob"})
Appsignal.Span.set_sample_data(Appsignal.Tracer.root_span, "tags", %{locale: "de"})
it will result in the following tags being stored:
%{
locale: "de"
}
Limitations
Tags that do not meet these limitations are dropped without warning.
- The tag key must be a
String
orAtom
. - The tagged value must be a
String
,Atom
orInteger
. - Nested map values are not supported for tags, please use custom data instead.
# Unsupported: map value type is not supported
Appsignal.Span.set_sample_data(
Appsignal.Tracer.root_span,
"tags",
%{
i18n: %{
locale: "en_GB",
default_locale: "en_US"
}
}
)
Node.js
Import the setTag
helper function to add tags to spans for errors and performance samples.
import { setTag } from "@appsignal/nodejs";
setTag("user_id", user_id);
setTag("stripe_customer_id", stripe_customer_id);
setTag("locale", locale);
setTag("default_locale", default_locale);
Limitations
Tags that do not meet these limitations are dropped without warning.
- The tag key must be a
String
. - The tagged value must be a
String
,Number
orBoolean
. - Nested object values are not supported for tags, please use the
setCustomData
helper function instead.
const tracer = appsignal.tracer();
const span = tracer.currentSpan();
# Unsupported: object value type is not supported
span.set("i18n", { locale: "en_GB", default_locale: "en_US" });