{"__v":16,"_id":"570be3985fac770e00b67c0f","category":{"__v":11,"_id":"551ef4ef4986f62b00a7203e","pages":["551ef4f04986f62b00a7206d","551ef4f04986f62b00a7206e","551ef4f04986f62b00a7206f","552359b8e20da719000e797b","5536d74bc36ca60d003c5540","5548372bd2c8410d006c212d","55d77b86f662951900fc0ef5","5605b89024c9d80d001551fd","5668806406039e0d00c4ed24","56688887ee1dbf0d008f62a7","568c6de813c5ad0d00b34e4d","5699b35bcb127f0d003cc1ba","56cbe4638df25d0b00e8d774"],"project":"542b6018044e1e2200413772","version":"551ef4ef4986f62b00a7202e","reference":false,"createdAt":"2015-03-24T04:27:30.031Z","from_sync":false,"order":7,"slug":"website-push","title":"Website Push"},"project":"542b6018044e1e2200413772","user":"55c146fdc0777c0d0046769d","version":{"__v":7,"_id":"551ef4ef4986f62b00a7202e","forked_from":"542b6018044e1e2200413775","project":"542b6018044e1e2200413772","createdAt":"2015-04-03T20:15:43.149Z","releaseDate":"2015-04-03T20:15:43.149Z","categories":["551ef4ef4986f62b00a7202f","551ef4ef4986f62b00a72030","551ef4ef4986f62b00a72031","551ef4ef4986f62b00a72032","551ef4ef4986f62b00a72033","551ef4ef4986f62b00a72034","551ef4ef4986f62b00a72035","551ef4ef4986f62b00a72036","551ef4ef4986f62b00a72037","551ef4ef4986f62b00a72038","551ef4ef4986f62b00a72039","551ef4ef4986f62b00a7203a","551ef4ef4986f62b00a7203b","551ef4ef4986f62b00a7203c","551ef4ef4986f62b00a7203d","551ef4ef4986f62b00a7203e","55d7f1879510f00d007ec727","56b94a5a9fc0de1700b60ae9","56bd0e48ac1c5c1900b2dbe4","56d74afc3eb4dd0b0020196a","5723ab8a1f41110e003081ed","576b4dd327d6252b00085422"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"","version_clean":"2.0.0","version":"2.0"},"updates":[],"createdAt":"2016-04-11T17:49:12.546Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":999,"body":"[block:api-header]\n{\n \"type\": \"basic\",\n \"title\": \"Subscribing Users With a Link\"\n}\n[/block]\nHere is a simple example. It adds a link that, when clicked, prompts the user to subscribe to notifications.\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"<body>\\n <a href=\\\"#\\\" id=\\\"subscribe-link\\\" style=\\\"display: none;\\\">Subscribe to Notifications</a>\\n <script>\\n function subscribe() {\\n OneSignal.push([\\\"registerForPushNotifications\\\"]);\\n event.preventDefault(); \\n }\\n \\n var OneSignal = OneSignal || [];\\n OneSignal.push(function() {\\n document.getElementById(\\\"subscribe-link\\\").addEventListener('click', subscribe);\\n document.getElementById(\\\"subscribe-link\\\").style.display = '';\\n });\\n </script>\\n</body>\",\n \"language\": \"html\"\n }\n ]\n}\n[/block]\nHere is a more complex example. A link is added that, when clicked, prompts the user to subscribe to notifications, but the link is shown only if the user is not subscribed, and notifications are supported.\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"<body>\\n <a href=\\\"#\\\" id=\\\"subscribe-link\\\" style=\\\"display: none;\\\">Subscribe to Notifications</a>\\n <script src=\\\"https://cdn.onesignal.com/sdks/OneSignalSDK.js\\\" async=\\\"async\\\"></script>\\n <script>\\n function subscribe() {\\n OneSignal.push([\\\"registerForPushNotifications\\\"]);\\n event.preventDefault();\\n }\\n\\n var OneSignal = OneSignal || [];\\n /* This example assumes you've already initialized OneSignal */\\n OneSignal.push(function() {\\n // If we're on an unsupported browser, do nothing\\n if (!OneSignal.isPushNotificationsSupported()) {\\n return;\\n }\\n OneSignal.isPushNotificationsEnabled(function(isEnabled) {\\n if (isEnabled) {\\n // The user is subscribed to notifications\\n // Don't show anything\\n } else {\\n document.getElementById(\\\"subscribe-link\\\").addEventListener('click', subscribe);\\n document.getElementById(\\\"subscribe-link\\\").style.display = '';\\n }\\n });\\n });\\n </script>\\n</body>\",\n \"language\": \"html\"\n }\n ]\n}\n[/block]\n\n[block:api-header]\n{\n \"type\": \"basic\",\n \"title\": \"Tagging\"\n}\n[/block]\n## Tagging Users With Data\n\nOneSignal supports tagging users with simple string data. Once you've integrated web push on your website, you have access to all the [JavaScript web SDK API methods listed here](doc:website-sdk-api).\n\nUsing JavaScript, you may tag your users with a key-value pair of simple string data at any time using the [sendTags() API method](https://documentation.onesignal.com/docs/website-sdk-api#sendTags). Here's an example of calling that:\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"OneSignal.push([\\\"sendTags\\\", {key2: \\\"value2\\\", key3: \\\"value3\\\"}]);\",\n \"language\": \"javascript\"\n }\n ]\n}\n[/block]\nOn your app's users page, you'll see the user with the tagged value:\n[block:image]\n{\n \"images\": [\n {\n \"image\": [\n \"https://www.filepicker.io/api/file/ZuxRqS1xTdipWywmjfQn\",\n \"Rr5MHHy.png\",\n \"1412\",\n \"246\",\n \"#986b76\",\n \"\"\n ]\n }\n ]\n}\n[/block]\n\n[block:callout]\n{\n \"type\": \"warning\",\n \"title\": \"Tag Using Simple Strings Only\",\n \"body\": \"Don't tag users with arrays or hashes of data. Use only simple strings or numbers. We use exact string matching when targeting users by tags,\"\n}\n[/block]\n## Sending Notifications to Specific Users\n\nThere are two ways to send notifications:\n- Through our dashboard at onesignal.com\n- Programmatically using our REST API\n\n**Sending Notifications via the Dashboard**\n\nTo target specific users, you have to first create a *Segment*. Add filters matching your key and value.\n[block:image]\n{\n \"images\": [\n {\n \"image\": [\n \"https://www.filepicker.io/api/file/HJnu9UJmSpuQS4BEcDQh\",\n \"MiTf7bZ.png\",\n \"1428\",\n \"671\",\n \"#60afa3\",\n \"\"\n ]\n }\n ]\n}\n[/block]\n\n[block:callout]\n{\n \"type\": \"warning\",\n \"title\": \"Segment Filters Conditions are Combined\",\n \"body\": \"A segment includes all users that *matches all the filter conditions*. In other words the segment *AND*s filter conditions together, and does not *OR* filter conditions.\"\n}\n[/block]\nPlease keep in mind that filter conditions are *combined* together to include users and are not evaluated separately!\n\nNow that you've created your segment matching at least one user, you can send send a notification targeting this segment using this option:\n[block:image]\n{\n \"images\": [\n {\n \"image\": [\n \"https://www.filepicker.io/api/file/vIxD33kdSdu5s7gxF8Ae\",\n \"GjQkqeX.png\",\n \"1414\",\n \"642\",\n \"#5fb8b2\",\n \"\"\n ]\n }\n ]\n}\n[/block]\nIf you get an error saying \"The selected segments does not have any users\", go back to your Segments page and check the filter conditions. Remember they are *AND*ed together and not *OR*ed together. Make sure the segment includes at least one user.\n\n**Sending Notifications via the REST API**\n\nTo send notifications programmatically via the API, use our [POST create notifications API](https://documentation.onesignal.com/docs/notifications-create-notification). To send notifications targeting users matching certain tags, use the tags parameter (check out the documentation).\n[block:api-header]\n{\n \"type\": \"basic\",\n \"title\": \"Integrating With Existing User Data\"\n}\n[/block]\nTo link the subscribed user to your existing data, you can do one or more of the following: \n- You can [tag](#tagging) your user with a unique identifier from your system (e.g. your system's account email address)\n- You can store the user's OneSignal ID on your own system\n\nThe first will associate our user with your user account ID on our system. The second will associate our user ID with your user info on your system.\n\nPlease see the [tagging guide](#tagging) to learn how to tag your user with a unique identifier from your system.\n\nPlease see below to learn how to store the user's OneSignal ID on your own system.\n\n## Storing the OneSignal User ID\n\nEach subscribed user, corresponding to the user's phone that installs your Android app / iOS app or the user's browser that visited your website, has a unique and randomly generated OneSignal user ID.\n\nA OneSignal user ID looks like `b3aaabc2-9a47-4647-adda-3e4583a2d19e`. All of our IDs are [UUIDs](https://en.wikipedia.org/wiki/Universally_unique_identifier).\n\nFor web push, you can obtain and send the OneSignal user ID to your server after the user subscribes to your website's notifications. We provide an event handler to be notified of when the user has successfully subscribed. Below is example code that waits for the user to subscribe, and then obtains the user's OneSignal ID:\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"OneSignal.push(function() {\\n OneSignal.on('subscriptionChange', function(isSubscribed) {\\n if (isSubscribed) {\\n // The user is subscribed\\n // Either the user subscribed for the first time\\n // Or the user was subscribed -> unsubscribed -> subscribed\\n OneSignal.getUserId( function(userId) {\\n // Make a POST call to your server with the user ID\\n });\\n }\\n });\\n});\",\n \"language\": \"javascript\"\n }\n ]\n}\n[/block]\nOnce the OneSignal user ID is on your server, you can use our REST API to send notifications programmatically targeting just this user. You would use our [POST create notifications API](https://documentation.onesignal.com/docs/notifications-create-notification) and use the `include_player_ids` parameter and pass in an array of strings specifying the list of OneSignal user IDs you would like to target.\n[block:api-header]\n{\n \"type\": \"basic\",\n \"title\": \"Switching your site between HTTP and HTTPS subscription method\"\n}\n[/block]\nRead about [HTTP vs. HTTPS features here](doc:http-vs-https-features).\n[block:callout]\n{\n \"type\": \"info\",\n \"title\": \"Upgrading Your Site to HTTPS\",\n \"body\": \"If you're looking for a free and easy way to add SSL to your site, you can use [CloudFlare's Flexible SSL option](https://support.cloudflare.com/hc/en-us/articles/200170516-How-do-I-add-SSL-to-my-site-). You don't need to buy an SSL certificate, but if you'd like to be [more secure](https://support.cloudflare.com/hc/en-us/articles/200170416-What-do-the-SSL-options-Off-Flexible-SSL-Full-SSL-Full-SSL-Strict-mean-) you can.\"\n}\n[/block]\n**WordPress Users**: Please follow this guide and then complete the extra steps at the bottom.\n\n## HTTP → HTTPS\n[block:callout]\n{\n \"type\": \"warning\",\n \"title\": \"Your Site Should Only Support HTTPS\",\n \"body\": \"If the HTTP version of your site is still accessible, you **should not** follow these steps below. The HTTPS method of subscription will not work for users visiting the HTTP version of your site. Your site will only work for HTTPS visitors.\\n\\nIf you're using CloudFlare, you can [forcefully redirect all HTTP visitors --> HTTPS](https://support.cloudflare.com/hc/en-us/articles/200170536-How-do-I-redirect-all-visitors-to-HTTPS-SSL-).\"\n}\n[/block]\n1. *Create a new app* for your HTTPS site following our [HTTPS web push setup guide](doc:website-sdk-installation). You *can* re-use your *Google Project Number* (you'll put this in your `manifest.json` as `gcm_sender_id`) and *Google Server API Key*.\n\n This prevents users from receiving duplicate notifications if they subscribed to notifications on both your HTTP and HTTPS site and you sent a message to all your users.\n \n Following our HTTPS web push setup guide, be sure to [update your site with the new initialization code](https://documentation.onesignal.com/docs/website-sdk-installation#3-include-and-initialize-the-sdk). There *should not* be a 'subdomain' parameter in your init code.\n \n2. **WordPress Users Only:** Visit your WordPress admin panel, visit our plugin admin page, select the Configuration tab, and at the top under Account Settings enable \"My site uses an HTTPS connection (SSL)\". Replace your app ID if you created a new app. Now that your site is HTTPS, you'll see more options, including the ability to automatically prompt users to subscribe to notifications (\"Automatically prompt new site visitors to subscribe to push notifications\" under Prompt Settings & Notify Button).\n[block:api-header]\n{\n \"type\": \"basic\",\n \"title\": \"Opening web and mobile notifications in the browser and app\"\n}\n[/block]\nIf you have web and mobile platforms users, you can send two notifications: the first notification to web browsers and the second notification to mobile phones. The web push notification will open in a web browser and the mobile push notification will open in your app.\n\nFor the first notification sent to web push users, send the notification normally without specifically excluding any parameters.\n\nFor the second notification sent to mobile users, *make sure to exclude* the `url` parameter. If the `url` parameter is included, a new browser tab will be opened to that URL. Instead, pass data in to the `additionalData` field (in a custom format your app will be able to parse), and then use the mobile notification opened / notification clicked handler to navigate the user to a section in your app.\n\nHere is [an example using native Android](http://stackoverflow.com/a/37935082/555547). Here is the documentation for the [native notificationOpened handler](https://documentation.onesignal.com/docs/android-sdk-api#section-notificationopenedhandler) used by the example.\n\nIf you're using Cordova, Phonegap, or Ionic, be sure to [use the notificationOpened handler from the Cordova, Phonegap, or Ionic section of our docs](https://documentation.onesignal.com/docs/phonegap--cordova-sdk-api#notificationOpenedCallback). On the code example, be sure to click the variant describing how to open a page in your app.\n\n## WordPress Users Only\n\nTo take advantage of our WordPress plugin doing this for you, you will have to follow some additional instructions below to add a WordPress filter hook.\n\n1. On our plugin's Configuration page, please *disable* the option \"Send notifications additionally to iOS & Android platforms\". This option does not allow customizing the mobile notifications so we have to disable this option first.\n2. Copy and paste the PHP code below into a file that will get called when the notification gets sent out. A good candidate might be an \"index\" or \"header\" PHP file that will always get called. The goal is to add the below code to this file so that it will get called when our plugin sends out a WordPress notification.\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"<?php\\nadd_filter('onesignal_send_notification', 'onesignal_send_notification_filter', 10, 4);\\n\\nfunction onesignal_send_notification_filter($fields, $new_status, $old_status, $post)\\n{\\n /* Goal: We don't want to modify the original $fields array, because we want the original web push notification to go out unmodified. However, we want to send an additional notification to Android and iOS devices with an additionalData property.\\n */\\n $fields_dup = $fields;\\n $fields_dup['isAndroid'] = true;\\n $fields_dup['isIos'] = true;\\n $fields_dup['isAnyWeb'] = false;\\n $fields_dup['isWP'] = false;\\n $fields_dup['isAdm'] = false;\\n $fields_dup['isChrome'] = false;\\n $fields_dup['data'] = array(\\n \\\"myappurl\\\" => $fields['url']\\n );\\n /* Important to unset the URL to prevent opening the browser when the notification is clicked */\\n unset($fields_dup['url']);\\n /* Send another notification via cURL */\\n $ch = curl_init();\\n $onesignal_post_url = \\\"https://onesignal.com/api/v1/notifications\\\";\\n /* Hopefully OneSignal::get_onesignal_settings(); can be called outside of the plugin */\\n $onesignal_wp_settings = OneSignal::get_onesignal_settings();\\n $onesignal_auth_key = $onesignal_wp_settings['app_rest_api_key'];\\n curl_setopt($ch, CURLOPT_URL, $onesignal_post_url);\\n curl_setopt($ch, CURLOPT_HTTPHEADER, array(\\n 'Content-Type: application/json',\\n 'Authorization: Basic ' . $onesignal_auth_key\\n ));\\n curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\\n curl_setopt($ch, CURLOPT_HEADER, true);\\n curl_setopt($ch, CURLOPT_POST, true);\\n curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields_dup));\\n curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);\\n\\n // Optional: Turn off host verification if SSL errors for local testing\\n // curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);\\n\\n /* Optional: cURL settings to help log cURL output response\\n curl_setopt($ch, CURLOPT_FAILONERROR, false);\\n curl_setopt($ch, CURLOPT_HTTP200ALIASES, array(400));\\n curl_setopt($ch, CURLOPT_VERBOSE, true);\\n curl_setopt($ch, CURLOPT_STDERR, $out);\\n */\\n $response = curl_exec($ch);\\n /* Optional: Log cURL output response\\n fclose($out);\\n $debug_output = ob_get_clean();\\n $curl_effective_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);\\n $curl_http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);\\n $curl_total_time = curl_getinfo($ch, CURLINFO_TOTAL_TIME);\\n onesignal_debug('OneSignal API POST Data:', $fields);\\n onesignal_debug('OneSignal API URL:', $curl_effective_url);\\n onesignal_debug('OneSignal API Response Status Code:', $curl_http_code);\\n if ($curl_http_code != 200) {\\n onesignal_debug('cURL Request Time:', $curl_total_time, 'seconds');\\n onesignal_debug('cURL Error Number:', curl_errno($ch));\\n onesignal_debug('cURL Error Description:', curl_error($ch));\\n onesignal_debug('cURL Response:', print_r($response, true));\\n onesignal_debug('cURL Verbose Log:', $debug_output);\\n }\\n\\n */\\n curl_close($ch);\\n return $fields;\\n}\\n\",\n \"language\": \"php\"\n }\n ]\n}\n[/block]\n\n[block:api-header]\n{\n \"type\": \"basic\",\n \"title\": \"Customizing WordPress Plugin Behavior\"\n}\n[/block]\nOur WordPress plugin comes with some [action and filter hooks](https://www.tipsandtricks-hq.com/wordpress-action-hooks-and-filter-hooks-an-introduction-4163) that allow you to write PHP code to extend our plugin's functionality.\n\nFor example, our hooks can be used to:\n- Automatically check or uncheck the [meta box checkbox](http://i.imgur.com/xJ4BuSb.png) \"Send notification on post publish\"\n - You can use this to make it easier for content publishes to automatically send notifications for certain kind of posts\n- Always send a notification for certain post\n - (e.g. custom post types)\n- Never send a notification for certain posts\n - You can combine the include/exclude filter\n- Override any notification parameter, add extra parameters, remove extra parameters, and even send multiple notifications using the same call\n\n*Note:* For all the following example usage calls, you'll have to copy and paste the PHP code into a file that will always be called. A good candidate might be an \"index\" or \"header\" PHP file that will always get called. The goal is to add the below code to this file so that it will get called when our plugin takes the specified action.\n\n## onesignal_meta_box_send_notification_checkbox_state Filter\n\nOverrides the state of the [meta box checkbox \"Send notification on post publish\"](http://i.imgur.com/xJ4BuSb.png).\n\nExample Usage:\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"<?php\\nadd_filter('onesignal_meta_box_send_notification_checkbox_state', 'filter', 10, 4);\\n// Available keys for $onesignal_wp_settings: https://github.com/OneSignal/OneSignal-WordPress-Plugin/blob/master/onesignal-settings.php#L5\\nfunction filter($post, $onesignal_wp_settings) {\\n // Always leave the checkbox \\\"Send notification on <post type> <action> (e.g. post publish)\\\" unchecked\\n return false;\\n} \",\n \"language\": \"php\"\n }\n ]\n}\n[/block]\n## onesignal_include_post Filter\n\nCalled every time a post's status changes as part of WordPress's [transition_post_status](https://codex.wordpress.org/Post_Status_Transitions#transition_post_status_Hook).\n\nReturning `true` will always send a notification for the specified post. Returning `false` does nothing; it simply passes control back to our main plugin logic. It's important to note returning `false` does not exclude the post -- that is done in the `onesignal_exclude_post` filter.\n\nYou can use the `onesignal_include_post` and `onesignal_exclude_post` filter together. The order of operations is *INCLUDE -> EXCLUDE*. The `onesignal_include_post` filter is run first to determine whether a post is included. If a post is not included, the `onesignal_exclude_post` filter is run next to determine whether this post is excluded. If the post is not excluded, our normal plugin logic runs.\n\nExample Usage:\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"<?php\\nadd_filter('onesignal_include_post', 'onesignal_include_post_filter', 10, 4);\\nfunction onesignal_include_post_filter($new_status, $old_status, $post) {\\n return false;\\n}\",\n \"language\": \"php\"\n }\n ]\n}\n[/block]\n## onesignal_exclude_post Filter\n\nCalled every time a post's status changes as part of WordPress's [transition_post_status](https://codex.wordpress.org/Post_Status_Transitions#transition_post_status_Hook).\n\nReturning `true` will never send a notification for the specified post. Returning `false` does nothing; it simply passes control back to our main plugin logic. It's important to note returning `false` does not include the post -- that is done in the `onesignal_include_post` filter.\n\nYou can use the `onesignal_include_post` and `onesignal_exclude_post` filter together. The order of operations is *INCLUDE -> EXCLUDE*. The `onesignal_include_post` filter is run first to determine whether a post is included. If a post is not included, the `onesignal_exclude_post` filter is run next to determine whether this post is excluded. If the post is not excluded, our normal plugin logic runs.\n\nExample Usage:\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"<?php\\nadd_filter('onesignal_exclude_post', 'onesignal_exclude_post_filter', 10, 4);\\nfunction onesignal_exclude_post_filter($new_status, $old_status, $post) {\\n return false;\\n}\",\n \"language\": \"php\"\n }\n ]\n}\n[/block]\nExample Usage:\n\n## onesignal_send_notification Filter\n\nCalled after all the notification creation parameters have been determined, and right before the notification is actually sent.\n\nYou may modify any of the parameters to, for example:\n- Change the notification's title, message, and URL\n- Send the notification to additional platforms (e.g. Android and iOS)\n- Prevent the notification from being sent to certain platforms\n- Schedule the notification to be sent in the future\n- Add [action buttons](doc:web-push-action-buttons) \n- Cancel the notification from being sent\n\nPlease see our [/notifications (Create Notification)](doc:notifications-create-notification) docs page for the full parameter list and description of what's accepted in the `$fields` hash.\n\nExample Usage:\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"<?php\\nadd_filter('onesignal_send_notification', 'onesignal_send_notification_filter', 10, 4);\\n\\nfunction onesignal_send_notification_filter($fields, $new_status, $old_status, $post)\\n{\\n // Change the notification's title, message, and URL\\n $fields['headings'] = array(\\\"en\\\" => \\\"English notification title\\\");\\n $fields['contents'] = array(\\\"en\\\" => \\\"English notification message body\\\");\\n $fields['url'] = 'https://example.com';\\n \\n // Send to additional platforms (e.g. Android and iOS)\\n $fields['isAndroid'] = true;\\n $fields['isIos'] = true;\\n \\n // Prevent the notification from being sent to certain platforms\\n $fields['isFirefox'] = false;\\n \\n // Schedule the notification to be sent in the future\\n $fields['send_after'] = \\\"Sept 24 2018 14:00:00 GMT-0700\\\";\\n \\n // Add web push action buttons (different action buttons are used for Android and iOS)\\n $fields['web_buttons'] = array(\\n \\\"id\\\" => \\\"like-button\\\",\\n \\\"text\\\" => \\\"Like\\\",\\n \\\"icon\\\" => \\\"http://i.imgur.com/N8SN8ZS.png\\\",\\n \\\"url\\\" => \\\"https://example.com\\\"\\n );\\n \\n // Cancel the notification from being sent\\n $fields['do_send_notification'] = false;\\n}\",\n \"language\": \"php\"\n }\n ]\n}\n[/block]","excerpt":"","slug":"guides-examples","type":"basic","title":"Guides & Examples"}