[{"data":1,"prerenderedAt":822},["ShallowReactive",2],{"header:help":3,"footer:default":67,"story:navigation\u002Fsearch:help":250,"story:help\u002Fcategories":288,"story:help\u002Farticles\u002Fset-custom-package-dimensions-for-live-rates":314,"no-guide:set-custom-package-dimensions-for-live-rates":59,"article:\u002Fhelp\u002Farticles\u002Fset-custom-package-dimensions-for-live-rates":563,"story:contact":578,"help:tree:afeef428-7340-4a92-99ea-052ad2041129":767,"_apollo:default":821},{"name":4,"created_at":5,"published_at":6,"updated_at":7,"id":8,"uuid":9,"content":10,"slug":57,"full_slug":58,"sort_by_date":59,"position":60,"tag_list":61,"is_startpage":24,"parent_id":62,"meta_data":59,"group_id":63,"first_published_at":64,"release_id":59,"lang":65,"path":59,"alternates":66,"default_full_slug":59,"translated_slugs":59},"Help Center Header","2024-08-09T18:06:34.939Z","2024-10-21T21:58:39.217Z","2024-10-21T21:58:39.232Z",10082752,"3e9b88f7-c163-4657-a2f2-62532d600fad",{"_uid":11,"link":12,"badge":16,"items":17,"title":13,"buttons":50,"new_tab":24,"submenu":51,"alignment":13,"component":52,"badge_link":53,"top_menu_items":56},"e5645a1a-f991-40e8-8d67-e40ebc082b5a",{"id":13,"url":13,"linktype":14,"fieldtype":15,"cached_url":13},"","story","multilink","Help Center",[18,27,34,39,44],{"_uid":19,"link":20,"title":23,"new_tab":24,"submenu":25,"component":26},"5cbe2861-1f49-4166-97da-a4dddd8105e3",{"id":21,"url":13,"linktype":14,"fieldtype":15,"cached_url":22},"4c0a2d99-ec30-4579-8ef1-6bf5564d4839","help\u002Fcategories\u002F","Articles",false,[],"header___item",{"_uid":28,"link":29,"title":32,"new_tab":33,"component":26},"1c8edeb5-b9e9-4cb8-b1c6-c1f292f7d7cd",{"id":13,"url":30,"linktype":31,"fieldtype":15,"cached_url":30},"https:\u002F\u002Fwiki.foxycart.com\u002F","url","Documentation",true,{"_uid":35,"link":36,"title":38,"new_tab":33,"component":26},"8d7df70e-f087-4da0-b616-6f0e9a5af35c",{"id":13,"url":37,"linktype":31,"fieldtype":15,"cached_url":37},"https:\u002F\u002Fapi.foxycart.com\u002F","API Documentation",{"_uid":40,"link":41,"title":43,"new_tab":33,"component":26},"f76e7944-23d5-4652-87e4-cdae79272762",{"id":13,"url":42,"linktype":31,"fieldtype":15,"cached_url":42},"https:\u002F\u002Fstatus.foxy.io\u002F","System Status",{"_uid":45,"link":46,"title":49,"new_tab":24,"component":26},"0de16771-4c84-466c-a1da-d8568113c71f",{"id":47,"url":13,"linktype":14,"fieldtype":15,"cached_url":48},"01e4e370-f9b9-45af-8fa9-f15540699b0d","contact","Contact Us",[],[],"header",{"id":54,"url":13,"linktype":14,"fieldtype":15,"cached_url":55},"4a679eb7-662d-4ea4-a976-5a2acbf0b663","help\u002F",[],"help-header","navigation\u002Fhelp-header",null,20,[],10082747,"71b81c2e-5e09-48a1-a397-a3c72fcd344a","2022-09-21T14:50:25.655Z","default",[],{"name":68,"created_at":69,"published_at":70,"updated_at":71,"id":72,"uuid":73,"content":74,"slug":243,"full_slug":244,"sort_by_date":59,"position":245,"tag_list":246,"is_startpage":24,"parent_id":62,"meta_data":59,"group_id":247,"first_published_at":248,"release_id":59,"lang":65,"path":59,"alternates":249,"default_full_slug":59,"translated_slugs":59},"Default Footer","2024-08-09T18:06:59.024Z","2025-09-04T06:24:46.223Z","2025-09-04T06:24:46.241Z",10082753,"e59e67ac-248a-482f-84a1-53d4f318186a",{"_uid":75,"about":76,"logos":77,"socials":82,"sections":108,"component":225,"cta_title":226,"bottom_links":227,"cta_subtitle":241,"cta_button_link":242,"cta_button_text":183},"830983f5-c4c4-43c8-b150-86a5e3fa6dc8","Foxy’s hosted cart & payment page allow you to sell anything, using your existing website or platform.",[78],{"id":79,"alt":13,"name":13,"focus":13,"title":13,"filename":80,"copyright":13,"fieldtype":81},14760,"https:\u002F\u002Fa-us.storyblok.com\u002Ff\u002F1001040\u002Fx\u002F3b030847ec\u002Fb-corp.svg","asset",[83,90,96,102],{"_uid":84,"icon":85,"link":86,"name":88,"component":89},"faf0a618-ea94-42ea-9182-03be18c43216","fa-facebook",{"id":13,"url":87,"linktype":31,"fieldtype":15,"cached_url":87},"https:\u002F\u002Fwww.facebook.com\u002Ffoxycart","Facebook","footer___social",{"_uid":91,"icon":92,"link":93,"name":95,"component":89},"14309c18-7e79-423e-b375-34555bac0811","fa-instagram",{"id":13,"url":94,"linktype":31,"fieldtype":15,"cached_url":94},"https:\u002F\u002Fwww.instagram.com\u002Ffoxy_io","Instagram",{"_uid":97,"icon":98,"link":99,"name":101,"component":89},"8f7fe7cf-0dd3-4596-8334-226ea466716a","fa-linkedin",{"id":13,"url":100,"linktype":31,"fieldtype":15,"cached_url":100},"https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Ffoxycart.com","LinkedIn",{"_uid":103,"icon":104,"link":105,"name":107,"component":89},"90a675b4-dd97-40b5-be09-00a87223d4c5","fa-youtube",{"id":13,"url":106,"linktype":31,"fieldtype":15,"cached_url":106},"https:\u002F\u002Fwww.youtube.com\u002Fuser\u002Ffoxycart","Youtube",[109,139,184,206],{"_uid":110,"name":111,"items":112,"component":138},"82849945-282f-488c-b18d-a8d2252f514a","Company",[113,120,126,132],{"_uid":114,"link":115,"title":118,"new_tab":24,"component":119},"1f699ab1-938b-4d9d-9825-aabcbe6f57fe",{"id":116,"url":13,"linktype":14,"fieldtype":15,"cached_url":117},"63634293-a749-4226-9439-9f38ee6dcda0","about-us","About Us","footer___menu_items",{"_uid":121,"link":122,"title":125,"new_tab":24,"component":119},"b26b00f1-a0e7-4be2-8ab3-428b8cc841f8",{"id":123,"url":13,"linktype":14,"fieldtype":15,"cached_url":124},"26cb7c55-faed-4a77-a291-1552d4111b3e","how-foxy-works","How Foxy Works",{"_uid":127,"link":128,"title":131,"new_tab":24,"component":119},"b40c68a0-1ceb-4226-9515-6176534f61fe",{"id":129,"url":13,"linktype":14,"fieldtype":15,"cached_url":130},"dc6657d7-7f4f-4c0d-b781-e971b038ee26","for-good","Foxy For Good",{"_uid":133,"link":134,"title":137,"new_tab":24,"component":119},"3ad0c134-bef9-4fff-b891-e09f16109036",{"id":135,"url":13,"linktype":14,"fieldtype":15,"cached_url":136},"23cae210-baf4-4588-9862-d09f4f52ccd2","brand-assets","Brand Assets","footer___section",{"_uid":140,"name":141,"items":142,"component":138},"a6805fa8-ac60-47f1-b8f0-f27aded0afbe","Product",[143,149,155,161,167,173,179],{"_uid":144,"link":145,"title":148,"new_tab":24,"component":119},"b39c8a4e-2383-486f-b76a-11fbb15d8134",{"id":146,"url":13,"linktype":14,"fieldtype":15,"cached_url":147},"bb04690f-fe98-4ce6-80be-05b950f2364f","features\u002F","Features",{"_uid":150,"link":151,"title":154,"new_tab":24,"component":119},"64f8a41f-c181-433d-bc0a-fc94e71ecbf6",{"id":152,"url":13,"linktype":14,"fieldtype":15,"cached_url":153},"c450c58d-761d-48c0-a9af-0b064611689b","pricing","Pricing",{"_uid":156,"link":157,"title":160,"new_tab":24,"component":119},"6e0b287f-fd8c-4146-9e0e-0ab0b5c9ce3c",{"id":158,"url":13,"linktype":14,"fieldtype":15,"cached_url":159},"fab20ad9-e76a-4947-b709-3a6fdfa88028","blog\u002Fcategories\u002Fproduct-updates","Product Updates",{"_uid":162,"link":163,"title":166,"new_tab":24,"component":119},"47e5a074-a6b5-4f1c-8c2f-89a2ae9f83eb",{"id":164,"url":13,"linktype":14,"fieldtype":15,"cached_url":165},"d2c83612-d611-47f3-a3b4-ca7fe08540b8","changelogs\u002F","Changelogs",{"_uid":168,"link":169,"title":172,"new_tab":24,"component":119},"b5c08774-542f-4ffd-b357-c94d674488b9",{"id":170,"url":13,"linktype":14,"fieldtype":15,"cached_url":171},"08876121-0df3-4ed9-aa11-902b3e41cd02","whats-next","What's Next",{"_uid":174,"link":175,"title":178,"new_tab":24,"component":119},"9c2704ed-6d9f-43e1-9e67-c8d91c083288",{"id":176,"url":13,"linktype":14,"fieldtype":15,"cached_url":177},"056a7857-b18f-4025-8f97-91a38fc19bc8","compare\u002F","Compare",{"_uid":180,"link":181,"title":183,"new_tab":24,"component":119},"5f2db35b-674b-406a-8fa7-d246633af9fe",{"id":13,"url":182,"linktype":31,"fieldtype":15,"cached_url":182},"https:\u002F\u002Fadmin.foxy.io\u002Fsign-up","Try Foxy Free",{"_uid":185,"name":186,"items":187,"component":138},"63fa1f29-4252-4640-9922-fe310e69e54a","Security",[188,194,200],{"_uid":189,"link":190,"title":193,"new_tab":24,"component":119},"1158ddb6-9eb0-466f-8eb6-7ca2ae66c8b8",{"id":191,"url":13,"linktype":14,"fieldtype":15,"cached_url":192},"1f58fb2c-8681-4742-b6e8-09999beae9f6","security-contact","Security Contact",{"_uid":195,"link":196,"title":199,"new_tab":24,"component":119},"9a79c54a-6022-4dfd-854b-766f5e4703ba",{"id":197,"url":13,"linktype":14,"fieldtype":15,"cached_url":198},"55cbfcc3-425a-4261-8037-54e919851d2d","pci","PCI Compliance",{"_uid":201,"link":202,"title":205,"new_tab":24,"component":119},"0b85f5b6-9534-4071-b323-b39d053dd4d7",{"id":203,"url":13,"linktype":14,"fieldtype":15,"cached_url":204},"c3ac0fe3-83e2-4879-afbd-d4c83e1590df","help\u002Farticles\u002Four-official-domains-public-code","Domains & Codebases",{"_uid":207,"name":208,"items":209,"component":138},"998ded67-d107-49f4-8154-ca6be51671ec","Support",[210,213,216,219,222],{"_uid":211,"link":212,"title":16,"new_tab":24,"component":119},"594ffd35-3049-4004-bb08-0db568ebd819",{"id":54,"url":13,"linktype":14,"fieldtype":15,"cached_url":55},{"_uid":214,"link":215,"title":32,"new_tab":33,"component":119},"0a1a55ab-a985-4f9d-8b42-26da714d0c1c",{"id":13,"url":30,"linktype":31,"fieldtype":15,"cached_url":30},{"_uid":217,"link":218,"title":38,"new_tab":33,"component":119},"61e0b7c8-aadf-419b-a339-b3ccabc65bf4",{"id":13,"url":37,"linktype":31,"fieldtype":15,"cached_url":37},{"_uid":220,"link":221,"title":43,"new_tab":33,"component":119},"fd67a89e-1c54-4d31-94b5-64be999062d6",{"id":13,"url":42,"linktype":31,"fieldtype":15,"cached_url":42},{"_uid":223,"link":224,"title":49,"new_tab":24,"component":119},"231a6f71-e996-4ad4-b033-d4d5542f34f0",{"id":47,"url":13,"linktype":14,"fieldtype":15,"cached_url":48},"footer","Get started with our *unlimited free trial*.",[228,235],{"_uid":229,"link":230,"text":233,"component":234},"f0b77210-2632-45a2-8436-e57cad84d01a",{"id":231,"url":13,"linktype":14,"fieldtype":15,"cached_url":232},"60ba16a2-c1f4-485f-b978-8d2eeeafbf5a","terms-of-service","Terms of Service","footer___bottom_links",{"_uid":236,"link":237,"text":240,"component":234},"4bd497b0-993f-4b4d-a5b7-8a49c7c8fec9",{"id":238,"url":13,"linktype":14,"fieldtype":15,"cached_url":239},"332302b9-1d18-4016-b9c8-9b33c72d782b","privacy-policy","Privacy Policy","No credit card required.",{"id":13,"url":182,"linktype":31,"fieldtype":15,"cached_url":182},"default-footer","navigation\u002Fdefault-footer",50,[],"11006268-07f9-41e9-96f3-c51fb723399d","2022-09-21T20:39:02.357Z",[],{"name":251,"created_at":252,"published_at":253,"updated_at":254,"id":255,"uuid":256,"content":257,"slug":279,"full_slug":282,"sort_by_date":59,"position":283,"tag_list":284,"is_startpage":24,"parent_id":62,"meta_data":59,"group_id":285,"first_published_at":286,"release_id":59,"lang":65,"path":59,"alternates":287,"default_full_slug":59,"translated_slugs":59},"Search","2024-10-21T22:08:54.973Z","2025-05-26T09:17:25.790Z","2025-05-26T09:17:25.804Z",13592003,"14cbc359-9ac1-4a7a-a8de-ad4ac8ef26d4",{"_uid":258,"name":251,"indices":259,"summary":13,"component":279,"primary_image":280},"5e4a56e8-76f1-4790-b3a7-70f1be97d042",[260,265,269,274],{"key":261,"_uid":262,"icon":13,"name":263,"component":264},"all","c12a3210-7323-4273-8217-5215e52efe84","All","index",{"key":266,"_uid":267,"icon":268,"name":23,"component":264},"help_center_article","5acff080-95e4-44d3-8dcf-1b19720af382","fa-file-alt",{"key":270,"_uid":271,"icon":272,"name":273,"component":264},"help_center_guide","b8fbc206-c083-471e-a1f0-0ebeb90a669d","fa-book","Guides",{"key":275,"_uid":276,"icon":277,"name":278,"component":264},"blog_post","23419e83-2e56-4c4c-8a05-9fd1b3c9a9bd","fa-file-image","Blog Posts","search",{"id":59,"alt":59,"name":13,"focus":59,"title":59,"source":59,"filename":13,"copyright":59,"fieldtype":81,"meta_data":281},{},"navigation\u002Fsearch",60,[],"11e1fd31-95cd-4fc9-b736-8b8910663e6c","2024-10-21T23:17:05.904Z",[],{"name":23,"created_at":289,"published_at":290,"updated_at":291,"id":292,"uuid":21,"content":293,"slug":307,"full_slug":22,"sort_by_date":59,"position":308,"tag_list":309,"is_startpage":33,"parent_id":310,"meta_data":59,"group_id":311,"first_published_at":312,"release_id":59,"lang":65,"path":59,"alternates":313,"default_full_slug":59,"translated_slugs":59},"2022-09-19T14:42:29.685Z","2024-07-30T18:17:22.506Z","2024-07-30T18:17:22.525Z",2660,{"_uid":294,"icon":13,"name":23,"guides":295,"pinned":24,"summary":296,"category":13,"component":297,"blog_posts":298,"content_hub":24,"icon_custom":299,"case_studies":300,"faq_sections":301,"help_articles":302,"featured_guides":303,"mailbox_category":13,"featured_articles":304,"featured_blog_posts":305,"featured_case_studies":306},"d6dae89a-907a-4bf7-82de-fe2ba875ee6e",[],"Get your questions answered with our browsable knowledge base.","help_center_category",[],{"id":59,"alt":59,"name":13,"focus":59,"title":59,"filename":13,"copyright":59,"fieldtype":81},[],[],[],[],[],[],[],"categories",530,[],2658,"19ebcdd2-027f-47f5-9a5b-a8992c959578","2022-09-19T16:24:39.219Z",[],{"name":315,"created_at":316,"published_at":317,"updated_at":318,"id":319,"uuid":320,"content":321,"slug":556,"full_slug":557,"sort_by_date":59,"position":558,"tag_list":559,"is_startpage":24,"parent_id":560,"meta_data":59,"group_id":561,"first_published_at":317,"release_id":59,"lang":65,"path":59,"alternates":562,"default_full_slug":59,"translated_slugs":59},"Set custom package dimensions for live rates","2026-07-20T20:36:25.429Z","2026-07-20T21:42:37.207Z","2026-07-20T21:42:37.222Z",200254199580242,"afeef428-7340-4a92-99ea-052ad2041129",{"_uid":322,"body":323,"name":550,"image":551,"pinned":24,"summary":553,"category":554,"component":266,"related_articles":555},"6ba65734-7c0e-4560-8a35-d065ee2d3c2b",{"type":324,"content":325},"doc",[326,333,338,365,372,377,383,395,411,460,475,491,496,501,507,540,545],{"type":327,"attrs":328,"content":329},"paragraph",{"textAlign":59},[330],{"text":331,"type":332},"When using live rate shipping for your store, the shipping rate request will utilise a default box dimension along with the total weight and address to determine rates. Currently those default dimensions are a 5“x5”x5“ package for UPS, 5”x5“x0.5” for USPS, and for FedEx it's determined based on the package type selected in your store's shipping settings.","text",{"type":327,"attrs":334,"content":335},{"textAlign":59},[336],{"text":337,"type":332},"You can use this snippet to provide custom dimensions for shipping rate requests based upon a condition that you set, such as the categories or types of products in the cart.",{"type":327,"attrs":339,"content":340},{"textAlign":59},[341,346,348,355,357,363],{"text":342,"type":332,"marks":343},"Note:",[344],{"type":345},"bold",{"text":347,"type":332}," Foxy currently only allows for a single set of box dimensions per order. This snippet will not allow you to calculate shipping for multiple different sized boxes. For achieving that, a custom integration could be created using our ",{"text":349,"type":332,"marks":350},"custom shipping code",[351],{"type":352,"attrs":353},"link",{"href":354,"uuid":59,"anchor":59,"target":59,"linktype":31},"https:\u002F\u002Fwiki.foxycart.com\u002Fv\u002F2.0\u002Fshipping\u002Fcustom_code",{"text":356,"type":332},", and using a third-party service such as ",{"text":358,"type":332,"marks":359},"Shippo",[360],{"type":352,"attrs":361},{"href":362,"uuid":59,"anchor":59,"target":59,"linktype":31},"https:\u002F\u002Fwiki.foxycart.com\u002Fv\u002F2.0\u002Fshipping\u002Fcustom_code\u002Fgoshippo",{"text":364,"type":332},".",{"type":366,"attrs":367,"content":369},"heading",{"level":368,"textAlign":59},2,[370],{"text":371,"type":332},"Add the custom javascript",{"type":327,"attrs":373,"content":374},{"textAlign":59},[375],{"text":376,"type":332},"In your store's administration - navigate to the Configuration page, and within the Cart section look for “Add custom header and footer code to your templates”. Enable that option if it isn't already, and place the following code into the “Footer” textbox:",{"type":378,"attrs":379,"content":380},"code_block",{"class":59},[381],{"text":382,"type":332},"\u003Cscript>\nfunction getCustomDimensions(params) {\n    \u002F\u002F Do your custom logic in here\n    if (someCondition) {\n        return {\"length\": 18, \"width\": 16, \"height\": 10};\n    } else {\n        return null;\n    }\n}\nFC.client.on(\"cart-shipping-options-update\", function(params) {\n    params.address.dimensions = getCustomDimensions(params);\n});\nFC.client.on(\"checkout-shipping-options-update\", function(params) {\n    params.address.dimensions = getCustomDimensions(params);\n});\n\u003C\u002Fscript>",{"type":327,"attrs":384,"content":385},{"textAlign":59},[386,388,393],{"text":387,"type":332},"You'll obviously need to edit the ",{"text":389,"type":332,"marks":390},"getCustomDimensions()",[391],{"type":392},"code",{"text":394,"type":332}," function to correctly set the dimensions based on your conditions such as certain products or categories in the cart.",{"type":327,"attrs":396,"content":397},{"textAlign":59},[398,400,403,405,409],{"text":399,"type":332},"The ",{"text":389,"type":332,"marks":401},[402],{"type":392},{"text":404,"type":332}," function is passed a ",{"text":406,"type":332,"marks":407},"params",[408],{"type":392},{"text":410,"type":332}," variable, which contains two arrays:",{"type":412,"content":413},"bullet_list",[414,426],{"type":415,"content":416},"list_item",[417],{"type":327,"attrs":418,"content":419},{"textAlign":59},[420,424],{"text":421,"type":332,"marks":422},"address",[423],{"type":392},{"text":425,"type":332},": Contains the shipping address that the customer as entered so far",{"type":415,"content":427},[428],{"type":327,"attrs":429,"content":430},{"textAlign":59},[431,435,437,441,443,447,448,452,454,458],{"text":432,"type":332,"marks":433},"fields",[434],{"type":392},{"text":436,"type":332},": Contains the ",{"text":438,"type":332,"marks":439},"shipping_city",[440],{"type":392},{"text":442,"type":332},", ",{"text":444,"type":332,"marks":445},"shipping_postal_code",[446],{"type":392},{"text":442,"type":332},{"text":449,"type":332,"marks":450},"shipping_region",[451],{"type":392},{"text":453,"type":332}," and ",{"text":455,"type":332,"marks":456},"shipping_region_name",[457],{"type":392},{"text":459,"type":332}," as entered by the customer to trigger this rate request",{"type":327,"attrs":461,"content":462},{"textAlign":59},[463,464,467,469,473],{"text":399,"type":332},{"text":389,"type":332,"marks":465},[466],{"type":392},{"text":468,"type":332}," function needs to return an object with three parameters like this: ",{"text":470,"type":332,"marks":471},"{\"length\": 18, \"width\": 16, \"height\": 10}",[472],{"type":392},{"text":474,"type":332},", the value for each dimension being a number.",{"type":327,"attrs":476,"content":477},{"textAlign":59},[478,480,484,486,489],{"text":479,"type":332},"If you want to leave the dimensions as the store default, return ",{"text":481,"type":332,"marks":482},"null",[483],{"type":392},{"text":485,"type":332}," from the ",{"text":389,"type":332,"marks":487},[488],{"type":392},{"text":490,"type":332}," function.",{"type":327,"attrs":492,"content":493},{"textAlign":59},[494],{"text":495,"type":332},"Make sure you test your shipping results before and after applying this snippet, ensuring you're getting the results that you expect. Different carriers have different allowances for box sizes for their various rates - you can review your chosen carrier(s) website to check on what those maximums are.",{"type":366,"attrs":497,"content":498},{"level":368,"textAlign":59},[499],{"text":500,"type":332},"Examples",{"type":366,"attrs":502,"content":504},{"level":503,"textAlign":59},3,[505],{"text":506,"type":332},"Example 1: Returning the largest dimensions from product level attributes",{"type":327,"attrs":508,"content":509},{"textAlign":59},[510,512,518,520,524,525,529,530,534,536],{"text":511,"type":332},"Foxy products have ",{"text":513,"type":332,"marks":514},"product level reserved attributes",[515],{"type":352,"attrs":516},{"href":517,"uuid":59,"anchor":59,"target":59,"linktype":31},"https:\u002F\u002Fwiki.foxycart.com\u002Fv\u002F2.0\u002Fproducts",{"text":519,"type":332}," for ",{"text":521,"type":332,"marks":522},"length",[523],{"type":392},{"text":442,"type":332},{"text":526,"type":332,"marks":527},"width",[528],{"type":392},{"text":453,"type":332},{"text":531,"type":332,"marks":532},"height",[533],{"type":392},{"text":535,"type":332},". These values aren't currently utilised anywhere, but can be used in this snippet to determine the shipping dimensions. As an example, the following code would use the largest dimensions for the products in the cart as the dimensions for shipping. The product level attributes would be passed as part of an add to cart, for example ",{"text":537,"type":332,"marks":538},"https:\u002F\u002Fyourstore.foxycart.com\u002Fcart?name=My+Product&code=abc123&price=15.95&length=3&width=3.5&height=2",[539],{"type":392},{"type":327,"attrs":541,"content":542},{"textAlign":59},[543],{"text":544,"type":332},"This snippet would be pasted into the “footer” textarea of the “Add custom header and footer code to your templates” option, as found on the “configuration” page of your store's Foxy administration:",{"type":378,"attrs":546,"content":547},{"class":59},[548],{"text":549,"type":332},"{% if context == \"cart\" or context == \"checkout\" %}\n\u003Cscript>\nfunction getCustomDimensions(params) {\n    var volume = 0,\n        dimensions = null;\n \n    for (var i = 0; i \u003C FC.json.items.length; i++) {\n        var width = parseFloat(FC.json.items[i].width),\n            height = parseFloat(FC.json.items[i].height),\n            length = parseFloat(FC.json.items[i].length);\n \n        var v = width * height * length;\n \n        if (v > volume) {\n            volume = v;\n            dimensions = {\"length\": length, \"width\": width, \"height\": height};\n        }\n    }\n \n    return dimensions;\n}\nFC.client.on(\"cart-shipping-options-update\", function(params) {\n    params.address.dimensions = getCustomDimensions(params);\n});\nFC.client.on(\"checkout-shipping-options-update\", function(params) {\n    params.address.dimensions = getCustomDimensions(params);\n});\n\u003C\u002Fscript>\n{% endif %}","Dynamically setting the shipping box dimensions for live rates",{"id":59,"alt":59,"name":13,"focus":59,"title":59,"source":59,"filename":13,"copyright":59,"fieldtype":81,"meta_data":552},{},"How to set the package dimensions sent to live rate carriers for more accurate quotes.","5cb92e14-16e9-4584-8bbf-016ae6ea7171",[],"set-custom-package-dimensions-for-live-rates","help\u002Farticles\u002Fset-custom-package-dimensions-for-live-rates",-4000,[],2659,"85bbca0c-bd68-4d0b-b2d0-30f52ed3c253",[],{"html":564,"sections":565,"segments":574},"\u003Cp>When using live rate shipping for your store, the shipping rate request will utilise a default box dimension along with the total weight and address to determine rates. Currently those default dimensions are a 5“x5”x5“ package for UPS, 5”x5“x0.5” for USPS, and for FedEx it&#039;s determined based on the package type selected in your store&#039;s shipping settings.\u003C\u002Fp>\u003Cp>You can use this snippet to provide custom dimensions for shipping rate requests based upon a condition that you set, such as the categories or types of products in the cart.\u003C\u002Fp>\u003Cp>\u003Cstrong>Note:\u003C\u002Fstrong> Foxy currently only allows for a single set of box dimensions per order. This snippet will not allow you to calculate shipping for multiple different sized boxes. For achieving that, a custom integration could be created using our \u003Ca href=\"https:\u002F\u002Fwiki.foxycart.com\u002Fv\u002F2.0\u002Fshipping\u002Fcustom_code\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">custom shipping code\u003C\u002Fa>, and using a third-party service such as \u003Ca href=\"https:\u002F\u002Fwiki.foxycart.com\u002Fv\u002F2.0\u002Fshipping\u002Fcustom_code\u002Fgoshippo\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Shippo\u003C\u002Fa>.\u003C\u002Fp>\u003Csection id=\"add-the-custom-javascript\" data-title=\"Add the custom javascript\" data-title-node=\"H2\">\u003Chr class=\"my-8\" style=\"margin-left: -48px; margin-right: -40vw\">\u003Ch2 data-anchor-id=\"add-the-custom-javascript\">Add the custom javascript\u003C\u002Fh2>\u003Cp>In your store&#039;s administration - navigate to the Configuration page, and within the Cart section look for “Add custom header and footer code to your templates”. Enable that option if it isn&#039;t already, and place the following code into the “Footer” textbox:\u003C\u002Fp>\u003Cdiv class=\"position-relative w-100 overflow-hidden rounded-2\" data-code-block>\u003Cdiv class=\"d-flex justify-content-end border-bottom\" style=\"background:#2b2c3b;\">\u003Cbutton type=\"button\" class=\"btn btn-link btn-sm text-light\" title=\"Copy\" data-code-button>\u003Cspan data-code-default style=\"\">\u003Ci class=\"fal fa-copy me-2\">\u003C\u002Fi> Copy \u003C\u002Fspan>\u003Cspan class=\"text-success\" data-code-success style=\"display:none;\">\u003Ci class=\"fal fa-check ms-2\">\u003C\u002Fi> Copied \u003C\u002Fspan>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cdiv class=\"small\">\u003Cpre class=\"hljs p-2\" data-code-content>\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">script\u003C\u002Fspan>&gt;\u003C\u002Fspan>\u003Cspan class=\"language-javascript\">\n\u003Cspan class=\"hljs-keyword\">function\u003C\u002Fspan> \u003Cspan class=\"hljs-title function_\">getCustomDimensions\u003C\u002Fspan>(\u003Cspan class=\"hljs-params\">params\u003C\u002Fspan>) {\n    \u003Cspan class=\"hljs-comment\">\u002F\u002F Do your custom logic in here\u003C\u002Fspan>\n    \u003Cspan class=\"hljs-keyword\">if\u003C\u002Fspan> (someCondition) {\n        \u003Cspan class=\"hljs-keyword\">return\u003C\u002Fspan> {\u003Cspan class=\"hljs-string\">&quot;length&quot;\u003C\u002Fspan>: \u003Cspan class=\"hljs-number\">18\u003C\u002Fspan>, \u003Cspan class=\"hljs-string\">&quot;width&quot;\u003C\u002Fspan>: \u003Cspan class=\"hljs-number\">16\u003C\u002Fspan>, \u003Cspan class=\"hljs-string\">&quot;height&quot;\u003C\u002Fspan>: \u003Cspan class=\"hljs-number\">10\u003C\u002Fspan>};\n    } \u003Cspan class=\"hljs-keyword\">else\u003C\u002Fspan> {\n        \u003Cspan class=\"hljs-keyword\">return\u003C\u002Fspan> \u003Cspan class=\"hljs-literal\">null\u003C\u002Fspan>;\n    }\n}\n\u003Cspan class=\"hljs-variable constant_\">FC\u003C\u002Fspan>.\u003Cspan class=\"hljs-property\">client\u003C\u002Fspan>.\u003Cspan class=\"hljs-title function_\">on\u003C\u002Fspan>(\u003Cspan class=\"hljs-string\">&quot;cart-shipping-options-update&quot;\u003C\u002Fspan>, \u003Cspan class=\"hljs-keyword\">function\u003C\u002Fspan>(\u003Cspan class=\"hljs-params\">params\u003C\u002Fspan>) {\n    params.\u003Cspan class=\"hljs-property\">address\u003C\u002Fspan>.\u003Cspan class=\"hljs-property\">dimensions\u003C\u002Fspan> = \u003Cspan class=\"hljs-title function_\">getCustomDimensions\u003C\u002Fspan>(params);\n});\n\u003Cspan class=\"hljs-variable constant_\">FC\u003C\u002Fspan>.\u003Cspan class=\"hljs-property\">client\u003C\u002Fspan>.\u003Cspan class=\"hljs-title function_\">on\u003C\u002Fspan>(\u003Cspan class=\"hljs-string\">&quot;checkout-shipping-options-update&quot;\u003C\u002Fspan>, \u003Cspan class=\"hljs-keyword\">function\u003C\u002Fspan>(\u003Cspan class=\"hljs-params\">params\u003C\u002Fspan>) {\n    params.\u003Cspan class=\"hljs-property\">address\u003C\u002Fspan>.\u003Cspan class=\"hljs-property\">dimensions\u003C\u002Fspan> = \u003Cspan class=\"hljs-title function_\">getCustomDimensions\u003C\u002Fspan>(params);\n});\n\u003C\u002Fspan>\u003Cspan class=\"hljs-tag\">&lt;\u002F\u003Cspan class=\"hljs-name\">script\u003C\u002Fspan>&gt;\u003C\u002Fspan>\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cp>You&#039;ll obviously need to edit the \u003Ccode class=\"badge bg-soft-danger text-danger\">getCustomDimensions()\u003C\u002Fcode> function to correctly set the dimensions based on your conditions such as certain products or categories in the cart.\u003C\u002Fp>\u003Cp>The \u003Ccode class=\"badge bg-soft-danger text-danger\">getCustomDimensions()\u003C\u002Fcode> function is passed a \u003Ccode class=\"badge bg-soft-danger text-danger\">params\u003C\u002Fcode> variable, which contains two arrays:\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">address\u003C\u002Fcode>: Contains the shipping address that the customer as entered so far\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">fields\u003C\u002Fcode>: Contains the \u003Ccode class=\"badge bg-soft-danger text-danger\">shipping_city\u003C\u002Fcode>, \u003Ccode class=\"badge bg-soft-danger text-danger\">shipping_postal_code\u003C\u002Fcode>, \u003Ccode class=\"badge bg-soft-danger text-danger\">shipping_region\u003C\u002Fcode> and \u003Ccode class=\"badge bg-soft-danger text-danger\">shipping_region_name\u003C\u002Fcode> as entered by the customer to trigger this rate request\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003Cp>The \u003Ccode class=\"badge bg-soft-danger text-danger\">getCustomDimensions()\u003C\u002Fcode> function needs to return an object with three parameters like this: \u003Ccode class=\"badge bg-soft-danger text-danger\">{&quot;length&quot;: 18, &quot;width&quot;: 16, &quot;height&quot;: 10}\u003C\u002Fcode>, the value for each dimension being a number.\u003C\u002Fp>\u003Cp>If you want to leave the dimensions as the store default, return \u003Ccode class=\"badge bg-soft-danger text-danger\">null\u003C\u002Fcode> from the \u003Ccode class=\"badge bg-soft-danger text-danger\">getCustomDimensions()\u003C\u002Fcode> function.\u003C\u002Fp>\u003Cp>Make sure you test your shipping results before and after applying this snippet, ensuring you&#039;re getting the results that you expect. Different carriers have different allowances for box sizes for their various rates - you can review your chosen carrier(s) website to check on what those maximums are.\u003C\u002Fp>\u003C\u002Fsection>\u003Csection id=\"examples\" data-title=\"Examples\" data-title-node=\"H2\">\u003Chr class=\"my-8\" style=\"margin-left: -48px; margin-right: -40vw\">\u003Ch2 data-anchor-id=\"examples\">Examples\u003C\u002Fh2>\u003C\u002Fsection>\u003Csection id=\"example-1-returning-the-largest-dimensions-from-product-level-attributes\" data-title=\"Example 1: Returning the largest dimensions from product level attributes\" data-title-node=\"H3\">\u003Ch3 data-anchor-id=\"example-1-returning-the-largest-dimensions-from-product-level-attributes\">Example 1: Returning the largest dimensions from product level attributes\u003C\u002Fh3>\u003Cp>Foxy products have \u003Ca href=\"https:\u002F\u002Fwiki.foxycart.com\u002Fv\u002F2.0\u002Fproducts\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">product level reserved attributes\u003C\u002Fa> for \u003Ccode class=\"badge bg-soft-danger text-danger\">length\u003C\u002Fcode>, \u003Ccode class=\"badge bg-soft-danger text-danger\">width\u003C\u002Fcode> and \u003Ccode class=\"badge bg-soft-danger text-danger\">height\u003C\u002Fcode>. These values aren&#039;t currently utilised anywhere, but can be used in this snippet to determine the shipping dimensions. As an example, the following code would use the largest dimensions for the products in the cart as the dimensions for shipping. The product level attributes would be passed as part of an add to cart, for example \u003Ccode class=\"badge bg-soft-danger text-danger\">https:\u002F\u002Fyourstore.foxycart.com\u002Fcart?name=My+Product&amp;code=abc123&amp;price=15.95&amp;length=3&amp;width=3.5&amp;height=2\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>This snippet would be pasted into the “footer” textarea of the “Add custom header and footer code to your templates” option, as found on the “configuration” page of your store&#039;s Foxy administration:\u003C\u002Fp>\u003Cdiv class=\"position-relative w-100 overflow-hidden rounded-2\" data-code-block>\u003Cdiv class=\"d-flex justify-content-end border-bottom\" style=\"background:#2b2c3b;\">\u003Cbutton type=\"button\" class=\"btn btn-link btn-sm text-light\" title=\"Copy\" data-code-button>\u003Cspan data-code-default style=\"\">\u003Ci class=\"fal fa-copy me-2\">\u003C\u002Fi> Copy \u003C\u002Fspan>\u003Cspan class=\"text-success\" data-code-success style=\"display:none;\">\u003Ci class=\"fal fa-check ms-2\">\u003C\u002Fi> Copied \u003C\u002Fspan>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cdiv class=\"small\">\u003Cpre class=\"hljs p-2\" data-code-content>{% if context == &quot;cart&quot; or context == &quot;checkout&quot; %}\n\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">script\u003C\u002Fspan>&gt;\u003C\u002Fspan>\u003Cspan class=\"language-javascript\">\n\u003Cspan class=\"hljs-keyword\">function\u003C\u002Fspan> \u003Cspan class=\"hljs-title function_\">getCustomDimensions\u003C\u002Fspan>(\u003Cspan class=\"hljs-params\">params\u003C\u002Fspan>) {\n    \u003Cspan class=\"hljs-keyword\">var\u003C\u002Fspan> volume = \u003Cspan class=\"hljs-number\">0\u003C\u002Fspan>,\n        dimensions = \u003Cspan class=\"hljs-literal\">null\u003C\u002Fspan>;\n \n    \u003Cspan class=\"hljs-keyword\">for\u003C\u002Fspan> (\u003Cspan class=\"hljs-keyword\">var\u003C\u002Fspan> i = \u003Cspan class=\"hljs-number\">0\u003C\u002Fspan>; i &lt; \u003Cspan class=\"hljs-variable constant_\">FC\u003C\u002Fspan>.\u003Cspan class=\"hljs-property\">json\u003C\u002Fspan>.\u003Cspan class=\"hljs-property\">items\u003C\u002Fspan>.\u003Cspan class=\"hljs-property\">length\u003C\u002Fspan>; i++) {\n        \u003Cspan class=\"hljs-keyword\">var\u003C\u002Fspan> width = \u003Cspan class=\"hljs-built_in\">parseFloat\u003C\u002Fspan>(\u003Cspan class=\"hljs-variable constant_\">FC\u003C\u002Fspan>.\u003Cspan class=\"hljs-property\">json\u003C\u002Fspan>.\u003Cspan class=\"hljs-property\">items\u003C\u002Fspan>[i].\u003Cspan class=\"hljs-property\">width\u003C\u002Fspan>),\n            height = \u003Cspan class=\"hljs-built_in\">parseFloat\u003C\u002Fspan>(\u003Cspan class=\"hljs-variable constant_\">FC\u003C\u002Fspan>.\u003Cspan class=\"hljs-property\">json\u003C\u002Fspan>.\u003Cspan class=\"hljs-property\">items\u003C\u002Fspan>[i].\u003Cspan class=\"hljs-property\">height\u003C\u002Fspan>),\n            length = \u003Cspan class=\"hljs-built_in\">parseFloat\u003C\u002Fspan>(\u003Cspan class=\"hljs-variable constant_\">FC\u003C\u002Fspan>.\u003Cspan class=\"hljs-property\">json\u003C\u002Fspan>.\u003Cspan class=\"hljs-property\">items\u003C\u002Fspan>[i].\u003Cspan class=\"hljs-property\">length\u003C\u002Fspan>);\n \n        \u003Cspan class=\"hljs-keyword\">var\u003C\u002Fspan> v = width * height * length;\n \n        \u003Cspan class=\"hljs-keyword\">if\u003C\u002Fspan> (v &gt; volume) {\n            volume = v;\n            dimensions = {\u003Cspan class=\"hljs-string\">&quot;length&quot;\u003C\u002Fspan>: length, \u003Cspan class=\"hljs-string\">&quot;width&quot;\u003C\u002Fspan>: width, \u003Cspan class=\"hljs-string\">&quot;height&quot;\u003C\u002Fspan>: height};\n        }\n    }\n \n    \u003Cspan class=\"hljs-keyword\">return\u003C\u002Fspan> dimensions;\n}\n\u003Cspan class=\"hljs-variable constant_\">FC\u003C\u002Fspan>.\u003Cspan class=\"hljs-property\">client\u003C\u002Fspan>.\u003Cspan class=\"hljs-title function_\">on\u003C\u002Fspan>(\u003Cspan class=\"hljs-string\">&quot;cart-shipping-options-update&quot;\u003C\u002Fspan>, \u003Cspan class=\"hljs-keyword\">function\u003C\u002Fspan>(\u003Cspan class=\"hljs-params\">params\u003C\u002Fspan>) {\n    params.\u003Cspan class=\"hljs-property\">address\u003C\u002Fspan>.\u003Cspan class=\"hljs-property\">dimensions\u003C\u002Fspan> = \u003Cspan class=\"hljs-title function_\">getCustomDimensions\u003C\u002Fspan>(params);\n});\n\u003Cspan class=\"hljs-variable constant_\">FC\u003C\u002Fspan>.\u003Cspan class=\"hljs-property\">client\u003C\u002Fspan>.\u003Cspan class=\"hljs-title function_\">on\u003C\u002Fspan>(\u003Cspan class=\"hljs-string\">&quot;checkout-shipping-options-update&quot;\u003C\u002Fspan>, \u003Cspan class=\"hljs-keyword\">function\u003C\u002Fspan>(\u003Cspan class=\"hljs-params\">params\u003C\u002Fspan>) {\n    params.\u003Cspan class=\"hljs-property\">address\u003C\u002Fspan>.\u003Cspan class=\"hljs-property\">dimensions\u003C\u002Fspan> = \u003Cspan class=\"hljs-title function_\">getCustomDimensions\u003C\u002Fspan>(params);\n});\n\u003C\u002Fspan>\u003Cspan class=\"hljs-tag\">&lt;\u002F\u003Cspan class=\"hljs-name\">script\u003C\u002Fspan>&gt;\u003C\u002Fspan>\n{% endif %}\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003C\u002Fsection>",[566,569,571],{"id":567,"title":371,"level":568},"add-the-custom-javascript","H2",{"id":570,"title":500,"level":568},"examples",{"id":572,"title":506,"level":573},"example-1-returning-the-largest-dimensions-from-product-level-attributes","H3",[575],{"type":576,"content":577},"html","\u003Cp>When using live rate shipping for your store, the shipping rate request will utilise a default box dimension along with the total weight and address to determine rates. Currently those default dimensions are a 5“x5”x5“ package for UPS, 5”x5“x0.5” for USPS, and for FedEx it&#039;s determined based on the package type selected in your store&#039;s shipping settings.\u003C\u002Fp>\u003Cp>You can use this snippet to provide custom dimensions for shipping rate requests based upon a condition that you set, such as the categories or types of products in the cart.\u003C\u002Fp>\u003Cp>\u003Cstrong>Note:\u003C\u002Fstrong> Foxy currently only allows for a single set of box dimensions per order. This snippet will not allow you to calculate shipping for multiple different sized boxes. For achieving that, a custom integration could be created using our \u003Ca href=\"https:\u002F\u002Fwiki.foxycart.com\u002Fv\u002F2.0\u002Fshipping\u002Fcustom_code\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">custom shipping code\u003C\u002Fa>, and using a third-party service such as \u003Ca href=\"https:\u002F\u002Fwiki.foxycart.com\u002Fv\u002F2.0\u002Fshipping\u002Fcustom_code\u002Fgoshippo\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Shippo\u003C\u002Fa>.\u003C\u002Fp>\u003Ch2>Add the custom javascript\u003C\u002Fh2>\u003Cp>In your store&#039;s administration - navigate to the Configuration page, and within the Cart section look for “Add custom header and footer code to your templates”. Enable that option if it isn&#039;t already, and place the following code into the “Footer” textbox:\u003C\u002Fp>\u003Cpre>\u003Ccode>&lt;script&gt;\nfunction getCustomDimensions(params) {\n    \u002F\u002F Do your custom logic in here\n    if (someCondition) {\n        return {&quot;length&quot;: 18, &quot;width&quot;: 16, &quot;height&quot;: 10};\n    } else {\n        return null;\n    }\n}\nFC.client.on(&quot;cart-shipping-options-update&quot;, function(params) {\n    params.address.dimensions = getCustomDimensions(params);\n});\nFC.client.on(&quot;checkout-shipping-options-update&quot;, function(params) {\n    params.address.dimensions = getCustomDimensions(params);\n});\n&lt;\u002Fscript&gt;\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>You&#039;ll obviously need to edit the \u003Ccode class=\"badge bg-soft-danger text-danger\">getCustomDimensions()\u003C\u002Fcode> function to correctly set the dimensions based on your conditions such as certain products or categories in the cart.\u003C\u002Fp>\u003Cp>The \u003Ccode class=\"badge bg-soft-danger text-danger\">getCustomDimensions()\u003C\u002Fcode> function is passed a \u003Ccode class=\"badge bg-soft-danger text-danger\">params\u003C\u002Fcode> variable, which contains two arrays:\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">address\u003C\u002Fcode>: Contains the shipping address that the customer as entered so far\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Ccode class=\"badge bg-soft-danger text-danger\">fields\u003C\u002Fcode>: Contains the \u003Ccode class=\"badge bg-soft-danger text-danger\">shipping_city\u003C\u002Fcode>, \u003Ccode class=\"badge bg-soft-danger text-danger\">shipping_postal_code\u003C\u002Fcode>, \u003Ccode class=\"badge bg-soft-danger text-danger\">shipping_region\u003C\u002Fcode> and \u003Ccode class=\"badge bg-soft-danger text-danger\">shipping_region_name\u003C\u002Fcode> as entered by the customer to trigger this rate request\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003Cp>The \u003Ccode class=\"badge bg-soft-danger text-danger\">getCustomDimensions()\u003C\u002Fcode> function needs to return an object with three parameters like this: \u003Ccode class=\"badge bg-soft-danger text-danger\">{&quot;length&quot;: 18, &quot;width&quot;: 16, &quot;height&quot;: 10}\u003C\u002Fcode>, the value for each dimension being a number.\u003C\u002Fp>\u003Cp>If you want to leave the dimensions as the store default, return \u003Ccode class=\"badge bg-soft-danger text-danger\">null\u003C\u002Fcode> from the \u003Ccode class=\"badge bg-soft-danger text-danger\">getCustomDimensions()\u003C\u002Fcode> function.\u003C\u002Fp>\u003Cp>Make sure you test your shipping results before and after applying this snippet, ensuring you&#039;re getting the results that you expect. Different carriers have different allowances for box sizes for their various rates - you can review your chosen carrier(s) website to check on what those maximums are.\u003C\u002Fp>\u003Ch2>Examples\u003C\u002Fh2>\u003Ch3>Example 1: Returning the largest dimensions from product level attributes\u003C\u002Fh3>\u003Cp>Foxy products have \u003Ca href=\"https:\u002F\u002Fwiki.foxycart.com\u002Fv\u002F2.0\u002Fproducts\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">product level reserved attributes\u003C\u002Fa> for \u003Ccode class=\"badge bg-soft-danger text-danger\">length\u003C\u002Fcode>, \u003Ccode class=\"badge bg-soft-danger text-danger\">width\u003C\u002Fcode> and \u003Ccode class=\"badge bg-soft-danger text-danger\">height\u003C\u002Fcode>. These values aren&#039;t currently utilised anywhere, but can be used in this snippet to determine the shipping dimensions. As an example, the following code would use the largest dimensions for the products in the cart as the dimensions for shipping. The product level attributes would be passed as part of an add to cart, for example \u003Ccode class=\"badge bg-soft-danger text-danger\">https:\u002F\u002Fyourstore.foxycart.com\u002Fcart?name=My+Product&amp;code=abc123&amp;price=15.95&amp;length=3&amp;width=3.5&amp;height=2\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>This snippet would be pasted into the “footer” textarea of the “Add custom header and footer code to your templates” option, as found on the “configuration” page of your store&#039;s Foxy administration:\u003C\u002Fp>\u003Cpre>\u003Ccode>{% if context == &quot;cart&quot; or context == &quot;checkout&quot; %}\n&lt;script&gt;\nfunction getCustomDimensions(params) {\n    var volume = 0,\n        dimensions = null;\n \n    for (var i = 0; i &lt; FC.json.items.length; i++) {\n        var width = parseFloat(FC.json.items[i].width),\n            height = parseFloat(FC.json.items[i].height),\n            length = parseFloat(FC.json.items[i].length);\n \n        var v = width * height * length;\n \n        if (v &gt; volume) {\n            volume = v;\n            dimensions = {&quot;length&quot;: length, &quot;width&quot;: width, &quot;height&quot;: height};\n        }\n    }\n \n    return dimensions;\n}\nFC.client.on(&quot;cart-shipping-options-update&quot;, function(params) {\n    params.address.dimensions = getCustomDimensions(params);\n});\nFC.client.on(&quot;checkout-shipping-options-update&quot;, function(params) {\n    params.address.dimensions = getCustomDimensions(params);\n});\n&lt;\u002Fscript&gt;\n{% endif %}\u003C\u002Fcode>\u003C\u002Fpre>",{"name":579,"created_at":580,"published_at":581,"updated_at":582,"id":583,"uuid":47,"content":584,"slug":48,"full_slug":48,"sort_by_date":59,"position":762,"tag_list":763,"is_startpage":24,"parent_id":59,"meta_data":59,"group_id":764,"first_published_at":765,"release_id":59,"lang":65,"path":59,"alternates":766,"default_full_slug":59,"translated_slugs":59},"Contact","2022-09-23T19:56:58.957Z","2025-05-08T18:24:40.382Z","2025-05-08T18:24:40.392Z",3138,{"seo":585,"_uid":588,"title":589,"action":590,"fields":591,"method":738,"columns":739,"subtitle":753,"component":48,"button_text":759,"submit_title":760,"submit_subtitle":761},{"_uid":586,"title":579,"plugin":587,"description":13},"24ff7574-3bcc-48d2-85b5-e529dfea1cc4","meta-fields","8f54f1da-9d8f-49b2-89e7-840e886491cb","We're here to help.","https:\u002F\u002Fusebasin.com\u002Ff\u002F029f48d65402",[592,597,601,709,712,717,732],{"_uid":593,"name":594,"type":332,"label":595,"options":13,"required":33,"component":596,"placeholder":13},"9a70b226-2036-4f90-a052-b3efa61c5896","name","Name","form___field",{"_uid":598,"name":599,"type":599,"label":600,"options":13,"required":33,"component":596,"placeholder":13},"86ba35be-ff43-4a28-8633-14052a8f6622","email","Email Address",{"_uid":602,"name":603,"type":604,"label":605,"options":606,"required":33,"component":596,"conditions":607,"placeholder":13},"3f827475-492c-4f97-aa1e-2386ac263b6c","topic","select","Topic","Presales, Support, Billing, Partnerships, Order Enquiry, Other",[608,663,673,680,688,696,702],{"_uid":609,"equals":610,"fields":611,"component":662},"e21d97dd-e68e-4fa6-ba97-bc40f3041dde","Order Enquiry",[612],{"_uid":613,"body":614,"type":660,"title":13,"component":661},"b64992bc-6d53-48b8-b7a0-d81e5a062e50",{"type":324,"content":615},[616],{"type":327,"content":617},[618,620,627,629,631,632,636,638,643,651,653,658],{"text":619,"type":332},"We are ",{"text":621,"type":332,"marks":622},"Foxy.io",[623],{"type":352,"attrs":624},{"href":625,"uuid":59,"anchor":59,"custom":626,"target":59,"linktype":31},"http:\u002F\u002FFoxy.io",{},{"text":628,"type":332},", an ecommerce platform powering ecommerce for other merchants. We do not sell products, and are unable to assist with questions about order statuses or refunds for any merchants using our platform. Please contact the merchant you ordered from for assistance. If you’d like to report a store using Foxy for fraudulent practices, please select ‘other’ in the subject.",{"type":630},"hard_break",{"type":630},{"text":633,"type":332,"marks":634},"NOTE:",[635],{"type":345},{"text":637,"type":332}," We are ",{"text":639,"type":332,"marks":640},"not ",[641],{"type":642},"italic",{"text":644,"type":332,"marks":645},"Foxy.in",[646,650],{"type":352,"attrs":647},{"href":648,"uuid":59,"anchor":59,"custom":649,"target":59,"linktype":31},"http:\u002F\u002FFoxy.in",{},{"type":642},{"text":652,"type":332},". We are not in any way affiliated with ",{"text":644,"type":332,"marks":654},[655],{"type":352,"attrs":656},{"href":648,"uuid":59,"anchor":59,"custom":657,"target":59,"linktype":31},{},{"text":659,"type":332},", and cannot help in any way with your order from that website.","danger","global___alert","form___condition",{"_uid":664,"equals":665,"fields":666,"component":662},"8765c3e1-25cf-44aa-b8ea-fc6094acf9c3","Presales",[667],{"_uid":668,"name":669,"type":670,"label":13,"options":13,"required":24,"component":596,"conditions":671,"placeholder":13,"default_value":672},"cf464f8e-d643-4f6e-af29-d3abffaf7380","department_email_address","hidden",[],"hello@foxy.io",{"_uid":674,"equals":208,"fields":675,"component":662},"4007b6d8-77e5-421d-bd1e-6f336dd853fb",[676],{"_uid":677,"name":669,"type":670,"label":13,"options":13,"required":24,"component":596,"conditions":678,"placeholder":13,"default_value":679},"7b4c6aa5-a68c-45e0-9ce1-0a36af10c0c2",[],"help@foxy.io",{"_uid":681,"equals":682,"fields":683,"component":662},"1dbb8f11-613d-43cd-9e09-1b94f6e19219","Billing",[684],{"_uid":685,"name":669,"type":670,"label":13,"options":13,"required":24,"component":596,"conditions":686,"placeholder":13,"default_value":687},"a0ac0d1b-bc4f-4a6c-a682-581d450b0b73",[],"help+billing@foxy.io",{"_uid":689,"equals":690,"fields":691,"component":662},"a0a53a50-7172-4a29-ba58-181e38874e12","Partnerships",[692],{"_uid":693,"name":669,"type":670,"label":13,"options":13,"required":24,"component":596,"conditions":694,"placeholder":13,"default_value":695},"7aa011d9-f374-4aed-b5a5-929b54aaf152",[],"partners@foxy.io",{"_uid":697,"equals":610,"fields":698,"component":662},"a4cd431f-25d5-41c7-bfdc-02c908c8fb47",[699],{"_uid":700,"name":669,"type":670,"label":13,"options":13,"required":24,"component":596,"conditions":701,"placeholder":13,"default_value":672},"f5d52168-d6ae-451b-94ee-2ced1cbd28ad",[],{"_uid":703,"equals":704,"fields":705,"component":662},"25aba1ed-eb41-4bbc-aa89-f7a7167ea86e","Other",[706],{"_uid":707,"name":669,"type":670,"label":13,"options":13,"required":24,"component":596,"conditions":708,"placeholder":13,"default_value":672},"f40dfaef-c203-4b71-bf4e-e1b43cef192b",[],{"_uid":710,"component":711},"e9c53a05-f40a-4510-aaf8-bc072a235a0c","form___subject",{"_uid":713,"name":714,"type":715,"label":716,"options":13,"required":33,"component":596,"placeholder":13},"a4c4d385-fff4-4978-99fb-b68cfea623d6","message","textarea","Message",{"_uid":718,"name":719,"type":604,"label":720,"options":721,"required":33,"component":596,"conditions":722,"placeholder":13},"8a3c9f85-f438-427d-9c7a-d7b295a14b5b","existing_user","Are you an existing user?","No, Yes",[723],{"_uid":724,"equals":725,"fields":726,"component":662},"115933d6-262a-4b59-8fa8-579c5ad73de1","Yes",[727],{"_uid":728,"name":729,"type":332,"label":730,"options":13,"required":33,"component":596,"conditions":731,"placeholder":13},"44b6ff23-98f0-4e95-b7f5-c23e06415c2d","subdomain","Store Subdomain",[],{"_uid":733,"name":734,"type":604,"label":735,"options":736,"required":33,"component":596,"conditions":737,"placeholder":13},"922a5cef-3af2-4113-8855-36c7910e3ee3","user_type","What type of user are you?","Developer, Designer, Merchant",[],"POST",[740],{"_uid":741,"text":742,"title":751,"component":752},"7323b90d-a93a-4bf1-baa9-20d0b7ead61b",{"type":324,"content":743},[744],{"type":327,"content":745},[746,748,749],{"text":747,"type":332},"855.369.9227",{"type":630},{"text":750,"type":332},"9:30am-6pm Central M-F","Pre-sales, Sales, & Partnerships","contact___footer_column",{"type":324,"content":754},[755],{"type":327,"content":756},[757],{"text":758,"type":332},"Get in touch to get help from our friendly support team.","Submit","Success!","Your email has been received. We'll get back to you as soon as we can, but it might take a business day. If you don't hear back from us in a timely manner, please check your spam folder to ensure our reply didn't go there.",-80,[],"2fd9fb7d-a48a-4184-acfd-30022d8d6f08","2022-09-23T20:10:45.360Z",[],[288,768,795],{"name":769,"created_at":770,"published_at":771,"updated_at":772,"id":773,"uuid":774,"content":775,"slug":789,"full_slug":790,"sort_by_date":59,"position":791,"tag_list":792,"is_startpage":24,"parent_id":310,"meta_data":59,"group_id":793,"first_published_at":771,"release_id":59,"lang":65,"path":59,"alternates":794,"default_full_slug":59,"translated_slugs":59},"Shipping","2023-01-19T16:28:43.170Z","2023-01-19T17:25:33.503Z","2026-05-19T18:05:41.768Z",28245,"d92c1375-75ba-48e1-bb02-a3ae35187e0b",{"_uid":776,"icon":777,"name":769,"guides":778,"summary":779,"category":13,"component":297,"blog_posts":780,"content_hub":24,"icon_custom":781,"case_studies":782,"faq_sections":783,"help_articles":784,"featured_guides":785,"mailbox_category":13,"featured_articles":786,"featured_blog_posts":787,"featured_case_studies":788},"ea45a64b-f203-4c73-8645-325761de650e","fa-truck",[],"How to configure shipping rules for your store.",[],{"id":59,"alt":59,"name":13,"focus":59,"title":59,"filename":13,"copyright":59,"fieldtype":81},[],[],[],[],[],[],[],"shipping","help\u002Fcategories\u002Fshipping",90,[],"2e7778d1-fab7-4b53-ae55-f3382610fa56",[],{"name":796,"created_at":797,"published_at":798,"updated_at":799,"id":800,"uuid":554,"content":801,"slug":814,"full_slug":815,"sort_by_date":59,"position":816,"tag_list":817,"is_startpage":24,"parent_id":310,"meta_data":59,"group_id":818,"first_published_at":819,"release_id":59,"lang":65,"path":59,"alternates":820,"default_full_slug":59,"translated_slugs":59},"Live Shipping Rates","2026-05-21T18:20:31.032Z","2026-06-24T21:24:11.298Z","2026-06-24T21:24:11.318Z",178987135153951,{"_uid":802,"icon":13,"name":796,"type":803,"pinned":24,"summary":804,"category":774,"component":297,"blog_posts":805,"icon_custom":806,"case_studies":808,"faq_sections":809,"featured_guides":810,"mailbox_category":13,"featured_articles":811,"featured_blog_posts":812,"featured_case_studies":813},"a63a3f1f-23e8-4531-945e-c94f8c0444d5","simple","How to set up real time carrier rates from USPS, UPS, and FedEx.",[],{"id":59,"alt":59,"name":13,"focus":59,"title":59,"source":59,"filename":13,"copyright":59,"fieldtype":81,"meta_data":807},{},[],[],[],[],[],[],"live-shipping-rates","help\u002Fcategories\u002Flive-shipping-rates",-250,[],"7e21ee2f-c12c-4f5a-b3c5-bae4bc79674e","2026-05-28T20:17:54.394Z",[],{},1784651809100]