{"__v":71,"_id":"56448c697a8cb50d00a3ea3f","category":{"__v":26,"_id":"55a4ff5b2e70c0250038050f","pages":["55a4ff7d750a9a23005332af","55a4ff8b750a9a23005332b1","55a4ff9b750a9a23005332b3","55a60bfcaaf9cf1900114efb","55a6184880c8a30d00b32526","55a61ba780c8a30d00b32532","55a61c97aaf9cf1900114f40","55a61ea9aaf9cf1900114f48","55a6206580c8a30d00b32544","55a64277aaf9cf1900114fc2","55a694d1aaf9cf1900115102","55a6a23eaaf9cf19001151e2","55a6a9b389c9da1900e2a41d","55a6aba45f88a70d0065b255","55a90687c8bd450d000dd157","55af84f3aa902f1700300daa","55afa3e3902fd51700f5f858","55b0cc5cb3171b3700b153fa","56015bdc3aa0520d00da0ced","5603fe3490ee490d004404c2","5633dd18d28a340d004004f5","56448c697a8cb50d00a3ea3f","56d7a2ec5208281500a2506c","56d859b8b159f10b00304577","56d9822add90610b002708a1","56ef44c6e8d6fa17006f244f"],"project":"5540ce1b31827a0d007ab1cc","version":"5540ce1c31827a0d007ab1cf","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2015-07-14T12:23:55.603Z","from_sync":false,"order":2,"slug":"features","title":"Features"},"parentDoc":null,"project":"5540ce1b31827a0d007ab1cc","user":"55a5003a750a9a23005332b6","version":{"__v":31,"_id":"5540ce1c31827a0d007ab1cf","project":"5540ce1b31827a0d007ab1cc","createdAt":"2015-04-29T12:27:08.390Z","releaseDate":"2015-04-29T12:27:08.390Z","categories":["5540ce1c31827a0d007ab1d0","5540d91bbb9e762d00f594ad","5540e5f131827a0d007ab212","5540e5febb9e762d00f594d3","5540e61331827a0d007ab213","5540e6195cf9682100d61afa","5540e62631827a0d007ab214","5540e63031827a0d007ab215","5540e63531827a0d007ab216","5540e63e5cf9682100d61afc","5540e6445cf9682100d61afd","5540e64a5cf9682100d61afe","55a4ff5b2e70c0250038050f","55acb28318eefd0d0071d504","55ae1abe8576b92300291c80","55ae453ef302af23000ac109","55af586d555b900d0036d296","55af91dac8a85321007a53c3","55b9fee204775a2f00628071","55b9ff0e04775a2f00628072","55b9ff4604775a2f00628073","55b9ff5fd72d1e1900276a38","55b9ff7f04775a2f00628074","55b9ff90eb08801900f833e5","55b9ffa5d72d1e1900276a39","55b9ffca04775a2f00628075","55b9fffdd72d1e1900276a3a","56bc2f033ee9e70d008b46af","56c2f6efbbf9ec2d00e0fe4f","57595bbb18760817001e8bbe","57d8d9793916800e003dde53"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"","version_clean":"1.0.0","version":"1.0"},"updates":[],"next":{"pages":[],"description":""},"createdAt":"2015-11-12T12:56:09.078Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":0,"body":"* [Tag values](http://docs.pushwoosh.com/docs/segmentation-tags-and-filters#tag-values)\n* [Types of tags](http://docs.pushwoosh.com/docs/segmentation-tags-and-filters#types-of-tags)\n* [Application specific and nonspecific tags](http://docs.pushwoosh.com/docs/segmentation-tags-and-filters#application-specific--nonspecific-tags)\n* [Default tags](http://docs.pushwoosh.com/docs/segmentation-tags-and-filters#default-tags)\n* [Custom tags](http://docs.pushwoosh.com/docs/segmentation-tags-and-filters#custom-tags)\n* [Tags statistics](http://docs.pushwoosh.com/docs/segmentation-tags-and-filters#tags-statistics)\n* [Creating segments](http://docs.pushwoosh.com/docs/segmentation-tags-and-filters#creating-segments)\n\nTags are one of the most useful tools we offer — a lot of sophisticated Pushwoosh functionality is based on this feature. Using tags, you can segment your audience and send push notifications to some users, but not others.\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Deciding Which Tags To Use\",\n  \"body\": \"First, think about your business needs and decide how you want to segment your audience. Do you need to target users based on age, location, in-app purchase history, etc.? Once you’ve decided on segmentation logic, your developers can add tags to your app’s code, which will then allow you to send targeted messages to your users.\"\n}\n[/block]\nTags contain any arbitrary data that you associate with a particular user or device, whether it's username, ID, city, favorite football team, preferred news categories, or any other piece of information about your users. Let’s take a closer look.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Tag Values\"\n}\n[/block]\nTag values can help you make your push campaigns smarter. Each tag is capable of storing *nearly limitless number of values*. Basically, this means that one tag would be enough to record a specific type of information about each end-user in your database.\n\nThere are only a few tags available for each account, but considering the nearly-infinite space for each tag, just a couple of tags are enough to gather an enormous amount of information about your users and set up very complex targeting patterns.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Types of Tags\"\n}\n[/block]\n* **Integer** — used for the integer data (amount of in-game cash acquired, level achieved, age).\n* **String** — used for string values (username, e-mail, identifiers).\n* **List** — the same as String type, but each user may have multiple values set simultaneously (music preferences, news categories, cuisine preferences).\n* **Boolean** — true / false type of Tag.\n* **Date** — used for calendar dates. Basically, this is an integer type tag which stores Unix Epoch timestamps (automatically converted from/into Gregorian date).\n* **Price** — allows to set values according to specified currency in the “*.XX” format (https://en.wikipedia.org/wiki/ISO_4217). \n* **Version** — used for versioning. The example of allowed format is w.x.y.z (Major.Minor.Patch.Build). \n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Application Specific / Nonspecific Tags\"\n}\n[/block]\nThis parameter describes tags’ behavior in relations to different apps in the same account. Application specific tags can have different sets of values for each app on the same account. Application nonspecific tags, on the contrary, store the same value for all apps that use this Tag. \n\n## Example:\n\nLet’s say you have two apps, a News app and a Game, and you want to target only those users who have explicitly agreed to receive pushes from you. So, you create a boolean tag called “Subscribed” and set `\"true\"` value for users who want to receive pushes from you, and `\"false\"` for those who don’t want to be notified. \n\nOne of your users, Anna, have installed both of your apps. She is okay with being notified about some breaking news, but opted out of any pushes from the Game app. \n\nIf the “Subscribed” tag is application specific, everything will go as planned. However, in case this tag was application nonspecific, then each of your apps will overwrite the value set by another app, which can ruin your targeting and cause frustration.\n\nOn the other hand, application nonspecific tags might come in handy if you want to perform cross-application targeting and trace users who have the same username in different applications.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Default Tags\"\n}\n[/block]\nThese tags are available by Pushwoosh out-of-the-box, so you don’t have to (and, in fact, should not) set them manually. Most of them are set from the application and sent over to our server via `/registerDevice` and other API calls, and some are set by the server itself. \n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Where it's set\",\n    \"h-3\": \"Description\",\n    \"0-0\": \"Application Version\",\n    \"0-1\": \"String\",\n    \"0-2\": \"SDK\",\n    \"0-3\": \"Current version of the application installed on a device\",\n    \"1-0\": \"City and Country\",\n    \"1-1\": \"String\",\n    \"1-2\": \"Server\",\n    \"1-3\": \"Latest registered geographical location of a device. Defined by means of GeoIP.\",\n    \"2-0\": \"Device Model\",\n    \"3-0\": \"First Install\",\n    \"4-0\": \"In-app Product\",\n    \"5-0\": \"In-app Purchase\",\n    \"6-0\": \"Last In-app Purchase Date\",\n    \"7-0\": \"Jailbroken\",\n    \"8-0\": \"Language\",\n    \"9-0\": \"Last Application Open\",\n    \"10-0\": \"OS Version\",\n    \"2-1\": \"String\",\n    \"3-1\": \"Date\",\n    \"4-1\": \"List\",\n    \"5-1\": \"Integer\",\n    \"6-1\": \"Date\",\n    \"7-1\": \"Integer\",\n    \"10-1\": \"String\",\n    \"9-1\": \"Date\",\n    \"8-1\": \"String\",\n    \"2-2\": \"SDK\",\n    \"3-2\": \"Server\",\n    \"4-2\": \"SDK\",\n    \"5-2\": \"SDK\",\n    \"6-2\": \"SDK\",\n    \"7-2\": \"SDK\",\n    \"8-2\": \"SDK\",\n    \"9-2\": \"Server\",\n    \"10-2\": \"SDK\",\n    \"2-3\": \"Indicates the device model whereon an application is installed\",\n    \"3-3\": \"Indicates the time when a device was registered for notifications for the first time\",\n    \"4-3\": \"The in-app products purchased by a users of an application\",\n    \"5-3\": \"The amount of money that was spent by any user on a certain device. Tag value increments with every purchase\",\n    \"6-3\": \"The date of the latest in-app purchase made on a device\",\n    \"7-3\": \"Indicates whether a device is clean (value = 0) or jailbroken / rooted (value = 1)\",\n    \"8-3\": \"Two-letter lowercase abbreviation of a device’s locale according to [ISO-639-1](http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes); taken from device settings\",\n    \"9-3\": \"The time of the most recent application launch on a device\",\n    \"10-3\": \"The version of an operating system running on a device\"\n  },\n  \"cols\": 4,\n  \"rows\": 11\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Custom Tags\"\n}\n[/block]\nThis is where your creativity comes in to acheive your specific business goals. Custom tags can be created based on the segmentation logic or targeting pattern that is appropriate for your unique business needs.\n\n## How to set up a custom tag:\n\n1. Go to the Tags page of your Control Panel and click “Add tag”.\n2. Name your tag, pick the type, and decide whether it should be app-specific or not.\n3. Click “Save Tag”.\n\nThat’s it, now your custom tag is ready to collect information from your end-users. Let’s see how it can be done.\n[block:callout]\n{\n  \"type\": \"info\",\n  \"body\": \"This example involves `setTags` function used in PhoneGap / Cordova SDK\",\n  \"title\": \"\"\n}\n[/block]\n1. Implement Pushwoosh SDK into your project as per our [guides](http://docs.pushwoosh.com/); \n2. Add the `/setTags` function:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"//sets a string tag “username” with value “john” and integer tag “deviceId” with value 10\\npushNotification.setTags({username:\\\"john\\\", deviceId:10},\\n    function(status) {\\n        console.warn('setTags success');\\n    },\\n    function(status) {\\n        console.warn('setTags failed');\\n    }\\n);\\n\\n//sets a list tag \\\"MyTag\\\" with values \\\"hello\\\", \\\"world\\\"\\npushNotification.setTags({\\\"MyTag\\\":[\\\"hello\\\", \\\"world\\\"]});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"body\": \"In 99% of cases, Tags are set from the application. Although it is possible to [set tags via Remote API](http://docs.pushwoosh.com/docs/settags) from your backend.\"\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Tags Statistics\"\n}\n[/block]\nOnce your application sets Tag values, you can view and analyze the statistics about these values, presented in the Control Panel using either a pie chart, bar chart, or table view.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/nhS0FYHcQymyZbQa5tPD_Pushwoosh.png\",\n        \"Pushwoosh.png\",\n        \"827\",\n        \"692\",\n        \"#4c8c8c\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Creating Segments\"\n}\n[/block]\nFinally, we are all set to create our first targeted push! Having set up all the necessary tags that identify your target app users, we can now create a Filter and send a push notification to specific users. \n\n## Example:\n\nLet’s say you want to send a promo code to app users that live in Paris and have previously agreed to receive special offers. To do this, you would go to the Filters tab of Pushwoosh Control Panel, click \"Add Filter\", type in the filter name, and then choose the appropriate tags and values:\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/MGVF9yFsS8CWrlX1cQSL_Pushwoosh%203.png\",\n        \"Pushwoosh 3.png\",\n        \"856\",\n        \"619\",\n        \"#4e797a\",\n        \"\"\n      ],\n      \"caption\": \"\"\n    }\n  ]\n}\n[/block]\nIn case you want to do the same via API, you would use \"conditions\" parameter of `/createMessage` request:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"conditions\\\":[[\\\"City\\\", \\\"EQ\\\", \\\"fr, paris\\\"], [\\\"Special offer\\\", \\\"EQ\\\", \\\"accepted\\\"]],\",\n      \"language\": \"text\",\n      \"name\": \"JSON\"\n    }\n  ]\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"body\": \"Please note that \\\"conditions\\\" value must be an array of arrays. If you are getting \\\"Invalid expression\\\" error in response to your API request, please make sure that your condition(s) is enclosed in another set of square brackets, e.g.:\\n**[** [TAG_CONDITION_1], [TAG_CONDITION_2], ..., [TAG_CONDITION_n] **]**\",\n  \"title\": \"\"\n}\n[/block]\nIf you already have a specific filter created in the Control Panel, you can use \"filter\" parameter instead of \"conditions\". The value of this parameter would be the actual name of your filter:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"filter\\\": \\\"FILTER_NAME\\\",\",\n      \"language\": \"text\",\n      \"name\": \"JSON\"\n    }\n  ]\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"danger\",\n  \"title\": \"\",\n  \"body\": \"Please keep in mind that “filter” and “conditions” parameters should not be used together.\\nAlso, both of them **will be ignored**, if the \\\"devices\\\" parameter is used in the same request.\"\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Sending Targeted Pushes\"\n}\n[/block]\nNow that you know how to do all the prep work for segmenting your audience, you’re all set to send highly targeted pushes to some of your users, but not others. Remember, the more targeted your push notifications are, the more likely your audience will be to act on those pushes. Audience segmentation using Pushwoosh Tags and Filters is the key to effective user engagement and powerful marketing strategy.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/wQXI6jwnQsGm5hkebGeA_Designer-Outlets-HomeScreen-Banner-phone.png\",\n        \"Designer-Outlets-HomeScreen-Banner-phone.png\",\n        \"414\",\n        \"290\",\n        \"#2e3f70\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]","excerpt":"Learn how to segment your audience using Tags and Filters","slug":"segmentation-tags-and-filters","type":"basic","title":"Segmentation"}

Segmentation

Learn how to segment your audience using Tags and Filters

* [Tag values](http://docs.pushwoosh.com/docs/segmentation-tags-and-filters#tag-values) * [Types of tags](http://docs.pushwoosh.com/docs/segmentation-tags-and-filters#types-of-tags) * [Application specific and nonspecific tags](http://docs.pushwoosh.com/docs/segmentation-tags-and-filters#application-specific--nonspecific-tags) * [Default tags](http://docs.pushwoosh.com/docs/segmentation-tags-and-filters#default-tags) * [Custom tags](http://docs.pushwoosh.com/docs/segmentation-tags-and-filters#custom-tags) * [Tags statistics](http://docs.pushwoosh.com/docs/segmentation-tags-and-filters#tags-statistics) * [Creating segments](http://docs.pushwoosh.com/docs/segmentation-tags-and-filters#creating-segments) Tags are one of the most useful tools we offer — a lot of sophisticated Pushwoosh functionality is based on this feature. Using tags, you can segment your audience and send push notifications to some users, but not others. [block:callout] { "type": "info", "title": "Deciding Which Tags To Use", "body": "First, think about your business needs and decide how you want to segment your audience. Do you need to target users based on age, location, in-app purchase history, etc.? Once you’ve decided on segmentation logic, your developers can add tags to your app’s code, which will then allow you to send targeted messages to your users." } [/block] Tags contain any arbitrary data that you associate with a particular user or device, whether it's username, ID, city, favorite football team, preferred news categories, or any other piece of information about your users. Let’s take a closer look. [block:api-header] { "type": "basic", "title": "Tag Values" } [/block] Tag values can help you make your push campaigns smarter. Each tag is capable of storing *nearly limitless number of values*. Basically, this means that one tag would be enough to record a specific type of information about each end-user in your database. There are only a few tags available for each account, but considering the nearly-infinite space for each tag, just a couple of tags are enough to gather an enormous amount of information about your users and set up very complex targeting patterns. [block:api-header] { "type": "basic", "title": "Types of Tags" } [/block] * **Integer** — used for the integer data (amount of in-game cash acquired, level achieved, age). * **String** — used for string values (username, e-mail, identifiers). * **List** — the same as String type, but each user may have multiple values set simultaneously (music preferences, news categories, cuisine preferences). * **Boolean** — true / false type of Tag. * **Date** — used for calendar dates. Basically, this is an integer type tag which stores Unix Epoch timestamps (automatically converted from/into Gregorian date). * **Price** — allows to set values according to specified currency in the “*.XX” format (https://en.wikipedia.org/wiki/ISO_4217). * **Version** — used for versioning. The example of allowed format is w.x.y.z (Major.Minor.Patch.Build). [block:api-header] { "type": "basic", "title": "Application Specific / Nonspecific Tags" } [/block] This parameter describes tags’ behavior in relations to different apps in the same account. Application specific tags can have different sets of values for each app on the same account. Application nonspecific tags, on the contrary, store the same value for all apps that use this Tag. ## Example: Let’s say you have two apps, a News app and a Game, and you want to target only those users who have explicitly agreed to receive pushes from you. So, you create a boolean tag called “Subscribed” and set `"true"` value for users who want to receive pushes from you, and `"false"` for those who don’t want to be notified. One of your users, Anna, have installed both of your apps. She is okay with being notified about some breaking news, but opted out of any pushes from the Game app. If the “Subscribed” tag is application specific, everything will go as planned. However, in case this tag was application nonspecific, then each of your apps will overwrite the value set by another app, which can ruin your targeting and cause frustration. On the other hand, application nonspecific tags might come in handy if you want to perform cross-application targeting and trace users who have the same username in different applications. [block:api-header] { "type": "basic", "title": "Default Tags" } [/block] These tags are available by Pushwoosh out-of-the-box, so you don’t have to (and, in fact, should not) set them manually. Most of them are set from the application and sent over to our server via `/registerDevice` and other API calls, and some are set by the server itself. [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Where it's set", "h-3": "Description", "0-0": "Application Version", "0-1": "String", "0-2": "SDK", "0-3": "Current version of the application installed on a device", "1-0": "City and Country", "1-1": "String", "1-2": "Server", "1-3": "Latest registered geographical location of a device. Defined by means of GeoIP.", "2-0": "Device Model", "3-0": "First Install", "4-0": "In-app Product", "5-0": "In-app Purchase", "6-0": "Last In-app Purchase Date", "7-0": "Jailbroken", "8-0": "Language", "9-0": "Last Application Open", "10-0": "OS Version", "2-1": "String", "3-1": "Date", "4-1": "List", "5-1": "Integer", "6-1": "Date", "7-1": "Integer", "10-1": "String", "9-1": "Date", "8-1": "String", "2-2": "SDK", "3-2": "Server", "4-2": "SDK", "5-2": "SDK", "6-2": "SDK", "7-2": "SDK", "8-2": "SDK", "9-2": "Server", "10-2": "SDK", "2-3": "Indicates the device model whereon an application is installed", "3-3": "Indicates the time when a device was registered for notifications for the first time", "4-3": "The in-app products purchased by a users of an application", "5-3": "The amount of money that was spent by any user on a certain device. Tag value increments with every purchase", "6-3": "The date of the latest in-app purchase made on a device", "7-3": "Indicates whether a device is clean (value = 0) or jailbroken / rooted (value = 1)", "8-3": "Two-letter lowercase abbreviation of a device’s locale according to [ISO-639-1](http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes); taken from device settings", "9-3": "The time of the most recent application launch on a device", "10-3": "The version of an operating system running on a device" }, "cols": 4, "rows": 11 } [/block] [block:api-header] { "type": "basic", "title": "Custom Tags" } [/block] This is where your creativity comes in to acheive your specific business goals. Custom tags can be created based on the segmentation logic or targeting pattern that is appropriate for your unique business needs. ## How to set up a custom tag: 1. Go to the Tags page of your Control Panel and click “Add tag”. 2. Name your tag, pick the type, and decide whether it should be app-specific or not. 3. Click “Save Tag”. That’s it, now your custom tag is ready to collect information from your end-users. Let’s see how it can be done. [block:callout] { "type": "info", "body": "This example involves `setTags` function used in PhoneGap / Cordova SDK", "title": "" } [/block] 1. Implement Pushwoosh SDK into your project as per our [guides](http://docs.pushwoosh.com/); 2. Add the `/setTags` function: [block:code] { "codes": [ { "code": "//sets a string tag “username” with value “john” and integer tag “deviceId” with value 10\npushNotification.setTags({username:\"john\", deviceId:10},\n function(status) {\n console.warn('setTags success');\n },\n function(status) {\n console.warn('setTags failed');\n }\n);\n\n//sets a list tag \"MyTag\" with values \"hello\", \"world\"\npushNotification.setTags({\"MyTag\":[\"hello\", \"world\"]});", "language": "javascript" } ] } [/block] [block:callout] { "type": "warning", "body": "In 99% of cases, Tags are set from the application. Although it is possible to [set tags via Remote API](http://docs.pushwoosh.com/docs/settags) from your backend." } [/block] [block:api-header] { "type": "basic", "title": "Tags Statistics" } [/block] Once your application sets Tag values, you can view and analyze the statistics about these values, presented in the Control Panel using either a pie chart, bar chart, or table view. [block:image] { "images": [ { "image": [ "https://files.readme.io/nhS0FYHcQymyZbQa5tPD_Pushwoosh.png", "Pushwoosh.png", "827", "692", "#4c8c8c", "" ] } ] } [/block] [block:api-header] { "type": "basic", "title": "Creating Segments" } [/block] Finally, we are all set to create our first targeted push! Having set up all the necessary tags that identify your target app users, we can now create a Filter and send a push notification to specific users. ## Example: Let’s say you want to send a promo code to app users that live in Paris and have previously agreed to receive special offers. To do this, you would go to the Filters tab of Pushwoosh Control Panel, click "Add Filter", type in the filter name, and then choose the appropriate tags and values: [block:image] { "images": [ { "image": [ "https://files.readme.io/MGVF9yFsS8CWrlX1cQSL_Pushwoosh%203.png", "Pushwoosh 3.png", "856", "619", "#4e797a", "" ], "caption": "" } ] } [/block] In case you want to do the same via API, you would use "conditions" parameter of `/createMessage` request: [block:code] { "codes": [ { "code": "\"conditions\":[[\"City\", \"EQ\", \"fr, paris\"], [\"Special offer\", \"EQ\", \"accepted\"]],", "language": "text", "name": "JSON" } ] } [/block] [block:callout] { "type": "info", "body": "Please note that \"conditions\" value must be an array of arrays. If you are getting \"Invalid expression\" error in response to your API request, please make sure that your condition(s) is enclosed in another set of square brackets, e.g.:\n**[** [TAG_CONDITION_1], [TAG_CONDITION_2], ..., [TAG_CONDITION_n] **]**", "title": "" } [/block] If you already have a specific filter created in the Control Panel, you can use "filter" parameter instead of "conditions". The value of this parameter would be the actual name of your filter: [block:code] { "codes": [ { "code": "\"filter\": \"FILTER_NAME\",", "language": "text", "name": "JSON" } ] } [/block] [block:callout] { "type": "danger", "title": "", "body": "Please keep in mind that “filter” and “conditions” parameters should not be used together.\nAlso, both of them **will be ignored**, if the \"devices\" parameter is used in the same request." } [/block] [block:api-header] { "type": "basic", "title": "Sending Targeted Pushes" } [/block] Now that you know how to do all the prep work for segmenting your audience, you’re all set to send highly targeted pushes to some of your users, but not others. Remember, the more targeted your push notifications are, the more likely your audience will be to act on those pushes. Audience segmentation using Pushwoosh Tags and Filters is the key to effective user engagement and powerful marketing strategy. [block:image] { "images": [ { "image": [ "https://files.readme.io/wQXI6jwnQsGm5hkebGeA_Designer-Outlets-HomeScreen-Banner-phone.png", "Designer-Outlets-HomeScreen-Banner-phone.png", "414", "290", "#2e3f70", "" ] } ] } [/block]