Optimum way to automate sending of Birthday rewards
Hi Bonfire Community, Posting here to get some guidance and understand the best way to execute the dissemination of Coupon Codes for a Birthday Canvas. I want to send users on their birthday a Coupon Code which they can redeem for a free item. What you reckon is the optimum way to implement so the reward is automatically triggered and sent to users.36Views0likes2CommentsComplex processing in Canvas vs Campaign
Hello! I wanted to see if anyone here may have some insight into a question I have. In researching Campaigns vs Canvas one of the distinction I found was in the optimization/throughput resources when sending large volume messages. Essentially, a Braze Campaign is beefed up for high performance sending. One question I have is if there is any difference between the resources needed for highly complex dynamic content, for example messages that use connected content, catalog item lookups and inserts, and product recommendations. Is the Campaign engine better suited to process that level of complexity during the time of send, or is there no distinction between Canvas and Campaign. Thanks! AS10Views0likes1CommentForge Canvas Template: Product repurchase reminder (with timing and channel testing)
Hello fellow Braze orchestrators, I didn't make it to Forge in person this year, but it was great tuning in to the keynotes and catching up on all the latest Braze innovations. 🔥 Here is a quick Canvas that we are about to launch to drive repurchase of two of our products that customers need to by on a regular basis. Entry criteria: purchase of a certain SKU Experimentation (both set up as Personalized Path): Message timing (30 days vs 45 days after the purchase) Message channel (email vs SMS, in this case) Message sequence: A user gets a reminder to repurchase the product she might be running low on; If a user engages with the message from step 1, but does not purchase, he receives a reminder 3 days later with a special offer, to incentivize the purchase. Let me know if you see any opportunities for improvement. I imagine, soon we will be able to simplify this flow by leveraging all the upcoming Braze AI tools. Cheers, Olga Baker Charlie Banana / P&G29Views4likes1CommentWorking with timezones
Hi there, I am looking to set up a campaign that be run manually daily day at around 8am-10am (depending on internal readiness). We want this campaign to be received in users local time zone at the same time. Eg. Campaign run at 8am Melbourne time and received in New York at 8am (14hours later) I have been looking at the recommended set up as per documentation (see below), however not sure if this would work for us. The reason for this is that we then want to a new version of this campaign the day after with updated content. Based on the below this may not work due to the 24hr of eligibility. I also looked at the option of running this as canvas and create separate audience paths and delays. However, can't figure out the best way forward. Can someone please advise on the best way approach?59Views0likes3CommentsForge Canvas Template: Frequency/Channel mix Experiment Setup”
This Canvas serves as a starting point for setting up an experiment aimed at sending specific sub-groups of a user population down the engagement journey that has the highest likelihood of converting them. The criteria that differentiate the journey in this Canvas are tied to two variables: 1. Frequency: n times over n periods depending on the use case, industry, and type of product. For example, n times per week for n weeks. Both the 'times' and 'periods' should be customized according to the use case. 2. Channel mix: combinations of at least 2 channels based on the use case, industry, and type of product. For example, a push notification followed by an email or an IAM followed by an email. The channels to test should be customized based on the use case. The goal here is to leverage Braze's personalization systems to take experiments to the next level: no more simple A/B tests where all users are sent down the engagement journey that converts the most overall. Instead, specific sub-groups of the population will be sent down different, specific paths based on their unique characteristics/preferences. This allows us to avoid a 'one size fits all' approach and instead create multiple journeys that users can experience based on what they prefer (and what tends to convert users like them better 😉 )." I’ve been using this setup for a while, and the uplift compared to a single experience for the entire population (chosen after multiple iterations of a classic A/B test) is significant. Let me know what you think and if you have any ideas for improving this setup!40Views2likes1CommentDaily Canvas Monitoring Alerts
Hello group! I'd love to be able to get a daily report that shows yesterday's volume of communications (or users) for a given canvas. Ideally over time. The clear use case is when something breaks and canvas volume goes through the roof or just stops altogether. As of two years ago, this wasn't possible, but not sure if that has changed. And if it hasn't changed, has anyone found an elegant solution here? Thanks!23Views0likes1CommentUpdating Default Attributes through Canvas User Update
Hi, I'm trying to make use of an Custom Event Properties to update User profiles through a Canvas.In this Canvas, i've set users to enter when they perform a custom event, with the following canvas entry properties: Name Email Phone number I was able to successfully update the Custom Attributes using this method. However, my goal is to be able to update the default user profile attributes instead. Anyone have any idea how i can do this? Below is a screenshot of the User Update step in my canvas, for reference:54Views0likes3CommentsIgnore hour of timestamp custom attribute in segment filters
Hello, I'm using a "time" formatted custom attribute which has as value for each user a timestamp (precise date AND hour). I'm using this custom attribute in segments, using the filter "more than" or "less than" X days ago. I know the "day" in this filter means +24 hours (and not calendar days), so the hour in the custom attribute impacts actually a lot the eligibility. For example, my canvas using the segment starts at 11:30am every day and takes users with the custom attribute more than 1 day ago (because I want to make users entered if they had the custom attribute performed at least yesterday or before). However, if the the value of this custom attribute was indeed the previous day but at 12:30pm, then it means the user is not eligible to enter the canvas. So it's not answering my need. Apart from changing the starting hour of my canvas, or the "X" days in my filter (to 0 instead of 1), I was wondering is there a way to "ignore" the hour in a timestamp in a segment filter to just take into account the date, when my custom attribute is build with both? Thank you!31Views0likes1CommentConversion Rate over 100%?
Hi, I'm struggling to understand the performance of one of our Canvases. I have both the conversion event and exit criteria as "any purchase", and users cannot re-enter the canvas. When I analyze the variants, I see more conversions than entries, leading to a conversion rate over 100%, which shouldn't be possible. Does anybody know what could be going wrong here? thanks!76Views0likes5CommentsScratch & Win Campaign as a Modal Popup in Mobile App (android and iOS)
Hi All, I am new to braze and creating a campaign named "Scratch&Win" for my mobile app users on Android and iOS native apps which are using Braze SDKs for corresponding mobile apps. I am writing a Custom Code with HTML, CSS and javascript. I have uploaded all the required JS files (I am also using dependent js file for scratchpad wScratchPad.js), CSS and images in Braze Media Manager and using those links or Src added my code like below, but when launching to the app none of the images are loading in actual mobile apps. <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width" /> <title>wScratchPad</title> <link rel="Stylesheet" type="text/css" href="./demo/demo.css" /> <script type="text/javascript" src="https://braze-images.com/appboy/communication/assets/code_assets/files/66b261c5153e07005904b258/original.js?1722966469"></script> </head> <body> <div id="scratchModal" class="modal"> <div class="modal-content"> <span class="close" onclick="closeModal()">×</span> <div id="content"> <div class="content-box"> <div id="demo2" class="scratchpad"></div> <div class="modal-actions"> <input type="button" value="Reset" onclick="$('#demo2').wScratchPad('reset');"/> <input type="button" value="Clear" onclick="$('#demo2').wScratchPad('clear');"/> <input type="button" value="Enable" onclick="$('#demo2').wScratchPad('enable', true);"/> <input type="button" value="Disable" onclick="$('#demo2').wScratchPad('enable', false);"/> </div> </div> </div> </div> </div> <style> body { font-family: Arial, sans-serif; margin: 0; padding: 0; background-color: #f0f0f0; } .modal { display: none; position: fixed; z-index: 1000; left: 0; top: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); overflow: auto; justify-content: top; align-items: top; } .modal-content { position: relative; background-color: #fff; padding: 20px; border-radius: 8px; box-shadow: 0 0 15px rgba(0,0,0,0.3); width: 90%; max-width: 400px; /* Adjusted max-width for mobile */ box-sizing: border-box; margin: auto; } .close { position: absolute; top: 10px; right: 10px; font-size: 24px; color: #333; cursor: pointer; } .scratchpad { width: 100%; height: 350px; margin-top:15px; margin-right: 15px; margin-bottom:15px; margin-left:1px; } .modal-actions input { margin-right: 10px; font-size: 14px; /* Adjusted font size for mobile */ } @media (max-width: 600px) { .modal-content { width: 95%; /* Slightly larger width for smaller screens */ } .scratchpad { height: 200px; /* Further reduce height on very small screens */ } .modal-actions input { font-size: 12px; /* Smaller font size on smaller screens */ margin-right: 5px; /* Reduced margin for small screens */ } } </style> <script type="text/javascript" src="https://braze-images.com/appboy/communication/assets/code_assets/files/66b261b6a936b7005981d63f/original.js?1722966454"></script> <script type="text/javascript"> // Show modal on page load window.onload = function() { showModal(); }; // Show modal function showModal() { document.getElementById('scratchModal').style.display = 'flex'; initializeScratchCard(); } // Close modal function closeModal() { document.getElementById('scratchModal').style.display = 'none'; } function initializeScratchCard() { $('#demo2').wScratchPad({ size: 40, bg: 'https://braze-images.com/appboy/communication/assets/image_assets/images/....../original.jpg?1722941151', fg: 'https://braze-images.com/appboy/communication/assets/image_assets/images/...../original.jpg?1722937484', 'cursor': 'url("https://braze-images.com/appboy/communication/assets/image_assets/images/..../original.png?1717067516") 5 5, default', scratchMove: function (e, percent) { if (percent > 70) { this.clear(); } } }); } </script> </div> </div> </body> </html> Please help me for resolving this issue. Thanks, Sanjay Jaiswal42Views0likes2Comments