How to create device groups

Group end-users based on their devices, operating systems, or browsers with information provided by the User-Agent HTTP request header. By using Device Groups to categorize requests, you can make your application more responsive.

With this guide, you’ll create and activate a new device group to identify mobile devices that access your application.


  1. Access Azion Console.
  2. On the upper-left corner of the page, open the Products menu, represented by three horizontal lines, and then select Edge Application.
  3. Click the edge application to which you want to create a new device group.
  4. Select the Device Groups tab.
  5. Click the Add Device Group button.
  6. Name your device group. The name of your device group can’t contain spaces and must have only alphanumeric characters. For example: Mobile.
  7. In the User Agent field, specify a regular expression that will meet the desired criteria. For example: (Mobile|iPhone|Android).
  8. Click the Save button.

Now that your device group is set, you can use Rules Engine to determine what action must be taken if the expression is matched to a User-Agent header. In this case, a custom Device-Is header will be received in the response:

  1. Navigate to the Rules Engine tab.
  2. Click Add Rule > select Response Phase.
  3. Give your rule a name. For example: Device Group: Mobile.
  4. In the Criteria section, select the variable ${device_group}.
  5. Select the operator is equal.
  6. Add the name of the device group as configured in the previous instructions. For example: Mobile.
  7. In the Behavior section, select the behavior Add Response Header.
  8. As an argument, add Device-Is: Mobile device.
  9. Click the Save button.
  10. Wait a few minutes for the changes to propagate through the edge.

If your current browser sends a User-Agent header similar to the example, you can test whether the request went through by accessing your application from a mobile device or artificially adding the header and its value to the request using the following command:

Terminal window
curl -I https://xxxxxxxxxx.map.azionedge.net/ -H "User-Agent: iPhone Android"

You should receive a list of headers including the custom header added by the rule: device-is: Mobile device. Now that you’ve verified that the devices are being correctly categorized, you can customize the desired behavior using the same rule.


  1. Run the following POST request in your terminal, replacing [TOKEN VALUE] with your personal token and the <edge_application_id> variable with your edge application ID:
Terminal window
curl --location 'https://api.azionapi.net/edge_applications/<edge_application_id>/device_groups' \
--header 'Accept: application/json; version=3' \
--header 'Content-Type: application/json' \
--header 'Authorization: Token [TOKEN VALUE]' \
--data '{
"name": "Mobile",
"user_agent": "(Mobile|iPhone|Android)"
}'
KeyDescription
nameThe name of the device group. Must be alphanumeric.
user_agentThe regular expression that should be matched to the contents of the User-Agent header from the request.
  1. You’ll receive a response similar to this:
{
"results": {
"id": <device_group_id>,
"name": "Mobile",
"user_agent": "(Mobile|iPhone|Android)"
}
}
  1. Run the following POST request in your terminal, replacing [TOKEN VALUE] with your personal token, the <edge_application_id> variable with your edge application ID, and the input_value variable with the name of your device group:
Terminal window
curl --location 'https://api.azionapi.net/edge_applications/<edge_application_id>/rules_engine/response/rules' \
--header 'Accept: application/json; version=3' \
--header 'Content-Type: application/json' \
--header 'Authorization: Token [TOKEN VALUE]' \
--data '{
"name": "DG - Mobile",
"behaviors": [
{
"name": "add_response_header",
"target": "Device-Is: Mobile device"
}
],
"criteria": [
[
{
"variable": "${device_group}",
"operator": "is_equal",
"conditional": "if",
"input_value": "Mobile"
}
]
]
}'
  1. You’ll receive a response similar to this:
{
"results": {
"id": <rule_id>,
"name": "DG - Mobile",
"phase": "response",
"behaviors": [
{
"name": "add_response_header",
"target": "Device-Is: Mobile device"
}
],
"criteria": [
[
{
"variable": "${device_group}",
"operator": "is_equal",
"conditional": "if",
"input_value": "Mobile"
}
]
],
"is_active": true,
"order": 3,
"description": ""
},
}
  1. Wait a few minutes for the changes to propagate to the edge nodes.
  2. Run the following cURL request manipulating the User-Agent header to match the device group:
Terminal window
curl -I https://xxxxxxxxxx.map.azionedge.net/ -H "User-Agent: Android"
  1. If you receive a response similar to the following, your device group has been successfully categorized:
Terminal window
HTTP/2 200
content-type: text/html; charset=utf-8
content-length: 9593
device-is: Mobile device

You may now deactivate the rule or create a different rule to fit the application’s settings to your needs.


Contributors