TheraPexa Neck and Shoulder Massager
TheraPexa Neck and Shoulder Massager
TheraPexa Neck and Shoulder Massager
TheraPexa Neck and Shoulder Massager
TheraPexa Neck and Shoulder Massager
TheraPexa Neck and Shoulder Massager
TheraPexa Neck and Shoulder Massager
TheraPexa Neck and Shoulder Massager
TheraPexa Neck and Shoulder Massager
TheraPexa Neck and Shoulder Massager
TheraPexa Neck and Shoulder Massager
TheraPexa Neck and Shoulder Massager
TheraPexa Neck and Shoulder Massager
TheraPexa Neck and Shoulder Massager
1/14
TheraPexa Neck and Shoulder Massager
TheraPexa Neck and Shoulder Massager
TheraPexa Neck and Shoulder Massager
TheraPexa Neck and Shoulder Massager
TheraPexa Neck and Shoulder Massager
TheraPexa Neck and Shoulder Massager
TheraPexa Neck and Shoulder Massager
TheraPexa Neck and Shoulder Massager
TheraPexa Neck and Shoulder Massager
TheraPexa Neck and Shoulder Massager
TheraPexa Neck and Shoulder Massager
TheraPexa Neck and Shoulder Massager
TheraPexa Neck and Shoulder Massager
TheraPexa Neck and Shoulder Massager
1/14

TheraPexa Neck and Shoulder Massager

$75.99
$159.99
Save $84.00
11 sold
ColorGray
Please select a color
Quantity
/** @private {string} */ class SpzCustomAnchorScroll extends SPZ.BaseElement { static deferredMount() { return false; } constructor(element) { super(element); /** @private {Element} */ this.scrollableContainer_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.viewport_ = this.getViewport(); this.initActions_(); } setTarget(containerId, targetId) { this.containerId = '#' + containerId; this.targetId = '#' + targetId; } scrollToTarget() { const container = document.querySelector(this.containerId); const target = container.querySelector(this.targetId); const {scrollTop} = container; const eleOffsetTop = this.getOffsetTop_(target, container); this.viewport_ .interpolateScrollIntoView_( container, scrollTop, scrollTop + eleOffsetTop ); } initActions_() { this.registerAction( 'scrollToTarget', (invocation) => this.scrollToTarget(invocation?.caller) ); this.registerAction( 'setTarget', (invocation) => this.setTarget(invocation?.args?.containerId, invocation?.args?.targetId) ); } /** * @param {Element} element * @param {Element} container * @return {number} * @private */ getOffsetTop_(element, container) { if (!element./*OK*/ getClientRects().length) { return 0; } const rect = element./*OK*/ getBoundingClientRect(); if (rect.width || rect.height) { return rect.top - container./*OK*/ getBoundingClientRect().top; } return rect.top; } } SPZ.defineElement('spz-custom-anchor-scroll', SpzCustomAnchorScroll); const STRENGTHEN_TRUST_URL = "/api/strengthen_trust/settings"; class SpzCustomStrengthenTrust extends SPZ.BaseElement { constructor(element) { super(element); this.renderElement_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.xhr_ = SPZServices.xhrFor(this.win); const renderId = this.element.getAttribute('render-id'); SPZCore.Dom.waitForChild( document.body, () => !!document.getElementById(renderId), () => { this.renderElement_ = SPZCore.Dom.scopedQuerySelector( document.body, `#${renderId}` ); if (this.renderElement_) { this.render_(); } this.registerAction('track', (invocation) => { this.track_(invocation.args); }); } ); } render_() { this.fetchData_().then((data) => { if (!data) { return; } SPZ.whenApiDefined(this.renderElement_).then((apis) => { apis?.render(data); document.querySelector('#strengthen-trust-render-1539149753700').addEventListener('click',(event)=>{ if(event.target.nodeName == 'A'){ this.track_({type: 'trust_content_click'}); } }) }); }); } track_(data = {}) { const track = window.sa && window.sa.track; if (!track) { return; } track('trust_enhancement_event', data); } parseJSON_(string) { let result = {}; try { result = JSON.parse(string); } catch (e) {} return result; } fetchData_() { return this.xhr_ .fetchJson(STRENGTHEN_TRUST_URL) .then((responseData) => { if (!responseData || !responseData.data) { return null; } const data = responseData.data; const moduleSettings = (data.module_settings || []).reduce((result, moduleSetting) => { return result.concat(Object.assign(moduleSetting, { logos: (moduleSetting.logos || []).map((item) => { return moduleSetting.logos_type == 'custom' ? this.parseJSON_(item) : item; }) })); }, []); return Object.assign(data, { module_settings: moduleSettings, isEditor: window.self !== window.top, }); }); } } SPZ.defineElement('spz-custom-strengthen-trust', SpzCustomStrengthenTrust);
SKU:
Weight: 0kg
Barcode:

INTRODUCING THERAPY SMART MASSAGING

Say Goodbye To Tension

Improve mobility and recoveryReduce StressBetter Posture
Prevent injury. reduce inflammationPortable and easy to use

Massage Therapy

Backed By Clinical Studies

Over the last 10 years. dozens of clinical studies have concluded that neck massaging leads to a decrease in muscle activity. resulting in pain reduction. reduced inflammation. and accelerated rate of recovery with safe and consistent use.

Stress Relief

Gentle massage movements can help you relax and alleviate the stress and tension accumulated throughout the day.

Increase Blood Flow

Enhance your body and increase circulation to help deliver oxygen and essential nutrients to the muscles.

Easy to use

Experience the convenience of wellness anywhere with our portable and user-friendly neck massager.

Better Posture

Poor posture can contribute to neck and shoulder discomfort. By loosening up the muscles and reducing tension. it can lead to improved posture over time.

 

OUR GUARANTEE:
If you don’t have a positive experience for any reason. contact us any time and we will help you out.
✅ Safe and Secure SSL Checkout
✅ 100% Quality Inspection
✅ 24/7 Customer Service
✅ Real time tracking along the way
✅ No hidden fees