In "Migrate an existing Ecommerce Bridge API integration" ( https://developers.hubspot.com/docs/api/migrate-an-existing-ecommerce-bridge-api-integration ) we are told to use CRM v3 APIs instead of the Ecommerce Bridge API. With Ecommerce Bridg read more
Hi. We are migrating too but finding the documentation weak and there are no examples. Do we use the same fieldnames for our data as we did with the ...read more
Hi, We want to sync our orders in to Hubspot but find the Ecommcerce Bridge (ECB) has performance issues in busy times. The ECB requires a DEAL, PRODUCT, LINE ITEM and CONTACT API call to sync that data. Sometimes the ECB will reject one or more read more
Hi Chris, Thanks for the reply. The issue of inefficiency sounds like what we have now - did you mean the CRM has the same issue? If you were...read more
Hi, We want to sync our orders in to Hubspot but find the Ecommcerce Bridge (ECB) has performance issues in busy times. The ECB requires a DEAL, PRODUCT, LINE ITEM and CONTACT API call to sync that data. Sometimes the ECB will reject one or more read more
Hi Chris, Thanks for the reply. The issue of inefficiency sounds like what we have now - did you mean the CRM has the same issue? If you were...read more
Hi, Simple question hopefully. If we get our existing API mappings via this endpoint: GET https://api.hubapi.com/extensions/ecomm/v2/settings?hapikey={our-hapi-key} And then add some new entries in JSON body for some new information read more
Hi, Simple question hopefully. If we get our existing API mappings via this endpoint: GET https://api.hubapi.com/extensions/ecomm/v2/settings?hapikey={our-hapi-key} And then add some new entries in JSON body for some new information read more
Hi, For a year we've had perfect order data in the ecommerce bridge v2, which we sync from our ecommerce store. All orders sequential and all data such as line line items, orders, products and contacts working. Then we wanted to add two new read more
The three second delay did not work either, alas. However, we found a solution. We've had to resort to using a polling/queueing system. We have ...read more
Hi,
Please can someone tell me how to change the position of the HubSpot chat icon. We have an embed code (JavaScript) and the chat icon appears on the bottom right. Can we change this position, say to bottom left?
Thanks in advance,
J
Hi, We want to sync our orders in to Hubspot but find the Ecommcerce Bridge (ECB) has performance issues in busy times. The ECB requires a DEAL, PRODUCT, LINE ITEM and CONTACT API call to sync that data. Sometimes the ECB will reject one or more read more
Hi Chris, Thanks for the reply. The issue of inefficiency sounds like what we have now - did you mean the CRM has the same issue? If you were...read more
Hi, Simple question hopefully. If we get our existing API mappings via this endpoint: GET https://api.hubapi.com/extensions/ecomm/v2/settings?hapikey={our-hapi-key} And then add some new entries in JSON body for some new information read more
Hi, For a year we've had perfect order data in the ecommerce bridge v2, which we sync from our ecommerce store. All orders sequential and all data such as line line items, orders, products and contacts working. Then we wanted to add two new read more
The three second delay did not work either, alas. However, we found a solution. We've had to resort to using a polling/queueing system. We have ...read more
Hi, We are using eCommerce Bridge to sync in ecommerce orders from our website. We create the SYNC calls in this order: PRODUCT -> CONTACT -> DEAL -> LINE ITEM as advised by support. When we create each sync API call, we do a test t read more
Hi, Can someone please tell me if I can create one JSON payload for multiple LINE ITEMS, for example like this: { "storeId": "ecommercebridge-test-store", "objectType": "LINE_ITEM", "messages": [ { "action": "UPSERT", read more
Wendy, did this ever change. Can we send multiple object types in one JSON payload? It would save us making 4 API requests for PRODUCT, DEAL, CONTACT...read more
//
//
//
//
(function($) {
//START END-USER CONFIGURATION
//------------------------------
//selectors for hover card triggers
var allHoverCardTriggers = '.author-name-link,.friend-list .friend a,.username a,.avatar,.user-avatar,.author-img, .authors a, .messageauthorusername a, a.lia-user-name-link, .js-latest-post-by-from a, .user-online-list li a, a.UserAvatar, .customUsersOnline a, #authors a,.dashboard-followers a.user-name, .dashboard-following a.user-name,.author-login-wrapper a, .hb-leaderboard a, .author-img-floated';
// Forward calling page's URL params to endpoint URL as well, helps with testing!
var params = (new URL(location.href)).searchParams;
var userApiUrl = '/plugins/custom/hubspot/hubspot/hovercardendpoint?' + ((params.set('user_id', '') == []._) && params.toString());
if($('.hover-card-container').length<1){
$('body').append('');
}
var cardWrapper = $('.hover-card-container');
var error = false;
var thisUserID = '';
var thisUserLogin = '';
var userLink ='';
var cardTimer;
var leaveTimer;
function mouseenter(Elem) {
var thisEl = Elem;
cardTimer = setTimeout(function(){
var docWidth = $(document).width();
var rightSide = false;
var userLink = thisEl.attr('href');
if($('.ViewProfilePage').length && $('img.lia-user-avatar-profile',thisEl).length){thisUserID = '78561';}
else if(thisEl.attr('href')=='#' || thisEl.attr('href')=='' || !userLink.match('viewprofilepage')){
return false;}
else{
var thisLen = (userLink).split('/');
thisUserID = (thisLen)[thisLen.length-1];
}
var thisCard = $('.profileCard[data-user='+thisUserID+']',cardWrapper);
var cardId = 'userProfileCard-'+ thisUserID;
var addAttr = thisEl.attr('aria-describedby',cardId);
var thisElTopOffset = Math.round(thisEl.offset().top+(thisEl.height()/2)+30);
var thisElbottomoffset = "auto";
var className = "";
var winHeight = $(window).height();
var elOffset = thisEl.offset();
var scrollTop = $(window).scrollTop();
var elementOffset = thisEl.offset().top;
var distanceTop = (elementOffset - scrollTop);
var distanceBottom = (winHeight + scrollTop) - (elOffset.top + thisEl.outerHeight(true));
var distanceLeft = Math.round(thisEl.offset().left);
var bodyHight = $('body').height();
var topParam = '';
var bottomparam = '';
var position = '';
var className = 'topArrow';
cardId
if(distanceBottom < 300 ){
if(distanceLeft < 59){
thisCard.removeClass('bottomArrow');
var className = 'leftArrow';
var distanceLeft = (distanceLeft)+(39);
var thisElTopOffset = (thisElTopOffset)-(150);
}else{
var thisElTopOffset = (thisElTopOffset)-(301); var className = 'bottomArrow'; thisCard.removeClass('topArrow');
thisCard.removeClass('leftArrow');
var distanceLeft = (distanceLeft)-(45);
}
}
else{
if(distanceLeft < 59){
thisCard.removeClass('topArrow');
var className = 'leftArrow';
var distanceLeft = (distanceLeft)+(39);
var thisElTopOffset = (thisElTopOffset)-(150);
}else{
thisCard.removeClass('leftArrow');
thisCard.removeClass('bottomArrow').addClass('topArrow');
var distanceLeft = (distanceLeft)-(45);
}
}
if(thisCard.length && $('.profileCard[data-user='+thisUserID+'] .preloader',cardWrapper).length<1){
$('.profileCard',cardWrapper).hide();
thisCard.addClass(className);
rightSide?thisCard.addClass('rightArrow'):thisCard.removeClass('rightArrow');
thisCard.delay(0).css({'top':(thisElTopOffset),'left':distanceLeft,'bottom':thisElbottomoffset}).fadeIn();
} else {
var ajaxReturn = '';
//just in case
thisCard.remove();
//hover card wrapper markup
var rightArrowClass = rightSide?'rightArrow':'';
if(thisElTopOffset != "auto"){
topParam = 'px';
}
if(thisElbottomoffset != "auto"){
bottomparam = 'px';
}
var profileCardHtml = '';
$.when(
//get the background
$.ajax({
type: 'GET',
url: userApiUrl+thisUserID,
dataType: 'html',
success: function(data) {
$('.profileCard',cardWrapper).hide();
ajaxReturn = data;
}
})
)
.done(function(){
cardWrapper.append(profileCardHtml);
$('.profileCard[data-user='+thisUserID+']',cardWrapper).eq(0).empty().html(ajaxReturn);
if($('.profileCard[data-user='+thisUserID+'] .preloader',cardWrapper).length){
$('.profileCard[data-user='+thisUserID+'] .preloader',cardWrapper).parents('div.profileCard').remove();
}
})
.fail(function(){
//uh oh - bail out!
$('.profileCard',cardWrapper).hide();
});
}
}, 360);
}
function mouseleave(e) {
clearTimeout(cardTimer);
// glowingblue: When the user leaves the hovercard trigger, wait because the leaving could be
// to interact with the hovercard, if we don't wait it will just disappear...because
// we left the trigger, right...so we'll have another handler that check if the mouse is
// over the hovercard and if so clears this timer, so the card doesn't close here
leaveTimer = setTimeout(function() {
if ($('.profileCard[data-user="'+thisUserID+'"]',cardWrapper).length) {
$('.profileCard[data-user="'+thisUserID+'"]',cardWrapper).fadeOut('fast');
} else {
$(".profileCard").fadeOut('fast');
}
}, 2400);
}
$(document).on("mouseenter focusin", allHoverCardTriggers, function(event) {
if(!($(this).parents().hasClass('custom-header'))&& !($(this).parents().hasClass('green-wrap'))){
(leaveTimer !== []._) && clearTimeout(leaveTimer);
mouseenter($(this));
event.stopPropagation();
}
});
$(document).on("mouseleave focusout", allHoverCardTriggers, function(event) {
(leaveTimer !== []._) && clearTimeout(leaveTimer);
mouseleave(event);
event.stopPropagation();
});
// glowingblue: Add handlers for when the users interacts with the hovercard, no closing!
$('.hover-card-container').on('mouseenter', function(e) {
(leaveTimer !== []._) && clearTimeout(leaveTimer);
});
$('.hover-card-container').on('mouseleave', function(e) {
(leaveTimer !== []._) && clearTimeout(leaveTimer);
if ( $(e.target).is('.profileCard[style*="block"]') ) {
leaveTimer = setTimeout(function() {
$(e.target).fadeOut('fast');
}, 2400);
}
});
// glowingblue: add one global root level click handler to also close any visible hovercards
// if the user taps/clicks outside the hovercard
$(document).on('mousedown', function(e) {
if ( !$(e.target).parents('.hover-card-container').length ) {
(leaveTimer != []._) && clearTimeout(leaveTimer);
$('.hover-card-container .profileCard[style*="block"]').each(function() {
$(this).fadeOut('fast');
});
}
});
})(LITHIUM.jQuery);
(function($) {
$(document).ready(function(){
var originalElementId;
function setCookie(cname,cvalue,exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires=" + d.toGMTString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function errorDisplay(errType) {
var errAuth = '
To access this area of the Community, please log in.
';
var errAuthLogin = '
To access HubFans and complete challenges, confirm you are logged in by clicking here. Find additional troubleshooting steps here
';
var noBadges = '
To start earning advocacy badges go to the HubFan advocacy program page and start completing advocacy challenges.
';
var noAsks = '
Hooray! No more challenges for you to complete today. Check back in for more challenges tomorrow.