[{"data":1,"prerenderedAt":747},["ShallowReactive",2],{"header:help":3,"footer:default":67,"story:navigation\u002Fsearch:help":250,"story:help\u002Fcategories":288,"story:help\u002Farticles\u002Fset-the-shipping-origin-point-for-live-rates":314,"no-guide:set-the-shipping-origin-point-for-live-rates":59,"article:\u002Fhelp\u002Farticles\u002Fset-the-shipping-origin-point-for-live-rates":492,"story:contact":502,"help:tree:179e6474-e6d1-4a4a-acda-dc301e701e65":692,"_apollo:default":746},{"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":485,"full_slug":486,"sort_by_date":59,"position":487,"tag_list":488,"is_startpage":24,"parent_id":489,"meta_data":59,"group_id":490,"first_published_at":317,"release_id":59,"lang":65,"path":59,"alternates":491,"default_full_slug":59,"translated_slugs":59},"Set the shipping origin point for live rates","2026-07-20T20:08:19.363Z","2026-07-21T14:32:15.501Z","2026-07-21T14:32:15.514Z",200247293437803,"179e6474-e6d1-4a4a-acda-dc301e701e65",{"_uid":322,"body":323,"name":315,"image":480,"pinned":24,"summary":482,"category":483,"component":266,"related_articles":484},"072ef83b-533a-4e99-bb12-541748b951ae",{"type":324,"content":325},"doc",[326,333,343,350,355,361,373,389,438,464],{"type":327,"attrs":328,"content":329},"paragraph",{"textAlign":59},[330],{"text":331,"type":332},"If your store ships from multiple different fulfillment centers, you'll probably want the shipping rates to be calculated correctly based on the correct origin point for the customer. This script allows you to change the shipping origin point dynamically from the one set in the store to your own custom location.","text",{"type":327,"attrs":334,"content":335},{"textAlign":59},[336,341],{"text":337,"type":332,"marks":338},"Note:",[339],{"type":340},"bold",{"text":342,"type":332}," This still only allows for a single origin point for the whole order. This snippet will not allow you to set the origin point differently for only some products in a transaction.",{"type":344,"attrs":345,"content":347},"heading",{"level":346,"textAlign":59},2,[348],{"text":349,"type":332},"Add the custom JavaScript",{"type":327,"attrs":351,"content":352},{"textAlign":59},[353],{"text":354,"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":356,"attrs":357,"content":358},"code_block",{"class":59},[359],{"text":360,"type":332},"\u003Cscript>\nfunction getCustomOrigin(params) {\n  \u002F\u002F Do your custom logic in here\n  if (someCondition) {\n    return {country: \"US\", region: \"CA\", postal_code: 90210};\n  } else {\n    return null;\n  }\n}\nFC.client.on(\"cart-shipping-options-update\", function(params) {\nparams.store_address = getCustomOrigin(params);\n});\nFC.client.on(\"checkout-shipping-options-update\", function(params) {\nparams.store_address = getCustomOrigin(params);\n});\n\u003C\u002Fscript>",{"type":327,"attrs":362,"content":363},{"textAlign":59},[364,366,371],{"text":365,"type":332},"You'll obviously need to edit the ",{"text":367,"type":332,"marks":368},"getCustomOrigin()",[369],{"type":370},"code",{"text":372,"type":332}," function to correctly set the dynamic origin points based on your conditions - whether it be the customers address, certain products or categories in the cart etc.",{"type":327,"attrs":374,"content":375},{"textAlign":59},[376,378,381,383,387],{"text":377,"type":332},"The ",{"text":367,"type":332,"marks":379},[380],{"type":370},{"text":382,"type":332}," function is passed a ",{"text":384,"type":332,"marks":385},"params",[386],{"type":370},{"text":388,"type":332}," variable, which contains two arrays:",{"type":390,"content":391},"bullet_list",[392,404],{"type":393,"content":394},"list_item",[395],{"type":327,"attrs":396,"content":397},{"textAlign":59},[398,402],{"text":399,"type":332,"marks":400},"address",[401],{"type":370},{"text":403,"type":332},": Contains the shipping address for the customer as entered so far",{"type":393,"content":405},[406],{"type":327,"attrs":407,"content":408},{"textAlign":59},[409,413,415,419,421,425,426,430,432,436],{"text":410,"type":332,"marks":411},"fields",[412],{"type":370},{"text":414,"type":332},": Contains the ",{"text":416,"type":332,"marks":417},"shipping_city",[418],{"type":370},{"text":420,"type":332},", ",{"text":422,"type":332,"marks":423},"shipping_postal_code",[424],{"type":370},{"text":420,"type":332},{"text":427,"type":332,"marks":428},"shipping_region",[429],{"type":370},{"text":431,"type":332}," and ",{"text":433,"type":332,"marks":434},"shipping_region_name",[435],{"type":370},{"text":437,"type":332}," as entered by the customer to trigger this rate request",{"type":327,"attrs":439,"content":440},{"textAlign":59},[441,442,445,447,451,453,457,458,462],{"text":377,"type":332},{"text":367,"type":332,"marks":443},[444],{"type":370},{"text":446,"type":332}," function needs to return an object with three parameters like this: ",{"text":448,"type":332,"marks":449},"{country: “US”, region: “CA”, postal_code: “90210”}",[450],{"type":370},{"text":452,"type":332}," - with the ",{"text":454,"type":332,"marks":455},"country",[456],{"type":370},{"text":431,"type":332},{"text":459,"type":332,"marks":460},"region",[461],{"type":370},{"text":463,"type":332}," set as the 2 character code for the country and region, and the postal code, all as strings.",{"type":327,"attrs":465,"content":466},{"textAlign":59},[467,469,473,475,478],{"text":468,"type":332},"If you want to leave the address as the store default, return ",{"text":470,"type":332,"marks":471},"null",[472],{"type":370},{"text":474,"type":332}," from the ",{"text":367,"type":332,"marks":476},[477],{"type":370},{"text":479,"type":332}," function.",{"id":59,"alt":59,"name":13,"focus":59,"title":59,"source":59,"filename":13,"copyright":59,"fieldtype":81,"meta_data":481},{},"Code snippet tat allows you to change the shipping origin point dynamically from the one set in the store to your own custom location","5cb92e14-16e9-4584-8bbf-016ae6ea7171",[],"set-the-shipping-origin-point-for-live-rates","help\u002Farticles\u002Fset-the-shipping-origin-point-for-live-rates",-3890,[],2659,"15496ddd-a360-474f-b0fb-ac09344e42cb",[],{"html":493,"sections":494,"segments":498},"\u003Cp>If your store ships from multiple different fulfillment centers, you&#039;ll probably want the shipping rates to be calculated correctly based on the correct origin point for the customer. This script allows you to change the shipping origin point dynamically from the one set in the store to your own custom location.\u003C\u002Fp>\u003Cp>\u003Cstrong>Note:\u003C\u002Fstrong> This still only allows for a single origin point for the whole order. This snippet will not allow you to set the origin point differently for only some products in a transaction.\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_\">getCustomOrigin\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-attr\">country\u003C\u002Fspan>: \u003Cspan class=\"hljs-string\">&quot;US&quot;\u003C\u002Fspan>, \u003Cspan class=\"hljs-attr\">region\u003C\u002Fspan>: \u003Cspan class=\"hljs-string\">&quot;CA&quot;\u003C\u002Fspan>, \u003Cspan class=\"hljs-attr\">postal_code\u003C\u002Fspan>: \u003Cspan class=\"hljs-number\">90210\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>) {\nparams.\u003Cspan class=\"hljs-property\">store_address\u003C\u002Fspan> = \u003Cspan class=\"hljs-title function_\">getCustomOrigin\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>) {\nparams.\u003Cspan class=\"hljs-property\">store_address\u003C\u002Fspan> = \u003Cspan class=\"hljs-title function_\">getCustomOrigin\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\">getCustomOrigin()\u003C\u002Fcode> function to correctly set the dynamic origin points based on your conditions - whether it be the customers address, certain products or categories in the cart etc.\u003C\u002Fp>\u003Cp>The \u003Ccode class=\"badge bg-soft-danger text-danger\">getCustomOrigin()\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 for 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\">getCustomOrigin()\u003C\u002Fcode> function needs to return an object with three parameters like this: \u003Ccode class=\"badge bg-soft-danger text-danger\">{country: “US”, region: “CA”, postal_code: “90210”}\u003C\u002Fcode> - with the \u003Ccode class=\"badge bg-soft-danger text-danger\">country\u003C\u002Fcode> and \u003Ccode class=\"badge bg-soft-danger text-danger\">region\u003C\u002Fcode> set as the 2 character code for the country and region, and the postal code, all as strings.\u003C\u002Fp>\u003Cp>If you want to leave the address 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\">getCustomOrigin()\u003C\u002Fcode> function.\u003C\u002Fp>\u003C\u002Fsection>",[495],{"id":496,"title":349,"level":497},"add-the-custom-javascript","H2",[499],{"type":500,"content":501},"html","\u003Cp>If your store ships from multiple different fulfillment centers, you&#039;ll probably want the shipping rates to be calculated correctly based on the correct origin point for the customer. This script allows you to change the shipping origin point dynamically from the one set in the store to your own custom location.\u003C\u002Fp>\u003Cp>\u003Cstrong>Note:\u003C\u002Fstrong> This still only allows for a single origin point for the whole order. This snippet will not allow you to set the origin point differently for only some products in a transaction.\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 getCustomOrigin(params) {\n  \u002F\u002F Do your custom logic in here\n  if (someCondition) {\n    return {country: &quot;US&quot;, region: &quot;CA&quot;, postal_code: 90210};\n  } else {\n    return null;\n  }\n}\nFC.client.on(&quot;cart-shipping-options-update&quot;, function(params) {\nparams.store_address = getCustomOrigin(params);\n});\nFC.client.on(&quot;checkout-shipping-options-update&quot;, function(params) {\nparams.store_address = getCustomOrigin(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\">getCustomOrigin()\u003C\u002Fcode> function to correctly set the dynamic origin points based on your conditions - whether it be the customers address, certain products or categories in the cart etc.\u003C\u002Fp>\u003Cp>The \u003Ccode class=\"badge bg-soft-danger text-danger\">getCustomOrigin()\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 for 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\">getCustomOrigin()\u003C\u002Fcode> function needs to return an object with three parameters like this: \u003Ccode class=\"badge bg-soft-danger text-danger\">{country: “US”, region: “CA”, postal_code: “90210”}\u003C\u002Fcode> - with the \u003Ccode class=\"badge bg-soft-danger text-danger\">country\u003C\u002Fcode> and \u003Ccode class=\"badge bg-soft-danger text-danger\">region\u003C\u002Fcode> set as the 2 character code for the country and region, and the postal code, all as strings.\u003C\u002Fp>\u003Cp>If you want to leave the address 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\">getCustomOrigin()\u003C\u002Fcode> function.\u003C\u002Fp>",{"name":503,"created_at":504,"published_at":505,"updated_at":506,"id":507,"uuid":47,"content":508,"slug":48,"full_slug":48,"sort_by_date":59,"position":687,"tag_list":688,"is_startpage":24,"parent_id":59,"meta_data":59,"group_id":689,"first_published_at":690,"release_id":59,"lang":65,"path":59,"alternates":691,"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":509,"_uid":512,"title":513,"action":514,"fields":515,"method":663,"columns":664,"subtitle":678,"component":48,"button_text":684,"submit_title":685,"submit_subtitle":686},{"_uid":510,"title":503,"plugin":511,"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",[516,521,525,634,637,642,657],{"_uid":517,"name":518,"type":332,"label":519,"options":13,"required":33,"component":520,"placeholder":13},"9a70b226-2036-4f90-a052-b3efa61c5896","name","Name","form___field",{"_uid":522,"name":523,"type":523,"label":524,"options":13,"required":33,"component":520,"placeholder":13},"86ba35be-ff43-4a28-8633-14052a8f6622","email","Email Address",{"_uid":526,"name":527,"type":528,"label":529,"options":530,"required":33,"component":520,"conditions":531,"placeholder":13},"3f827475-492c-4f97-aa1e-2386ac263b6c","topic","select","Topic","Presales, Support, Billing, Partnerships, Order Enquiry, Other",[532,588,598,605,613,621,627],{"_uid":533,"equals":534,"fields":535,"component":587},"e21d97dd-e68e-4fa6-ba97-bc40f3041dde","Order Enquiry",[536],{"_uid":537,"body":538,"type":585,"title":13,"component":586},"b64992bc-6d53-48b8-b7a0-d81e5a062e50",{"type":324,"content":539},[540],{"type":327,"content":541},[542,544,552,554,556,557,561,563,568,576,578,583],{"text":543,"type":332},"We are ",{"text":545,"type":332,"marks":546},"Foxy.io",[547],{"type":548,"attrs":549},"link",{"href":550,"uuid":59,"anchor":59,"custom":551,"target":59,"linktype":31},"http:\u002F\u002FFoxy.io",{},{"text":553,"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":555},"hard_break",{"type":555},{"text":558,"type":332,"marks":559},"NOTE:",[560],{"type":340},{"text":562,"type":332}," We are ",{"text":564,"type":332,"marks":565},"not ",[566],{"type":567},"italic",{"text":569,"type":332,"marks":570},"Foxy.in",[571,575],{"type":548,"attrs":572},{"href":573,"uuid":59,"anchor":59,"custom":574,"target":59,"linktype":31},"http:\u002F\u002FFoxy.in",{},{"type":567},{"text":577,"type":332},". We are not in any way affiliated with ",{"text":569,"type":332,"marks":579},[580],{"type":548,"attrs":581},{"href":573,"uuid":59,"anchor":59,"custom":582,"target":59,"linktype":31},{},{"text":584,"type":332},", and cannot help in any way with your order from that website.","danger","global___alert","form___condition",{"_uid":589,"equals":590,"fields":591,"component":587},"8765c3e1-25cf-44aa-b8ea-fc6094acf9c3","Presales",[592],{"_uid":593,"name":594,"type":595,"label":13,"options":13,"required":24,"component":520,"conditions":596,"placeholder":13,"default_value":597},"cf464f8e-d643-4f6e-af29-d3abffaf7380","department_email_address","hidden",[],"hello@foxy.io",{"_uid":599,"equals":208,"fields":600,"component":587},"4007b6d8-77e5-421d-bd1e-6f336dd853fb",[601],{"_uid":602,"name":594,"type":595,"label":13,"options":13,"required":24,"component":520,"conditions":603,"placeholder":13,"default_value":604},"7b4c6aa5-a68c-45e0-9ce1-0a36af10c0c2",[],"help@foxy.io",{"_uid":606,"equals":607,"fields":608,"component":587},"1dbb8f11-613d-43cd-9e09-1b94f6e19219","Billing",[609],{"_uid":610,"name":594,"type":595,"label":13,"options":13,"required":24,"component":520,"conditions":611,"placeholder":13,"default_value":612},"a0ac0d1b-bc4f-4a6c-a682-581d450b0b73",[],"help+billing@foxy.io",{"_uid":614,"equals":615,"fields":616,"component":587},"a0a53a50-7172-4a29-ba58-181e38874e12","Partnerships",[617],{"_uid":618,"name":594,"type":595,"label":13,"options":13,"required":24,"component":520,"conditions":619,"placeholder":13,"default_value":620},"7aa011d9-f374-4aed-b5a5-929b54aaf152",[],"partners@foxy.io",{"_uid":622,"equals":534,"fields":623,"component":587},"a4cd431f-25d5-41c7-bfdc-02c908c8fb47",[624],{"_uid":625,"name":594,"type":595,"label":13,"options":13,"required":24,"component":520,"conditions":626,"placeholder":13,"default_value":597},"f5d52168-d6ae-451b-94ee-2ced1cbd28ad",[],{"_uid":628,"equals":629,"fields":630,"component":587},"25aba1ed-eb41-4bbc-aa89-f7a7167ea86e","Other",[631],{"_uid":632,"name":594,"type":595,"label":13,"options":13,"required":24,"component":520,"conditions":633,"placeholder":13,"default_value":597},"f40dfaef-c203-4b71-bf4e-e1b43cef192b",[],{"_uid":635,"component":636},"e9c53a05-f40a-4510-aaf8-bc072a235a0c","form___subject",{"_uid":638,"name":639,"type":640,"label":641,"options":13,"required":33,"component":520,"placeholder":13},"a4c4d385-fff4-4978-99fb-b68cfea623d6","message","textarea","Message",{"_uid":643,"name":644,"type":528,"label":645,"options":646,"required":33,"component":520,"conditions":647,"placeholder":13},"8a3c9f85-f438-427d-9c7a-d7b295a14b5b","existing_user","Are you an existing user?","No, Yes",[648],{"_uid":649,"equals":650,"fields":651,"component":587},"115933d6-262a-4b59-8fa8-579c5ad73de1","Yes",[652],{"_uid":653,"name":654,"type":332,"label":655,"options":13,"required":33,"component":520,"conditions":656,"placeholder":13},"44b6ff23-98f0-4e95-b7f5-c23e06415c2d","subdomain","Store Subdomain",[],{"_uid":658,"name":659,"type":528,"label":660,"options":661,"required":33,"component":520,"conditions":662,"placeholder":13},"922a5cef-3af2-4113-8855-36c7910e3ee3","user_type","What type of user are you?","Developer, Designer, Merchant",[],"POST",[665],{"_uid":666,"text":667,"title":676,"component":677},"7323b90d-a93a-4bf1-baa9-20d0b7ead61b",{"type":324,"content":668},[669],{"type":327,"content":670},[671,673,674],{"text":672,"type":332},"855.369.9227",{"type":555},{"text":675,"type":332},"9:30am-6pm Central M-F","Pre-sales, Sales, & Partnerships","contact___footer_column",{"type":324,"content":679},[680],{"type":327,"content":681},[682],{"text":683,"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,693,720],{"name":694,"created_at":695,"published_at":696,"updated_at":697,"id":698,"uuid":699,"content":700,"slug":714,"full_slug":715,"sort_by_date":59,"position":716,"tag_list":717,"is_startpage":24,"parent_id":310,"meta_data":59,"group_id":718,"first_published_at":696,"release_id":59,"lang":65,"path":59,"alternates":719,"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":701,"icon":702,"name":694,"guides":703,"summary":704,"category":13,"component":297,"blog_posts":705,"content_hub":24,"icon_custom":706,"case_studies":707,"faq_sections":708,"help_articles":709,"featured_guides":710,"mailbox_category":13,"featured_articles":711,"featured_blog_posts":712,"featured_case_studies":713},"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":721,"created_at":722,"published_at":723,"updated_at":724,"id":725,"uuid":483,"content":726,"slug":739,"full_slug":740,"sort_by_date":59,"position":741,"tag_list":742,"is_startpage":24,"parent_id":310,"meta_data":59,"group_id":743,"first_published_at":744,"release_id":59,"lang":65,"path":59,"alternates":745,"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":727,"icon":13,"name":721,"type":728,"pinned":24,"summary":729,"category":699,"component":297,"blog_posts":730,"icon_custom":731,"case_studies":733,"faq_sections":734,"featured_guides":735,"mailbox_category":13,"featured_articles":736,"featured_blog_posts":737,"featured_case_studies":738},"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":732},{},[],[],[],[],[],[],"live-shipping-rates","help\u002Fcategories\u002Flive-shipping-rates",-250,[],"7e21ee2f-c12c-4f5a-b3c5-bae4bc79674e","2026-05-28T20:17:54.394Z",[],{},1784651810236]