Newsletter — Stay Ahead of Every Tech Shift

TechReview Weekly Newsletter

Get the best tech reviews, buying guides and industry insights delivered straight to your inbox every week.

TechReview Weekly

Stay ahead of every tech shift.

Join thousands of tech enthusiasts getting the best reviews, buying guides & industry insights — straight to your inbox.

  • In-depth product reviews & comparisons
  • Weekly tech news digest, zero fluff
  • Exclusive deals & early access

No spam, ever. Unsubscribe anytime.

';try{ var resp=await fetch('https://api.anthropic.com/v1/messages',{ method:'POST', headers:{'Content-Type':'application/json'}, body:JSON.stringify({ model:'claude-sonnet-4-20250514', max_tokens:1000, system:'You are a backend handler for TechReview newsletter. Do TWO things: 1) Use HubSpot MCP to create a contact with email, firstname (if given), lifecyclestage=subscriber, hs_email_optout=false. 2) Use HubSpot MCP to log an EMAIL engagement associated with that contact, with subject "Welcome to TechReview Weekly" and the provided html body. Return only JSON: {"success":true,"contactId":"..."} or {"success":false,"reason":"..."}', messages:[{role:'user',content:JSON.stringify({email:email,firstname:fname||undefined,welcomeEmailHtml:welcomeHtml,source:'techreview.trade newsletter widget'})}], mcp_servers:[{type:'url',url:'https://mcp.hubspot.com/anthropic',name:'hubspot-mcp'}] }) }); var data=await resp.json(); var ok=data.content&&data.content.some(function(b){return b.type==='mcp_tool_result'}); if(!ok){ var tb=data.content&&data.content.find(function(b){return b.type==='text'}); if(tb){try{var p=JSON.parse(tb.text.replace(/```json|```/g,'').trim());ok=p.success;}catch(e){ok=tb.text.toLowerCase().indexOf('success')>-1;}} } if(ok){ msgBox.className='tr-sub-msg success'; msgBox.textContent='🎉 You\'re in! Check your inbox for a welcome email from TechReview.'; card.querySelector('.tr-email').value=''; card.querySelector('.tr-fname').value=''; btn.textContent='Subscribed ✓'; }else{throw new Error('failed');} }catch(e){ msgBox.className='tr-sub-msg error'; msgBox.textContent='Something went wrong. Please try again.'; btn.disabled=false;btn.textContent='Subscribe free'; } }