Stay ready for every adventure with rewards that protect you under the sun. From trails to tides, Brush On Block has your back with perks tailored to your on-the-go lifestyle.
Points with every adventure
Earn bonus points for sharing your outdoor experiences, writing product reviews, and referring fellow explorers to Brush On Block. Earn points every time you stock up on sun protection for your next hike, surf, or flawless look. You can even earn points for recycling your empty refill pods! Redeem points for exclusive discounts on products that keep you protected and camera-ready.
Earn 5 points for every $1 spent, and by doing things like creating an account and sharing with your friends.
CREATE AN ACCOUNT 200 POINTS
PLACE AN ORDER 5 POINTS PER $1 SPENT
SHARE ON FACEBOOK 50 POINTS
LIKE US ON FACEBOOK 50 POINTS
FOLLOW ON INSTAGRAM 50 POINTS
POST A REVIEW 250 POINTS
RECYCLE A REFILL 400 POINTS
HAPPY BIRTHDAY! 500 POINTS
Ways to Spend Points
Once you’ve earned enough points, trade them in for discount coupons in our shop. The more you earn the more you save!
$5 OFF 500 POINTS
$10 OFF 1000 POINTS
$25 OFF 2500 POINTS
Refer a Friend
Give your friends a reward and claim your own when they make a purchase.
They'll get $10 off their first order ($25 minimum), and you'll earn a $20 OFF coupon redeemable in our shop.
THEY GET $10 OFF
YOU GET $20 OFF
FAQs
Login to your Brush On Block account. Then, click the Rewards button on any page to open the rewards panel. If you have enough points, the Redeem button will be enabled next to the available coupons. Click the button to redeem your discount coupon.
The BOB Benefits rewards program is totally free, and no purchase is required to earn points!
There is no limit on points earned. Save them up until you're ready to spend them.
At this time, our BOB Benefits rewards program only supports discount coupons for regular one-time purchases and initial subscription purchases. Discount coupons cannot be applied to recurring subscription orders. However, all orders – both one-time and subscription – earn BOB Benefits points.
No, our shop only supports one discount coupon per order. If you need to consolidate multiple smaller coupons into one, contact us and we’ll help you out.
const version = "3.5";
const makeTableMap = require('makeTableMap');
const createArgumentsQueue = require('createArgumentsQueue');
const injectScript = require('injectScript');
const log = require('logToConsole');
const copyFromWindow = require('copyFromWindow');
const makeString = require('makeString');
const makeInteger = require('makeInteger');
const getUrl = require('getUrl');
const eventSourceUrl = getUrl();
if (eventSourceUrl.indexOf('gtm-msr.appspot.com') !== -1) {
log("Ignoring events sent by gtm msr: " + eventSourceUrl);
return data.gtmOnSuccess();
}
// Helper methods
const mergeObj = (obj, obj2) => {
for (let key in obj2) {
if (obj2.hasOwnProperty(key)) {
obj[key] = obj2[key];
}
}
return obj;
};
const fail = msg => {
log(msg);
data.gtmOnFailure();
};
// Field processing
const tagIds = data.tagIds.map(item => item.TagIds).filter( item => item );
if (tagIds.length === 0) {
return fail("No Amazon Ad Tag IDs configured");
}
let eventName = data.standardEventName;
if (data.eventName === "custom") {
eventName = data.customEventName;
}
if (!eventName) {
return fail("Event Name is not defined");
}
const region = data.tagRegion;
let attributes = {};
if (eventName === "Off-AmazonPurchases") {
attributes = data.offAmazonPurchaseAttributes ? makeTableMap(data.offAmazonPurchaseAttributes, 'Attribute', 'value') : {};
} else {
attributes = data.defaultAttributes ? makeTableMap(data.defaultAttributes, 'Attribute', 'value') : {};
}
const customAttributes = data.customAttributes ? makeTableMap(data.customAttributes, 'Attribute', 'value') : {};
const finalAttributes = mergeObj(attributes, customAttributes);
finalAttributes.gtmVersion = version;
for (const key in finalAttributes) {
if (!key) {
return fail("Attribute is not defined - " + key);
}
}
const gdprAatTokenAttributes = {};
const gdprEventAttributes = {};
let ttl = null;
if (data.includeTcf) {
const possibleGDPRvalues = [0, 1, 2];
if (possibleGDPRvalues.indexOf(data.gdpr) >= 0) {
gdprAatTokenAttributes.gdpr = data.gdpr;
gdprEventAttributes.gdpr = data.gdpr;
}
const possibleGDPRPDvalues = [-1, 0, 1];
if (possibleGDPRPDvalues.indexOf(data.gdprPd) >= 0) {
gdprEventAttributes.gdpr_pd = data.gdprPd;
}
if (data.gdprConsent) {
gdprAatTokenAttributes.gdprConsent = data.gdprConsent;
gdprEventAttributes.gdpr_consent = data.gdprConsent;
}
}
const tokenConfig = {
email: '',
phonenumber: '',
gdpr: { enabled: false, consent: '',},
ttl: 9600,
};
if (data.advancedMatchingList) {
let ttl = null;
if (data.ttl !== undefined && makeInteger(data.ttl) >= 0) ttl = makeInteger(data.ttl);
data.advancedMatchingList.forEach((e) => {
if (!e.paramName || !e.paramValue) {
return;
}
const paramVal = makeString(e.paramValue);
if (e.paramName === "email" && paramVal.length > 0) {
// if token config email is already set, we don't want to
tokenConfig.email = paramVal;
}
if (e.paramName === "phone" && paramVal.length > 0) {
tokenConfig.phonenumber = paramVal;
}
});
if (gdprAatTokenAttributes.gdpr) {
tokenConfig.gdpr.enabled = !!gdprAatTokenAttributes.gdpr;
}
if (gdprAatTokenAttributes.gdprConsent) {
tokenConfig.gdpr.consent = gdprAatTokenAttributes.gdprConsent;
}
if (tokenConfig.gdpr.enabled && !tokenConfig.gdpr.consent) {
return fail("GDPR consent string must be set if GDPR enabled");
}
if (ttl) {
tokenConfig.ttl = ttl;
}
log("token config =", tokenConfig);
}
// Define amzn fn in window
const getAmzn = () => {
const amzn = copyFromWindow('amzn');
if (amzn && !amzn.q) return amzn;
// Until the full library is loaded we allow calling amzn by queuing all
// calls to it. This queue is then processed when the library is loaded.
const amznq = createArgumentsQueue('amzn', 'amzn.q');
const overrideAmznFn = (a, b, c, d) => amznq([a, b, c, d]);
return overrideAmznFn;
};
// track events once amznjs script is loaded
const trackEvents = () => {
const amzn = getAmzn();
if (!amzn) {
return fail("Amazon Ad Tag not defined in browser window");
}
if (data.advancedMatchingList && ((tokenConfig.email !== '') || (tokenConfig.phonenumber !== ''))) {
amzn('setUserData', tokenConfig);
}
amzn('setRegion', region);
tagIds.forEach(item => amzn("addTag", item));
amzn('addtcfv2', gdprEventAttributes);
amzn('trackEvent', eventName, finalAttributes);
};
trackEvents();
injectScript('https://c.amazon-adsystem.com/aat/amzn.js', data.gtmOnSuccess, data.gtmOnFailure, 'amznScript');